-
Notifications
You must be signed in to change notification settings - Fork 145
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fixed: source uri reload for download/verify components #1252
Changes from all commits
ce8729e
f9fb805
2f38952
b292b3c
4e07d50
600a062
d5d5038
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -141,13 +141,52 @@ func (o *Operator) Reload(rawConfig *config.Config) error { | |||||||||||||||||||||||||||||||||
return errors.New(err, "failed to unpack artifact config") | ||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
sourceURI, err := reloadSourceURI(o.logger, rawConfig) | ||||||||||||||||||||||||||||||||||
if err != nil { | ||||||||||||||||||||||||||||||||||
return errors.New(err, "failed to parse source URI") | ||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||
tmp.C.SourceURI = sourceURI | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
if err := o.reloadComponent(o.downloader, "downloader", tmp.C); err != nil { | ||||||||||||||||||||||||||||||||||
return err | ||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
return o.reloadComponent(o.verifier, "verifier", tmp.C) | ||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
func reloadSourceURI(logger *logger.Logger, rawConfig *config.Config) (string, error) { | ||||||||||||||||||||||||||||||||||
type reloadConfig struct { | ||||||||||||||||||||||||||||||||||
// SourceURI: source of the artifacts, e.g https://artifacts.elastic.co/downloads/ | ||||||||||||||||||||||||||||||||||
SourceURI string `json:"agent.download.sourceURI" config:"agent.download.sourceURI"` | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
// FleetSourceURI: source of the artifacts, e.g https://artifacts.elastic.co/downloads/ coming from fleet which uses | ||||||||||||||||||||||||||||||||||
// different naming. | ||||||||||||||||||||||||||||||||||
FleetSourceURI string `json:"agent.download.source_uri" config:"agent.download.source_uri"` | ||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||
cfg := &reloadConfig{} | ||||||||||||||||||||||||||||||||||
if err := rawConfig.Unpack(&cfg); err != nil { | ||||||||||||||||||||||||||||||||||
return "", errors.New(err, "failed to unpack config during reload") | ||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
var newSourceURI string | ||||||||||||||||||||||||||||||||||
if fleetURI := strings.TrimSpace(cfg.FleetSourceURI); fleetURI != "" { | ||||||||||||||||||||||||||||||||||
// fleet configuration takes precedence | ||||||||||||||||||||||||||||||||||
newSourceURI = fleetURI | ||||||||||||||||||||||||||||||||||
} else if sourceURI := strings.TrimSpace(cfg.SourceURI); sourceURI != "" { | ||||||||||||||||||||||||||||||||||
newSourceURI = sourceURI | ||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
if newSourceURI != "" { | ||||||||||||||||||||||||||||||||||
logger.Infof("Source URI in operator changed to %q", newSourceURI) | ||||||||||||||||||||||||||||||||||
return newSourceURI, nil | ||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
// source uri unset, reset to default | ||||||||||||||||||||||||||||||||||
logger.Infof("Source URI in reset %q", artifact.DefaultSourceURI) | ||||||||||||||||||||||||||||||||||
return artifact.DefaultSourceURI, nil | ||||||||||||||||||||||||||||||||||
Comment on lines
+179
to
+186
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [Suggestion]
Suggested change
|
||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [NIT]
Suggested change
|
||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
func (o *Operator) reloadComponent(component interface{}, name string, cfg *artifact.Config) error { | ||||||||||||||||||||||||||||||||||
r, ok := component.(artifact.ConfigReloader) | ||||||||||||||||||||||||||||||||||
if !ok { | ||||||||||||||||||||||||||||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we need to update this in config.go as well?
elastic-agent/internal/pkg/artifact/config.go
Lines 40 to 41 in a0a3ed1
Handling this here instead of having this function live with the rest of the config parsing logic might mean this bug can come back in a different part of the code in the future.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is also an option but i was a bit reluctant as it would enable using this in our config file which does not really make sense.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We can document that Fleet uses a different key, also we can file a follow up issue with the Fleet UI team to use the key we actually intended to use.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I see pretty much the same code added in #686 which highly suggests we should try to handle this in a single place so we don't end up with this workaround duplicated or forgotten elsewhere in the future.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree with not duplicating, but I'd rather fix fleet first, then using your config here and on the reloader introduced in #686.