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

     1  package testapi
     2  
     3  import (
     4  	"fmt"
     5  	"github.com/go-chef/chef"
     6  	"os"
     7  	"strings"
     8  )
     9  
    10  // client test the chef api
    11  func ApiClient() {
    12  	// Use the default test org
    13  	client := Client(nil)
    14  
    15  	// List initial clients
    16  	clientList, err := client.Clients.List()
    17  	if err != nil {
    18  		fmt.Fprintln(os.Stderr, "Couldn't list clients: ", err)
    19  	}
    20  	clientfold := strings.Replace(fmt.Sprintf("%+v", clientList), "\n", "", -1)
    21  	fmt.Printf("List initial clients %+v\n", clientfold)
    22  
    23  	// Define a Client object
    24  	client1 := chef.ApiNewClient{
    25  		Name:      "client1",
    26  		CreateKey: true,
    27  		Validator: false,
    28  	}
    29  	fmt.Printf("Define client1 %+v\n", client1)
    30  
    31  	// Define another Client object
    32  	client2 := chef.ApiNewClient{
    33  		ClientName: "client2",
    34  		CreateKey:  false,
    35  		Validator:  true,
    36  	}
    37  	fmt.Printf("Define client2 %+v\n", client2)
    38  
    39  	// Create
    40  	clientResult, err := client.Clients.Create(client1)
    41  	if err != nil {
    42  		fmt.Fprintln(os.Stderr, "Couldn't create client client1. ", err)
    43  	}
    44  	clientresf := strings.Replace(fmt.Sprintf("%+v", clientResult), "\n", "", -1)
    45  	fmt.Printf("Added client1 %+v\n", clientresf)
    46  
    47  	clientResult, err = client.Clients.Create(client2)
    48  	if err != nil {
    49  		fmt.Fprintln(os.Stderr, "Couldn't create client client2. ", err)
    50  	}
    51  	clientresf = strings.Replace(fmt.Sprintf("%+v", clientResult), "\n", "", -1)
    52  	fmt.Printf("Added client2 %+v\n", clientResult)
    53  
    54  	// List clients
    55  	clientList, err = client.Clients.List()
    56  	if err != nil {
    57  		fmt.Fprintln(os.Stderr, "Couldn't list clients: ", err)
    58  	}
    59  	clientfold = strings.Replace(fmt.Sprintf("%+v", clientList), "\n", "", -1)
    60  	fmt.Printf("List clients after adding %+v\n", clientfold)
    61  
    62  	// Create a second time expect 409
    63  	clientResult, err = client.Clients.Create(client1)
    64  	if err != nil {
    65  		fmt.Fprintln(os.Stderr, "Couldn't recreate client client1. ", err)
    66  	}
    67  	cerr, err := chef.ChefError(err)
    68  	if cerr != nil {
    69  		fmt.Fprintln(os.Stderr, "Couldn't recreate client client1. Code", cerr.StatusCode())
    70  		fmt.Fprintln(os.Stderr, "Couldn't recreate client client1. Msg", cerr.StatusMsg())
    71  		fmt.Fprintln(os.Stderr, "Couldn't recreate client client1. Text", string(cerr.StatusText()))
    72  	}
    73  	fmt.Printf("Added client1 %+v\n", clientResult)
    74  
    75  	// Read client1 information
    76  	serverClient, err := client.Clients.Get("client1")
    77  	if err != nil {
    78  		fmt.Fprintln(os.Stderr, "Couldn't get client: ", err)
    79  	}
    80  	fmt.Printf("Get client1 %+v\n", serverClient)
    81  
    82  	serverClient, err = client.Clients.Get("client2")
    83  	if err != nil {
    84  		fmt.Fprintln(os.Stderr, "Couldn't get client2: ", err)
    85  	}
    86  	fmt.Printf("Get client2 %+v\n", serverClient)
    87  
    88  	// update client - change the client name
    89  	client1 = chef.ApiNewClient{
    90  		Name:       "clientchanged",
    91  		ClientName: "clientchanged",
    92  		Validator:  true,
    93  	}
    94  	updateClient, err := client.Clients.Update("client1", client1)
    95  	if err != nil {
    96  		fmt.Fprintln(os.Stderr, "Couldn't update client: ", err)
    97  	}
    98  	fmt.Printf("Update client1 %+v\n", updateClient)
    99  
   100  	// update client - change the validator status
   101  	client2 = chef.ApiNewClient{
   102  		Validator: false,
   103  	}
   104  	updateClient, err = client.Clients.Update("client2", client2)
   105  	if err != nil {
   106  		fmt.Fprintln(os.Stderr, "Couldn't update client: ", err)
   107  	}
   108  	fmt.Printf("Update client2 %+v\n", updateClient)
   109  
   110  	// Info after update
   111  	serverClient, err = client.Clients.Get("clientchanged")
   112  	if err != nil {
   113  		fmt.Fprintln(os.Stderr, "Couldn't get client: ", err)
   114  	}
   115  	fmt.Printf("Get client1 after update %+v\n", serverClient)
   116  
   117  	// Delete clients ignoring errors :)
   118  	err = client.Clients.Delete("clientchanged")
   119  	fmt.Printf("Delete client1 %+v\n", err)
   120  	err = client.Clients.Delete("client2")
   121  	fmt.Printf("Delete client2 %+v\n", err)
   122  
   123  	// List clients
   124  	clientList, err = client.Clients.List()
   125  	if err != nil {
   126  		fmt.Fprintln(os.Stderr, "Couldn't list clients: ", err)
   127  	}
   128  	clientfold = strings.Replace(fmt.Sprintf("%+v", clientList), "\n", "", -1)
   129  	fmt.Printf("List clients after cleanup %+v\n", clientfold)
   130  }