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  }