// Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package transfer import ( "fmt" "github.com/Badangel/logex" "os" "time" "transfer/dict" ) func Start() { go BackupTransfer() logex.Notice(">>> starting server...") addr := ":" + Port err := startHttp(addr) if err != nil { logex.Fatalf("start http(addr=%v) failed: %v", addr, err) os.Exit(255) } logex.Notice(">>> start server succ") } func BackupTransfer() { for { //trigger version, err := TriggerStart(Dict.DonefileAddress) if err != nil { logex.Fatalf("[trigger err]trigger err:%v ", err) fmt.Printf("[error]trigger err:%v \n", err) break } logex.Noticef("[trigger] get version:%v \n", version) if version.Id == 0 { logex.Noticef("[sleep]no new version, sleep 5 min") fmt.Printf("[sleep]no new version, wait 5 min\n") time.Sleep(5 * time.Minute) continue } Dict.WaitVersionInfo = version logex.Noticef("[trigger finish] WaitVersionInfo version:%v \n", Dict.WaitVersionInfo) WriteWaitVersionInfoToFile() //builder Dict.WaitVersionInfo.Status = dict.Dict_Status_Building Dict.WaitVersionInfo.MetaInfos = make(map[int]string) WriteWaitVersionInfoToFile() if err = BuilderStart(Dict.WaitVersionInfo); err != nil { logex.Fatalf("builder err:%v \n", err) } if Dict.WaitVersionInfo.Mode == dict.BASE { var newCurrentVersion []dict.DictVersionInfo Dict.CurrentVersionInfo = newCurrentVersion WriteCurrentVersionInfoToFile() } logex.Noticef("[builder finish] WaitVersionInfo version:%v \n", Dict.WaitVersionInfo) //deployer Dict.WaitVersionInfo.Status = dict.Dict_Status_Deploying WriteWaitVersionInfoToFile() if err = DeployStart(Dict.WaitVersionInfo); err != nil { logex.Fatalf("deploy err:%v \n", err) } logex.Noticef("[deploy finish]current version: %v\n",Dict.CurrentVersionInfo) } fmt.Print("transfer over!") logex.Noticef("[transfer]status machine exit!") }