Skip to content

Commit 3100929

Browse files
authored
chore: change create project api to support the new console (#1308)
Signed-off-by: Alessandro Yuichi Okimoto <yuichijpn@gmail.com>
1 parent 96622e5 commit 3100929

File tree

10 files changed

+140
-252
lines changed

10 files changed

+140
-252
lines changed

api-description/web-api.swagger.yaml

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3554,18 +3554,15 @@ definitions:
35543554
environmentCreateProjectCommand:
35553555
type: object
35563556
properties:
3557-
id:
3557+
organizationId:
3558+
type: string
3559+
name:
35583560
type: string
35593561
description:
35603562
type: string
35613563
title: optional
3562-
name:
3563-
type: string
35643564
urlCode:
35653565
type: string
3566-
ownerEmail:
3567-
type: string
3568-
description: 'TODO: add organizationID once we support organization create UI.'
35693566
environmentCreateProjectRequest:
35703567
type: object
35713568
properties:

manifests/bucketeer/charts/web/values.yaml

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

pkg/environment/api/project.go

Lines changed: 4 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -255,49 +255,14 @@ func (s *EnvironmentService) CreateProject(
255255
}
256256
name := strings.TrimSpace(req.Command.Name)
257257
urlCode := strings.TrimSpace(req.Command.UrlCode)
258-
// TODO: Temporary implementations that create Organization at the same time as Project.
259-
// This should be removed when the Organization management page is added.
260-
organization, err := domain.NewOrganization(
258+
project, err := domain.NewProject(
261259
name,
262260
urlCode,
263-
req.Command.OwnerEmail,
264261
req.Command.Description,
265-
false,
262+
editor.Email,
263+
req.Command.OrganizationId,
266264
false,
267265
)
268-
if err != nil {
269-
s.logger.Error(
270-
"Failed to create organization",
271-
log.FieldsFromImcomingContext(ctx).AddFields(
272-
zap.Error(err),
273-
)...,
274-
)
275-
return nil, err
276-
}
277-
createOrgCmd := &environmentproto.CreateOrganizationCommand{
278-
Name: organization.Name,
279-
UrlCode: organization.UrlCode,
280-
Description: organization.Description,
281-
IsTrial: false,
282-
}
283-
if err = s.createOrganization(ctx, createOrgCmd, organization, editor, localizer); err != nil {
284-
s.logger.Error(
285-
"Failed to save organization",
286-
log.FieldsFromImcomingContext(ctx).AddFields(
287-
zap.Error(err),
288-
)...,
289-
)
290-
return nil, err
291-
}
292-
s.logger.Info(
293-
`Organization is created at the same time as Project.
294-
This is a temporary implementation during the transition period.`,
295-
zap.String("organization_id", organization.Id),
296-
zap.String("organization_name", organization.Name),
297-
zap.String("organization_url_code", organization.UrlCode),
298-
)
299-
300-
project, err := domain.NewProject(name, urlCode, req.Command.Description, editor.Email, organization.Id, false)
301266
if err != nil {
302267
s.logger.Error(
303268
"Failed to create project",
@@ -356,16 +321,6 @@ func validateCreateProjectRequest(req *environmentproto.CreateProjectRequest, lo
356321
}
357322
return dt.Err()
358323
}
359-
if !emailRegex.MatchString(req.Command.OwnerEmail) {
360-
dt, err := statusInvalidProjectCreatorEmail.WithDetails(&errdetails.LocalizedMessage{
361-
Locale: localizer.GetLocale(),
362-
Message: localizer.MustLocalizeWithTemplate(locale.InvalidArgumentError, "owner_email"),
363-
})
364-
if err != nil {
365-
return statusInternal.Err()
366-
}
367-
return dt.Err()
368-
}
369324
return nil
370325
}
371326

@@ -580,7 +535,7 @@ func validateCreateTrialProjectRequest(
580535
if !emailRegex.MatchString(req.Command.Email) {
581536
dt, err := statusInvalidProjectCreatorEmail.WithDetails(&errdetails.LocalizedMessage{
582537
Locale: localizer.GetLocale(),
583-
Message: localizer.MustLocalizeWithTemplate(locale.InvalidArgumentError, "email"),
538+
Message: localizer.MustLocalizeWithTemplate(locale.InvalidArgumentError, "owner_email"),
584539
})
585540
if err != nil {
586541
return statusInternal.Err()

pkg/environment/api/project_test.go

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -286,17 +286,13 @@ func TestCreateProjectMySQL(t *testing.T) {
286286
{
287287
desc: "err: ErrProjectAlreadyExists: duplicate id",
288288
setup: func(s *EnvironmentService) {
289-
s.mysqlClient.(*mysqlmock.MockClient).EXPECT().BeginTx(gomock.Any()).Return(nil, nil)
290-
s.mysqlClient.(*mysqlmock.MockClient).EXPECT().RunInTransaction(
291-
gomock.Any(), gomock.Any(), gomock.Any(),
292-
).Return(nil)
293289
s.mysqlClient.(*mysqlmock.MockClient).EXPECT().BeginTx(gomock.Any()).Return(nil, nil)
294290
s.mysqlClient.(*mysqlmock.MockClient).EXPECT().RunInTransaction(
295291
gomock.Any(), gomock.Any(), gomock.Any(),
296292
).Return(v2es.ErrProjectAlreadyExists)
297293
},
298294
req: &proto.CreateProjectRequest{
299-
Command: &proto.CreateProjectCommand{Name: "id-0", UrlCode: "id-0", OwnerEmail: "test@test.org"},
295+
Command: &proto.CreateProjectCommand{OrganizationId: "organization-id", Name: "id-0", UrlCode: "id-0"},
300296
},
301297
expectedErr: createError(statusProjectAlreadyExists, localizer.MustLocalize(locale.AlreadyExistsError)),
302298
},
@@ -309,7 +305,7 @@ func TestCreateProjectMySQL(t *testing.T) {
309305
).Return(errors.New("error"))
310306
},
311307
req: &proto.CreateProjectRequest{
312-
Command: &proto.CreateProjectCommand{Name: "id-1", UrlCode: "id-1", OwnerEmail: "test@test.org"},
308+
Command: &proto.CreateProjectCommand{OrganizationId: "organization-id", Name: "id-1", UrlCode: "id-1"},
313309
},
314310
expectedErr: createError(statusInternal, localizer.MustLocalize(locale.InternalServerError)),
315311
},
@@ -320,17 +316,13 @@ func TestCreateProjectMySQL(t *testing.T) {
320316
s.mysqlClient.(*mysqlmock.MockClient).EXPECT().RunInTransaction(
321317
gomock.Any(), gomock.Any(), gomock.Any(),
322318
).Return(nil)
323-
s.mysqlClient.(*mysqlmock.MockClient).EXPECT().BeginTx(gomock.Any()).Return(nil, nil)
324-
s.mysqlClient.(*mysqlmock.MockClient).EXPECT().RunInTransaction(
325-
gomock.Any(), gomock.Any(), gomock.Any(),
326-
).Return(nil)
327319
},
328320
req: &proto.CreateProjectRequest{
329321
Command: &proto.CreateProjectCommand{
330-
Name: projExpected.Name,
331-
UrlCode: projExpected.UrlCode,
332-
Description: projExpected.Description,
333-
OwnerEmail: "test@test.org",
322+
OrganizationId: "organization-id",
323+
Name: projExpected.Name,
324+
UrlCode: projExpected.UrlCode,
325+
Description: projExpected.Description,
334326
},
335327
},
336328
expected: projExpected.Project,
@@ -439,7 +431,7 @@ func TestCreateTrialProjectMySQL(t *testing.T) {
439431
req: &proto.CreateTrialProjectRequest{
440432
Command: &proto.CreateTrialProjectCommand{Name: "id-0", Email: "email"},
441433
},
442-
expectedErr: createError(statusInvalidProjectCreatorEmail, localizer.MustLocalizeWithTemplate(locale.InvalidArgumentError, "email")),
434+
expectedErr: createError(statusInvalidProjectCreatorEmail, localizer.MustLocalizeWithTemplate(locale.InvalidArgumentError, "owner_email")),
443435
},
444436
{
445437
desc: "err: ErrProjectAlreadyExists: trial exists",

0 commit comments

Comments
 (0)