Skip to content

Commit

Permalink
refactor naming
Browse files Browse the repository at this point in the history
  • Loading branch information
asalan316 committed Oct 17, 2024
1 parent 2e9256a commit 731e10d
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,21 +25,21 @@ func (d *DefaultMetricsSubmissionStrategy) validate(appId string, submitterAppId

type BoundedMetricsSubmissionStrategy struct{}

func (c *BoundedMetricsSubmissionStrategy) validate(appId string, submitterAppIdFromCert string, logger lager.Logger, bindingDB db.BindingDB, r *http.Request) error {
if appId != submitterAppIdFromCert {
return c.verifyMetricSubmissionStrategy(r, logger, bindingDB, submitterAppIdFromCert, appId)
func (c *BoundedMetricsSubmissionStrategy) validate(appToScaleID string, submitterAppIdFromCert string, logger lager.Logger, bindingDB db.BindingDB, r *http.Request) error {
if appToScaleID != submitterAppIdFromCert {
return c.verifyMetricSubmissionStrategy(r, logger, bindingDB, submitterAppIdFromCert, appToScaleID)
}
return nil
}

func (c *BoundedMetricsSubmissionStrategy) verifyMetricSubmissionStrategy(r *http.Request, logger lager.Logger, bindingDB db.BindingDB, submitterAppCert string, appID string) error {
isAppBound, err := bindingDB.IsAppBoundToSameAutoscaler(r.Context(), submitterAppCert, appID)
func (c *BoundedMetricsSubmissionStrategy) verifyMetricSubmissionStrategy(r *http.Request, logger lager.Logger, bindingDB db.BindingDB, submitterAppIDFromCert string, appToScaleID string) error {
isAppBound, err := bindingDB.IsAppBoundToSameAutoscaler(r.Context(), submitterAppIDFromCert, appToScaleID)
if err != nil {
logger.Error("error-checking-app-bound-to-same-service", err, lager.Data{"metric-submitter-app-id": submitterAppCert})
logger.Error("error-checking-app-bound-to-same-service", err, lager.Data{"metric-submitter-app-id": submitterAppIDFromCert})
return err
}
if !isAppBound {
logger.Info("app-not-bound-to-same-service", lager.Data{"app-id": submitterAppCert})
logger.Info("app-not-bound-to-same-service", lager.Data{"app-id": submitterAppIDFromCert})
return ErrorAppNotBound
}
return nil
Expand Down
22 changes: 9 additions & 13 deletions src/autoscaler/metricsforwarder/server/auth/xfcc_auth.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ var ErrorNoAppIDFound = errors.New("certificate does not contain an app id")
var ErrorAppIDWrong = errors.New("app is not allowed to send metrics due to invalid app id in certificate")
var ErrorAppNotBound = errors.New("application is not bound to the same service instance")

func (a *Auth) XFCCAuth(r *http.Request, bindingDB db.BindingDB, appID string) error {
func (a *Auth) XFCCAuth(r *http.Request, bindingDB db.BindingDB, appToScaleID string) error {
xfccHeader := r.Header.Get("X-Forwarded-Client-Cert")
if xfccHeader == "" {
return ErrXFCCHeaderNotFound
Expand All @@ -34,32 +34,28 @@ func (a *Auth) XFCCAuth(r *http.Request, bindingDB db.BindingDB, appID string) e
return fmt.Errorf("failed to parse certificate: %w", err)
}

submitterAppCert := readAppIdFromCert(cert)
submitterAppIDFromCert := readAppIdFromCert(cert)

if len(submitterAppCert) == 0 {
if len(submitterAppIDFromCert) == 0 {
return ErrorNoAppIDFound
}

// appID = custom metrics producer
// submitterAppCert = app id in certificate
// Case 1 : custom metrics can only be published by the app itself
// Case 2 : custom metrics can be published by any app bound to the same autoscaler instance
// In short, if the requester is not same as the scaling app
if appID != submitterAppCert {
// Case: Submitting app is not the same as the app to scale
if appToScaleID != submitterAppIDFromCert {
var metricSubmissionStrategy MetricsSubmissionStrategy
customMetricSubmissionStrategy, err := bindingDB.GetCustomMetricStrategyByAppId(r.Context(), appID)
customMetricSubmissionStrategy, err := bindingDB.GetCustomMetricStrategyByAppId(r.Context(), appToScaleID)
if err != nil {
a.logger.Error("failed-to-get-custom-metric-strategy", err, lager.Data{"appID": appID})
a.logger.Error("failed-to-get-custom-metric-strategy", err, lager.Data{"appToScaleID": appToScaleID})
return err
}
a.logger.Info("custom-metrics-submission-strategy", lager.Data{"appID": appID, "submitterAppCert": submitterAppCert, "strategy": customMetricSubmissionStrategy})
a.logger.Info("custom-metrics-submission-strategy", lager.Data{"appToScaleID": appToScaleID, "submitterAppIDFromCert": submitterAppIDFromCert, "strategy": customMetricSubmissionStrategy})

if customMetricSubmissionStrategy == models.CustomMetricsBoundApp {
metricSubmissionStrategy = &BoundedMetricsSubmissionStrategy{}
} else {
metricSubmissionStrategy = &DefaultMetricsSubmissionStrategy{}
}
err = metricSubmissionStrategy.validate(appID, submitterAppCert, a.logger, bindingDB, r)
err = metricSubmissionStrategy.validate(appToScaleID, submitterAppIDFromCert, a.logger, bindingDB, r)
if err != nil {
return err
}
Expand Down

0 comments on commit 731e10d

Please sign in to comment.