Skip to content

Commit

Permalink
Associate project for every organisation fetched #6380
Browse files Browse the repository at this point in the history
Signed-off-by: Yashvi Jain <Yashvi.jain@progress.com>
  • Loading branch information
Yashvi Jain authored and Yashvi Jain committed Jan 6, 2022
1 parent 30b5842 commit b56ec0e
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,8 @@ func serve(cmd *cobra.Command, args []string) {
}
authzClient := authz.NewAuthorizationServiceClient(authzConn)

authzClientProject := authz.NewProjectsServiceClient(authzConn)

if cfg.SecretsAddress == "" {
fail(errors.New("missing required config secrets_address"))
}
Expand All @@ -97,7 +99,7 @@ func serve(cmd *cobra.Command, args []string) {
// get secrets client
secretsClient := secrets.NewSecretsServiceClient(secretsConn)

service, err := service.Start(l, migrationConfig, connFactory, secretsClient, authzClient)
service, err := service.Start(l, migrationConfig, connFactory, secretsClient, authzClient, authzClientProject)
if err != nil {
fail(errors.Wrap(err, "could not initialize storage"))
}
Expand Down
4 changes: 3 additions & 1 deletion components/infra-proxy-service/config/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,8 @@ func ConfigFromViper(configFile string) (*service.Service, error) {
}
authzClient := authz.NewAuthorizationServiceClient(authzConn)

authzClientProject := authz.NewProjectsServiceClient(authzConn)

if cfg.SecretsAddress == "" {
fail(errors.New("missing required config secrets_address"))
}
Expand All @@ -98,7 +100,7 @@ func ConfigFromViper(configFile string) (*service.Service, error) {
// gets secrets client
secretsClient := secrets.NewSecretsServiceClient(secretsConn)

service, err := service.Start(l, migrationConfig, connFactory, secretsClient, authzClient)
service, err := service.Start(l, migrationConfig, connFactory, secretsClient, authzClient, authzClientProject)
if err != nil {
fail(errors.Wrap(err, "could not initialize storage"))
}
Expand Down
24 changes: 23 additions & 1 deletion components/infra-proxy-service/server/orgs.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (

"github.com/chef/automate/api/external/common/query"
secrets "github.com/chef/automate/api/external/secrets"
"github.com/chef/automate/api/interservice/authz"
"github.com/chef/automate/api/interservice/infra_proxy/request"
"github.com/chef/automate/api/interservice/infra_proxy/response"
"github.com/chef/automate/components/infra-proxy-service/service"
Expand Down Expand Up @@ -240,7 +241,11 @@ func (s *Server) GetInfraServerOrgs(ctx context.Context, req *request.GetInfraSe
// Save organisations in backend DB
orgs := []storage.Org{}
for key := range orgsList {
org, err := s.service.Storage.StoreOrg(ctx, key, key, "", "", req.ServerId, nil)
projects, err := createProjectFromOrgIdAndServerID(s, ctx, req.ServerId, key)
if err != nil {
return nil, err
}
org, err := s.service.Storage.StoreOrg(ctx, key, key, "", "", req.ServerId, projects)
if err != nil {
return nil, service.ParseStorageError(err, *req, "org")
}
Expand Down Expand Up @@ -274,3 +279,20 @@ func fromStorageToListOrgs(sl []storage.Org) []*response.Org {

return tl
}

//function to create a new iam project for each client
func createProjectFromOrgIdAndServerID(s *Server, ctx context.Context, serverId string, orgId string) ([]string, error) {

newProject := &authz.CreateProjectReq{
Name: serverId + "_" + orgId,
Id: serverId + "_" + orgId,
SkipPolicies: false,
}

projectID, err := s.service.AuthzProject.CreateProject(ctx, newProject)
if err != nil {
return nil, err
}

return []string{projectID.Project.Name}, nil
}
20 changes: 11 additions & 9 deletions components/infra-proxy-service/service/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,25 +18,27 @@ import (

// Service holds the internal state and configuration of the Infra proxy service.
type Service struct {
Logger logger.Logger
ConnFactory *secureconn.Factory
Storage storage.Storage
Secrets secrets.SecretsServiceClient
Logger logger.Logger
ConnFactory *secureconn.Factory
Storage storage.Storage
Secrets secrets.SecretsServiceClient
AuthzProject authz.ProjectsServiceClient
}

// Start returns an instance of Service that connects to a postgres storage backend.
func Start(l logger.Logger, migrationsConfig migration.Config, connFactory *secureconn.Factory, secretsClient secrets.SecretsServiceClient,
authzClient authz.AuthorizationServiceClient) (*Service, error) {
authzClient authz.AuthorizationServiceClient, authzClientProject authz.ProjectsServiceClient) (*Service, error) {
p, err := postgres.New(l, migrationsConfig, authzClient)
if err != nil {
return nil, err
}

return &Service{
Logger: l,
ConnFactory: connFactory,
Storage: p,
Secrets: secretsClient,
Logger: l,
ConnFactory: connFactory,
Storage: p,
Secrets: secretsClient,
AuthzProject: authzClientProject,
}, nil
}

Expand Down

0 comments on commit b56ec0e

Please sign in to comment.