in pkg/adsc/adsc.go [713:838]
func (a *ADSC) Save(base string) error {
a.mutex.Lock()
defer a.mutex.Unlock()
// guarrante the persistence order for each element in tcpListeners
var sortTCPListeners []string
for key := range a.tcpListeners {
sortTCPListeners = append(sortTCPListeners, key)
}
sort.Strings(sortTCPListeners)
arrTCPListenersJSONProto := make([]jsonMarshalProtoWithName, 0, len(sortTCPListeners))
for _, element := range sortTCPListeners {
sliceItem := &jsonMarshalProtoWithName{element, a.tcpListeners[element]}
arrTCPListenersJSONProto = append(arrTCPListenersJSONProto, *sliceItem)
}
byteJSONResponse, err := json.MarshalIndent(arrTCPListenersJSONProto, "", " ")
if err != nil {
adscLog.Warnf("Error for marshaling TCPListeners: %v", err)
}
err = os.WriteFile(base+"_lds_tcp.json", byteJSONResponse, 0o644)
if err != nil {
return err
}
// guarrante the persistence order for each element in httpListeners
var sortHTTPListeners []string
for key := range a.httpListeners {
sortHTTPListeners = append(sortHTTPListeners, key)
}
sort.Strings(sortHTTPListeners)
arrHTTPListenersJSONProto := make([]jsonMarshalProtoWithName, 0, len(sortHTTPListeners))
for _, element := range sortHTTPListeners {
sliceItem := &jsonMarshalProtoWithName{element, a.httpListeners[element]}
arrHTTPListenersJSONProto = append(arrHTTPListenersJSONProto, *sliceItem)
}
byteJSONResponse, err = json.MarshalIndent(arrHTTPListenersJSONProto, "", " ")
if err != nil {
return err
}
err = os.WriteFile(base+"_lds_http.json", byteJSONResponse, 0o644)
if err != nil {
return err
}
// guarrante the persistence order for each element in routes
var sortRoutes []string
for key := range a.routes {
sortRoutes = append(sortRoutes, key)
}
sort.Strings(sortRoutes)
arrRoutesJSONProto := make([]jsonMarshalProtoWithName, 0, len(sortRoutes))
for _, element := range sortRoutes {
sliceItem := &jsonMarshalProtoWithName{element, a.routes[element]}
arrRoutesJSONProto = append(arrRoutesJSONProto, *sliceItem)
}
byteJSONResponse, err = json.MarshalIndent(arrRoutesJSONProto, "", " ")
if err != nil {
return err
}
err = os.WriteFile(base+"_rds.json", byteJSONResponse, 0o644)
if err != nil {
return err
}
// guarrante the persistence order for each element in edsClusters
var sortEdsClusters []string
for key := range a.edsClusters {
sortEdsClusters = append(sortEdsClusters, key)
}
sort.Strings(sortEdsClusters)
arrEdsClustersJSONProto := make([]jsonMarshalProtoWithName, 0, len(sortEdsClusters))
for _, element := range sortEdsClusters {
sliceItem := &jsonMarshalProtoWithName{element, a.edsClusters[element]}
arrEdsClustersJSONProto = append(arrEdsClustersJSONProto, *sliceItem)
}
byteJSONResponse, err = json.MarshalIndent(arrEdsClustersJSONProto, "", " ")
if err != nil {
return err
}
err = os.WriteFile(base+"_ecds.json", byteJSONResponse, 0o644)
if err != nil {
return err
}
// guarrante the persistence order for each element in clusters
var sortClusters []string
for key := range a.clusters {
sortClusters = append(sortClusters, key)
}
sort.Strings(sortClusters)
arrClustersJSONProto := make([]jsonMarshalProtoWithName, 0, len(sortClusters))
for _, element := range sortClusters {
sliceItem := &jsonMarshalProtoWithName{element, a.clusters[element]}
arrClustersJSONProto = append(arrClustersJSONProto, *sliceItem)
}
byteJSONResponse, err = json.MarshalIndent(arrClustersJSONProto, "", " ")
if err != nil {
return err
}
err = os.WriteFile(base+"_cds.json", byteJSONResponse, 0o644)
if err != nil {
return err
}
// guarrante the persistence order for each element in eds
var sortEds []string
for key := range a.eds {
sortEds = append(sortEds, key)
}
sort.Strings(sortEds)
arrEdsJSONProto := make([]jsonMarshalProtoWithName, 0, len(sortEds))
for _, element := range sortEds {
sliceItem := &jsonMarshalProtoWithName{element, a.eds[element]}
arrEdsJSONProto = append(arrEdsJSONProto, *sliceItem)
}
byteJSONResponse, err = json.MarshalIndent(arrEdsJSONProto, "", " ")
if err != nil {
return err
}
err = os.WriteFile(base+"_eds.json", byteJSONResponse, 0o644)
if err != nil {
return err
}
return err
}