77 lines
1.4 KiB
Go
77 lines
1.4 KiB
Go
package mapping
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
log "github.com/sirupsen/logrus"
|
|
"github.com/spf13/viper"
|
|
"iwarma.ru/console/correlator/config"
|
|
)
|
|
|
|
type Mapping struct {
|
|
Url string
|
|
File string
|
|
Type string
|
|
}
|
|
|
|
const (
|
|
MappingComponent = "component"
|
|
MappingIndex = "index"
|
|
)
|
|
|
|
func UpdateMapping(mapping *[]Mapping) error {
|
|
|
|
for _, cur := range *mapping {
|
|
url := fmt.Sprintf("%v/%v", viper.GetString(config.ElasticUrl), cur.Url)
|
|
|
|
cl := log.WithFields(log.Fields{"url": url, "file": cur.File, "type": cur.Type})
|
|
|
|
if cur.Type == MappingComponent {
|
|
component, err := ReadComponentFromFile(cur.File)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
ok, err := CheckComponentUpdate(url, component)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if ok {
|
|
cl.Infof("Need to update component")
|
|
err = UpdateComponent(url, component)
|
|
if err != nil {
|
|
cl.Error(err)
|
|
return err
|
|
}
|
|
} else {
|
|
cl.Infof("NO need to update component")
|
|
}
|
|
} else if cur.Type == MappingIndex {
|
|
index, err := ReadIndexFromFile(cur.File)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
ok, err := CheckIndextUpdate(url, index)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if ok {
|
|
cl.Infof("Need to update component")
|
|
err = UpdateIndex(url, index)
|
|
if err != nil {
|
|
cl.Error(err)
|
|
return err
|
|
}
|
|
} else {
|
|
cl.Infof("NO need to update index")
|
|
}
|
|
} else {
|
|
return fmt.Errorf("got unknown mapping type: %v", cur.Type)
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|