github.com/go-chef/chef@v0.30.1/testapi/search_pagination.go (about) 1 package testapi 2 3 import ( 4 "fmt" 5 "os" 6 "time" 7 8 "github.com/go-chef/chef" 9 ) 10 11 // search _pagination exercise the chef api 12 func SearchPagination() { 13 // Add nodes 14 client := Client(nil) 15 addNodes_sp(client) 16 // Give the nodes time to end up in the search data bases. An immediate search will show no nodes 17 time.Sleep(10 * time.Second) 18 19 // Standard search 20 client.Search.PageSize(7) 21 res, err := client.Search.Exec("node", "name:node*") 22 if err != nil { 23 fmt.Fprintln(os.Stderr, "Issue running Search.Exec() ", err) 24 } 25 fmt.Printf("List nodes from Exec query Total:%+v Rows:%+v\n", res.Total, len(res.Rows)) 26 fmt.Printf("List nodes detail from Exec query %+v\n", res) 27 28 // Partial search 29 part := make(map[string]interface{}) 30 part["name"] = []string{"name"} 31 pres, err := client.Search.PartialExec("node", "*:*", part) 32 if err != nil { 33 fmt.Fprintln(os.Stderr, "Issue running Search.PartialExec()", err) 34 } 35 fmt.Printf("List nodes from Partial Exec Total:%+v Rows:%+v\n", pres.Total, len(pres.Rows)) 36 fmt.Printf("List nodes detail from Partial Exec %+v\n", pres) 37 38 // Clean up nodes 39 deleteNodes_sp(client) 40 } 41 42 func addNodes_sp(client *chef.Client) { 43 for i := 0; i < 50; i++ { 44 node := chef.NewNode("node" + fmt.Sprintf("%d", i)) 45 _, err := client.Nodes.Post(node) 46 if err != nil { 47 fmt.Fprintln(os.Stderr, "Issue adding node", node, err) 48 } 49 } 50 return 51 } 52 53 func deleteNodes_sp(client *chef.Client) { 54 for i := 0; i < 50; i++ { 55 err := client.Nodes.Delete("node" + fmt.Sprintf("%d", i)) 56 if err != nil { 57 fmt.Fprintln(os.Stderr, "Issue deleting node", err) 58 } 59 } 60 return 61 }