Rename a few things.
This commit is contained in:
		
							parent
							
								
									53602f8084
								
							
						
					
					
						commit
						8e9055e172
					
				|  | @ -15,6 +15,8 @@ | ||||||
| *~ | *~ | ||||||
| /package_build_* | /package_build_* | ||||||
| /release | /release | ||||||
|  | MANUAL | ||||||
|  | MANUAL.html | ||||||
| README | README | ||||||
| README.html | README.html | ||||||
| /unifi-poller_manual.html | /unifi-poller_manual.html | ||||||
|  |  | ||||||
							
								
								
									
										17
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										17
									
								
								Makefile
								
								
								
								
							|  | @ -7,7 +7,6 @@ MAINT=David Newhall II <david at sleepers dot pro> | ||||||
| DESC=This daemon polls a UniFi controller at a short interval and stores the collected measurements in an Influx Database. | DESC=This daemon polls a UniFi controller at a short interval and stores the collected measurements in an Influx Database. | ||||||
| GOLANGCI_LINT_ARGS=--enable-all -D gochecknoglobals | GOLANGCI_LINT_ARGS=--enable-all -D gochecknoglobals | ||||||
| PACKAGE:=./cmd/$(BINARY) | PACKAGE:=./cmd/$(BINARY) | ||||||
| LIBRARY:=./pkg/$(BINARY) |  | ||||||
| DOCKER_REPO=golift | DOCKER_REPO=golift | ||||||
| MD2ROFF_BIN=github.com/github/hub/md2roff-bin | MD2ROFF_BIN=github.com/github/hub/md2roff-bin | ||||||
| 
 | 
 | ||||||
|  | @ -46,9 +45,9 @@ clean: | ||||||
| man: $(BINARY).1.gz | man: $(BINARY).1.gz | ||||||
| $(BINARY).1.gz: md2roff | $(BINARY).1.gz: md2roff | ||||||
| 	# Building man page. Build dependency first: md2roff | 	# Building man page. Build dependency first: md2roff | ||||||
| 	go run $(MD2ROFF_BIN) --manual $(BINARY) --version $(VERSION) --date "$$(date)" cmd/$(BINARY)/README.md | 	go run $(MD2ROFF_BIN) --manual $(BINARY) --version $(VERSION) --date "$$(date)" examples/MANUAL.md | ||||||
| 	gzip -9nc cmd/$(BINARY)/README > $(BINARY).1.gz | 	gzip -9nc examples/MANUAL > $(BINARY).1.gz | ||||||
| 	mv cmd/$(BINARY)/README.html $(BINARY)_manual.html | 	mv examples/MANUAL.html $(BINARY)_manual.html | ||||||
| 
 | 
 | ||||||
| md2roff: | md2roff: | ||||||
| 	go get $(MD2ROFF_BIN) | 	go get $(MD2ROFF_BIN) | ||||||
|  | @ -63,23 +62,23 @@ README.html: md2roff | ||||||
| 
 | 
 | ||||||
| build: $(BINARY) | build: $(BINARY) | ||||||
| $(BINARY): | $(BINARY): | ||||||
| 	go build -o $(BINARY) -ldflags "-w -s -X github.com/davidnewhall/unifi-poller/pkg/unifi-poller.Version=$(VERSION)" $(PACKAGE) | 	go build -o $(BINARY) -ldflags "-w -s -X github.com/davidnewhall/unifi-poller/unifipoller.Version=$(VERSION)" $(PACKAGE) | ||||||
| 
 | 
 | ||||||
| linux: $(BINARY).linux | linux: $(BINARY).linux | ||||||
| $(BINARY).linux: | $(BINARY).linux: | ||||||
| 	# Building linux binary. | 	# Building linux binary. | ||||||
| 	GOOS=linux go build -o $(BINARY).linux -ldflags "-w -s -X github.com/davidnewhall/unifi-poller/pkg/unifi-poller.Version=$(VERSION)" $(PACKAGE) | 	GOOS=linux go build -o $(BINARY).linux -ldflags "-w -s -X github.com/davidnewhall/unifi-poller/unifipoller.Version=$(VERSION)" $(PACKAGE) | ||||||
| 
 | 
 | ||||||
| macos: $(BINARY).macos | macos: $(BINARY).macos | ||||||
| $(BINARY).macos: | $(BINARY).macos: | ||||||
| 	# Building darwin binary. | 	# Building darwin binary. | ||||||
| 	GOOS=darwin go build -o $(BINARY).macos -ldflags "-w -s -X github.com/davidnewhall/unifi-poller/pkg/unifi-poller.Version=$(VERSION)" $(PACKAGE) | 	GOOS=darwin go build -o $(BINARY).macos -ldflags "-w -s -X github.com/davidnewhall/unifi-poller/unifipoller.Version=$(VERSION)" $(PACKAGE) | ||||||
| 
 | 
 | ||||||
| exe: $(BINARY).exe | exe: $(BINARY).exe | ||||||
| windows: $(BINARY).exe | windows: $(BINARY).exe | ||||||
| $(BINARY).exe: | $(BINARY).exe: | ||||||
| 	# Building windows binary. | 	# Building windows binary. | ||||||
| 	GOOS=windows go build -o $(BINARY).exe -ldflags "-w -s -X github.com/davidnewhall/unifi-poller/pkg/unifi-poller.Version=$(VERSION)" $(PACKAGE) | 	GOOS=windows go build -o $(BINARY).exe -ldflags "-w -s -X github.com/davidnewhall/unifi-poller/unifipoller.Version=$(VERSION)" $(PACKAGE) | ||||||
| 
 | 
 | ||||||
| # Packages
 | # Packages
 | ||||||
| 
 | 
 | ||||||
|  | @ -148,7 +147,7 @@ $(BINARY).rb: v$(VERSION).tar.gz.sha256 | ||||||
| # Run code tests and lint.
 | # Run code tests and lint.
 | ||||||
| test: lint | test: lint | ||||||
| 	# Testing. | 	# Testing. | ||||||
| 	go test -race -covermode=atomic $(PACKAGE) $(LIBRARY) | 	go test -race -covermode=atomic ./... | ||||||
| lint: | lint: | ||||||
| 	# Checking lint. | 	# Checking lint. | ||||||
| 	golangci-lint run $(GOLANGCI_LINT_ARGS) | 	golangci-lint run $(GOLANGCI_LINT_ARGS) | ||||||
|  |  | ||||||
|  | @ -85,7 +85,7 @@ means, if you wanted to do something like make telegraf collect your data instea | ||||||
| of UniFi Poller you can achieve that with a little bit of Go code. You could write | of UniFi Poller you can achieve that with a little bit of Go code. You could write | ||||||
| a small app that acts as a telegraf input plugin using the [unifi](https://github.com/golift/unifi) | a small app that acts as a telegraf input plugin using the [unifi](https://github.com/golift/unifi) | ||||||
| library to grab the data from your controller. As a bonus, all of the code in UniFi Poller is | library to grab the data from your controller. As a bonus, all of the code in UniFi Poller is | ||||||
| [also a library](https://godoc.org/github.com/davidnewhall/unifi-poller/pkg/unifi-poller) | [also a library](https://godoc.org/github.com/davidnewhall/unifi-poller/unifipoller) | ||||||
| and can be used in other projects. | and can be used in other projects. | ||||||
| 
 | 
 | ||||||
| # What now... | # What now... | ||||||
|  |  | ||||||
|  | @ -1,29 +1,14 @@ | ||||||
| package main | package main | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"fmt" |  | ||||||
| 	"log" | 	"log" | ||||||
| 	"os" |  | ||||||
| 
 | 
 | ||||||
| 	unifipoller "github.com/davidnewhall/unifi-poller/pkg/unifi-poller" | 	"github.com/davidnewhall/unifi-poller/unifipoller" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | // Keep it simple.
 | ||||||
| func main() { | func main() { | ||||||
| 	log.SetFlags(log.LstdFlags) | 	if err := unifipoller.Start(); err != nil { | ||||||
| 	if err := run(); err != nil { |  | ||||||
| 		log.Fatalln("[ERROR]", err) | 		log.Fatalln("[ERROR]", err) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 |  | ||||||
| func run() error { |  | ||||||
| 	unifi := &unifipoller.UnifiPoller{} |  | ||||||
| 	if unifi.ParseFlags(os.Args[1:]); unifi.ShowVer { |  | ||||||
| 		fmt.Printf("unifi-poller v%s\n", unifipoller.Version) |  | ||||||
| 		return nil // don't run anything else w/ version request.
 |  | ||||||
| 	} |  | ||||||
| 	if err := unifi.GetConfig(); err != nil { |  | ||||||
| 		unifi.Flag.Usage() |  | ||||||
| 		return err |  | ||||||
| 	} |  | ||||||
| 	return unifi.Run() |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  | @ -17,6 +17,22 @@ import ( | ||||||
| 	yaml "gopkg.in/yaml.v2" | 	yaml "gopkg.in/yaml.v2" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | // Start begins the application from a CLI.
 | ||||||
|  | // Parses flags, parses config and executes Run().
 | ||||||
|  | func Start() error { | ||||||
|  | 	log.SetFlags(log.LstdFlags) | ||||||
|  | 	up := &UnifiPoller{} | ||||||
|  | 	if up.ParseFlags(os.Args[1:]); up.ShowVer { | ||||||
|  | 		fmt.Printf("unifi-poller v%s\n", Version) | ||||||
|  | 		return nil // don't run anything else w/ version request.
 | ||||||
|  | 	} | ||||||
|  | 	if err := up.GetConfig(); err != nil { | ||||||
|  | 		up.Flag.Usage() | ||||||
|  | 		return err | ||||||
|  | 	} | ||||||
|  | 	return up.Run() | ||||||
|  | } | ||||||
|  | 
 | ||||||
| // ParseFlags runs the parser.
 | // ParseFlags runs the parser.
 | ||||||
| func (u *UnifiPoller) ParseFlags(args []string) { | func (u *UnifiPoller) ParseFlags(args []string) { | ||||||
| 	u.Flag = flag.NewFlagSet("unifi-poller", flag.ExitOnError) | 	u.Flag = flag.NewFlagSet("unifi-poller", flag.ExitOnError) | ||||||
|  | @ -71,22 +87,19 @@ func (u *UnifiPoller) Run() (err error) { | ||||||
| 		u.LogDebugf("Debug Logging Enabled") | 		u.LogDebugf("Debug Logging Enabled") | ||||||
| 	} | 	} | ||||||
| 	log.Printf("[INFO] UniFi Poller v%v Starting Up! PID: %d", Version, os.Getpid()) | 	log.Printf("[INFO] UniFi Poller v%v Starting Up! PID: %d", Version, os.Getpid()) | ||||||
| 
 |  | ||||||
| 	if err = u.GetUnifi(); err != nil { | 	if err = u.GetUnifi(); err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
| 	if err = u.GetInfluxDB(); err != nil { | 	if err = u.GetInfluxDB(); err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
| 	if u.Lambda { | 	switch { | ||||||
| 		metrics, err := u.CollectMetrics() | 	case u.Lambda: | ||||||
| 		if err != nil { | 		return u.CollectAndReport() | ||||||
| 			return err | 	default: | ||||||
| 		} |  | ||||||
| 		return u.ReportMetrics(metrics) |  | ||||||
| 	} |  | ||||||
| 		return u.PollController() | 		return u.PollController() | ||||||
| 	} | 	} | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| // GetInfluxDB returns an InfluxDB interface.
 | // GetInfluxDB returns an InfluxDB interface.
 | ||||||
| func (u *UnifiPoller) GetInfluxDB() (err error) { | func (u *UnifiPoller) GetInfluxDB() (err error) { | ||||||
|  | @ -43,10 +43,7 @@ func (u *UnifiPoller) PollController() error { | ||||||
| 	log.Println("[INFO] Everything checks out! Poller started, interval:", u.Interval.Round(time.Second)) | 	log.Println("[INFO] Everything checks out! Poller started, interval:", u.Interval.Round(time.Second)) | ||||||
| 	ticker := time.NewTicker(u.Interval.Round(time.Second)) | 	ticker := time.NewTicker(u.Interval.Round(time.Second)) | ||||||
| 	for range ticker.C { | 	for range ticker.C { | ||||||
| 		metrics, err := u.CollectMetrics() | 		_ = u.CollectAndReport() | ||||||
| 		if err == nil { |  | ||||||
| 			u.LogError(u.ReportMetrics(metrics), "reporting metrics") |  | ||||||
| 		} |  | ||||||
| 		if u.MaxErrors >= 0 && u.errorCount > u.MaxErrors { | 		if u.MaxErrors >= 0 && u.errorCount > u.MaxErrors { | ||||||
| 			return errors.Errorf("reached maximum error count, stopping poller (%d > %d)", u.errorCount, u.MaxErrors) | 			return errors.Errorf("reached maximum error count, stopping poller (%d > %d)", u.errorCount, u.MaxErrors) | ||||||
| 		} | 		} | ||||||
|  | @ -54,6 +51,18 @@ func (u *UnifiPoller) PollController() error { | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // CollectAndReport collects measurements and reports them to influxdb.
 | ||||||
|  | // Can be called once or in a ticker loop.
 | ||||||
|  | func (u *UnifiPoller) CollectAndReport() error { | ||||||
|  | 	metrics, err := u.CollectMetrics() | ||||||
|  | 	if err != nil { | ||||||
|  | 		return err | ||||||
|  | 	} | ||||||
|  | 	err = u.ReportMetrics(metrics) | ||||||
|  | 	u.LogError(err, "reporting metrics") | ||||||
|  | 	return err | ||||||
|  | } | ||||||
|  | 
 | ||||||
| // CollectMetrics grabs all the measurements from a UniFi controller and returns them.
 | // CollectMetrics grabs all the measurements from a UniFi controller and returns them.
 | ||||||
| // This also creates an InfluxDB writer, and returns error if that fails.
 | // This also creates an InfluxDB writer, and returns error if that fails.
 | ||||||
| func (u *UnifiPoller) CollectMetrics() (*Metrics, error) { | func (u *UnifiPoller) CollectMetrics() (*Metrics, error) { | ||||||
		Loading…
	
		Reference in New Issue