// TODO: Create default security-group. func CreateProject(client *contrail.Client, name string, createIpam bool) ( string, error) { project := new(types.Project) project.SetName(name) err := client.Create(project) if err != nil { return "", err } if createIpam { ipam := new(types.NetworkIpam) ipam.SetParent(project) ipam.SetName("default-network-ipam") err = client.Create(ipam) if err != nil { client.Delete(project) return "", err } } return project.GetUuid(), nil }
// LocateNetwork creates a private network. // // It is used to create pod and service networks. func (m *NetworkManagerImpl) LocateNetwork(project, name, subnet string) (*types.VirtualNetwork, error) { fqn := []string{m.config.DefaultDomain, project, name} fqname := strings.Join(fqn, ":") obj, err := m.client.FindByName("virtual-network", fqname) if err == nil { return obj.(*types.VirtualNetwork), nil } proj, err := m.client.FindByName("project", fmt.Sprintf("%s:%s", m.config.DefaultDomain, project)) if err != nil { glog.Infof("GET %s: %v", project, err) return nil, err } var ipam = new(types.NetworkIpam) ipam.SetParent(proj.(*types.Project)) ipam.SetName(fmt.Sprintf("%s-ipam", name)) err = m.client.Create(ipam) if err != nil { glog.Errorf("Create ipam for network %s:%s failed: %v", project, name, err) return nil, err } uid, err := config.CreateNetworkWithIpam(m.client, proj.(*types.Project), name, subnet, ipam) if err != nil { glog.Infof("Create %s: %v", name, err) return nil, err } obj, err = m.client.FindByUuid("virtual-network", uid) if err != nil { glog.Infof("GET %s: %v", name, err) return nil, err } glog.Infof("Create network %s", fqname) return obj.(*types.VirtualNetwork), nil }