func (m *ApiClient) Init() { m.db = NewInMemDatabase() m.updater = NewObjectUpdater(m.db) domain := new(types.Domain) domain.SetName("default-domain") err := m.Create(domain) if err != nil { panic(err.Error()) } project := new(types.Project) project.SetFQName("domain", []string{"default-domain", "default-project"}) err = m.Create(project) if err != nil { panic(err.Error()) } ipam := new(types.NetworkIpam) ipam.SetFQName("project", []string{"default-domain", "default-project", "default-network-ipam"}) err = m.Create(ipam) if err != nil { panic(err.Error()) } }
// 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 }
func TestReference(t *testing.T) { db := NewInMemDatabase() ipam := new(types.NetworkIpam) ipam.SetUuid(uuid.New()) ipam.SetFQName("project", strings.Split("default-domain:p1:ipam", ":")) assert.NoError(t, db.Put(ipam, nil, UIDList{})) net := new(types.VirtualNetwork) net.SetUuid(uuid.New()) net.SetFQName("project", strings.Split("default-domain:p1:network", ":")) subnets := types.VnSubnetsType{} subnets.AddIpamSubnets( &types.IpamSubnetType{ Subnet: &types.SubnetType{"10.0.0.0", 8}}) net.AddNetworkIpam(ipam, subnets) refs := GetReferenceList(net) assert.NoError(t, db.Put(net, nil, refs)) result, err := db.GetBackReferences(parseUID(ipam.GetUuid()), "virtual_network") assert.NoError(t, err) assert.Contains(t, result, parseUID(net.GetUuid())) }