@@ -2126,6 +2126,11 @@ func (repo repository) ValidateProjectRecord(ctx context.Context, signatureID, n
21262126 expressionAttributeValues [":a" ] = & dynamodb.AttributeValue {BOOL : aws .Bool (true )}
21272127 updateExpression = updateExpression + " #A = :a,"
21282128
2129+ // Set embago acknowledged flag
2130+ // expressionAttributeNames["#E"] = aws.String("signature_embargo_acked")
2131+ // expressionAttributeValues[":e"] = &dynamodb.AttributeValue{BOOL: aws.Bool(true)}
2132+ // updateExpression = updateExpression + " #E = :e,"
2133+
21292134 expressionAttributeNames ["#S" ] = aws .String ("note" )
21302135 expressionAttributeValues [":s" ] = & dynamodb.AttributeValue {S : aws .String (note )}
21312136 updateExpression = updateExpression + " #S = :s"
@@ -2527,6 +2532,7 @@ func (repo repository) CreateProjectCompanyEmployeeSignature(ctx context.Context
25272532 SignatureReferenceID : employeeUserModel .UserID ,
25282533 SignatureApproved : true ,
25292534 SignatureSigned : true ,
2535+ SignatureEmbargoAcked : true ,
25302536 SignatureDocumentMajorVersion : 2 ,
25312537 SignatureDocumentMinorVersion : 0 ,
25322538 SigTypeSignedApprovedID : fmt .Sprintf ("ecla#true#true#%s" , companyModel .CompanyID ),
@@ -3199,10 +3205,10 @@ func (repo repository) UpdateApprovalList(ctx context.Context, claManager *model
31993205 PageSize : utils .Int64 (10 ),
32003206 }
32013207
3202- // authUser := auth.User{
3203- // Email: claManager.LfEmail.String(),
3204- // UserName: claManager.LfUsername,
3205- // }
3208+ //authUser := auth.User{
3209+ // Email: claManager.LfEmail.String(),
3210+ // UserName: claManager.LfUsername,
3211+ //}
32063212
32073213 // Keep track of gerrit users under a give CLA Group
32083214 var gerritICLAECLAs []string
@@ -3213,8 +3219,8 @@ func (repo repository) UpdateApprovalList(ctx context.Context, claManager *model
32133219 goRoutines := 2
32143220 gerritResultChannel := make (chan * GerritUserResponse , goRoutines )
32153221 gerritQueryStartTime , _ := utils .CurrentTime ()
3216- // go repo.getGerritUsers(ctx, &authUser, projectID, utils.ClaTypeICLA, gerritResultChannel)
3217- // go repo.getGerritUsers(ctx, &authUser, projectID, utils.ClaTypeECLA, gerritResultChannel)
3222+ //go repo.getGerritUsers(ctx, &authUser, projectID, utils.ClaTypeICLA, gerritResultChannel)
3223+ //go repo.getGerritUsers(ctx, &authUser, projectID, utils.ClaTypeECLA, gerritResultChannel)
32183224
32193225 log .WithFields (f ).Debug ("waiting on gerrit user query results from 2 go routines..." )
32203226 for i := 0 ; i < goRoutines ; i ++ {
@@ -3312,19 +3318,19 @@ func (repo repository) UpdateApprovalList(ctx context.Context, claManager *model
33123318 }
33133319 } else {
33143320
3315- // // Update gerrit user
3316- // if utils.StringInSlice(user.LfUsername, gerritICLAECLAs) {
3317- // // gerritIclaErr := repo.gerritService.RemoveUserFromGroup(ctx, &authUser, approvalList.ClaGroupID, user.LfUsername, utils.ClaTypeICLA)
3318- // if gerritIclaErr != nil {
3319- // msg := fmt.Sprintf("unable to remove gerrit user: %s from group: %s", user.LfUsername, approvalList.ClaGroupID)
3320- // log.WithFields(f).WithError(gerritIclaErr).Warn(msg)
3321- // }
3322- // eclaErr := repo.gerritService.RemoveUserFromGroup(ctx, &authUser, approvalList.ClaGroupID, user.LfUsername, utils.ClaTypeECLA)
3323- // if eclaErr != nil {
3324- // msg := fmt.Sprintf("unable to remove gerrit user: %s from group: %s", user.LfUsername, approvalList.ClaGroupID)
3325- // log.WithFields(f).WithError(eclaErr).Warn(msg)
3326- // }
3327- // }
3321+ // Update gerrit user
3322+ // if utils.StringInSlice(user.LfUsername, gerritICLAECLAs) {
3323+ // gerritIclaErr := repo.gerritService.RemoveUserFromGroup(ctx, &authUser, approvalList.ClaGroupID, user.LfUsername, utils.ClaTypeICLA)
3324+ // if gerritIclaErr != nil {
3325+ // msg := fmt.Sprintf("unable to remove gerrit user: %s from group: %s", user.LfUsername, approvalList.ClaGroupID)
3326+ // log.WithFields(f).WithError(gerritIclaErr).Warn(msg)
3327+ // }
3328+ // eclaErr := repo.gerritService.RemoveUserFromGroup(ctx, &authUser, approvalList.ClaGroupID, user.LfUsername, utils.ClaTypeECLA)
3329+ // if eclaErr != nil {
3330+ // msg := fmt.Sprintf("unable to remove gerrit user: %s from group: %s", user.LfUsername, approvalList.ClaGroupID)
3331+ // log.WithFields(f).WithError(eclaErr).Warn(msg)
3332+ // }
3333+ // }
33283334 results <- & ICLAUserResponse {
33293335 ICLASignature : & models.IclaSignature {
33303336 GithubUsername : icla .UserGHUsername ,
@@ -4052,10 +4058,10 @@ func (repo repository) verifyUserApprovals(ctx context.Context, userID, signatur
40524058 }
40534059 email := getBestEmail (user )
40544060
4055- // authUser := auth.User{
4056- // Email: claManager.LfEmail.String(),
4057- // UserName: claManager.LfUsername,
4058- // }
4061+ //authUser := auth.User{
4062+ // Email: claManager.LfEmail.String(),
4063+ // UserName: claManager.LfUsername,
4064+ //}
40594065
40604066 if approvalList .Criteria == utils .EmailDomainCriteria {
40614067 // Handle Domains
@@ -4071,20 +4077,20 @@ func (repo repository) verifyUserApprovals(ctx context.Context, userID, signatur
40714077 return user , err
40724078 }
40734079
4074- // // Update Gerrit group users
4075- // if utils.StringInSlice(user.LfUsername, approvalList.GerritICLAECLAs) {
4076- // log.WithFields(f).Debugf("removing gerrit user:%s from claGroup: %s ...", user.LfUsername, approvalList.ClaGroupID)
4077- // iclaErr := repo.gerritService.RemoveUserFromGroup(ctx, &authUser, approvalList.ClaGroupID, user.LfUsername, utils.ClaTypeICLA)
4078- // if iclaErr != nil {
4079- // msg := fmt.Sprintf("unable to remove gerrit user:%s from group:%s", user.LfUsername, approvalList.ClaGroupID)
4080- // log.WithFields(f).Warn(msg)
4081- // }
4082- // eclaErr := repo.gerritService.RemoveUserFromGroup(ctx, &authUser, approvalList.ClaGroupID, user.LfUsername, utils.ClaTypeECLA)
4083- // if eclaErr != nil {
4084- // msg := fmt.Sprintf("unable to remove gerrit user:%s from group:%s", user.LfUsername, approvalList.ClaGroupID)
4085- // log.WithFields(f).Warn(msg)
4086- // }
4087- // }
4080+ // Update Gerrit group users
4081+ // if utils.StringInSlice(user.LfUsername, approvalList.GerritICLAECLAs) {
4082+ // log.WithFields(f).Debugf("removing gerrit user:%s from claGroup: %s ...", user.LfUsername, approvalList.ClaGroupID)
4083+ // iclaErr := repo.gerritService.RemoveUserFromGroup(ctx, &authUser, approvalList.ClaGroupID, user.LfUsername, utils.ClaTypeICLA)
4084+ // if iclaErr != nil {
4085+ // msg := fmt.Sprintf("unable to remove gerrit user:%s from group:%s", user.LfUsername, approvalList.ClaGroupID)
4086+ // log.WithFields(f).Warn(msg)
4087+ // }
4088+ // eclaErr := repo.gerritService.RemoveUserFromGroup(ctx, &authUser, approvalList.ClaGroupID, user.LfUsername, utils.ClaTypeECLA)
4089+ // if eclaErr != nil {
4090+ // msg := fmt.Sprintf("unable to remove gerrit user:%s from group:%s", user.LfUsername, approvalList.ClaGroupID)
4091+ // log.WithFields(f).Warn(msg)
4092+ // }
4093+ // }
40884094 }
40894095 }
40904096 } else if approvalList .Criteria == utils .GitHubOrgCriteria {
@@ -4545,6 +4551,7 @@ func (repo repository) getIntermediateICLAResponse(f logrus.Fields, dbSignatures
45454551 LfUsername : sig .UserLFUsername ,
45464552 SignatureApproved : sig .SignatureApproved ,
45474553 SignatureSigned : sig .SignatureSigned ,
4554+ SignatureEmbargoAcked : true ,
45484555 SignatureModified : sig .DateModified ,
45494556 SignatureID : sig .SignatureID ,
45504557 SignedOn : sigSignedTime ,
@@ -4627,6 +4634,19 @@ func (repo repository) GetClaGroupCorporateContributors(ctx context.Context, cla
46274634 totalCountChannel := make (chan int64 , 1 )
46284635 go repo .getTotalCorporateContributorCount (ctx , claGroupID , companyID , searchTerm , totalCountChannel )
46294636
4637+ totalCount := <- totalCountChannel
4638+ log .WithFields (f ).Debugf ("total corporate contributor count: %d" , totalCount )
4639+ // If the page size is nil, set it to the default
4640+ if pageSize == nil {
4641+ pageSize = aws .Int64 (10 )
4642+ }
4643+
4644+ if * pageSize > totalCount {
4645+ pageSize = aws .Int64 (totalCount )
4646+ }
4647+
4648+ log .WithFields (f ).Debugf ("total corporate contributor count: %d, page size: %d" , totalCount , * pageSize )
4649+
46304650 condition := expression .Key ("signature_project_id" ).Equal (expression .Value (claGroupID ))
46314651 // if companyID != nil {
46324652 // sortKey := fmt.Sprintf("%s#%v#%v#%v", utils.ClaTypeECLA, true, true, *companyID)
@@ -4659,11 +4679,6 @@ func (repo repository) GetClaGroupCorporateContributors(ctx context.Context, cla
46594679 return nil , err
46604680 }
46614681
4662- // If the page size is nil, set it to the default
4663- if pageSize == nil {
4664- pageSize = aws .Int64 (10 )
4665- }
4666-
46674682 // Assemble the query input parameters
46684683 queryInput := & dynamodb.QueryInput {
46694684 ExpressionAttributeNames : expr .Names (),
@@ -4689,9 +4704,14 @@ func (repo repository) GetClaGroupCorporateContributors(ctx context.Context, cla
46894704 }
46904705
46914706 out := & models.CorporateContributorList {List : make ([]* models.CorporateContributor , 0 )}
4707+ if totalCount == 0 {
4708+ return out , nil
4709+ }
46924710 var lastEvaluatedKey string
46934711
4694- for ok := true ; ok ; ok = lastEvaluatedKey != "" {
4712+ currentCount := int64 (0 )
4713+
4714+ for ok := true ; ok ; ok = lastEvaluatedKey != "" && currentCount < * pageSize {
46954715 // Make the DynamoDB Query API call
46964716 log .WithFields (f ).Debug ("querying signatures..." )
46974717 results , queryErr := repo .dynamoDBClient .Query (queryInput )
@@ -4765,26 +4785,28 @@ func (repo repository) GetClaGroupCorporateContributors(ctx context.Context, cla
47654785 SignatureApproved : sig .SignatureApproved ,
47664786 SignatureSigned : sig .SignatureSigned ,
47674787 })
4788+
4789+ // Increment the current count
4790+ currentCount ++
4791+ if currentCount >= * pageSize {
4792+ break
4793+ }
47684794 }
47694795
4770- if results .LastEvaluatedKey ["signature_id" ] != nil {
4796+ if results .LastEvaluatedKey ["signature_id" ] != nil && currentCount < * pageSize {
47714797 lastEvaluatedKey = * results .LastEvaluatedKey ["signature_id" ].S
47724798 queryInput .ExclusiveStartKey = results .LastEvaluatedKey
47734799 } else {
47744800 lastEvaluatedKey = ""
47754801 }
47764802
4777- if int64 (len (out .List )) >= * pageSize {
4778- break
4779- }
4780-
47814803 }
47824804 sort .Slice (out .List , func (i , j int ) bool {
47834805 return out .List [i ].Name < out .List [j ].Name
47844806 })
47854807
4786- out .ResultCount = int64 ( len ( out . List ))
4787- out .TotalCount = <- totalCountChannel
4808+ out .ResultCount = currentCount
4809+ out .TotalCount = totalCount
47884810 out .NextKey = lastEvaluatedKey
47894811
47904812 return out , nil
@@ -4916,7 +4938,10 @@ func (repo repository) ActivateSignature(ctx context.Context, signatureID string
49164938 }
49174939
49184940 // Build the expression
4919- expressionUpdate := expression .Set (expression .Name ("signature_approved" ), expression .Value (true )).Set (expression .Name ("signature_signed" ), expression .Value (false ))
4941+ expressionUpdate := expression .
4942+ Set (expression .Name ("signature_approved" ), expression .Value (true )).
4943+ Set (expression .Name ("signature_signed" ), expression .Value (false )).
4944+ Set (expression .Name ("signature_embargo_acked" ), expression .Value (true ))
49204945
49214946 expr , err := expression .NewBuilder ().WithUpdate (expressionUpdate ).Build ()
49224947 if err != nil {
@@ -4946,32 +4971,32 @@ func (repo repository) ActivateSignature(ctx context.Context, signatureID string
49464971}
49474972
49484973// getGerritUsers is a helper function to fetch the list of gerrit users for the specified type - results are returned through the specified results channel
4949- // func (repo repository) getGerritUsers(ctx context.Context, authUser *auth.User, projectSFID string, claType string, gerritResultChannel chan *GerritUserResponse) {
4950- // // f := logrus.Fields{
4951- // // "functionName": "v1.signatures.repository.getGerritUsers",
4952- // // utils.XREQUESTID: ctx.Value(utils.XREQUESTID),
4953- // // "projectSFID": projectSFID,
4954- // // }
4955- // // log.WithFields(f).Debugf("querying gerrit for %s gerrit users...", claType)
4956- // // gerritIclaUsers, getGerritQueryErr := repo.gerritService.GetUsersOfGroup(ctx, authUser, projectSFID, claType)
4957- // // if getGerritQueryErr != nil || gerritIclaUsers == nil {
4958- // // msg := fmt.Sprintf("unable to fetch gerrit users for claGroup: %s , claType: %s ", projectSFID, claType)
4959- // // log.WithFields(f).WithError(getGerritQueryErr).Warn(msg)
4960- // // gerritResultChannel <- &GerritUserResponse{
4961- // // gerritGroupResponse: nil,
4962- // // queryType: claType,
4963- // // Error: errors.New(msg),
4964- // // }
4965- // // return
4966- // // }
4967-
4968- // // log.WithFields(f).Debugf("retrieved %d gerrit users for CLA type: %s...", len(gerritIclaUsers.Members), claType)
4969- // gerritResultChannel <- &GerritUserResponse{
4970- // gerritGroupResponse: nil ,
4971- // queryType: claType,
4972- // Error: nil,
4973- // }
4974- // }
4974+ //func (repo repository) getGerritUsers(ctx context.Context, authUser *auth.User, projectSFID string, claType string, gerritResultChannel chan *GerritUserResponse) {
4975+ // f := logrus.Fields{
4976+ // "functionName": "v1.signatures.repository.getGerritUsers",
4977+ // utils.XREQUESTID: ctx.Value(utils.XREQUESTID),
4978+ // "projectSFID": projectSFID,
4979+ // }
4980+ // log.WithFields(f).Debugf("querying gerrit for %s gerrit users...", claType)
4981+ // gerritIclaUsers, getGerritQueryErr := repo.gerritService.GetUsersOfGroup(ctx, authUser, projectSFID, claType)
4982+ // if getGerritQueryErr != nil || gerritIclaUsers == nil {
4983+ // msg := fmt.Sprintf("unable to fetch gerrit users for claGroup: %s , claType: %s ", projectSFID, claType)
4984+ // log.WithFields(f).WithError(getGerritQueryErr).Warn(msg)
4985+ // gerritResultChannel <- &GerritUserResponse{
4986+ // gerritGroupResponse: nil,
4987+ // queryType: claType,
4988+ // Error: errors.New(msg),
4989+ // }
4990+ // return
4991+ // }
4992+ //
4993+ // log.WithFields(f).Debugf("retrieved %d gerrit users for CLA type: %s...", len(gerritIclaUsers.Members), claType)
4994+ // gerritResultChannel <- &GerritUserResponse{
4995+ // gerritGroupResponse: gerritIclaUsers ,
4996+ // queryType: claType,
4997+ // Error: nil,
4998+ // }
4999+ //}
49755000
49765001func buildNextKey (indexName string , signature * models.Signature ) (string , error ) {
49775002 nextKey := make (map [string ]* dynamodb.AttributeValue )
0 commit comments