Skip to content
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

Add support for overriding plugin download URLs #8798

Merged
merged 1 commit into from
Jan 21, 2022
Merged

Conversation

justinvp
Copy link
Member

@justinvp justinvp commented Jan 21, 2022

Description

This commit adds a variable that can be set with a linker flag to override the plugin download URL for matching plugin names.

For example, compiling the Pulumi CLI with the following linker flag:

  • -X [module path]/workspace.pluginDownloadURLOverrides=^foo.*=https://foo,^bar.*=https://bar

Would make it so that plugin names that start with "foo" are downloaded from https://foo and names that start with "bar" are downloaded from https://bar.

Checklist

  • I have added tests that prove my fix is effective or that my feature works
  • Yes, there are changes in this PR that warrants bumping the Pulumi Service API version

@justinvp justinvp force-pushed the justin/url-override branch from 7faa594 to c139003 Compare January 21, 2022 00:12
@codecov
Copy link

codecov bot commented Jan 21, 2022

Codecov Report

Merging #8798 (c139003) into master (a14cd1c) will increase coverage by 0.01%.
The diff coverage is 84.37%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master    #8798      +/-   ##
==========================================
+ Coverage   59.38%   59.39%   +0.01%     
==========================================
  Files         637      637              
  Lines       97911    97943      +32     
  Branches     1386     1386              
==========================================
+ Hits        58141    58177      +36     
+ Misses      36491    36482       -9     
- Partials     3279     3284       +5     
Impacted Files Coverage Δ
sdk/go/common/workspace/plugins.go 57.98% <84.37%> (+1.37%) ⬆️
sdk/go/common/resource/properties.go 82.87% <0.00%> (-0.83%) ⬇️
pkg/codegen/hcl2/model/type_object.go 89.18% <0.00%> (-0.55%) ⬇️
sdk/go/common/util/ciutil/github_actions.go 73.52% <0.00%> (+38.23%) ⬆️

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update a14cd1c...c139003. Read the comment docs.

@justinvp justinvp requested a review from a team January 21, 2022 03:31
Copy link
Member

@Frassle Frassle left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For example, compiling the Pulumi CLI with the following linker flag:

I was thinking why would you want to do this with a linker flag but then we don't really have a good story for global config so I guess this is as sane an option as anything else for now.

This commit adds a variable that can be set with a linker flag to override the plugin download URL for matching plugin names.

For example, compiling the Pulumi CLI with the following linker flag:

- `-X [module path]/workspace.pluginDownloadURLOverrides=^foo.*=https://foo,^bar.*=https://bar`

Would make it so that plugin names that start with "foo" are downloaded from https://foo and names that start with "bar" are downloaded from https://bar.
@justinvp justinvp force-pushed the justin/url-override branch from c139003 to ab6745a Compare January 21, 2022 17:02
@justinvp
Copy link
Member Author

I was thinking why would you want to do this with a linker flag but then we don't really have a good story for global config so I guess this is as sane an option as anything else for now.

The exact same thought process went through my head.

@justinvp justinvp merged commit e333fab into master Jan 21, 2022
@pulumi-bot pulumi-bot deleted the justin/url-override branch January 21, 2022 17:04
github-merge-queue bot pushed a commit that referenced this pull request May 13, 2024
… the package (#16186)

<!--- 
Thanks so much for your contribution! If this is your first time
contributing, please ensure that you have read the
[CONTRIBUTING](https://github.com/pulumi/pulumi/blob/master/CONTRIBUTING.md)
documentation.
-->

# Description

Overriding plugin download URLs with compilation flags was originally
added in #8798. Its intent was allowing our customers to override
download locations for all plugins, so that only trusted pre-approved
plugins could be downloaded.

Since then, we've added `PluginDownloadURL` for a package, which is the
default URL for that package's binary if it's shipped outside our Pulumi
org. Currently, `PluginDownloadURL` takes precedence over
`pluginDownloadURLOverrides`, which means it's impossible to override
third-party package binary locations.

This PR changes plugin source resolution to flip the priority of those
two. If an override matches regex, its URL will take priority over the
default `PluginDownloadURL` specified in the package.

I have added tests to verify `pluginDownloadURLOverrides` with and
without `PluginDownloadURL`. The second one fails before my change.

Resolves #16058

## Checklist

- [x] I have run `make tidy` to update any new dependencies
- [x] I have run `make lint` to verify my code passes the lint check
  - [ ] I have formatted my code using `gofumpt`

<!--- Please provide details if the checkbox below is to be left
unchecked. -->
- [x] I have added tests that prove my fix is effective or that my
feature works
<!--- 
User-facing changes require a CHANGELOG entry.
-->
- [x] I have run `make changelog` and committed the
`changelog/pending/<file>` documenting my change
<!--
If the change(s) in this PR is a modification of an existing call to the
Pulumi Cloud,
then the service should honor older versions of the CLI where this
change would not exist.
You must then bump the API version in
/pkg/backend/httpstate/client/api.go, as well as add
it to the service.
-->
- [ ] Yes, there are changes in this PR that warrants bumping the Pulumi
Cloud API version
<!-- @pulumi employees: If yes, you must submit corresponding changes in
the service repo. -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants