func()

in pkg/cloud/instance.go [74:97]


func (c *client) ResolveServiceOffering(csMachine *infrav1.CloudStackMachine) (offeringID string, retErr error) {
	offeringID, count, err := c.cs.ServiceOffering.GetServiceOfferingID(csMachine.Spec.Offering)
	if err != nil {
		retErr = multierror.Append(retErr, errors.Wrapf(
			err, "Could not get Service Offering ID from %s.", csMachine.Spec.Offering))
	} else if count != 1 {
		retErr = multierror.Append(retErr, errors.Errorf(
			"Expected 1 Service Offering with name %s, but got %d.", csMachine.Spec.Offering, count))
	}

	if retErr != nil {
		if _, count, err := c.cs.ServiceOffering.GetServiceOfferingByID(csMachine.Spec.Offering); err != nil {
			return "", multierror.Append(retErr, errors.Wrapf(
				err, "Could not get Service Offering by ID %s.", csMachine.Spec.Offering))
		} else if count != 1 {
			return "", multierror.Append(retErr, errors.Errorf(
				"Expected 1 Service Offering with UUID %s, but got %d.", csMachine.Spec.Offering, count))
		} else {
			offeringID = csMachine.Spec.Offering
		}
	}

	return offeringID, nil
}