func (command *commandList) Execute(resource *handler.Resource) { opts := resource.Params.(*paramsList).opts allPages := resource.Params.(*paramsList).allPages pager := ports.List(command.Ctx.ServiceClient, opts) if allPages { pages, err := pager.AllPages() if err != nil { resource.Err = err return } info, err := osPorts.ExtractPorts(pages) if err != nil { resource.Err = err return } result := make([]map[string]interface{}, len(info)) for j, subnet := range info { result[j] = portSingle(&subnet) } resource.Result = result } else { limit := opts.Limit err := pager.EachPage(func(page pagination.Page) (bool, error) { info, err := osPorts.ExtractPorts(page) if err != nil { return false, err } result := make([]map[string]interface{}, len(info)) for j, subnet := range info { result[j] = portSingle(&subnet) } resource.Result = result if len(info) >= limit { return false, nil } limit -= len(info) command.Ctx.WaitGroup.Add(1) command.Ctx.Results <- resource return true, nil }) if err != nil { resource.Err = err return } } }
func listPorts(t *testing.T) { count := 0 pager := ports.List(Client, osPorts.ListOpts{}) err := pager.EachPage(func(page pagination.Page) (bool, error) { count++ t.Logf("--- Page ---") portList, err := osPorts.ExtractPorts(page) th.AssertNoErr(t, err) for _, p := range portList { t.Logf("Port: ID [%s] Name [%s] Status [%s] MAC addr [%s] Fixed IPs [%#v] Security groups [%#v]", p.ID, p.Name, p.Status, p.MACAddress, p.FixedIPs, p.SecurityGroups) } return true, nil }) th.CheckNoErr(t, err) if count == 0 { t.Logf("No pages were iterated over when listing ports") } }