Skip to content

Commit

Permalink
First draft support for date range
Browse files Browse the repository at this point in the history
  • Loading branch information
andfasano committed Mar 28, 2022
1 parent 2e6844a commit 51e83f0
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 18 deletions.
19 changes: 18 additions & 1 deletion cmd/dianomeas/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,24 @@ func main() {
log.Fatal(err)
}

err = c.ListEvents()
from := time.Now().Truncate(24 * time.Hour)
to := from
if len(os.Args) == 3 {
from, err = time.Parse("2006-01-02", os.Args[1])
if err != nil {
log.Fatal(err)
}
to, err = time.Parse("2006-01-02", os.Args[2])
if err != nil {
log.Fatal(err)
}
}

if from.After(to) {
log.Fatal("Invalid date range")
}

err = c.ListEvents(from, to)
if err != nil {
log.Fatal(err)
}
Expand Down
27 changes: 10 additions & 17 deletions internal/pkg/equinix/equinix.go
Original file line number Diff line number Diff line change
Expand Up @@ -196,23 +196,19 @@ func (c *Client) getDeviceId(e packngo.Event) string {

}

func (c *Client) ListEvents() error {
func (c *Client) ListEvents(from, to time.Time) error {

maxPages := 30
lastNdays := 8
instanceCostPerHour := 2.0
leakHoursThreshold := 4.0

numCreations := make(map[string]int)
now := time.Now()
continueSearch := true

instancesCreatedAt := make(map[string]time.Time)
instancesDeletedAt := make(map[string]time.Time)

prevNumDays := -1

log.Printf("Fetching events for the last %d days\n", lastNdays)
var prev time.Time
for i := 1; continueSearch && i <= maxPages; i++ {

events, _, err := c.client.Projects.ListEvents(c.projectID, &packngo.GetOptions{
Expand All @@ -225,22 +221,19 @@ func (c *Client) ListEvents() error {

for _, event := range events {

t2 := now.Truncate(24 * time.Hour)
t1 := event.CreatedAt.Time.Truncate(24 * time.Hour)

numDays := int(t2.Sub(t1).Hours()) / 24
if numDays > lastNdays {
continueSearch = false
break
curr := event.CreatedAt.Time.Truncate(24 * time.Hour)
if prev != curr {
log.Printf("Fetching events for %s\n", curr.Format("2006-01-02"))
prev = curr
}

if numDays == 0 {
if curr.After(to) {
continue
}

if numDays != prevNumDays {
log.Printf("Scanning events for %s (T-%d)\n", event.CreatedAt.Format("2006-01-02"), numDays)
prevNumDays = numDays
if curr.Before(from) {
continueSearch = false
break
}

deviceId := c.getDeviceId(event)
Expand Down

0 comments on commit 51e83f0

Please sign in to comment.