github.com/go-chef/chef@v0.30.1/testapi/node.go (about) 1 package testapi 2 3 import ( 4 "fmt" 5 "os" 6 7 "github.com/go-chef/chef" 8 ) 9 10 // node exercise the chef api 11 func Node() { 12 // Use the default test org 13 client := Client(nil) 14 fmt.Printf("Client settings %+v\n client auth %+v\n", client, client.Auth) 15 version := "1.0" 16 if len(os.Args) > 6 { 17 version = os.Args[6] 18 } 19 20 // List initial nodes 21 nodeList, err := client.Nodes.List() 22 if err != nil { 23 fmt.Fprintln(os.Stderr, "Couldn't list nodes: ", err) 24 } 25 fmt.Println("List initial nodes", nodeList) 26 27 // Define a Node object 28 node1 := chef.NewNode("node1" + version) 29 node1.RunList = []string{"pwn"} 30 node1.AutomaticAttributes = map[string]interface{}{ 31 "attr": "value", 32 } 33 fmt.Printf("Define node1 %+v\n", node1) 34 35 // Delete node1 ignoring errors :) 36 err = client.Nodes.Delete(node1.Name) 37 38 // Create 39 nodeResult, err := client.Nodes.Post(node1) 40 if err != nil { 41 fmt.Fprintln(os.Stderr, "Couldn't create node node1. ", err) 42 } 43 fmt.Println("Added node1", nodeResult) 44 45 // List nodes 46 nodeList, err = client.Nodes.List() 47 if err != nil { 48 fmt.Fprintln(os.Stderr, "Couldn't list nodes: ", err) 49 } 50 fmt.Println("List nodes after adding node1", nodeList) 51 52 // Create a second time 53 nodeResult, err = client.Nodes.Post(node1) 54 if err != nil { 55 fmt.Fprintln(os.Stderr, "Couldn't recreate node node1. ", err) 56 } 57 cerr, err := chef.ChefError(err) 58 if cerr != nil { 59 fmt.Fprintln(os.Stderr, "Couldn't recreate node node1. ", cerr.StatusCode()) 60 } 61 fmt.Println("Added node1", nodeResult) 62 63 // Read node1 information 64 serverNode, err := client.Nodes.Get(node1.Name) 65 if err != nil { 66 fmt.Fprintln(os.Stderr, "Couldn't get node: ", err) 67 } 68 fmt.Printf("Get node1 %+v\n", serverNode) 69 70 // Check node1 exits 71 err = client.Nodes.Head(node1.Name) 72 fmt.Println("Head node node1:", err) 73 74 // Check nothere exits 75 err = client.Nodes.Head("nothere") 76 fmt.Println("Head node nothere:", err) 77 78 // update node 79 node1.RunList = append(node1.RunList, "recipe[works]") 80 node1.AutomaticAttributes = map[string]interface{}{} 81 updateNode, err := client.Nodes.Put(node1) 82 if err != nil { 83 fmt.Fprintln(os.Stderr, "Couldn't update node: ", err) 84 } 85 fmt.Println("Update node1", updateNode) 86 87 // Info after update 88 serverNode, err = client.Nodes.Get(node1.Name) 89 if err != nil { 90 fmt.Fprintln(os.Stderr, "Couldn't get node: ", err) 91 } 92 fmt.Printf("Get node1 after update %+v\n", serverNode) 93 94 // Delete node ignoring errors :) 95 err = client.Nodes.Delete(node1.Name) 96 fmt.Println("Delete node1", err) 97 98 // List nodes 99 nodeList, err = client.Nodes.List() 100 if err != nil { 101 fmt.Fprintln(os.Stderr, "Couldn't list nodes: ", err) 102 } 103 fmt.Println("List nodes after cleanup", nodeList) 104 }