|
|
@@ -1,12 +1,15 @@
|
|
|
package router
|
|
|
|
|
|
import (
|
|
|
+ "fmt"
|
|
|
+
|
|
|
"github.com/go-chi/chi"
|
|
|
"github.com/porter-dev/porter/api/server/handlers/billing"
|
|
|
"github.com/porter-dev/porter/api/server/handlers/cluster"
|
|
|
"github.com/porter-dev/porter/api/server/handlers/gitinstallation"
|
|
|
+ "github.com/porter-dev/porter/api/server/handlers/helmrepo"
|
|
|
+ "github.com/porter-dev/porter/api/server/handlers/infra"
|
|
|
"github.com/porter-dev/porter/api/server/handlers/project"
|
|
|
- "github.com/porter-dev/porter/api/server/handlers/provision"
|
|
|
"github.com/porter-dev/porter/api/server/handlers/registry"
|
|
|
"github.com/porter-dev/porter/api/server/shared"
|
|
|
"github.com/porter-dev/porter/api/server/shared/config"
|
|
|
@@ -632,72 +635,42 @@ func getProjectRoutes(
|
|
|
Router: r,
|
|
|
})
|
|
|
|
|
|
- // POST /api/projects/{project_id}/provision/ecr -> provision.NewProvisionECRHandler
|
|
|
- provisionECREndpoint := factory.NewAPIEndpoint(
|
|
|
- &types.APIRequestMetadata{
|
|
|
- Verb: types.APIVerbCreate,
|
|
|
- Method: types.HTTPVerbPost,
|
|
|
- Path: &types.Path{
|
|
|
- Parent: basePath,
|
|
|
- RelativePath: relPath + "/provision/ecr",
|
|
|
- },
|
|
|
- Scopes: []types.PermissionScope{
|
|
|
- types.UserScope,
|
|
|
- types.ProjectScope,
|
|
|
- },
|
|
|
- },
|
|
|
- )
|
|
|
-
|
|
|
- provisionECRHandler := provision.NewProvisionECRHandler(
|
|
|
- config,
|
|
|
- factory.GetDecoderValidator(),
|
|
|
- factory.GetResultWriter(),
|
|
|
- )
|
|
|
-
|
|
|
- routes = append(routes, &Route{
|
|
|
- Endpoint: provisionECREndpoint,
|
|
|
- Handler: provisionECRHandler,
|
|
|
- Router: r,
|
|
|
- })
|
|
|
-
|
|
|
- // POST /api/projects/{project_id}/provision/eks -> provision.NewProvisionEKSHandler
|
|
|
- provisionEKSEndpoint := factory.NewAPIEndpoint(
|
|
|
+ // POST /api/projects/{project_id}/infras -> infra.NewInfraCreateHandler
|
|
|
+ createInfraEndpoint := factory.NewAPIEndpoint(
|
|
|
&types.APIRequestMetadata{
|
|
|
Verb: types.APIVerbCreate,
|
|
|
Method: types.HTTPVerbPost,
|
|
|
Path: &types.Path{
|
|
|
Parent: basePath,
|
|
|
- RelativePath: relPath + "/provision/eks",
|
|
|
+ RelativePath: relPath + "/infras",
|
|
|
},
|
|
|
Scopes: []types.PermissionScope{
|
|
|
types.UserScope,
|
|
|
types.ProjectScope,
|
|
|
},
|
|
|
- CheckUsage: true,
|
|
|
- UsageMetric: types.Clusters,
|
|
|
},
|
|
|
)
|
|
|
|
|
|
- provisionEKSHandler := provision.NewProvisionEKSHandler(
|
|
|
+ createInfraHandler := infra.NewInfraCreateHandler(
|
|
|
config,
|
|
|
factory.GetDecoderValidator(),
|
|
|
factory.GetResultWriter(),
|
|
|
)
|
|
|
|
|
|
routes = append(routes, &Route{
|
|
|
- Endpoint: provisionEKSEndpoint,
|
|
|
- Handler: provisionEKSHandler,
|
|
|
+ Endpoint: createInfraEndpoint,
|
|
|
+ Handler: createInfraHandler,
|
|
|
Router: r,
|
|
|
})
|
|
|
|
|
|
- // POST /api/projects/{project_id}/provision/docr -> provision.NewProvisionDOCRHandler
|
|
|
- provisionDOCREndpoint := factory.NewAPIEndpoint(
|
|
|
+ // GET /api/projects/{project_id}/infras/templates -> infra.NewInfraGetHandler
|
|
|
+ getTemplatesEndpoint := factory.NewAPIEndpoint(
|
|
|
&types.APIRequestMetadata{
|
|
|
- Verb: types.APIVerbCreate,
|
|
|
- Method: types.HTTPVerbPost,
|
|
|
+ Verb: types.APIVerbGet,
|
|
|
+ Method: types.HTTPVerbGet,
|
|
|
Path: &types.Path{
|
|
|
Parent: basePath,
|
|
|
- RelativePath: relPath + "/provision/docr",
|
|
|
+ RelativePath: relPath + "/infras/templates",
|
|
|
},
|
|
|
Scopes: []types.PermissionScope{
|
|
|
types.UserScope,
|
|
|
@@ -706,56 +679,226 @@ func getProjectRoutes(
|
|
|
},
|
|
|
)
|
|
|
|
|
|
- provisionDOCRHandler := provision.NewProvisionDOCRHandler(
|
|
|
+ getTemplatesHandler := infra.NewInfraListTemplateHandler(
|
|
|
config,
|
|
|
- factory.GetDecoderValidator(),
|
|
|
factory.GetResultWriter(),
|
|
|
)
|
|
|
|
|
|
routes = append(routes, &Route{
|
|
|
- Endpoint: provisionDOCREndpoint,
|
|
|
- Handler: provisionDOCRHandler,
|
|
|
+ Endpoint: getTemplatesEndpoint,
|
|
|
+ Handler: getTemplatesHandler,
|
|
|
Router: r,
|
|
|
})
|
|
|
|
|
|
- // POST /api/projects/{project_id}/provision/doks -> provision.NewProvisionDOKSHandler
|
|
|
- provisionDOKSEndpoint := factory.NewAPIEndpoint(
|
|
|
+ // GET /api/projects/{project_id}/infras/templates -> infra.NewInfraGetHandler
|
|
|
+ getTemplateEndpoint := factory.NewAPIEndpoint(
|
|
|
&types.APIRequestMetadata{
|
|
|
- Verb: types.APIVerbCreate,
|
|
|
- Method: types.HTTPVerbPost,
|
|
|
+ Verb: types.APIVerbGet,
|
|
|
+ Method: types.HTTPVerbGet,
|
|
|
Path: &types.Path{
|
|
|
Parent: basePath,
|
|
|
- RelativePath: relPath + "/provision/doks",
|
|
|
+ RelativePath: fmt.Sprintf("%s/infras/templates/{%s}/{%s}", relPath, types.URLParamTemplateName, types.URLParamTemplateVersion),
|
|
|
},
|
|
|
Scopes: []types.PermissionScope{
|
|
|
types.UserScope,
|
|
|
types.ProjectScope,
|
|
|
},
|
|
|
- CheckUsage: true,
|
|
|
- UsageMetric: types.Clusters,
|
|
|
},
|
|
|
)
|
|
|
|
|
|
- provisionDOKSHandler := provision.NewProvisionDOKSHandler(
|
|
|
+ getTemplateHandler := infra.NewInfraGetTemplateHandler(
|
|
|
config,
|
|
|
- factory.GetDecoderValidator(),
|
|
|
factory.GetResultWriter(),
|
|
|
)
|
|
|
|
|
|
routes = append(routes, &Route{
|
|
|
- Endpoint: provisionDOKSEndpoint,
|
|
|
- Handler: provisionDOKSHandler,
|
|
|
+ Endpoint: getTemplateEndpoint,
|
|
|
+ Handler: getTemplateHandler,
|
|
|
Router: r,
|
|
|
})
|
|
|
|
|
|
- // POST /api/projects/{project_id}/provision/gcr -> provision.NewProvisionGCRHandler
|
|
|
- provisionGCREndpoint := factory.NewAPIEndpoint(
|
|
|
+ // // POST /api/projects/{project_id}/provision/ecr -> provision.NewProvisionECRHandler
|
|
|
+ // provisionECREndpoint := factory.NewAPIEndpoint(
|
|
|
+ // &types.APIRequestMetadata{
|
|
|
+ // Verb: types.APIVerbCreate,
|
|
|
+ // Method: types.HTTPVerbPost,
|
|
|
+ // Path: &types.Path{
|
|
|
+ // Parent: basePath,
|
|
|
+ // RelativePath: relPath + "/provision/ecr",
|
|
|
+ // },
|
|
|
+ // Scopes: []types.PermissionScope{
|
|
|
+ // types.UserScope,
|
|
|
+ // types.ProjectScope,
|
|
|
+ // },
|
|
|
+ // },
|
|
|
+ // )
|
|
|
+
|
|
|
+ // provisionECRHandler := provision.NewProvisionECRHandler(
|
|
|
+ // config,
|
|
|
+ // factory.GetDecoderValidator(),
|
|
|
+ // factory.GetResultWriter(),
|
|
|
+ // )
|
|
|
+
|
|
|
+ // routes = append(routes, &Route{
|
|
|
+ // Endpoint: provisionECREndpoint,
|
|
|
+ // Handler: provisionECRHandler,
|
|
|
+ // Router: r,
|
|
|
+ // })
|
|
|
+
|
|
|
+ // // POST /api/projects/{project_id}/provision/eks -> provision.NewProvisionEKSHandler
|
|
|
+ // provisionEKSEndpoint := factory.NewAPIEndpoint(
|
|
|
+ // &types.APIRequestMetadata{
|
|
|
+ // Verb: types.APIVerbCreate,
|
|
|
+ // Method: types.HTTPVerbPost,
|
|
|
+ // Path: &types.Path{
|
|
|
+ // Parent: basePath,
|
|
|
+ // RelativePath: relPath + "/provision/eks",
|
|
|
+ // },
|
|
|
+ // Scopes: []types.PermissionScope{
|
|
|
+ // types.UserScope,
|
|
|
+ // types.ProjectScope,
|
|
|
+ // },
|
|
|
+ // CheckUsage: true,
|
|
|
+ // UsageMetric: types.Clusters,
|
|
|
+ // },
|
|
|
+ // )
|
|
|
+
|
|
|
+ // provisionEKSHandler := provision.NewProvisionEKSHandler(
|
|
|
+ // config,
|
|
|
+ // factory.GetDecoderValidator(),
|
|
|
+ // factory.GetResultWriter(),
|
|
|
+ // )
|
|
|
+
|
|
|
+ // routes = append(routes, &Route{
|
|
|
+ // Endpoint: provisionEKSEndpoint,
|
|
|
+ // Handler: provisionEKSHandler,
|
|
|
+ // Router: r,
|
|
|
+ // })
|
|
|
+
|
|
|
+ // // POST /api/projects/{project_id}/provision/docr -> provision.NewProvisionDOCRHandler
|
|
|
+ // provisionDOCREndpoint := factory.NewAPIEndpoint(
|
|
|
+ // &types.APIRequestMetadata{
|
|
|
+ // Verb: types.APIVerbCreate,
|
|
|
+ // Method: types.HTTPVerbPost,
|
|
|
+ // Path: &types.Path{
|
|
|
+ // Parent: basePath,
|
|
|
+ // RelativePath: relPath + "/provision/docr",
|
|
|
+ // },
|
|
|
+ // Scopes: []types.PermissionScope{
|
|
|
+ // types.UserScope,
|
|
|
+ // types.ProjectScope,
|
|
|
+ // },
|
|
|
+ // },
|
|
|
+ // )
|
|
|
+
|
|
|
+ // provisionDOCRHandler := provision.NewProvisionDOCRHandler(
|
|
|
+ // config,
|
|
|
+ // factory.GetDecoderValidator(),
|
|
|
+ // factory.GetResultWriter(),
|
|
|
+ // )
|
|
|
+
|
|
|
+ // routes = append(routes, &Route{
|
|
|
+ // Endpoint: provisionDOCREndpoint,
|
|
|
+ // Handler: provisionDOCRHandler,
|
|
|
+ // Router: r,
|
|
|
+ // })
|
|
|
+
|
|
|
+ // // POST /api/projects/{project_id}/provision/doks -> provision.NewProvisionDOKSHandler
|
|
|
+ // provisionDOKSEndpoint := factory.NewAPIEndpoint(
|
|
|
+ // &types.APIRequestMetadata{
|
|
|
+ // Verb: types.APIVerbCreate,
|
|
|
+ // Method: types.HTTPVerbPost,
|
|
|
+ // Path: &types.Path{
|
|
|
+ // Parent: basePath,
|
|
|
+ // RelativePath: relPath + "/provision/doks",
|
|
|
+ // },
|
|
|
+ // Scopes: []types.PermissionScope{
|
|
|
+ // types.UserScope,
|
|
|
+ // types.ProjectScope,
|
|
|
+ // },
|
|
|
+ // CheckUsage: true,
|
|
|
+ // UsageMetric: types.Clusters,
|
|
|
+ // },
|
|
|
+ // )
|
|
|
+
|
|
|
+ // provisionDOKSHandler := provision.NewProvisionDOKSHandler(
|
|
|
+ // config,
|
|
|
+ // factory.GetDecoderValidator(),
|
|
|
+ // factory.GetResultWriter(),
|
|
|
+ // )
|
|
|
+
|
|
|
+ // routes = append(routes, &Route{
|
|
|
+ // Endpoint: provisionDOKSEndpoint,
|
|
|
+ // Handler: provisionDOKSHandler,
|
|
|
+ // Router: r,
|
|
|
+ // })
|
|
|
+
|
|
|
+ // // POST /api/projects/{project_id}/provision/gcr -> provision.NewProvisionGCRHandler
|
|
|
+ // provisionGCREndpoint := factory.NewAPIEndpoint(
|
|
|
+ // &types.APIRequestMetadata{
|
|
|
+ // Verb: types.APIVerbCreate,
|
|
|
+ // Method: types.HTTPVerbPost,
|
|
|
+ // Path: &types.Path{
|
|
|
+ // Parent: basePath,
|
|
|
+ // RelativePath: relPath + "/provision/gcr",
|
|
|
+ // },
|
|
|
+ // Scopes: []types.PermissionScope{
|
|
|
+ // types.UserScope,
|
|
|
+ // types.ProjectScope,
|
|
|
+ // },
|
|
|
+ // },
|
|
|
+ // )
|
|
|
+
|
|
|
+ // provisionGCRHandler := provision.NewProvisionGCRHandler(
|
|
|
+ // config,
|
|
|
+ // factory.GetDecoderValidator(),
|
|
|
+ // factory.GetResultWriter(),
|
|
|
+ // )
|
|
|
+
|
|
|
+ // routes = append(routes, &Route{
|
|
|
+ // Endpoint: provisionGCREndpoint,
|
|
|
+ // Handler: provisionGCRHandler,
|
|
|
+ // Router: r,
|
|
|
+ // })
|
|
|
+
|
|
|
+ // // POST /api/projects/{project_id}/provision/gke -> provision.NewProvisionGKEHandler
|
|
|
+ // provisionGKEEndpoint := factory.NewAPIEndpoint(
|
|
|
+ // &types.APIRequestMetadata{
|
|
|
+ // Verb: types.APIVerbCreate,
|
|
|
+ // Method: types.HTTPVerbPost,
|
|
|
+ // Path: &types.Path{
|
|
|
+ // Parent: basePath,
|
|
|
+ // RelativePath: relPath + "/provision/gke",
|
|
|
+ // },
|
|
|
+ // Scopes: []types.PermissionScope{
|
|
|
+ // types.UserScope,
|
|
|
+ // types.ProjectScope,
|
|
|
+ // },
|
|
|
+ // CheckUsage: true,
|
|
|
+ // UsageMetric: types.Clusters,
|
|
|
+ // },
|
|
|
+ // )
|
|
|
+
|
|
|
+ // provisionGKEHandler := provision.NewProvisionGKEHandler(
|
|
|
+ // config,
|
|
|
+ // factory.GetDecoderValidator(),
|
|
|
+ // factory.GetResultWriter(),
|
|
|
+ // )
|
|
|
+
|
|
|
+ // routes = append(routes, &Route{
|
|
|
+ // Endpoint: provisionGKEEndpoint,
|
|
|
+ // Handler: provisionGKEHandler,
|
|
|
+ // Router: r,
|
|
|
+ // })
|
|
|
+
|
|
|
+ // POST /api/projects/{project_id}/helmrepos -> helmrepo.NewHelmRepoCreateHandler
|
|
|
+ hrCreateEndpoint := factory.NewAPIEndpoint(
|
|
|
&types.APIRequestMetadata{
|
|
|
Verb: types.APIVerbCreate,
|
|
|
Method: types.HTTPVerbPost,
|
|
|
Path: &types.Path{
|
|
|
Parent: basePath,
|
|
|
- RelativePath: relPath + "/provision/gcr",
|
|
|
+ RelativePath: relPath + "/helmrepos",
|
|
|
},
|
|
|
Scopes: []types.PermissionScope{
|
|
|
types.UserScope,
|
|
|
@@ -764,45 +907,42 @@ func getProjectRoutes(
|
|
|
},
|
|
|
)
|
|
|
|
|
|
- provisionGCRHandler := provision.NewProvisionGCRHandler(
|
|
|
+ hrCreateHandler := helmrepo.NewHelmRepoCreateHandler(
|
|
|
config,
|
|
|
factory.GetDecoderValidator(),
|
|
|
factory.GetResultWriter(),
|
|
|
)
|
|
|
|
|
|
routes = append(routes, &Route{
|
|
|
- Endpoint: provisionGCREndpoint,
|
|
|
- Handler: provisionGCRHandler,
|
|
|
+ Endpoint: hrCreateEndpoint,
|
|
|
+ Handler: hrCreateHandler,
|
|
|
Router: r,
|
|
|
})
|
|
|
|
|
|
- // POST /api/projects/{project_id}/provision/gke -> provision.NewProvisionGKEHandler
|
|
|
- provisionGKEEndpoint := factory.NewAPIEndpoint(
|
|
|
+ // GET /api/projects/{project_id}/helmrepos -> helmrepo.NewHelmRepoListHandler
|
|
|
+ hrListEndpoint := factory.NewAPIEndpoint(
|
|
|
&types.APIRequestMetadata{
|
|
|
- Verb: types.APIVerbCreate,
|
|
|
- Method: types.HTTPVerbPost,
|
|
|
+ Verb: types.APIVerbList,
|
|
|
+ Method: types.HTTPVerbGet,
|
|
|
Path: &types.Path{
|
|
|
Parent: basePath,
|
|
|
- RelativePath: relPath + "/provision/gke",
|
|
|
+ RelativePath: relPath + "/helmrepos",
|
|
|
},
|
|
|
Scopes: []types.PermissionScope{
|
|
|
types.UserScope,
|
|
|
types.ProjectScope,
|
|
|
},
|
|
|
- CheckUsage: true,
|
|
|
- UsageMetric: types.Clusters,
|
|
|
},
|
|
|
)
|
|
|
|
|
|
- provisionGKEHandler := provision.NewProvisionGKEHandler(
|
|
|
+ hrListHandler := helmrepo.NewHelmRepoListHandler(
|
|
|
config,
|
|
|
- factory.GetDecoderValidator(),
|
|
|
factory.GetResultWriter(),
|
|
|
)
|
|
|
|
|
|
routes = append(routes, &Route{
|
|
|
- Endpoint: provisionGKEEndpoint,
|
|
|
- Handler: provisionGKEHandler,
|
|
|
+ Endpoint: hrListEndpoint,
|
|
|
+ Handler: hrListHandler,
|
|
|
Router: r,
|
|
|
})
|
|
|
|