Skip to content

Commit 61c333f

Browse files
Limit preview identity results to 250, limit fields to pull to just id,name,email from search
1 parent 74cc210 commit 61c333f

File tree

3 files changed

+102
-1
lines changed

3 files changed

+102
-1
lines changed

assets/vhs/preview.tape

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
Set FontSize 16
2+
Set Width 1200
3+
Set Height 1000
4+
5+
Hide Sleep 2s Show
6+
7+
Sleep 5s
8+
Type "sail transform preview -f transform_files/DeriveFirstInitialLastNameInUpper.json"
9+
Enter
10+
Set TypingSpeed 500ms
11+
Sleep 5s
12+
Down
13+
Sleep 500ms
14+
Enter
15+
Sleep 4.5s
16+
Type "/"
17+
Sleep 3s
18+
Type "Brian"
19+
Sleep 5s
20+
Backspace 5
21+
Sleep 5s
22+
Type "Adam"
23+
Down
24+
Sleep 5s
25+
Enter
26+
Sleep 15s
27+

cmd/transform/preview.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,9 @@ func newPreviewCommand() *cobra.Command {
122122
return err
123123
}
124124

125-
formattedResponse, err := search.PerformSearch(*apiClient, searchObj)
125+
searchObj.QueryResultFilter.Includes = []string{"id", "displayName", "email"}
126+
127+
formattedResponse, err := search.PerformSearchWithLimit(*apiClient, searchObj, 250)
126128
if err != nil {
127129
return err
128130
}

internal/search/search.go

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,78 @@ func PerformSearch(apiClient sailpoint.APIClient, search sailpointsdk.Search) (S
120120
return SearchResults, nil
121121
}
122122

123+
func PerformSearchWithLimit(apiClient sailpoint.APIClient, search sailpointsdk.Search, limit int32) (SearchResults, error) {
124+
var SearchResults SearchResults
125+
126+
if limit == 0 {
127+
limit = 500
128+
}
129+
130+
ctx := context.TODO()
131+
resp, r, err := apiClient.V3.SearchAPI.SearchPost(ctx).Search(search).Limit(limit).Execute()
132+
if err != nil {
133+
fmt.Fprintf(os.Stderr, "Error: %v\n", err)
134+
fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
135+
}
136+
137+
log.Debug("Search complete")
138+
139+
for i := 0; i < len(resp); i++ {
140+
entry := resp[i]
141+
switch entry["_type"] {
142+
case "accountactivity":
143+
var AccountActivity AccountActivity
144+
err := mapstructure.Decode(entry, &AccountActivity)
145+
if err != nil {
146+
return SearchResults, err
147+
}
148+
SearchResults.AccountActivities = append(SearchResults.AccountActivities, AccountActivity)
149+
150+
case "accessprofile":
151+
var AccessProfile AccessProfile
152+
err := mapstructure.Decode(entry, &AccessProfile)
153+
if err != nil {
154+
return SearchResults, err
155+
}
156+
SearchResults.AccessProfiles = append(SearchResults.AccessProfiles, AccessProfile)
157+
158+
case "entitlement":
159+
var Entitlement Entitlement
160+
err := mapstructure.Decode(entry, &Entitlement)
161+
if err != nil {
162+
return SearchResults, err
163+
}
164+
SearchResults.Entitlements = append(SearchResults.Entitlements, Entitlement)
165+
166+
case "event":
167+
var Event Event
168+
err := mapstructure.Decode(entry, &Event)
169+
if err != nil {
170+
return SearchResults, err
171+
}
172+
SearchResults.Events = append(SearchResults.Events, Event)
173+
174+
case "identity":
175+
var Identity Identity
176+
err := mapstructure.Decode(entry, &Identity)
177+
if err != nil {
178+
return SearchResults, err
179+
}
180+
SearchResults.Identities = append(SearchResults.Identities, Identity)
181+
182+
case "role":
183+
var Role Role
184+
err := mapstructure.Decode(entry, &Role)
185+
if err != nil {
186+
return SearchResults, err
187+
}
188+
SearchResults.Roles = append(SearchResults.Roles, Role)
189+
}
190+
}
191+
192+
return SearchResults, nil
193+
}
194+
123195
func IterateIndices(SearchResults SearchResults, searchQuery string, folderPath string, outputTypes []string) error {
124196
if len(SearchResults.AccountActivities) > 0 {
125197
fileName := "query=" + searchQuery + "&indices=AccountActivities"

0 commit comments

Comments
 (0)