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
}