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

Method encode

server/controller/prometheus/encoder/target.go:68–131  ·  view source on GitHub ↗
(ts []*controller.PrometheusTargetRequest)

Source from the content-addressed store, hash-verified

66}
67
68func (ln *target) encode(ts []*controller.PrometheusTargetRequest) ([]*controller.PrometheusTarget, error) {
69 ln.lock.Lock()
70 defer ln.lock.Unlock()
71
72 resp := make([]*controller.PrometheusTarget, 0)
73 var dbToAdd []*metadbmodel.PrometheusTarget
74 podClusterIDToDomainInfo, err := ln.getPodClusterIDToDomainInfo()
75 for i := range ts {
76 t := ts[i]
77 ins := t.GetInstance()
78 job := t.GetJob()
79 vpcID := int(t.GetEpcId())
80 podClusterID := int(t.GetPodClusterId())
81 if id, ok := ln.keyToID.Load(cache.NewTargetKey(ins, job, vpcID, podClusterID)); ok {
82 resp = append(resp, &controller.PrometheusTarget{
83 Id: proto.Uint32(uint32(id.(int))),
84 Instance: &ins,
85 Job: &job,
86 PodClusterId: proto.Uint32(uint32(podClusterID)),
87 EpcId: proto.Uint32(uint32(vpcID)),
88 })
89 continue
90 }
91 di := podClusterIDToDomainInfo[podClusterID]
92 dbToAdd = append(dbToAdd, &metadbmodel.PrometheusTarget{
93 Base: metadbmodel.Base{Lcuuid: common.GenerateUUID(ins + job + fmt.Sprintf("%d-%d", vpcID, podClusterID) + "prometheus")},
94 CreateMethod: common.PROMETHEUS_TARGET_CREATE_METHOD_PROMETHEUS,
95 Instance: ins,
96 Job: job,
97 VPCID: vpcID,
98 PodClusterID: podClusterID,
99 Domain: di.domain,
100 SubDomain: di.subDomain,
101 })
102 }
103 if len(dbToAdd) == 0 {
104 return resp, nil
105 }
106 ids, err := ln.allocate(len(dbToAdd))
107 if err != nil {
108 return nil, err
109 }
110 for i := range ids {
111 dbToAdd[i].ID = ids[i]
112 }
113 err = addBatch(ln.org.DB, dbToAdd, ln.resourceType)
114 if err != nil {
115 log.Errorf("add %s error: %s", ln.resourceType, err.Error(), ln.org.LogPrefix)
116 return nil, err
117 }
118 for i := range dbToAdd {
119 id := dbToAdd[i].ID
120 k := cache.NewTargetKey(dbToAdd[i].Instance, dbToAdd[i].Job, dbToAdd[i].VPCID, dbToAdd[i].PodClusterID)
121 ln.keyToID.Store(k, id)
122 resp = append(resp, &controller.PrometheusTarget{
123 Id: proto.Uint32(uint32(id)),
124 Instance: &k.Instance,
125 Job: &k.Job,

Callers

nothing calls this directly

Calls 9

addBatchFunction · 0.85
StoreMethod · 0.80
allocateMethod · 0.65
ErrorMethod · 0.65
LockMethod · 0.45
UnlockMethod · 0.45
LoadMethod · 0.45
ErrorfMethod · 0.45

Tested by

no test coverage detected