func()

in pkg/cloud/instance.go [99:122]


func (c *client) ResolveTemplate(csCluster *infrav1.CloudStackCluster, csMachine *infrav1.CloudStackMachine) (templateID string, retErr error) {
	templateID, count, err := c.cs.Template.GetTemplateID(csMachine.Spec.Template, "all", csCluster.Status.ZoneID)
	if err != nil {
		retErr = multierror.Append(retErr, errors.Wrapf(
			err, "Could not get Template ID from %s.", csMachine.Spec.Template))
	} else if count != 1 {
		retErr = multierror.Append(retErr, errors.Errorf(
			"Expected 1 Template with name %s, but got %d.", csMachine.Spec.Template, count))
	}

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

	return templateID, nil
}