package iam import ( "context" "google.golang.org/api/cloudresourcemanager/v1" "google.golang.org/api/iam/v1" "google.golang.org/api/option" ) type IAMService struct { //nolint *iam.Service } type Component struct { APIKey *iam.ServiceAccountKey ServiceAccount *iam.ServiceAccount PolicyMemberships *cloudresourcemanager.Policy } // CreateIAMClient - creates a new IAM Service Client. func CreateIAMClient(ctx context.Context, opts ...option.ClientOption) (*iam.Service, error) { return iam.NewService(ctx, opts...) } // NewIAMService creates a new iam service and returns it. func NewIAMService(ctx context.Context, opts ...option.ClientOption) (*IAMService, error) { iamService, err := CreateIAMClient(ctx, opts...) if err != nil { return nil, err } return &IAMService{ iamService, }, nil } // NewComponent creates a new component that wraps a sa api key, sa and policy members. func NewComponent(apiKey *iam.ServiceAccountKey, serviceAccount *iam.ServiceAccount, policyMembers *cloudresourcemanager.Policy) *Component { return &Component{ APIKey: apiKey, ServiceAccount: serviceAccount, PolicyMemberships: policyMembers, } }