@@ -38,49 +38,102 @@ type Device struct {
3838 switchports []* switchport
3939}
4040
41- func getDevices (client * sdk.Client , organizationID string ) (map [Serial ]* Device , error ) {
42- val , res , err := client .Organizations .GetOrganizationDevices (organizationID , & sdk.GetOrganizationDevicesQueryParams {})
41+ type OrganizationsClient interface {
42+ GetOrganizationDevices (organizationID string , params * sdk.GetOrganizationDevicesQueryParams ) (* sdk.ResponseOrganizationsGetOrganizationDevices , * resty.Response , error )
43+ }
44+
45+ var _ OrganizationsClient = (* sdk .OrganizationsService )(nil )
46+
47+ type OrganizationsServiceWrapper struct {
48+ service * sdk.OrganizationsService
49+ }
50+
51+ func (w * OrganizationsServiceWrapper ) GetOrganizationDevices (organizationID string , params * sdk.GetOrganizationDevicesQueryParams ) (* sdk.ResponseOrganizationsGetOrganizationDevices , * resty.Response , error ) {
52+ return w .service .GetOrganizationDevices (organizationID , params )
53+ }
54+
55+ func getDevices (client OrganizationsClient , organizationID string , logger * logp.Logger ) (map [Serial ]* Device , error ) {
56+ devices := make (map [Serial ]* Device )
4357
44- if err != nil {
58+ params := & sdk.GetOrganizationDevicesQueryParams {}
59+ setStart := func (s string ) { params .StartingAfter = s }
60+
61+ doRequest := func () (* sdk.ResponseOrganizationsGetOrganizationDevices , * resty.Response , error ) {
62+ logger .Debugf ("calling GetOrganizationDevices with params: %+v" , params )
63+ return client .GetOrganizationDevices (organizationID , params )
64+ }
65+
66+ onError := func (err error , res * resty.Response ) error {
4567 if res != nil {
46- return nil , fmt .Errorf ("GetOrganizationDevices failed; [%d] %s. %w" , res .StatusCode (), res .Body (), err )
68+ return fmt .Errorf ("GetOrganizationDevices failed; [%d] %s. %w" , res .StatusCode (), res .Body (), err )
4769 }
48- return nil , fmt .Errorf ("GetOrganizationDevices failed; %w" , err )
70+ return fmt .Errorf ("GetOrganizationDevices failed; %w" , err )
4971 }
5072
51- devices := make (map [Serial ]* Device )
52- for i := range * val {
53- device := (* val )[i ]
54- devices [Serial (device .Serial )] = & Device {
55- details : & device ,
73+ onSuccess := func (val * sdk.ResponseOrganizationsGetOrganizationDevices ) error {
74+ if val == nil {
75+ return errors .New ("GetOrganizationDevices returned nil response" )
5676 }
77+
78+ for i := range * val {
79+ device := (* val )[i ]
80+ devices [Serial (device .Serial )] = & Device {
81+ details : & device ,
82+ }
83+ }
84+ return nil
5785 }
5886
59- return devices , nil
87+ err := meraki .NewPaginator (
88+ setStart ,
89+ doRequest ,
90+ onError ,
91+ onSuccess ,
92+ logger ,
93+ ).GetAllPages ()
94+
95+ return devices , err
6096}
6197
62- func getDeviceStatuses (client * sdk.Client , organizationID string , devices map [Serial ]* Device ) error {
63- val , res , err := client .Organizations .GetOrganizationDevicesStatuses (organizationID , & sdk.GetOrganizationDevicesStatusesQueryParams {})
98+ func getDeviceStatuses (client * sdk.Client , organizationID string , devices map [Serial ]* Device , logger * logp.Logger ) error {
99+ params := & sdk.GetOrganizationDevicesStatusesQueryParams {}
100+ setStart := func (s string ) { params .StartingAfter = s }
64101
65- if err != nil {
102+ doRequest := func () (* sdk.ResponseOrganizationsGetOrganizationDevicesStatuses , * resty.Response , error ) {
103+ logger .Debugf ("calling GetOrganizationDevicesStatuses with params: %+v" , params )
104+ return client .Organizations .GetOrganizationDevicesStatuses (organizationID , params )
105+ }
106+
107+ onError := func (err error , res * resty.Response ) error {
66108 if res != nil {
67109 return fmt .Errorf ("GetOrganizationDevicesStatuses failed; [%d] %s. %w" , res .StatusCode (), res .Body (), err )
68110 }
69111 return fmt .Errorf ("GetOrganizationDevicesStatuses failed; %w" , err )
70112 }
71113
72- if val == nil {
73- return errors .New ("GetOrganizationDevicesStatuses returned nil response" )
74- }
114+ onSuccess := func (val * sdk.ResponseOrganizationsGetOrganizationDevicesStatuses ) error {
115+ if val == nil {
116+ return errors .New ("GetOrganizationDevicesStatuses returned nil response" )
117+ }
75118
76- for i := range * val {
77- status := (* val )[i ]
78- if device , ok := devices [Serial (status .Serial )]; ok {
79- device .status = & status
119+ for i := range * val {
120+ status := (* val )[i ]
121+ if device , ok := devices [Serial (status .Serial )]; ok {
122+ device .status = & status
123+ }
80124 }
125+ return nil
81126 }
82127
83- return nil
128+ err := meraki .NewPaginator (
129+ setStart ,
130+ doRequest ,
131+ onError ,
132+ onSuccess ,
133+ logger ,
134+ ).GetAllPages ()
135+
136+ return err
84137}
85138
86139func getDevicePerformanceScores (logger * logp.Logger , client * sdk.Client , devices map [Serial ]* Device ) {
@@ -186,9 +239,16 @@ func getDeviceChannelUtilization(client DeviceService, devices map[Serial]*Devic
186239 return nil
187240}
188241
189- func getDeviceLicenses (client * sdk.Client , organizationID string , devices map [Serial ]* Device ) error {
190- val , res , err := client .Organizations .GetOrganizationLicenses (organizationID , & sdk.GetOrganizationLicensesQueryParams {})
191- if err != nil {
242+ func getDeviceLicenses (client * sdk.Client , organizationID string , devices map [Serial ]* Device , logger * logp.Logger ) error {
243+ params := & sdk.GetOrganizationLicensesQueryParams {}
244+ setStart := func (s string ) { params .StartingAfter = s }
245+
246+ doRequest := func () (* sdk.ResponseOrganizationsGetOrganizationLicenses , * resty.Response , error ) {
247+ logger .Debugf ("calling GetOrganizationLicenses with params: %+v" , params )
248+ return client .Organizations .GetOrganizationLicenses (organizationID , params )
249+ }
250+
251+ onError := func (err error , res * resty.Response ) error {
192252 // Ignore 400 error for per-device licensing not supported
193253 if res != nil && res .StatusCode () == 400 && strings .Contains (string (res .Body ()), "does not support per-device licensing" ) {
194254 return nil
@@ -204,18 +264,29 @@ func getDeviceLicenses(client *sdk.Client, organizationID string, devices map[Se
204264 return fmt .Errorf ("GetOrganizationLicenses failed; %w" , err )
205265 }
206266
207- if val == nil {
208- return errors .New ("GetOrganizationLicenses returned nil response" )
209- }
267+ onSuccess := func (val * sdk.ResponseOrganizationsGetOrganizationLicenses ) error {
268+ if val == nil {
269+ return errors .New ("GetOrganizationLicenses returned nil response" )
270+ }
210271
211- for i := range * val {
212- license := (* val )[i ]
213- if device , ok := devices [Serial (license .DeviceSerial )]; ok {
214- device .license = & license
272+ for i := range * val {
273+ license := (* val )[i ]
274+ if device , ok := devices [Serial (license .DeviceSerial )]; ok {
275+ device .license = & license
276+ }
215277 }
278+ return nil
216279 }
217280
218- return nil
281+ err := meraki .NewPaginator (
282+ setStart ,
283+ doRequest ,
284+ onError ,
285+ onSuccess ,
286+ logger ,
287+ ).GetAllPages ()
288+
289+ return err
219290}
220291
221292func deviceDetailsToMapstr (details * sdk.ResponseItemOrganizationsGetOrganizationDevices ) mapstr.M {
0 commit comments