Explorar o código

Revert "POR-1902 validate name against existing porter apps" (#3776)

ianedwards %!s(int64=2) %!d(string=hai) anos
pai
achega
3bc43f0529

+ 1 - 15
api/server/handlers/porter_app/validate.go

@@ -112,28 +112,14 @@ func (c *ValidatePorterAppHandler) ServeHTTP(w http.ResponseWriter, r *http.Requ
 		}
 	}
 
-	existingApps, err := c.Repo().PorterApp().ListPorterAppsByProjectID(project.ID)
-	if err != nil {
-		err := telemetry.Error(ctx, span, err, "error listing porter apps by project id")
-		c.HandleAPIError(w, r, apierrors.NewErrPassThroughToClient(err, http.StatusInternalServerError))
-		return
-	}
-
 	if appProto.Name == "" {
 		err := telemetry.Error(ctx, span, nil, "app proto name is empty")
 		c.HandleAPIError(w, r, apierrors.NewErrPassThroughToClient(err, http.StatusBadRequest))
 		return
 	}
-	telemetry.WithAttributes(span, telemetry.AttributeKV{Key: "app-name", Value: appProto.Name})
 
-	for _, existingApp := range existingApps {
-		if existingApp.Name == appProto.Name {
-			err := telemetry.Error(ctx, span, nil, "app with the provided name already exists in the project")
-			c.HandleAPIError(w, r, apierrors.NewErrPassThroughToClient(err, http.StatusBadRequest))
-			return
-		}
-	}
 	telemetry.WithAttributes(span,
+		telemetry.AttributeKV{Key: "app-name", Value: appProto.Name},
 		telemetry.AttributeKV{Key: "deployment-target-id", Value: request.DeploymentTargetId},
 		telemetry.AttributeKV{Key: "commit-sha", Value: request.CommitSHA},
 	)

+ 1 - 7
dashboard/src/lib/porter-apps/index.ts

@@ -59,13 +59,7 @@ export const deletionValidator = z.object({
 export const clientAppValidator = z.object({
   name: z.object({
     readOnly: z.boolean(),
-    value: z
-      .string()
-      .min(1, { message: "Name must be at least 1 character" })
-      .max(30, { message: "Name must be 30 characters or less" })
-      .regex(/^[a-z0-9-]{1,61}$/, {
-        message: 'Lowercase letters, numbers, and "-" only.',
-      }),
+    value: z.string(),
   }),
   envGroups: z
     .object({ name: z.string(), version: z.bigint() })

+ 7 - 21
dashboard/src/main/home/app-dashboard/create-app/CreateApp.tsx

@@ -80,7 +80,7 @@ const CreateApp: React.FC<CreateAppProps> = ({ history }) => {
   const { maxCPU, maxRAM } = useClusterResourceLimits({
     projectId: currentProject?.id,
     clusterId: currentCluster?.id,
-  });
+  })
 
   const { data: porterApps = [] } = useQuery<string[]>(
     ["getPorterApps", currentProject?.id, currentCluster?.id],
@@ -513,7 +513,7 @@ const CreateApp: React.FC<CreateAppProps> = ({ history }) => {
                       placeholder="ex: academic-sophon"
                       type="text"
                       width="300px"
-                      error={errors.app?.name?.value?.message}
+                      error={errors.app?.name?.message}
                       disabled={name.readOnly}
                       disabledTooltip={
                         "You may only edit this field in your porter.yaml."
@@ -585,23 +585,10 @@ const CreateApp: React.FC<CreateAppProps> = ({ history }) => {
                           <ImageSettings
                             projectId={currentProject.id}
                             imageUri={image?.repository ?? ""}
-                            setImageUri={(uri: string) =>
-                              setValue("source.image", {
-                                ...image,
-                                repository: uri,
-                              })
-                            }
+                            setImageUri={(uri: string) => setValue("source.image", { ...image, repository: uri })}
                             imageTag={image?.tag ?? ""}
-                            setImageTag={(tag: string) =>
-                              setValue("source.image", { ...image, tag })
-                            }
-                            resetImageInfo={() =>
-                              setValue("source.image", {
-                                ...image,
-                                repository: "",
-                                tag: "",
-                              })
-                            }
+                            setImageTag={(tag: string) => setValue("source.image", { ...image, tag })}
+                            resetImageInfo={() => setValue("source.image", { ...image, repository: "", tag: "" })}
                           />
                         )
                       ) : null}
@@ -627,9 +614,8 @@ const CreateApp: React.FC<CreateAppProps> = ({ history }) => {
                             }
                           >
                             {detectedServices.count > 0
-                              ? `Detected ${detectedServices.count} service${
-                                  detectedServices.count > 1 ? "s" : ""
-                                } from porter.yaml.`
+                              ? `Detected ${detectedServices.count} service${detectedServices.count > 1 ? "s" : ""
+                              } from porter.yaml.`
                               : `Could not detect any services from porter.yaml. Make sure it exists in the root of your repo.`}
                           </Text>
                         </AppearingDiv>

+ 0 - 11
internal/repository/gorm/porter_app.go

@@ -34,17 +34,6 @@ func (repo *PorterAppRepository) ListPorterAppByClusterID(clusterID uint) ([]*mo
 	return apps, nil
 }
 
-// ListPorterAppsByProjectID returns a list of PorterApps by project ID.
-func (repo *PorterAppRepository) ListPorterAppsByProjectID(projectID uint) ([]*models.PorterApp, error) {
-	apps := []*models.PorterApp{}
-
-	if err := repo.db.Where("project_id = ?", projectID).Find(&apps).Error; err != nil {
-		return nil, err
-	}
-
-	return apps, nil
-}
-
 func (repo *PorterAppRepository) ReadPorterAppByName(clusterID uint, name string) (*models.PorterApp, error) {
 	app := &models.PorterApp{}
 

+ 0 - 1
internal/repository/porter_app.go

@@ -10,7 +10,6 @@ type PorterAppRepository interface {
 	ReadPorterAppsByProjectIDAndName(projectID uint, name string) ([]*models.PorterApp, error)
 	CreatePorterApp(app *models.PorterApp) (*models.PorterApp, error)
 	ListPorterAppByClusterID(clusterID uint) ([]*models.PorterApp, error)
-	ListPorterAppsByProjectID(projectID uint) ([]*models.PorterApp, error)
 	UpdatePorterApp(app *models.PorterApp) (*models.PorterApp, error)
 	DeletePorterApp(app *models.PorterApp) (*models.PorterApp, error)
 }

+ 0 - 6
internal/repository/test/porter_app.go

@@ -34,16 +34,10 @@ func (repo *PorterAppRepository) UpdatePorterApp(app *models.PorterApp) (*models
 	return nil, errors.New("cannot write database")
 }
 
-// ListPorterAppByClusterID is a test method that is not implemented
 func (repo *PorterAppRepository) ListPorterAppByClusterID(clusterID uint) ([]*models.PorterApp, error) {
 	return nil, errors.New("cannot write database")
 }
 
-// ListPorterAppsByProjectID is a test method that is not implemented
-func (repo *PorterAppRepository) ListPorterAppsByProjectID(projectID uint) ([]*models.PorterApp, error) {
-	return nil, errors.New("cannot write database")
-}
-
 func (repo *PorterAppRepository) DeletePorterApp(app *models.PorterApp) (*models.PorterApp, error) {
 	return nil, errors.New("cannot write database")
 }