github.com/IBM-Cloud/bluemix-go@v0.0.0-20240423071914-9e96525baef4/examples/mccp/service/main.go (about)

     1  package main
     2  
     3  import (
     4  	"flag"
     5  	"log"
     6  	"os"
     7  
     8  	"github.com/IBM-Cloud/bluemix-go/api/mccp/mccpv2"
     9  	"github.com/IBM-Cloud/bluemix-go/helpers"
    10  	"github.com/IBM-Cloud/bluemix-go/session"
    11  	"github.com/IBM-Cloud/bluemix-go/trace"
    12  )
    13  
    14  func main() {
    15  	var org string
    16  	flag.StringVar(&org, "org", "", "Bluemix Organization")
    17  
    18  	var space string
    19  	flag.StringVar(&space, "space", "", "Bluemix Space")
    20  
    21  	var skipDeletion bool
    22  	flag.BoolVar(&skipDeletion, "no-delete", true, "If provided will delete the resources created")
    23  
    24  	flag.Parse()
    25  
    26  	if org == "" || space == "" {
    27  		flag.Usage()
    28  		os.Exit(1)
    29  	}
    30  
    31  	trace.Logger = trace.NewLogger("true")
    32  	sess, err := session.New()
    33  	if err != nil {
    34  		log.Fatal(err)
    35  	}
    36  
    37  	client, err := mccpv2.New(sess)
    38  
    39  	if err != nil {
    40  		log.Fatal(err)
    41  	}
    42  
    43  	region := sess.Config.Region
    44  
    45  	orgAPI := client.Organizations()
    46  	myorg, err := orgAPI.FindByName(org, region)
    47  
    48  	if err != nil {
    49  		log.Fatal(err)
    50  	}
    51  
    52  	spaceAPI := client.Spaces()
    53  	myspace, err := spaceAPI.FindByNameInOrg(myorg.GUID, space, region)
    54  
    55  	if err != nil {
    56  		log.Fatal(err)
    57  	}
    58  
    59  	serviceOfferingAPI := client.ServiceOfferings()
    60  	myserviceOff, err := serviceOfferingAPI.FindByLabel("cloud-object-storage")
    61  	if err != nil {
    62  		log.Fatal(err)
    63  	}
    64  	servicePlanAPI := client.ServicePlans()
    65  	plan, err := servicePlanAPI.FindPlanInServiceOffering(myserviceOff.GUID, "Lite")
    66  	if err != nil {
    67  		log.Fatal(err)
    68  	}
    69  
    70  	serviceInstanceAPI := client.ServiceInstances()
    71  	myService, err := serviceInstanceAPI.Create(mccpv2.ServiceInstanceCreateRequest{
    72  		Name:      "myservice",
    73  		PlanGUID:  plan.GUID,
    74  		SpaceGUID: myspace.GUID,
    75  	})
    76  	if err != nil {
    77  		log.Fatal(err)
    78  	}
    79  
    80  	updatedInstance, err := serviceInstanceAPI.Update(myService.Metadata.GUID, mccpv2.ServiceInstanceUpdateRequest{
    81  		Name: helpers.String("New instance"),
    82  	})
    83  	if err != nil {
    84  		log.Fatal(err)
    85  	}
    86  
    87  	serviceKeys := client.ServiceKeys()
    88  	mykeys, err := serviceKeys.Create(updatedInstance.Metadata.GUID, "mykey", nil)
    89  	if err != nil {
    90  		log.Fatal(err)
    91  	}
    92  
    93  	myRetrievedKeys, err := serviceKeys.FindByName(myService.Metadata.GUID, "mykey")
    94  	if err != nil {
    95  		log.Fatal(err)
    96  	}
    97  
    98  	log.Println(myorg.GUID, myspace.GUID, plan.GUID, myService.Metadata.GUID, mykeys.Metadata.GUID, myRetrievedKeys)
    99  
   100  	if !skipDeletion {
   101  		err = serviceKeys.Delete(myRetrievedKeys.GUID)
   102  		if err != nil {
   103  			log.Fatal(err)
   104  		}
   105  
   106  		err = serviceInstanceAPI.Delete(myService.Metadata.GUID)
   107  		if err != nil {
   108  			log.Fatal(err)
   109  		}
   110  
   111  	}
   112  
   113  }