Documentation
¶
Index ¶
- Constants
- Variables
- func CalcEnergy(prevSts, newSts *Status)
- func Handler(mux *http.ServeMux, p PDU, cfg *Config) http.Handler
- type AccessControlEntry
- type AccessControlList
- type BreakerMetrics
- type BreakerStatus
- type Config
- type GroupMetrics
- type GroupStatus
- type LoginPDU
- type Metrics
- type OutletMetrics
- type OutletStatus
- type PDU
- type PolledPDU
- func (p *PolledPDU) ClearMaximumCurrents() error
- func (p *PolledPDU) Close() error
- func (p *PolledPDU) LockOutlet(id string, state bool) (err error)
- func (p *PolledPDU) RebootOutlet(id string) error
- func (p *PolledPDU) Status(detailed bool) (*Status, error)
- func (p *PolledPDU) SwitchOutlet(id string, state bool) (err error)
- func (p *PolledPDU) Temperature() (float64, error)
- type Server
- func (s *Server) ClearMaximumCurrents(ctx context.Context, request api.ClearMaximumCurrentsRequestObject) (api.ClearMaximumCurrentsResponseObject, error)
- func (s *Server) LockOutlet(ctx context.Context, request api.LockOutletRequestObject) (api.LockOutletResponseObject, error)
- func (s *Server) RebootOutlet(ctx context.Context, request api.RebootOutletRequestObject) (api.RebootOutletResponseObject, error)
- func (p *Server) Status(ctx context.Context, request api.StatusRequestObject) (api.StatusResponseObject, error)
- func (s *Server) SwitchOutlet(ctx context.Context, request api.SwitchOutletRequestObject) (api.SwitchOutletResponseObject, error)
- func (s *Server) Temperature(ctx context.Context, request api.TemperatureRequestObject) (api.TemperatureResponseObject, error)
- func (s *Server) WhoAmI(ctx context.Context, request api.WhoAmIRequestObject) (api.WhoAmIResponseObject, error)
- type Status
Constants ¶
View Source
const (
All = "all"
)
Variables ¶
View Source
var ( ErrNotFound = errors.New("failed to find outlet") ErrInvalidOutletID = errors.New("invalid outlet ID") ErrLoginRequired = errors.New("login required") ErrInvalidPassword = errors.New("invalid password") )
View Source
var ( ErrMissingClientCert = errors.New("missing client certificate") ErrAccessDenied = errors.New("access denied") )
View Source
var ErrNotPolledYet = errors.New("status has not been polled yet")
Functions ¶
func CalcEnergy ¶
func CalcEnergy(prevSts, newSts *Status)
Types ¶
type AccessControlEntry ¶
type AccessControlEntry struct { Name string `mapstructure:"name"` Operations []string `mapstructure:"operations"` Outlets []struct { ID string `mapstructure:"id"` Operations []string `mapstructure:"operations"` // contains filtered or unexported fields } `mapstructure:"outlets"` // contains filtered or unexported fields }
type AccessControlList ¶
type AccessControlList []AccessControlEntry
func (AccessControlList) Check ¶
func (a AccessControlList) Check(commonName, operationID, outletID string) bool
func (AccessControlList) Init ¶
func (a AccessControlList) Init() (err error)
type BreakerMetrics ¶
type BreakerMetrics struct { TrueRMSCurrent prometheus.Gauge PeakRMSCurrent prometheus.Gauge }
type BreakerStatus ¶
type BreakerStatus = api.BreakerStatus
type Config ¶
type Config struct { Listen string `mapstructure:"listen"` Address string `mapstructure:"address"` Username string `mapstructure:"username"` Password string `mapstructure:"password"` PollInterval time.Duration `mapstructure:"poll_interval"` Format string `mapstructure:"format"` Metrics bool `mapstructure:"metrics"` TLS struct { CACert string `mapstructure:"cacert"` Cert string `mapstructure:"cert"` Key string `mapstructure:"key"` Insecure bool `mapstructure:"insecure"` } `mapstructure:"tls"` ACL AccessControlList `mapstructure:"acl"` }
type GroupMetrics ¶
type GroupMetrics struct { TrueRMSCurrent prometheus.Gauge TrueRMSVoltage prometheus.Gauge PeakRMSCurrent prometheus.Gauge AveragePower prometheus.Gauge Power prometheus.Gauge Energy prometheus.Counter }
type GroupStatus ¶
type GroupStatus = api.GroupStatus
type Metrics ¶
type Metrics struct { Timestamp prometheus.Gauge Temperature prometheus.Gauge TotalEnergy prometheus.Counter Breakers []BreakerMetrics Groups []GroupMetrics Outlets []OutletMetrics }
func NewMetrics ¶
type OutletMetrics ¶
type OutletMetrics struct { TrueRMSCurrent prometheus.Gauge TrueRMSVoltage prometheus.Gauge PeakRMSCurrent prometheus.Gauge AveragePower prometheus.Gauge Power prometheus.Gauge State prometheus.Gauge Locked prometheus.Gauge Energy prometheus.Counter }
type OutletStatus ¶
type OutletStatus = api.OutletStatus
type PolledPDU ¶
type PolledPDU struct { PDU // contains filtered or unexported fields }
func NewPolledPDU ¶
func (*PolledPDU) ClearMaximumCurrents ¶
func (*PolledPDU) RebootOutlet ¶
func (*PolledPDU) SwitchOutlet ¶
func (*PolledPDU) Temperature ¶
type Server ¶
type Server struct {
PDU
}
func (*Server) ClearMaximumCurrents ¶
func (s *Server) ClearMaximumCurrents(ctx context.Context, request api.ClearMaximumCurrentsRequestObject) (api.ClearMaximumCurrentsResponseObject, error)
Clear peak RMS current (POST /clear)
func (*Server) LockOutlet ¶
func (s *Server) LockOutlet(ctx context.Context, request api.LockOutletRequestObject) (api.LockOutletResponseObject, error)
Switch lock state of outlet (POST /outlet/{id}/lock)
func (*Server) RebootOutlet ¶
func (s *Server) RebootOutlet(ctx context.Context, request api.RebootOutletRequestObject) (api.RebootOutletResponseObject, error)
Reboot the outlet (POST /outlet/{id}/reboot)
func (*Server) Status ¶
func (p *Server) Status(ctx context.Context, request api.StatusRequestObject) (api.StatusResponseObject, error)
Get status of PDU (GET /status)
func (*Server) SwitchOutlet ¶
func (s *Server) SwitchOutlet(ctx context.Context, request api.SwitchOutletRequestObject) (api.SwitchOutletResponseObject, error)
Switch state of outlet (POST /outlet/{id}/state)
func (*Server) Temperature ¶
func (s *Server) Temperature(ctx context.Context, request api.TemperatureRequestObject) (api.TemperatureResponseObject, error)
Get temperature of PDU (GET /temperature)
func (*Server) WhoAmI ¶
func (s *Server) WhoAmI(ctx context.Context, request api.WhoAmIRequestObject) (api.WhoAmIResponseObject, error)
Get current user (GET /whoami)
Source Files
¶
Click to show internal directories.
Click to hide internal directories.