github.com/ssube/gitlab-ci-multi-runner@v1.2.1-0.20160607142738-b8d1285632e6/executors/docker/machine/data.go (about) 1 package machine 2 3 import ( 4 "fmt" 5 "github.com/Sirupsen/logrus" 6 "os" 7 "time" 8 ) 9 10 type machinesData struct { 11 Runner string 12 Acquired int 13 Creating int 14 Idle int 15 Used int 16 Removing int 17 } 18 19 func (d *machinesData) Available() int { 20 return d.Acquired + d.Creating + d.Idle 21 } 22 23 func (d *machinesData) Total() int { 24 return d.Acquired + d.Creating + d.Idle + d.Used + d.Removing 25 } 26 27 func (d *machinesData) Add(state machineState) { 28 switch state { 29 case machineStateIdle: 30 d.Idle++ 31 32 case machineStateCreating: 33 d.Creating++ 34 35 case machineStateAcquired: 36 d.Acquired++ 37 38 case machineStateUsed: 39 d.Used++ 40 41 case machineStateRemoving: 42 d.Removing++ 43 } 44 } 45 46 func (d *machinesData) Fields() logrus.Fields { 47 return logrus.Fields{ 48 "runner": d.Runner, 49 "used": d.Used, 50 "idle": d.Idle, 51 "total": d.Total(), 52 "creating": d.Creating, 53 "removing": d.Removing, 54 } 55 } 56 57 func (d *machinesData) writeDebugInformation() { 58 if logrus.GetLevel() < logrus.DebugLevel { 59 return 60 } 61 62 file, err := os.OpenFile("machines.csv", os.O_RDWR|os.O_APPEND, 0600) 63 if err != nil { 64 return 65 } 66 defer file.Close() 67 fmt.Fprintln(file, 68 "time", time.Now(), 69 "runner", d.Runner, 70 "acquired", d.Acquired, 71 "creating", d.Creating, 72 "idle", d.Idle, 73 "used", d.Used, 74 "removing", d.Removing) 75 }