delete all rules 21/59121/1
authorLvbo163 <lv.bo163@zte.com.cn>
Mon, 6 Aug 2018 09:14:07 +0000 (17:14 +0800)
committerLvbo163 <lv.bo163@zte.com.cn>
Mon, 6 Aug 2018 09:14:07 +0000 (17:14 +0800)
delete all routerules if the service array from consul is empty

Issue-ID: MSB-261

Change-Id: I6c8b31e42d5c7d0d4403fb2851f9f7bd00707925
Signed-off-by: Lvbo163 <lv.bo163@zte.com.cn>
msb2pilot/src/msb2pilot/pilot/msb.go

index a1b5b5f..d81b2f1 100644 (file)
@@ -32,6 +32,9 @@ const (
 )
 
 func SyncMsbData(newServices []*models.MsbService) {
+       if len(cachedServices) == 0 {
+               deleteAllMsbRules()
+       }
        log.Log.Debug("sync msb rewrite rule to pilot")
        createServices, updateServices, deleteServices := compareServices(cachedServices, newServices)
 
@@ -55,6 +58,31 @@ func saveService(operation Operation, services []*models.MsbService) {
        log.Log.Debug("%d services need to %s, %d fails. \n", len(services), operation, len(fails))
 }
 
+func deleteAllMsbRules() {
+       log.Log.Informational("delete all msb rules")
+       configs, err := List("route-rule", "")
+
+       if err != nil {
+               return
+       }
+
+       deleteList := msbRuleFilter(configs)
+
+       Save(OperationDelete, deleteList)
+}
+
+func msbRuleFilter(configs []istioModel.Config) []istioModel.Config {
+       res := make([]istioModel.Config, 0, len(configs))
+
+       for _, config := range configs {
+               if strings.HasPrefix(config.Name, routerulePrefix) {
+                       res = append(res, config)
+               }
+       }
+
+       return res
+}
+
 func compareServices(oldServices, newServices []*models.MsbService) (createServices, updateServices, deleteServices []*models.MsbService) {
        oldServiceMap := toServiceMap(oldServices)
        newServiceMap := toServiceMap(newServices)