本文整理汇总了Golang中github.com/contiv/objmodel/objdb/modeldb.AddLink函数的典型用法代码示例。如果您正苦于以下问题:Golang AddLink函数的具体用法?Golang AddLink怎么用?Golang AddLink使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了AddLink函数的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: AppCreate
// AppCreate creates app state
func (ac *APIController) AppCreate(app *contivModel.App) error {
log.Infof("Received AppCreate: %+v", app)
// Make sure tenant exists
if app.TenantName == "" {
return core.Errorf("Invalid tenant name")
}
tenant := contivModel.FindTenant(app.TenantName)
if tenant == nil {
return core.Errorf("Tenant not found")
}
// Setup links
modeldb.AddLink(&app.Links.Tenant, tenant)
modeldb.AddLinkSet(&tenant.LinkSets.Apps, app)
// Save the tenant too since we added the links
err := tenant.Write()
if err != nil {
log.Errorf("Error updating tenant state(%+v). Err: %v", tenant, err)
return err
}
CreateAppNw(app)
return nil
}
示例2: VolumeCreate
// VolumeCreate creates a volume
func (ac *APIController) VolumeCreate(volume *contivModel.Volume) error {
log.Infof("Received VolumeCreate: %+v", volume)
// Make sure tenant exists
if volume.TenantName == "" {
return errors.New("Invalid tenant name")
}
tenant := contivModel.FindTenant(volume.TenantName)
if tenant == nil {
return errors.New("Tenant not found")
}
// Setup links
modeldb.AddLink(&volume.Links.Tenant, tenant)
modeldb.AddLinkSet(&tenant.LinkSets.Volumes, volume)
// Save the tenant too since we added the links
err := tenant.Write()
if err != nil {
return err
}
return nil
}
示例3: ServiceInstanceCreate
// ServiceInstanceCreate creates a service instance
func (ac *APIController) ServiceInstanceCreate(serviceInstance *contivModel.ServiceInstance) error {
log.Infof("Received ServiceInstanceCreate: %+v", serviceInstance)
inst := serviceInstance
// Find the service
serviceKey := inst.TenantName + ":" + inst.AppName + ":" + inst.ServiceName
service := contivModel.FindService(serviceKey)
if service == nil {
log.Errorf("Service %s not found for instance: %+v", serviceKey, inst)
return errors.New("Service not found")
}
// Add links
modeldb.AddLinkSet(&service.LinkSets.Instances, inst)
modeldb.AddLink(&inst.Links.Service, service)
// setup links with volumes
for _, volumeName := range inst.Volumes {
// find the volume
volume := contivModel.FindVolume(inst.TenantName + ":" + volumeName)
if volume == nil {
log.Errorf("Could not find colume %s for service: %s", volumeName, inst.Key)
return errors.New("Could not find the volume")
}
// add Links
modeldb.AddLinkSet(&inst.LinkSets.Volumes, volume)
modeldb.AddLinkSet(&volume.LinkSets.ServiceInstances, inst)
}
return nil
}
示例4: NetworkCreate
func (self *ApiController) NetworkCreate(network *contivModel.Network) error {
log.Infof("Received NetworkCreate: %+v", network)
// Make sure tenant exists
if network.TenantName == "" {
return errors.New("Invalid tenant name")
}
tenant := contivModel.FindTenant(network.TenantName)
if tenant == nil {
return errors.New("Tenant not found")
}
// Setup links
modeldb.AddLink(&network.Links.Tenant, tenant)
modeldb.AddLinkSet(&tenant.LinkSets.Networks, network)
// Save the tenant too since we added the links
err := tenant.Write()
if err != nil {
log.Errorf("Error updating tenant state(%+v). Err: %v", tenant, err)
return err
}
return nil
}
示例5: EndpointGroupCreate
// EndpointGroupCreate creates end point group
func (ac *APIController) EndpointGroupCreate(endpointGroup *contivModel.EndpointGroup) error {
log.Infof("Received EndpointGroupCreate: %+v", endpointGroup)
// assign unique endpoint group ids
endpointGroup.EndpointGroupID = globalEpgID
globalEpgID = globalEpgID + 1
// Find the tenant
tenant := contivModel.FindTenant(endpointGroup.TenantName)
if tenant == nil {
return core.Errorf("Tenant not found")
}
// Setup links
modeldb.AddLink(&endpointGroup.Links.Tenant, tenant)
modeldb.AddLinkSet(&tenant.LinkSets.EndpointGroups, endpointGroup)
// Save the tenant too since we added the links
err := tenant.Write()
if err != nil {
return err
}
// for each policy create an epg policy Instance
for _, policyName := range endpointGroup.Policies {
policyKey := endpointGroup.TenantName + ":" + policyName
// find the policy
policy := contivModel.FindPolicy(policyKey)
if policy == nil {
log.Errorf("Could not find policy %s", policyName)
return core.Errorf("Policy not found")
}
// attach policy to epg
err = master.PolicyAttach(endpointGroup, policy)
if err != nil {
log.Errorf("Error attaching policy %s to epg %s", policyName, endpointGroup.Key)
return err
}
// establish Links
modeldb.AddLinkSet(&policy.LinkSets.EndpointGroups, endpointGroup)
modeldb.AddLinkSet(&endpointGroup.LinkSets.Policies, policy)
// Write the policy
err = policy.Write()
if err != nil {
return err
}
}
return nil
}
示例6: NetworkCreate
// NetworkCreate creates network
func (ac *APIController) NetworkCreate(network *contivModel.Network) error {
log.Infof("Received NetworkCreate: %+v", network)
// Make sure tenant exists
if network.TenantName == "" {
return core.Errorf("Invalid tenant name")
}
tenant := contivModel.FindTenant(network.TenantName)
if tenant == nil {
return core.Errorf("Tenant not found")
}
// Setup links
modeldb.AddLink(&network.Links.Tenant, tenant)
modeldb.AddLinkSet(&tenant.LinkSets.Networks, network)
// Save the tenant too since we added the links
err := tenant.Write()
if err != nil {
log.Errorf("Error updating tenant state(%+v). Err: %v", tenant, err)
return err
}
// Get the state driver
stateDriver, err := utils.GetStateDriver()
if err != nil {
return err
}
// Build networ config
networkCfg := intent.ConfigNetwork{
Name: network.NetworkName,
PktTagType: network.Encap,
PktTag: network.PktTag,
SubnetCIDR: network.Subnet,
Gateway: network.Gateway,
}
// Create the network
err = master.CreateNetwork(networkCfg, stateDriver, network.TenantName)
if err != nil {
log.Errorf("Error creating network {%+v}. Err: %v", network, err)
return err
}
return nil
}
示例7: ServiceInstanceCreate
// ServiceInstanceCreate creates a service instance
func (ac *APIController) ServiceInstanceCreate(serviceInstance *contivModel.ServiceInstance) error {
log.Infof("Received ServiceInstanceCreate: %+v", serviceInstance)
inst := serviceInstance
// Find the service
serviceKey := inst.TenantName + ":" + inst.AppName + ":" + inst.ServiceName
service := contivModel.FindService(serviceKey)
if service == nil {
log.Errorf("Service %s not found for instance: %+v", serviceKey, inst)
return core.Errorf("Service not found")
}
// Add links
modeldb.AddLinkSet(&service.LinkSets.Instances, inst)
modeldb.AddLink(&inst.Links.Service, service)
return nil
}
示例8: ServiceCreate
// ServiceCreate creates service
func (ac *APIController) ServiceCreate(service *contivModel.Service) error {
log.Infof("Received ServiceCreate: %+v", service)
// check params
if (service.TenantName == "") || (service.AppName == "") {
return core.Errorf("Invalid parameters")
}
// Make sure tenant exists
tenant := contivModel.FindTenant(service.TenantName)
if tenant == nil {
return core.Errorf("Tenant not found")
}
// Find the app this service belongs to
app := contivModel.FindApp(service.TenantName + ":" + service.AppName)
if app == nil {
return core.Errorf("App not found")
}
// Setup links
modeldb.AddLink(&service.Links.App, app)
modeldb.AddLinkSet(&app.LinkSets.Services, service)
// Save the app too since we added the links
err := app.Write()
if err != nil {
return err
}
// Check if user specified any networks
if len(service.Networks) == 0 {
service.Networks = append(service.Networks, "private")
}
// link service with network
for _, netName := range service.Networks {
netKey := service.TenantName + ":" + netName
network := contivModel.FindNetwork(netKey)
if network == nil {
log.Errorf("Service: %s could not find network %s", service.Key, netKey)
return core.Errorf("Network not found")
}
// Link the network
modeldb.AddLinkSet(&service.LinkSets.Networks, network)
modeldb.AddLinkSet(&network.LinkSets.Services, service)
// save the network
err := network.Write()
if err != nil {
return err
}
}
// Check if user specified any endpoint group for the service
if len(service.EndpointGroups) == 0 {
// Create one default endpointGroup per network
for _, netName := range service.Networks {
// params for default endpoint group
dfltEpgName := service.AppName + "." + service.ServiceName + "." + netName
endpointGroup := contivModel.EndpointGroup{
Key: service.TenantName + ":" + dfltEpgName,
TenantName: service.TenantName,
NetworkName: netName,
GroupName: dfltEpgName,
}
// Create default endpoint group for the service
err = contivModel.CreateEndpointGroup(&endpointGroup)
if err != nil {
log.Errorf("Error creating endpoint group: %+v, Err: %v", endpointGroup, err)
return err
}
// Add the endpoint group to the list
service.EndpointGroups = append(service.EndpointGroups, dfltEpgName)
}
}
// Link the service and endpoint group
for _, epgName := range service.EndpointGroups {
endpointGroup := contivModel.FindEndpointGroup(service.TenantName + ":" + epgName)
if endpointGroup == nil {
log.Errorf("Error: could not find endpoint group: %s", epgName)
return core.Errorf("could not find endpointGroup")
}
// setup links
modeldb.AddLinkSet(&service.LinkSets.EndpointGroups, endpointGroup)
modeldb.AddLinkSet(&endpointGroup.LinkSets.Services, service)
// save the endpointGroup
err = endpointGroup.Write()
if err != nil {
return err
}
}
//.........这里部分代码省略.........
示例9: ServiceCreate
// ServiceCreate creates service
func (ac *APIController) ServiceCreate(service *contivModel.Service) error {
log.Infof("Received ServiceCreate: %+v", service)
// check params
if (service.TenantName == "") || (service.AppName == "") {
return errors.New("Invalid parameters")
}
// Make sure tenant exists
tenant := contivModel.FindTenant(service.TenantName)
if tenant == nil {
return errors.New("Tenant not found")
}
// Find the app this service belongs to
app := contivModel.FindApp(service.TenantName + ":" + service.AppName)
if app == nil {
return errors.New("App not found")
}
// Setup links
modeldb.AddLink(&service.Links.App, app)
modeldb.AddLinkSet(&app.LinkSets.Services, service)
// Save the app too since we added the links
err := app.Write()
if err != nil {
return err
}
// Check if user specified any networks
if len(service.Networks) == 0 {
service.Networks = append(service.Networks, "privateNet")
}
// link service with network
for _, netName := range service.Networks {
netKey := service.TenantName + ":" + netName
network := contivModel.FindNetwork(netKey)
if network == nil {
log.Errorf("Service: %s could not find network %s", service.Key, netKey)
return errors.New("Network not found")
}
// Link the network
modeldb.AddLinkSet(&service.LinkSets.Networks, network)
modeldb.AddLinkSet(&network.LinkSets.Services, service)
// save the network
err := network.Write()
if err != nil {
return err
}
}
// Check if user specified any endpoint group for the service
if len(service.EndpointGroups) == 0 {
// Create one default endpointGroup per network
for _, netName := range service.Networks {
// params for default endpoint group
dfltEpgName := service.AppName + "." + service.ServiceName + "." + netName
endpointGroup := contivModel.EndpointGroup{
Key: service.TenantName + ":" + dfltEpgName,
TenantName: service.TenantName,
NetworkName: netName,
GroupName: dfltEpgName,
}
// Create default endpoint group for the service
err = contivModel.CreateEndpointGroup(&endpointGroup)
if err != nil {
log.Errorf("Error creating endpoint group: %+v, Err: %v", endpointGroup, err)
return err
}
// Add the endpoint group to the list
service.EndpointGroups = append(service.EndpointGroups, dfltEpgName)
}
}
// Link the service and endpoint group
for _, epgName := range service.EndpointGroups {
endpointGroup := contivModel.FindEndpointGroup(service.TenantName + ":" + epgName)
if endpointGroup == nil {
log.Errorf("Error: could not find endpoint group: %s", epgName)
return errors.New("could not find endpointGroup")
}
// setup links
modeldb.AddLinkSet(&service.LinkSets.EndpointGroups, endpointGroup)
modeldb.AddLinkSet(&endpointGroup.LinkSets.Services, service)
// save the endpointGroup
err = endpointGroup.Write()
if err != nil {
return err
}
}
//.........这里部分代码省略.........