github.com/lukasheimann/cloudfoundrycli@v7.1.0+incompatible/actor/v7action/label.go (about)

     1  package v7action
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/actor/actionerror"
     5  	"code.cloudfoundry.org/cli/resources"
     6  	"code.cloudfoundry.org/cli/types"
     7  )
     8  
     9  func (actor *Actor) GetApplicationLabels(appName string, spaceGUID string) (map[string]types.NullString, Warnings, error) {
    10  	resource, warnings, err := actor.GetApplicationByNameAndSpace(appName, spaceGUID)
    11  	return actor.extractLabels((*resources.Metadata)(resource.Metadata), warnings, err)
    12  }
    13  
    14  func (actor *Actor) GetDomainLabels(domainName string) (map[string]types.NullString, Warnings, error) {
    15  	resource, warnings, err := actor.GetDomainByName(domainName)
    16  	return actor.extractLabels(resource.Metadata, warnings, err)
    17  }
    18  
    19  func (actor *Actor) GetOrganizationLabels(orgName string) (map[string]types.NullString, Warnings, error) {
    20  	resource, warnings, err := actor.GetOrganizationByName(orgName)
    21  	return actor.extractLabels(resource.Metadata, warnings, err)
    22  }
    23  
    24  func (actor *Actor) GetRouteLabels(routeName string, spaceGUID string) (map[string]types.NullString, Warnings, error) {
    25  	resource, warnings, err := actor.GetRoute(routeName, spaceGUID)
    26  	return actor.extractLabels((*resources.Metadata)(resource.Metadata), warnings, err)
    27  }
    28  
    29  func (actor Actor) GetServiceBrokerLabels(serviceBrokerName string) (map[string]types.NullString, Warnings, error) {
    30  	serviceBroker, warnings, err := actor.GetServiceBrokerByName(serviceBrokerName)
    31  	return actor.extractLabels(serviceBroker.Metadata, warnings, err)
    32  }
    33  
    34  func (actor Actor) GetServiceOfferingLabels(serviceOfferingName, serviceBrokerName string) (map[string]types.NullString, Warnings, error) {
    35  	serviceOffering, warnings, err := actor.CloudControllerClient.GetServiceOfferingByNameAndBroker(serviceOfferingName, serviceBrokerName)
    36  	return actor.extractLabels(serviceOffering.Metadata, Warnings(warnings), actionerror.EnrichAPIErrors(err))
    37  }
    38  
    39  func (actor Actor) GetServicePlanLabels(servicePlanName, serviceOfferingName, serviceBrokerName string) (map[string]types.NullString, Warnings, error) {
    40  	servicePlan, warnings, err := actor.GetServicePlanByNameOfferingAndBroker(servicePlanName, serviceOfferingName, serviceBrokerName)
    41  	return actor.extractLabels(servicePlan.Metadata, warnings, err)
    42  }
    43  
    44  func (actor *Actor) GetSpaceLabels(spaceName string, orgGUID string) (map[string]types.NullString, Warnings, error) {
    45  	resource, warnings, err := actor.GetSpaceByNameAndOrganization(spaceName, orgGUID)
    46  	return actor.extractLabels(resource.Metadata, warnings, err)
    47  }
    48  
    49  func (actor *Actor) GetStackLabels(stackName string) (map[string]types.NullString, Warnings, error) {
    50  	resource, warnings, err := actor.GetStackByName(stackName)
    51  	return actor.extractLabels(resource.Metadata, warnings, err)
    52  }
    53  
    54  func (actor *Actor) GetBuildpackLabels(buildpackName string, buildpackStack string) (map[string]types.NullString, Warnings, error) {
    55  	resource, warnings, err := actor.GetBuildpackByNameAndStack(buildpackName, buildpackStack)
    56  	return actor.extractLabels(resource.Metadata, warnings, err)
    57  }
    58  
    59  func (actor *Actor) extractLabels(metadata *resources.Metadata, warnings Warnings, err error) (map[string]types.NullString, Warnings, error) {
    60  	var labels map[string]types.NullString
    61  
    62  	if err != nil {
    63  		return labels, warnings, err
    64  	}
    65  	if metadata != nil {
    66  		labels = metadata.Labels
    67  	}
    68  	return labels, warnings, nil
    69  }
    70  
    71  func (actor *Actor) UpdateApplicationLabelsByApplicationName(appName string, spaceGUID string, labels map[string]types.NullString) (Warnings, error) {
    72  	app, warnings, err := actor.GetApplicationByNameAndSpace(appName, spaceGUID)
    73  	if err != nil {
    74  		return warnings, err
    75  	}
    76  	return actor.updateResourceMetadata("app", app.GUID, resources.Metadata{Labels: labels}, warnings)
    77  }
    78  
    79  func (actor *Actor) UpdateBuildpackLabelsByBuildpackNameAndStack(buildpackName string, stack string, labels map[string]types.NullString) (Warnings, error) {
    80  	buildpack, warnings, err := actor.GetBuildpackByNameAndStack(buildpackName, stack)
    81  	if err != nil {
    82  		return warnings, err
    83  	}
    84  	return actor.updateResourceMetadata("buildpack", buildpack.GUID, resources.Metadata{Labels: labels}, warnings)
    85  }
    86  
    87  func (actor *Actor) UpdateDomainLabelsByDomainName(domainName string, labels map[string]types.NullString) (Warnings, error) {
    88  	domain, warnings, err := actor.GetDomainByName(domainName)
    89  	if err != nil {
    90  		return warnings, err
    91  	}
    92  	return actor.updateResourceMetadata("domain", domain.GUID, resources.Metadata{Labels: labels}, warnings)
    93  }
    94  
    95  func (actor *Actor) UpdateOrganizationLabelsByOrganizationName(orgName string, labels map[string]types.NullString) (Warnings, error) {
    96  	org, warnings, err := actor.GetOrganizationByName(orgName)
    97  	if err != nil {
    98  		return warnings, err
    99  	}
   100  	return actor.updateResourceMetadata("org", org.GUID, resources.Metadata{Labels: labels}, warnings)
   101  }
   102  
   103  func (actor *Actor) UpdateRouteLabels(routeName string, spaceGUID string, labels map[string]types.NullString) (Warnings, error) {
   104  	route, warnings, err := actor.GetRoute(routeName, spaceGUID)
   105  	if err != nil {
   106  		return warnings, err
   107  	}
   108  	return actor.updateResourceMetadata("route", route.GUID, resources.Metadata{Labels: labels}, warnings)
   109  }
   110  
   111  func (actor *Actor) UpdateSpaceLabelsBySpaceName(spaceName string, orgGUID string, labels map[string]types.NullString) (Warnings, error) {
   112  	space, warnings, err := actor.GetSpaceByNameAndOrganization(spaceName, orgGUID)
   113  	if err != nil {
   114  		return warnings, err
   115  	}
   116  	return actor.updateResourceMetadata("space", space.GUID, resources.Metadata{Labels: labels}, warnings)
   117  }
   118  
   119  func (actor *Actor) UpdateStackLabelsByStackName(stackName string, labels map[string]types.NullString) (Warnings, error) {
   120  	stack, warnings, err := actor.GetStackByName(stackName)
   121  	if err != nil {
   122  		return warnings, err
   123  	}
   124  	return actor.updateResourceMetadata("stack", stack.GUID, resources.Metadata{Labels: labels}, warnings)
   125  }
   126  
   127  func (actor *Actor) UpdateServiceBrokerLabelsByServiceBrokerName(serviceBrokerName string, labels map[string]types.NullString) (Warnings, error) {
   128  	serviceBroker, warnings, err := actor.GetServiceBrokerByName(serviceBrokerName)
   129  	if err != nil {
   130  		return warnings, err
   131  	}
   132  	return actor.updateResourceMetadata("service-broker", serviceBroker.GUID, resources.Metadata{Labels: labels}, warnings)
   133  }
   134  
   135  func (actor *Actor) UpdateServiceOfferingLabels(serviceOfferingName string, serviceBrokerName string, labels map[string]types.NullString) (Warnings, error) {
   136  	serviceOffering, warnings, err := actor.CloudControllerClient.GetServiceOfferingByNameAndBroker(serviceOfferingName, serviceBrokerName)
   137  	if err != nil {
   138  		return Warnings(warnings), actionerror.EnrichAPIErrors(err)
   139  	}
   140  	return actor.updateResourceMetadata("service-offering", serviceOffering.GUID, resources.Metadata{Labels: labels}, Warnings(warnings))
   141  }
   142  
   143  func (actor *Actor) UpdateServicePlanLabels(servicePlanName string, serviceOfferingName string, serviceBrokerName string, labels map[string]types.NullString) (Warnings, error) {
   144  	servicePlan, warnings, err := actor.GetServicePlanByNameOfferingAndBroker(servicePlanName, serviceOfferingName, serviceBrokerName)
   145  	if err != nil {
   146  		return warnings, err
   147  	}
   148  	return actor.updateResourceMetadata("service-plan", servicePlan.GUID, resources.Metadata{Labels: labels}, warnings)
   149  }
   150  
   151  func (actor *Actor) updateResourceMetadata(resourceType string, resourceGUID string, payload resources.Metadata, warnings Warnings) (Warnings, error) {
   152  	jobURL, updateWarnings, err := actor.CloudControllerClient.UpdateResourceMetadata(resourceType, resourceGUID, payload)
   153  	warnings = append(warnings, updateWarnings...)
   154  	if err != nil {
   155  		return warnings, err
   156  	}
   157  
   158  	if jobURL != "" {
   159  		pollWarnings, err := actor.CloudControllerClient.PollJob(jobURL)
   160  		warnings = append(warnings, pollWarnings...)
   161  		if err != nil {
   162  			return warnings, err
   163  		}
   164  	}
   165  
   166  	return warnings, nil
   167  }