package supportbundles import "context" type SupportItem struct { Filename string FileBytes []byte } type State string const ( StatePending State = "pending" StateComplete State = "complete" StateError State = "error" StateTimeout State = "timeout" ) func (s State) String() string { return string(s) } type Bundle struct { UID string `json:"uid"` State State `json:"state"` Creator string `json:"creator"` CreatedAt int64 `json:"createdAt"` ExpiresAt int64 `json:"expiresAt"` TarBytes []byte `json:"tarBytes,omitempty"` } type CollectorFunc func(context.Context) (*SupportItem, error) type Collector struct { // UID is a unique identifier for the collector. UID string `json:"uid"` // DisplayName is the name of the collector. User facing. DisplayName string `json:"displayName"` // Description is a description of the collector. User facing. Description string `json:"description"` // IncludedByDefault determines if the collector is included by default. // User cannot override this. IncludedByDefault bool `json:"includedByDefault"` // Default determines if the collector is included by default. // User can override this. Default bool `json:"default"` // Fn is the function that collects the support item. Fn CollectorFunc `json:"-"` // EnabledFn is a function that determines if the collector is enabled. If nil, the collector is always enabled. EnabledFn func() bool `json:"-"` } type Service interface { RegisterSupportItemCollector(collector Collector) }