Skip to content

Commit ca4fffb

Browse files
markusthoemmesjosephburnett
authored andcommitted
Rename Metric to Decider. (#3603)
* Rename Metric to Decider. * Rename MetricOption to DeciderOption. * Remove stutter in Deciders API.
1 parent c0e78fa commit ca4fffb

File tree

13 files changed

+216
-216
lines changed

13 files changed

+216
-216
lines changed

cmd/autoscaler/main.go

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -177,35 +177,35 @@ func scalerConfig(logger *zap.SugaredLogger) *autoscaler.DynamicConfig {
177177
return dynConfig
178178
}
179179

180-
func uniScalerFactoryFunc(endpointsInformer corev1informers.EndpointsInformer) func(metric *autoscaler.Metric, dynamicConfig *autoscaler.DynamicConfig) (autoscaler.UniScaler, error) {
181-
return func(metric *autoscaler.Metric, dynamicConfig *autoscaler.DynamicConfig) (autoscaler.UniScaler, error) {
180+
func uniScalerFactoryFunc(endpointsInformer corev1informers.EndpointsInformer) func(decider *autoscaler.Decider, dynamicConfig *autoscaler.DynamicConfig) (autoscaler.UniScaler, error) {
181+
return func(decider *autoscaler.Decider, dynamicConfig *autoscaler.DynamicConfig) (autoscaler.UniScaler, error) {
182182
// Create a stats reporter which tags statistics by PA namespace, configuration name, and PA name.
183-
reporter, err := autoscaler.NewStatsReporter(metric.Namespace,
184-
labelValueOrEmpty(metric, serving.ServiceLabelKey), labelValueOrEmpty(metric, serving.ConfigurationLabelKey), metric.Name)
183+
reporter, err := autoscaler.NewStatsReporter(decider.Namespace,
184+
labelValueOrEmpty(decider, serving.ServiceLabelKey), labelValueOrEmpty(decider, serving.ConfigurationLabelKey), decider.Name)
185185
if err != nil {
186186
return nil, err
187187
}
188188

189-
revName := metric.Labels[serving.RevisionLabelKey]
189+
revName := decider.Labels[serving.RevisionLabelKey]
190190
if revName == "" {
191-
return nil, fmt.Errorf("no Revision label found in Metric: %v", metric)
191+
return nil, fmt.Errorf("no Revision label found in Decider: %v", decider)
192192
}
193193

194-
return autoscaler.New(dynamicConfig, metric.Namespace,
194+
return autoscaler.New(dynamicConfig, decider.Namespace,
195195
reconciler.GetServingK8SServiceNameForObj(revName), endpointsInformer,
196-
metric.Spec.TargetConcurrency, reporter)
196+
decider.Spec.TargetConcurrency, reporter)
197197
}
198198
}
199199

200-
func statsScraperFactoryFunc(endpointsLister corev1listers.EndpointsLister) func(metric *autoscaler.Metric) (autoscaler.StatsScraper, error) {
201-
return func(metric *autoscaler.Metric) (autoscaler.StatsScraper, error) {
202-
return autoscaler.NewServiceScraper(metric, endpointsLister)
200+
func statsScraperFactoryFunc(endpointsLister corev1listers.EndpointsLister) func(decider *autoscaler.Decider) (autoscaler.StatsScraper, error) {
201+
return func(decider *autoscaler.Decider) (autoscaler.StatsScraper, error) {
202+
return autoscaler.NewServiceScraper(decider, endpointsLister)
203203
}
204204
}
205205

206-
func labelValueOrEmpty(metric *autoscaler.Metric, labelKey string) string {
207-
if metric.Labels != nil {
208-
if value, ok := metric.Labels[labelKey]; ok {
206+
func labelValueOrEmpty(decider *autoscaler.Decider, labelKey string) string {
207+
if decider.Labels != nil {
208+
if value, ok := decider.Labels[labelKey]; ok {
209209
return value
210210
}
211211
}

cmd/autoscaler/main_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ const (
3131
)
3232

3333
func TestLabelValueOrEmpty(t *testing.T) {
34-
metric := &autoscaler.Metric{}
34+
metric := &autoscaler.Decider{}
3535
metric.Labels = make(map[string]string)
3636
metric.Labels["test1"] = "test1val"
3737
metric.Labels["test2"] = ""
@@ -65,7 +65,7 @@ func TestLabelValueOrEmpty(t *testing.T) {
6565

6666
func TestUniScalerFactoryFunc(t *testing.T) {
6767
uniScalerFactory := getTestUniScalerFactory()
68-
metric := &autoscaler.Metric{
68+
metric := &autoscaler.Decider{
6969
ObjectMeta: metav1.ObjectMeta{
7070
Namespace: testNamespace,
7171
Name: testRevision,
@@ -81,7 +81,7 @@ func TestUniScalerFactoryFunc(t *testing.T) {
8181

8282
func TestUniScalerFactoryFunc_FailWhenRevisionLabelMissing(t *testing.T) {
8383
uniScalerFactory := getTestUniScalerFactory()
84-
metric := &autoscaler.Metric{
84+
metric := &autoscaler.Decider{
8585
ObjectMeta: metav1.ObjectMeta{
8686
Namespace: testNamespace,
8787
Name: testRevision,
@@ -94,7 +94,7 @@ func TestUniScalerFactoryFunc_FailWhenRevisionLabelMissing(t *testing.T) {
9494
}
9595
}
9696

97-
func getTestUniScalerFactory() func(metric *autoscaler.Metric, dynamicConfig *autoscaler.DynamicConfig) (autoscaler.UniScaler, error) {
97+
func getTestUniScalerFactory() func(decider *autoscaler.Decider, dynamicConfig *autoscaler.DynamicConfig) (autoscaler.UniScaler, error) {
9898
kubeClient := fakeK8s.NewSimpleClientset()
9999
kubeInformer := kubeinformers.NewSharedInformerFactory(kubeClient, 0)
100100
return uniScalerFactoryFunc(kubeInformer.Core().V1().Endpoints())

pkg/autoscaler/autoscaler.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,8 @@ func New(
135135
}, nil
136136
}
137137

138-
// Update reconfigures the UniScaler according to the MetricSpec.
139-
func (a *Autoscaler) Update(spec MetricSpec) error {
138+
// Update reconfigures the UniScaler according to the DeciderSpec.
139+
func (a *Autoscaler) Update(spec DeciderSpec) error {
140140
a.targetMutex.Lock()
141141
defer a.targetMutex.Unlock()
142142
a.target = spec.TargetConcurrency

pkg/autoscaler/autoscaler_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -458,7 +458,7 @@ func TestAutoscaler_UpdateTarget(t *testing.T) {
458458
podCount: 10,
459459
})
460460
a.expectScale(t, now, 10, true)
461-
a.Update(MetricSpec{
461+
a.Update(DeciderSpec{
462462
TargetConcurrency: 1.0,
463463
})
464464
a.expectScale(t, now, 100, true)

pkg/autoscaler/multiscaler.go

Lines changed: 45 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -42,26 +42,26 @@ const (
4242
scrapeTickInterval = time.Second / 3
4343
)
4444

45-
// Metric is a resource which observes the request load of a Revision and
45+
// Decider is a resource which observes the request load of a Revision and
4646
// recommends a number of replicas to run.
4747
// +k8s:deepcopy-gen=true
48-
type Metric struct {
48+
type Decider struct {
4949
metav1.ObjectMeta
50-
Spec MetricSpec
51-
Status MetricStatus
50+
Spec DeciderSpec
51+
Status DeciderStatus
5252
}
5353

54-
// MetricSpec is the parameters in which the Revision should scaled.
55-
type MetricSpec struct {
54+
// DeciderSpec is the parameters in which the Revision should scaled.
55+
type DeciderSpec struct {
5656
TargetConcurrency float64
5757
}
5858

59-
// MetricStatus is the current scale recommendation.
60-
type MetricStatus struct {
59+
// DeciderStatus is the current scale recommendation.
60+
type DeciderStatus struct {
6161
DesiredScale int32
6262
}
6363

64-
// UniScaler records statistics for a particular Metric and proposes the scale for the Metric's target based on those statistics.
64+
// UniScaler records statistics for a particular Decider and proposes the scale for the Decider's target based on those statistics.
6565
type UniScaler interface {
6666
// Record records the given statistics.
6767
Record(context.Context, Stat)
@@ -70,15 +70,15 @@ type UniScaler interface {
7070
// The returned boolean is true if and only if a proposal was returned.
7171
Scale(context.Context, time.Time) (int32, bool)
7272

73-
// Update reconfigures the UniScaler according to the MetricSpec.
74-
Update(MetricSpec) error
73+
// Update reconfigures the UniScaler according to the DeciderSpec.
74+
Update(DeciderSpec) error
7575
}
7676

7777
// UniScalerFactory creates a UniScaler for a given PA using the given dynamic configuration.
78-
type UniScalerFactory func(*Metric, *DynamicConfig) (UniScaler, error)
78+
type UniScalerFactory func(*Decider, *DynamicConfig) (UniScaler, error)
7979

8080
// StatsScraperFactory creates a StatsScraper for a given PA using the given dynamic configuration.
81-
type StatsScraperFactory func(*Metric) (StatsScraper, error)
81+
type StatsScraperFactory func(*Decider) (StatsScraper, error)
8282

8383
// scalerRunner wraps a UniScaler and a channel for implementing shutdown behavior.
8484
type scalerRunner struct {
@@ -87,21 +87,21 @@ type scalerRunner struct {
8787
pokeCh chan struct{}
8888

8989
// mux guards access to metric
90-
mux sync.RWMutex
91-
metric Metric
90+
mux sync.RWMutex
91+
decider Decider
9292
}
9393

9494
func (sr *scalerRunner) getLatestScale() int32 {
9595
sr.mux.RLock()
9696
defer sr.mux.RUnlock()
97-
return sr.metric.Status.DesiredScale
97+
return sr.decider.Status.DesiredScale
9898
}
9999

100100
func (sr *scalerRunner) updateLatestScale(new int32) bool {
101101
sr.mux.Lock()
102102
defer sr.mux.Unlock()
103-
if sr.metric.Status.DesiredScale != new {
104-
sr.metric.Status.DesiredScale = new
103+
if sr.decider.Status.DesiredScale != new {
104+
sr.decider.Status.DesiredScale = new
105105
return true
106106
}
107107
return false
@@ -151,23 +151,23 @@ func NewMultiScaler(
151151
}
152152
}
153153

154-
// Get return the current Metric.
155-
func (m *MultiScaler) Get(ctx context.Context, namespace, name string) (*Metric, error) {
154+
// Get return the current Decider.
155+
func (m *MultiScaler) Get(ctx context.Context, namespace, name string) (*Decider, error) {
156156
key := NewMetricKey(namespace, name)
157157
m.scalersMutex.RLock()
158158
defer m.scalersMutex.RUnlock()
159159
scaler, exists := m.scalers[key]
160160
if !exists {
161161
// This GroupResource is a lie, but unfortunately this interface requires one.
162-
return nil, errors.NewNotFound(kpa.Resource("Metrics"), key)
162+
return nil, errors.NewNotFound(kpa.Resource("Deciders"), key)
163163
}
164164
scaler.mux.RLock()
165165
defer scaler.mux.RUnlock()
166-
return (&scaler.metric).DeepCopy(), nil
166+
return (&scaler.decider).DeepCopy(), nil
167167
}
168168

169-
// Create instantiates the desired Metric.
170-
func (m *MultiScaler) Create(ctx context.Context, metric *Metric) (*Metric, error) {
169+
// Create instantiates the desired Decider.
170+
func (m *MultiScaler) Create(ctx context.Context, metric *Decider) (*Decider, error) {
171171
m.scalersMutex.Lock()
172172
defer m.scalersMutex.Unlock()
173173
key := NewMetricKey(metric.Namespace, metric.Name)
@@ -182,26 +182,26 @@ func (m *MultiScaler) Create(ctx context.Context, metric *Metric) (*Metric, erro
182182
}
183183
scaler.mux.RLock()
184184
defer scaler.mux.RUnlock()
185-
return (&scaler.metric).DeepCopy(), nil
185+
return (&scaler.decider).DeepCopy(), nil
186186
}
187187

188-
// Update applied the desired MetricSpec to a currently running Metric.
189-
func (m *MultiScaler) Update(ctx context.Context, metric *Metric) (*Metric, error) {
190-
key := NewMetricKey(metric.Namespace, metric.Name)
188+
// Update applied the desired DeciderSpec to a currently running Decider.
189+
func (m *MultiScaler) Update(ctx context.Context, decider *Decider) (*Decider, error) {
190+
key := NewMetricKey(decider.Namespace, decider.Name)
191191
m.scalersMutex.Lock()
192192
defer m.scalersMutex.Unlock()
193193
if scaler, exists := m.scalers[key]; exists {
194194
scaler.mux.Lock()
195195
defer scaler.mux.Unlock()
196-
scaler.metric = *metric
197-
scaler.scaler.Update(metric.Spec)
198-
return metric, nil
196+
scaler.decider = *decider
197+
scaler.scaler.Update(decider.Spec)
198+
return decider, nil
199199
}
200200
// This GroupResource is a lie, but unfortunately this interface requires one.
201-
return nil, errors.NewNotFound(kpa.Resource("Metrics"), key)
201+
return nil, errors.NewNotFound(kpa.Resource("Deciders"), key)
202202
}
203203

204-
// Delete stops and removes a Metric.
204+
// Delete stops and removes a Decider.
205205
func (m *MultiScaler) Delete(ctx context.Context, namespace, name string) error {
206206
key := NewMetricKey(namespace, name)
207207
m.scalersMutex.Lock()
@@ -213,7 +213,7 @@ func (m *MultiScaler) Delete(ctx context.Context, namespace, name string) error
213213
return nil
214214
}
215215

216-
// Watch registers a singleton function to call when MetricStatus is updated.
216+
// Watch registers a singleton function to call when DeciderStatus is updated.
217217
func (m *MultiScaler) Watch(fn func(string)) {
218218
m.watcherMutex.Lock()
219219
defer m.watcherMutex.Unlock()
@@ -247,21 +247,21 @@ func (m *MultiScaler) setScale(metricKey string, scale int32) bool {
247247
return true
248248
}
249249

250-
func (m *MultiScaler) createScaler(ctx context.Context, metric *Metric) (*scalerRunner, error) {
250+
func (m *MultiScaler) createScaler(ctx context.Context, decider *Decider) (*scalerRunner, error) {
251251

252-
scaler, err := m.uniScalerFactory(metric, m.dynConfig)
252+
scaler, err := m.uniScalerFactory(decider, m.dynConfig)
253253
if err != nil {
254254
return nil, err
255255
}
256256

257257
stopCh := make(chan struct{})
258258
runner := &scalerRunner{
259-
scaler: scaler,
260-
stopCh: stopCh,
261-
metric: *metric,
262-
pokeCh: make(chan struct{}),
259+
scaler: scaler,
260+
stopCh: stopCh,
261+
decider: *decider,
262+
pokeCh: make(chan struct{}),
263263
}
264-
runner.metric.Status.DesiredScale = -1
264+
runner.decider.Status.DesiredScale = -1
265265

266266
ticker := time.NewTicker(m.dynConfig.Current().TickInterval)
267267

@@ -284,9 +284,9 @@ func (m *MultiScaler) createScaler(ctx context.Context, metric *Metric) (*scaler
284284
}
285285
}()
286286

287-
scraper, err := m.statsScraperFactory(metric)
287+
scraper, err := m.statsScraperFactory(decider)
288288
if err != nil {
289-
return nil, fmt.Errorf("failed to create a stats scraper for metric %q: %v", metric.Name, err)
289+
return nil, fmt.Errorf("failed to create a stats scraper for metric %q: %v", decider.Name, err)
290290
}
291291
scraperTicker := time.NewTicker(scrapeTickInterval)
292292
go func() {
@@ -310,7 +310,7 @@ func (m *MultiScaler) createScaler(ctx context.Context, metric *Metric) (*scaler
310310
}
311311
}()
312312

313-
metricKey := NewMetricKey(metric.Namespace, metric.Name)
313+
metricKey := NewMetricKey(decider.Namespace, decider.Name)
314314
go func() {
315315
for {
316316
select {
@@ -350,7 +350,7 @@ func (m *MultiScaler) tickScaler(ctx context.Context, scaler UniScaler, scaleCha
350350
}
351351
}
352352

353-
// RecordStat records some statistics for the given Metric.
353+
// RecordStat records some statistics for the given Decider.
354354
func (m *MultiScaler) RecordStat(key string, stat Stat) {
355355
m.scalersMutex.RLock()
356356
defer m.scalersMutex.RUnlock()

0 commit comments

Comments
 (0)