MCPcopy Create free account
hub / github.com/deepflowio/deepflow / getSubDomainPodNodes

Method getSubDomainPodNodes

server/controller/cloud/sub_domain.go:357–470  ·  view source on GitHub ↗

- 根据IP查询对应的虚拟机,生成与虚拟机的关联关系 - 根据虚拟机的az属性,确定容器节点的az信息

(subDomainLcuuid string, cResource model.Resource, kResource *kubernetes_model.KubernetesGatherResource)

Source from the content-addressed store, hash-verified

355// - 根据IP查询对应的虚拟机,生成与虚拟机的关联关系
356// - 根据虚拟机的az属性,确定容器节点的az信息
357func (c *Cloud) getSubDomainPodNodes(subDomainLcuuid string, cResource model.Resource, kResource *kubernetes_model.KubernetesGatherResource) ([]model.PodNode, []model.VMPodNodeConnection, map[string]string) {
358 var retPodNodes []model.PodNode
359 var retVMPodNodeConnections []model.VMPodNodeConnection
360 nodeLcuuidToAZLcuuid := map[string]string{}
361
362 if len(kResource.PodNodes) == 0 {
363 return retPodNodes, retVMPodNodeConnections, nodeLcuuidToAZLcuuid
364 }
365 vpcLcuuid := kResource.PodNodes[0].VPCLcuuid
366
367 lcuuidToVM := make(map[string]*model.VM)
368 for index, vm := range cResource.VMs {
369 if vm.VPCLcuuid != vpcLcuuid {
370 continue
371 }
372 lcuuidToVM[vm.Lcuuid] = &cResource.VMs[index]
373 }
374
375 vinterfaceLcuuidToVMLcuuid := make(map[string]string)
376 for _, vinterface := range cResource.VInterfaces {
377 if vinterface.VPCLcuuid != vpcLcuuid || vinterface.DeviceType != common.VIF_DEVICE_TYPE_VM {
378 continue
379 }
380 vinterfaceLcuuidToVMLcuuid[vinterface.Lcuuid] = vinterface.DeviceLcuuid
381 }
382
383 ipToVM := make(map[string]*model.VM)
384 for _, ip := range cResource.IPs {
385 vmLcuuid, ok := vinterfaceLcuuidToVMLcuuid[ip.VInterfaceLcuuid]
386 if !ok {
387 continue
388 }
389 vm, ok := lcuuidToVM[vmLcuuid]
390 if !ok {
391 continue
392 }
393 ipToVM[ip.IP] = vm
394 }
395
396 networkLcuuidToAZLcuuid := make(map[string]string)
397 for _, network := range cResource.Networks {
398 if network.VPCLcuuid != vpcLcuuid {
399 continue
400 }
401 if network.AZLcuuid == "" {
402 continue
403 }
404 networkLcuuidToAZLcuuid[network.Lcuuid] = network.AZLcuuid
405 }
406
407 cidrToAZLcuuid := make(map[string]string)
408 for _, subnet := range cResource.Subnets {
409 if subnet.VPCLcuuid != vpcLcuuid {
410 continue
411 }
412 azLcuuid, ok := networkLcuuidToAZLcuuid[subnet.NetworkLcuuid]
413 if !ok {
414 continue

Callers 1

Calls 2

ContainsMethod · 0.80
ErrorMethod · 0.65

Tested by

no test coverage detected