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 }