mirror of
https://github.com/fleetdm/fleet
synced 2026-04-21 13:37:30 +00:00
Bugfix: Use pages to list all enterprises in direct google AMAPI calls (#38915)
This commit is contained in:
parent
cf2411e40a
commit
49cc44011f
3 changed files with 20 additions and 5 deletions
|
|
@ -307,11 +307,15 @@ func (g *GoogleClient) EnterpriseDelete(ctx context.Context, enterpriseName stri
|
|||
}
|
||||
|
||||
func (g *GoogleClient) EnterprisesList(ctx context.Context, serverURL string) ([]*androidmanagement.Enterprise, error) {
|
||||
resp, err := g.mgmt.Enterprises.List().ProjectId(g.androidProjectID).Context(ctx).Do()
|
||||
var enterprises []*androidmanagement.Enterprise
|
||||
err := g.mgmt.Enterprises.List().ProjectId(g.androidProjectID).Context(ctx).Pages(ctx, func(page *androidmanagement.ListEnterprisesResponse) error {
|
||||
enterprises = append(enterprises, page.Enterprises...)
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("listing enterprises: %w", err)
|
||||
}
|
||||
return resp.Enterprises, nil
|
||||
return enterprises, nil
|
||||
}
|
||||
|
||||
// SetAuthenticationSecret is not used by GoogleClient because this client gets its secret from env var.
|
||||
|
|
|
|||
|
|
@ -267,6 +267,9 @@ func (p *ProxyClient) EnterprisesList(ctx context.Context, serverURL string) ([]
|
|||
call := p.mgmt.Enterprises.List().Context(ctx)
|
||||
call.Header().Set("Authorization", "Bearer "+p.fleetServerSecret)
|
||||
call.Header().Set("Origin", serverURL)
|
||||
// NOTE: we don't call .Pages(...) here because the Fleet proxy takes care of
|
||||
// listing enterprises on all pages and filtering those that belong to this Fleet instance:
|
||||
// https://github.com/fleetdm/fleet/blob/ac960d64fce49175b4f3ee396ed30c27824450ea/website/api/controllers/android-proxy/get-android-enterprises.js#L74-L91
|
||||
resp, err := call.Do()
|
||||
if err != nil {
|
||||
// Convert proxy errors to proper googleapi.Error for service layer
|
||||
|
|
|
|||
|
|
@ -128,17 +128,25 @@ func enterprisesDelete(mgmt *androidmanagement.Service, enterpriseID string) {
|
|||
}
|
||||
|
||||
func enterprisesList(mgmt *androidmanagement.Service) {
|
||||
enterprises, err := mgmt.Enterprises.List().ProjectId(androidProjectID).Do()
|
||||
ctx := context.Background()
|
||||
var enterprises []*androidmanagement.Enterprise
|
||||
var callCount int
|
||||
err := mgmt.Enterprises.List().ProjectId(androidProjectID).Pages(ctx, func(page *androidmanagement.ListEnterprisesResponse) error {
|
||||
callCount++
|
||||
enterprises = append(enterprises, page.Enterprises...)
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
log.Fatalf("Error listing enterprises: %v", err)
|
||||
}
|
||||
if len(enterprises.Enterprises) == 0 {
|
||||
if len(enterprises) == 0 {
|
||||
log.Printf("No enterprises found")
|
||||
return
|
||||
}
|
||||
for _, enterprise := range enterprises.Enterprises {
|
||||
for _, enterprise := range enterprises {
|
||||
log.Printf("Enterprise: %+v", *enterprise)
|
||||
}
|
||||
log.Printf("%d enterprises found in %d pages", len(enterprises), callCount)
|
||||
}
|
||||
|
||||
func policiesList(mgmt *androidmanagement.Service, enterpriseID string) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue