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  }