Skip to content

Commit 1f43751

Browse files
committed
fix breaking changes
Signed-off-by: alanprot <alanprot@gmail.com>
1 parent 4250d0b commit 1f43751

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

pkg/alertmanager/alertmanager.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"crypto/md5"
66
"encoding/binary"
77
"fmt"
8+
"github.com/prometheus/alertmanager/featurecontrol"
89
"net/http"
910
"net/url"
1011
"path"
@@ -86,6 +87,8 @@ type Config struct {
8687
PersisterConfig PersisterConfig
8788
APIConcurrency int
8889
GCInterval time.Duration
90+
91+
FeatureFlags string
8992
}
9093

9194
// An Alertmanager manages the alerts for one user.
@@ -243,7 +246,13 @@ func New(cfg *Config, reg *prometheus.Registry) (*Alertmanager, error) {
243246
}
244247
}
245248

246-
am.pipelineBuilder = notify.NewPipelineBuilder(am.registry)
249+
featureConfig, err := featurecontrol.NewFlags(am.logger, cfg.FeatureFlags)
250+
if err != nil {
251+
level.Error(am.logger).Log("msg", "error parsing the feature flag list", "err", err)
252+
return nil, errors.Wrap(err, "error parsing the feature flag list")
253+
}
254+
255+
am.pipelineBuilder = notify.NewPipelineBuilder(am.registry, featureConfig)
247256

248257
am.wg.Add(1)
249258
go func() {
@@ -390,7 +399,7 @@ func (am *Alertmanager) ApplyConfig(userID string, conf *config.Config, rawCfg s
390399
waitFunc,
391400
am.inhibitor,
392401
silence.NewSilencer(am.silences, am.marker, am.logger),
393-
timeIntervals,
402+
timeinterval.NewIntervener(timeIntervals),
394403
am.nflog,
395404
am.state,
396405
)
@@ -495,7 +504,7 @@ func buildReceiverIntegrations(nc config.Receiver, tmpl *template.Template, fire
495504
return
496505
}
497506
n = wrapper(name, n)
498-
integrations = append(integrations, notify.NewIntegration(n, rs, name, i))
507+
integrations = append(integrations, notify.NewIntegration(n, rs, name, i, nc.Name))
499508
}
500509
)
501510

pkg/alertmanager/multitenant.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"flag"
66
"fmt"
7+
"github.com/prometheus/alertmanager/featurecontrol"
78
"net/http"
89
"net/url"
910
"os"
@@ -68,6 +69,7 @@ type MultitenantAlertmanagerConfig struct {
6869
ExternalURL flagext.URLValue `yaml:"external_url"`
6970
PollInterval time.Duration `yaml:"poll_interval"`
7071
MaxRecvMsgSize int64 `yaml:"max_recv_msg_size"`
72+
FeatureFlags string `yaml:"feature_flags"`
7173

7274
// Enable sharding for the Alertmanager
7375
ShardingEnabled bool `yaml:"sharding_enabled"`
@@ -124,6 +126,7 @@ func (cfg *MultitenantAlertmanagerConfig) RegisterFlags(f *flag.FlagSet) {
124126
f.BoolVar(&cfg.ShardingEnabled, "alertmanager.sharding-enabled", false, "Shard tenants across multiple alertmanager instances.")
125127
f.Var(&cfg.EnabledTenants, "alertmanager.enabled-tenants", "Comma separated list of tenants whose alerts this alertmanager can process. If specified, only these tenants will be handled by alertmanager, otherwise this alertmanager can process alerts from all tenants.")
126128
f.Var(&cfg.DisabledTenants, "alertmanager.disabled-tenants", "Comma separated list of tenants whose alerts this alertmanager cannot process. If specified, a alertmanager that would normally pick the specified tenant(s) for processing will ignore them instead.")
129+
f.StringVar(&cfg.FeatureFlags, "alertmanager.enable-feature", "", fmt.Sprintf("Prometheus AlertManager experimental features to enable. The flag can be repeated to enable multiple features. Valid options: %s", strings.Join(featurecontrol.AllowedFlags, ", ")))
127130

128131
cfg.AlertmanagerClient.RegisterFlagsWithPrefix("alertmanager.alertmanager-client", f)
129132
cfg.Persister.RegisterFlagsWithPrefix("alertmanager", f)
@@ -977,6 +980,7 @@ func (am *MultitenantAlertmanager) newAlertmanager(userID string, amConfig *amco
977980
Limits: am.limits,
978981
APIConcurrency: am.cfg.APIConcurrency,
979982
GCInterval: am.cfg.GCInterval,
983+
FeatureFlags: am.cfg.FeatureFlags,
980984
}, reg)
981985
if err != nil {
982986
return nil, fmt.Errorf("unable to start Alertmanager for user %v: %v", userID, err)

0 commit comments

Comments
 (0)