in internal/loader/settings_client.go [121:173]
func (s *SelectorSettingsClient) GetSettings(ctx context.Context, client *azappconfig.Client) (*SettingsResponse, error) {
settings := make([]azappconfig.Setting, 0)
pageEtags := make(map[acpv1.Selector][]*azcore.ETag)
for _, filter := range s.selectors {
if filter.KeyFilter != nil {
selector := azappconfig.SettingSelector{
KeyFilter: filter.KeyFilter,
LabelFilter: filter.LabelFilter,
Fields: azappconfig.AllSettingFields(),
}
pager := client.NewListSettingsPager(selector, nil)
latestEtags := make([]*azcore.ETag, 0)
for pager.More() {
page, err := pager.NextPage(ctx)
if err != nil {
return nil, err
} else if page.Settings != nil {
settings = append(settings, page.Settings...)
latestEtags = append(latestEtags, page.ETag)
}
}
// update the etags for the filter
pageEtags[filter] = latestEtags
} else {
snapshot, err := client.GetSnapshot(ctx, *filter.SnapshotName, nil)
if err != nil {
return nil, err
}
if *snapshot.CompositionType != azappconfig.CompositionTypeKey {
return nil, fmt.Errorf("compositionType for the selected snapshot '%s' must be 'key', found '%s'", *filter.SnapshotName, *snapshot.CompositionType)
}
pager := client.NewListSettingsForSnapshotPager(*filter.SnapshotName, nil)
for pager.More() {
page, err := pager.NextPage(ctx)
if err != nil {
return nil, err
} else if page.Settings != nil {
settings = append(settings, page.Settings...)
}
}
}
}
return &SettingsResponse{
Settings: settings,
Etags: pageEtags,
}, nil
}