github.com/in4it/ecs-deploy@v0.0.42-0.20240508120354-ed77ff16df25/api/migration.go (about) 1 package api 2 3 import ( 4 "github.com/in4it/ecs-deploy/provider/ecs" 5 "github.com/in4it/ecs-deploy/service" 6 "github.com/juju/loggo" 7 8 "strconv" 9 "strings" 10 "time" 11 ) 12 13 // logging 14 var migrationLogger = loggo.GetLogger("migration") 15 16 // Migration struct 17 type Migration struct { 18 } 19 20 func (m *Migration) run(apiVersion string) error { 21 var runningMajor, runningMinor int 22 v := strings.Split(apiVersion, ".") 23 if len(v) > 1 { 24 runningMajor, _ = strconv.Atoi(v[0]) 25 runningMinor, _ = strconv.Atoi(v[1]) 26 } else { 27 runningMajor = 1 28 runningMinor = 0 29 } 30 if runningMajor == 1 && runningMinor < 2 { 31 migrationLogger.Infof("Starting migration from %v to %v", apiVersion, m.getApiVersion()) 32 var dss service.DynamoServices 33 s := service.NewService() 34 e := ecs.ECS{} 35 err := s.GetServices(&dss) 36 if err != nil { 37 return err 38 } 39 for _, ds := range dss.Services { 40 // doing one per half second not to overload db 41 s.ClusterName = ds.C 42 s.ServiceName = ds.S 43 d, err := s.GetLastDeploy() 44 if err != nil { 45 return err 46 } 47 cpuReservation, cpuLimit, memoryReservation, memoryLimit := e.GetContainerLimits(*d.DeployData) 48 s.UpdateServiceLimits(s.ClusterName, s.ServiceName, cpuReservation, cpuLimit, memoryReservation, memoryLimit) 49 time.Sleep(500 * time.Millisecond) 50 } 51 s.SetApiVersion(m.getApiVersion()) 52 migrationLogger.Infof("Updated API version to %v", m.getApiVersion()) 53 } 54 return nil 55 } 56 57 func (m *Migration) getApiVersion() string { 58 return apiVersion 59 }