github.com/go-chef/chef@v0.30.1/testapi/organization.go (about) 1 // Test the go-chef/chef chef server api /organizations endpoints against a live server 2 package testapi 3 4 import ( 5 "fmt" 6 "os" 7 8 "github.com/go-chef/chef" 9 ) 10 11 // organization exercise the chef server api 12 func Organization() { 13 // Create a client for access 14 client := Client(nil) 15 16 // Organization tests 17 org1 := "org1" 18 org2 := "org2" 19 20 orgList := listOrganizations(client) 21 fmt.Println("List initial organizations", orgList) 22 23 orgResult := createOrganization(client, chef.Organization{Name: "org1", FullName: "organization1"}) 24 fmt.Println("Added org1", orgResult) 25 26 orgResult = createOrganization(client, chef.Organization{Name: "org1", FullName: "organization1"}) 27 fmt.Println("Added org1 again", orgResult) 28 29 orgResult = createOrganization(client, chef.Organization{Name: "org2", FullName: "organization2"}) 30 fmt.Println("Added org2", orgResult) 31 32 orgout := getOrganization(client, org1) 33 fmt.Println("Get org1", orgout) 34 35 orgList = listOrganizations(client) 36 fmt.Println("List organizations After adding org1 and org2", orgList) 37 38 orgresult := updateOrganization(client, chef.Organization{Name: "org1", FullName: "new_organization1"}) 39 fmt.Println("Update org1", orgresult) 40 41 orgout = getOrganization(client, org1) 42 fmt.Println("Get org1 after update", orgout) 43 44 orgErr := deleteOrganization(client, org2) 45 fmt.Println("Delete org2", orgErr) 46 47 orgList = listOrganizations(client) 48 fmt.Println("List organizations after deleting org2", orgList) 49 50 // Clean up 51 orgErr = deleteOrganization(client, org1) 52 fmt.Println("Result from deleting org1", orgErr) 53 54 orgList = listOrganizations(client) 55 fmt.Println("List organizations after cleanup", orgList) 56 57 } 58 59 // createOrganization uses the chef server api to create a single organization 60 func createOrganization(client *chef.Client, org chef.Organization) chef.OrganizationResult { 61 orgResult, err := client.Organizations.Create(org) 62 if err != nil { 63 fmt.Fprintln(os.Stderr, "Issue creating org:", org, err) 64 } 65 cerr, err := chef.ChefError(err) 66 if cerr != nil { 67 fmt.Fprintln(os.Stderr, "Issue creating org:", org, cerr.StatusCode()) 68 } 69 return orgResult 70 } 71 72 // deleteOrganization uses the chef server api to delete a single organization 73 func deleteOrganization(client *chef.Client, name string) error { 74 err := client.Organizations.Delete(name) 75 if err != nil { 76 fmt.Fprintln(os.Stderr, "Issue deleting org:", name, err) 77 } 78 return err 79 } 80 81 // getOrganization uses the chef server api to get information for a single organization 82 func getOrganization(client *chef.Client, name string) chef.Organization { 83 orgList, err := client.Organizations.Get(name) 84 if err != nil { 85 fmt.Fprintln(os.Stderr, "Issue listing org:", name, err) 86 } 87 return orgList 88 } 89 90 // listOrganizations uses the chef server api to list all organizations 91 func listOrganizations(client *chef.Client) map[string]string { 92 orgList, err := client.Organizations.List() 93 if err != nil { 94 fmt.Fprintln(os.Stderr, "Issue listing orgs:", err) 95 } 96 return orgList 97 } 98 99 // updateOrganization uses the chef server api to update information for a single organization 100 func updateOrganization(client *chef.Client, org chef.Organization) chef.Organization { 101 org_update, err := client.Organizations.Update(org) 102 if err != nil { 103 fmt.Fprintln(os.Stderr, "Issue updating org:", org, err) 104 } 105 return org_update 106 }