Esempio n. 1
0
// 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
}
Esempio n. 2
0
// 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
}