github.com/CPtung/libcompose@v0.4.3/project/events/events.go (about)

     1  // Package events holds event structures, methods and functions.
     2  package events
     3  
     4  import (
     5  	"fmt"
     6  	"time"
     7  )
     8  
     9  // Notifier defines the methods an event notifier should have.
    10  type Notifier interface {
    11  	Notify(eventType EventType, serviceName string, data map[string]string)
    12  }
    13  
    14  // Emitter defines the methods an event emitter should have.
    15  type Emitter interface {
    16  	AddListener(c chan<- Event)
    17  }
    18  
    19  // Event holds project-wide event informations.
    20  type Event struct {
    21  	EventType   EventType
    22  	ServiceName string
    23  	Data        map[string]string
    24  }
    25  
    26  // ContainerEvent holds attributes of container events.
    27  type ContainerEvent struct {
    28  	Service    string            `json:"service"`
    29  	Event      string            `json:"event"`
    30  	ID         string            `json:"id"`
    31  	Time       time.Time         `json:"time"`
    32  	Attributes map[string]string `json:"attributes"`
    33  	Type       string            `json:"type"`
    34  }
    35  
    36  // EventType defines a type of libcompose event.
    37  type EventType int
    38  
    39  // Definitions of libcompose events
    40  const (
    41  	NoEvent = EventType(iota)
    42  
    43  	ContainerCreated = EventType(iota)
    44  	ContainerStarted = EventType(iota)
    45  
    46  	ServiceAdd          = EventType(iota)
    47  	ServiceUpStart      = EventType(iota)
    48  	ServiceUpIgnored    = EventType(iota)
    49  	ServiceUp           = EventType(iota)
    50  	ServiceCreateStart  = EventType(iota)
    51  	ServiceCreate       = EventType(iota)
    52  	ServiceDeleteStart  = EventType(iota)
    53  	ServiceDelete       = EventType(iota)
    54  	ServiceDownStart    = EventType(iota)
    55  	ServiceDown         = EventType(iota)
    56  	ServiceRestartStart = EventType(iota)
    57  	ServiceRestart      = EventType(iota)
    58  	ServicePullStart    = EventType(iota)
    59  	ServicePull         = EventType(iota)
    60  	ServiceKillStart    = EventType(iota)
    61  	ServiceKill         = EventType(iota)
    62  	ServiceStartStart   = EventType(iota)
    63  	ServiceStart        = EventType(iota)
    64  	ServiceBuildStart   = EventType(iota)
    65  	ServiceBuild        = EventType(iota)
    66  	ServicePauseStart   = EventType(iota)
    67  	ServicePause        = EventType(iota)
    68  	ServiceUnpauseStart = EventType(iota)
    69  	ServiceUnpause      = EventType(iota)
    70  	ServiceStopStart    = EventType(iota)
    71  	ServiceStop         = EventType(iota)
    72  	ServiceRunStart     = EventType(iota)
    73  	ServiceRun          = EventType(iota)
    74  
    75  	VolumeAdd  = EventType(iota)
    76  	NetworkAdd = EventType(iota)
    77  
    78  	ProjectDownStart     = EventType(iota)
    79  	ProjectDownDone      = EventType(iota)
    80  	ProjectCreateStart   = EventType(iota)
    81  	ProjectCreateDone    = EventType(iota)
    82  	ProjectUpStart       = EventType(iota)
    83  	ProjectUpDone        = EventType(iota)
    84  	ProjectDeleteStart   = EventType(iota)
    85  	ProjectDeleteDone    = EventType(iota)
    86  	ProjectRestartStart  = EventType(iota)
    87  	ProjectRestartDone   = EventType(iota)
    88  	ProjectReload        = EventType(iota)
    89  	ProjectReloadTrigger = EventType(iota)
    90  	ProjectKillStart     = EventType(iota)
    91  	ProjectKillDone      = EventType(iota)
    92  	ProjectStartStart    = EventType(iota)
    93  	ProjectStartDone     = EventType(iota)
    94  	ProjectBuildStart    = EventType(iota)
    95  	ProjectBuildDone     = EventType(iota)
    96  	ProjectPauseStart    = EventType(iota)
    97  	ProjectPauseDone     = EventType(iota)
    98  	ProjectUnpauseStart  = EventType(iota)
    99  	ProjectUnpauseDone   = EventType(iota)
   100  	ProjectStopStart     = EventType(iota)
   101  	ProjectStopDone      = EventType(iota)
   102  )
   103  
   104  func (e EventType) String() string {
   105  	var m string
   106  	switch e {
   107  	case ContainerCreated:
   108  		m = "Created container"
   109  	case ContainerStarted:
   110  		m = "Started container"
   111  
   112  	case ServiceAdd:
   113  		m = "Adding"
   114  	case ServiceUpStart:
   115  		m = "Starting"
   116  	case ServiceUpIgnored:
   117  		m = "Ignoring"
   118  	case ServiceUp:
   119  		m = "Started"
   120  	case ServiceCreateStart:
   121  		m = "Creating"
   122  	case ServiceCreate:
   123  		m = "Created"
   124  	case ServiceDeleteStart:
   125  		m = "Deleting"
   126  	case ServiceDelete:
   127  		m = "Deleted"
   128  	case ServiceStopStart:
   129  		m = "Stopping"
   130  	case ServiceStop:
   131  		m = "Stopped"
   132  	case ServiceDownStart:
   133  		m = "Stopping"
   134  	case ServiceDown:
   135  		m = "Stopped"
   136  	case ServiceRestartStart:
   137  		m = "Restarting"
   138  	case ServiceRestart:
   139  		m = "Restarted"
   140  	case ServicePullStart:
   141  		m = "Pulling"
   142  	case ServicePull:
   143  		m = "Pulled"
   144  	case ServiceKillStart:
   145  		m = "Killing"
   146  	case ServiceKill:
   147  		m = "Killed"
   148  	case ServiceStartStart:
   149  		m = "Starting"
   150  	case ServiceStart:
   151  		m = "Started"
   152  	case ServiceBuildStart:
   153  		m = "Building"
   154  	case ServiceBuild:
   155  		m = "Built"
   156  	case ServiceRunStart:
   157  		m = "Executing"
   158  	case ServiceRun:
   159  		m = "Executed"
   160  	case ServicePauseStart:
   161  		m = "Pausing"
   162  	case ServicePause:
   163  		m = "Paused"
   164  	case ServiceUnpauseStart:
   165  		m = "Unpausing"
   166  	case ServiceUnpause:
   167  		m = "Unpaused"
   168  
   169  	case ProjectDownStart:
   170  		m = "Stopping project"
   171  	case ProjectDownDone:
   172  		m = "Project stopped"
   173  	case ProjectStopStart:
   174  		m = "Stopping project"
   175  	case ProjectStopDone:
   176  		m = "Project stopped"
   177  	case ProjectCreateStart:
   178  		m = "Creating project"
   179  	case ProjectCreateDone:
   180  		m = "Project created"
   181  	case ProjectUpStart:
   182  		m = "Starting project"
   183  	case ProjectUpDone:
   184  		m = "Project started"
   185  	case ProjectDeleteStart:
   186  		m = "Deleting project"
   187  	case ProjectDeleteDone:
   188  		m = "Project deleted"
   189  	case ProjectRestartStart:
   190  		m = "Restarting project"
   191  	case ProjectRestartDone:
   192  		m = "Project restarted"
   193  	case ProjectReload:
   194  		m = "Reloading project"
   195  	case ProjectReloadTrigger:
   196  		m = "Triggering project reload"
   197  	case ProjectKillStart:
   198  		m = "Killing project"
   199  	case ProjectKillDone:
   200  		m = "Project killed"
   201  	case ProjectStartStart:
   202  		m = "Starting project"
   203  	case ProjectStartDone:
   204  		m = "Project started"
   205  	case ProjectBuildStart:
   206  		m = "Building project"
   207  	case ProjectBuildDone:
   208  		m = "Project built"
   209  	case ProjectPauseStart:
   210  		m = "Pausing project"
   211  	case ProjectPauseDone:
   212  		m = "Project paused"
   213  	case ProjectUnpauseStart:
   214  		m = "Unpausing project"
   215  	case ProjectUnpauseDone:
   216  		m = "Project unpaused"
   217  	}
   218  
   219  	if m == "" {
   220  		m = fmt.Sprintf("EventType: %d", int(e))
   221  	}
   222  
   223  	return m
   224  }