Skip to content

Commit

Permalink
amtool: Fix behavior of adding silence with duration option (#2741)
Browse files Browse the repository at this point in the history
endsAt should be calculated from startsAt, not from the current time

Signed-off-by: nekketsuuu <[email protected]>
  • Loading branch information
nekketsuuu authored Oct 18, 2021
1 parent 78fdd6f commit 5ddf9e2
Showing 1 changed file with 16 additions and 16 deletions.
32 changes: 16 additions & 16 deletions cli/silence_add.go
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,17 @@ func (c *silenceAddCmd) add(ctx context.Context, _ *kingpin.ParseContext) error
return fmt.Errorf("no matchers specified")
}

var startsAt time.Time
if c.start != "" {
startsAt, err = time.Parse(time.RFC3339, c.start)
if err != nil {
return err
}

} else {
startsAt = time.Now().UTC()
}

var endsAt time.Time
if c.end != "" {
endsAt, err = time.Parse(time.RFC3339, c.end)
Expand All @@ -122,28 +133,17 @@ func (c *silenceAddCmd) add(ctx context.Context, _ *kingpin.ParseContext) error
if d == 0 {
return fmt.Errorf("silence duration must be greater than 0")
}
endsAt = time.Now().UTC().Add(time.Duration(d))
}

if c.requireComment && c.comment == "" {
return errors.New("comment required by config")
}

var startsAt time.Time
if c.start != "" {
startsAt, err = time.Parse(time.RFC3339, c.start)
if err != nil {
return err
}

} else {
startsAt = time.Now().UTC()
endsAt = startsAt.UTC().Add(time.Duration(d))
}

if startsAt.After(endsAt) {
return errors.New("silence cannot start after it ends")
}

if c.requireComment && c.comment == "" {
return errors.New("comment required by config")
}

start := strfmt.DateTime(startsAt)
end := strfmt.DateTime(endsAt)
ps := &models.PostableSilence{
Expand Down

0 comments on commit 5ddf9e2

Please sign in to comment.