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  }