func()

in pkg/cloud/network.go [60:89]


func (c *client) GetOrCreateNetwork(csCluster *infrav1.CloudStackCluster) (retErr error) {
	if retErr = c.ResolveNetwork(csCluster); retErr == nil { // Found network.
		return nil
	} else if !strings.Contains(retErr.Error(), "No match found") { // Some other error.
		return retErr
	} // Network not found.

	// Create network since it wasn't found.
	offeringId, count, retErr := c.cs.NetworkOffering.GetNetworkOfferingID(NetOffering)
	if retErr != nil {
		return retErr
	} else if count != 1 {
		return errors.New("found more than one network offering.")
	}
	p := c.cs.Network.NewCreateNetworkParams(
		csCluster.Spec.Network,
		csCluster.Spec.Network,
		offeringId,
		csCluster.Status.ZoneID)
	setIfNotEmpty(csCluster.Spec.Account, p.SetAccount)
	setIfNotEmpty(csCluster.Status.DomainID, p.SetDomainid)
	resp, err := c.cs.Network.CreateNetwork(p)
	if err != nil {
		return err
	}
	csCluster.Status.NetworkID = resp.Id
	csCluster.Status.NetworkType = resp.Type

	return nil
}