github.com/go-chef/chef@v0.30.1/testapi/databag.go (about)

     1  // Test the go-chef/chef chef server api /databag endpoints against a live server
     2  package testapi
     3  
     4  import (
     5  	"fmt"
     6  	"github.com/go-chef/chef"
     7  	"os"
     8  )
     9  
    10  // databog exercise the chef server api
    11  func Databag() {
    12  	client := Client(nil)
    13  
    14  	// List the current databags
    15  	BagList, err := client.DataBags.List()
    16  	if err != nil {
    17  		fmt.Fprintln(os.Stderr, "Issue printing the existing databags:", err)
    18  	}
    19  	fmt.Printf("List initial databags %+v\n", BagList)
    20  
    21  	databag1 := chef.DataBag{
    22  		Name: "databag1",
    23  	}
    24  
    25  	// Add a new databag
    26  	databagAdd, err := client.DataBags.Create(&databag1)
    27  	if err != nil {
    28  		fmt.Fprintln(os.Stderr, "Issue adding databag1:", err)
    29  	}
    30  	fmt.Println("Added databag1", databagAdd)
    31  
    32  	// Add databag again
    33  	databagAdd, err = client.DataBags.Create(&databag1)
    34  	if err != nil {
    35  		fmt.Fprintln(os.Stderr, "Issue recreating databag1:", err)
    36  	}
    37  	cerr, err := chef.ChefError(err)
    38  	if cerr != nil {
    39  		fmt.Fprintln(os.Stderr, "Issue recreating databag1:", cerr.StatusCode())
    40  	}
    41  	fmt.Println("Recreated databag1", databagAdd)
    42  
    43  	// Try to get a missing databag
    44  	databagOutMissing, err := client.DataBags.ListItems("nothere")
    45  	if err != nil {
    46  		fmt.Fprintln(os.Stderr, "Issue getting nothere:", err)
    47  	}
    48  	fmt.Println("Get nothere", databagOutMissing)
    49  	cerr, err = chef.ChefError(err)
    50  	if cerr != nil {
    51  		fmt.Fprintln(os.Stdout, "Missing data bag. Code", cerr.StatusCode())
    52  		fmt.Fprintln(os.Stdout, "Missing data bag. Msg", cerr.StatusMsg())
    53  		fmt.Fprintln(os.Stdout, "Missing data bag. Text", string(cerr.StatusText()))
    54  	}
    55  
    56  	// List databags after adding
    57  	BagList, err = client.DataBags.List()
    58  	if err != nil {
    59  		fmt.Fprintln(os.Stderr, "Issue printing the existing databags:", err)
    60  	}
    61  	fmt.Printf("List databags after adding databag1 %+v\n", BagList)
    62  
    63  	// Add item to a data bag
    64  	item1data := map[string]string{
    65  		"id":    "item1",
    66  		"type":  "password",
    67  		"value": "secret",
    68  	}
    69  	item1 := chef.DataBagItem(item1data)
    70  	err = client.DataBags.CreateItem("databag1", item1)
    71  	if err != nil {
    72  		fmt.Fprintln(os.Stderr, "Issue updating databag1:", err)
    73  	}
    74  	fmt.Printf("Create databag1::item1 %+v\n", err)
    75  
    76  	// Update a databag item
    77  	item1data["value"] = "next"
    78  	item1upd := chef.DataBagItem(item1data)
    79  	err = client.DataBags.UpdateItem("databag1", "item1", item1upd)
    80  	if err != nil {
    81  		fmt.Fprintln(os.Stderr, "Issue updating databag1:", err)
    82  	}
    83  	fmt.Printf("Update databag1::item1 %+v\n", err)
    84  
    85  	// list databag items
    86  	databagItems, err := client.DataBags.ListItems("databag1")
    87  	if err != nil {
    88  		fmt.Fprintln(os.Stderr, "Issue getting databag1:", err)
    89  	}
    90  	fmt.Printf("List databag1 items %+v\n", databagItems)
    91  
    92  	// Get the contents of a data bag item
    93  	dataItem, err := client.DataBags.GetItem("databag1", "item1")
    94  	if err != nil {
    95  		fmt.Fprintln(os.Stderr, "Issue getting databag1::item1 :", err)
    96  	}
    97  	fmt.Printf("Get databag1::item1 %+v\n", dataItem)
    98  
    99  	// Delete a databag item
   100  	err = client.DataBags.DeleteItem("databag1", "item1")
   101  	if err != nil {
   102  		fmt.Fprintln(os.Stderr, "Issue deleting databag1::item1 :", err)
   103  	}
   104  	fmt.Printf("Delete databag1::item1 %+v\n", err)
   105  
   106  	// List items
   107  	databagItems, err = client.DataBags.ListItems("databag1")
   108  	if err != nil {
   109  		fmt.Fprintln(os.Stderr, "Issue getting databag1:", err)
   110  	}
   111  	fmt.Printf("List databag1 items after delete %+v\n", databagItems)
   112  
   113  	// Clean up
   114  	databag, err := client.DataBags.Delete("databag1")
   115  	if err != nil {
   116  		fmt.Fprintln(os.Stderr, "Issue deleting databag1:", err)
   117  	}
   118  	fmt.Printf("Delete databag1 %+v\n", databag)
   119  
   120  	// Final list of databags
   121  	BagList, err = client.DataBags.List()
   122  	if err != nil {
   123  		fmt.Fprintln(os.Stderr, "Issue listing the final databags:", err)
   124  	}
   125  	fmt.Printf("List databags after cleanup %+v\n", BagList)
   126  }