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

Enhance client to push blobs, mount blobs, and push raw manifests #63

Closed
wants to merge 1,186 commits into from

Conversation

aochagavia
Copy link
Contributor

No description provided.

kate-goldenring and others added 30 commits June 21, 2021 15:02
Updated default aks version to 1.20.7
Signed-off-by: Radu M <root@radu.sh>

Co-authored-by: Taylor Thomas <thomastaylor312@users.noreply.github.com>
Co-authored-by: Brian Hardock <brhardoc@microsoft.com>
Signed-off-by: Radu M <root@radu.sh>

Co-authored-by: Taylor Thomas <thomastaylor312@users.noreply.github.com>
Co-authored-by: Brian Hardock <brhardoc@microsoft.com>
There were some places where we needed to unwrap the join error _and_
the Result. Also removed an import that was no longer needed
Signed-off-by: Radu M <root@radu.sh>
Explicitly specify license in Cargo.toml
We needed a way to know the concrete amount of memory or the number
of CPUs eventually and we definitely needed it for the math for the
downward API volume type. So this adds the parsing and conversion for
it.
flavio and others added 15 commits December 12, 2022 19:36
…est-0.16.0

Update rstest requirement from 0.15.0 to 0.16.0
Add async_read support for pull_blob API
Expose a feature of the reqwest crate that allows to use the system
certificates.

Signed-off-by: Flavio Castelli <fcastelli@suse.com>
…oots-features

fix: rustls allow usage or system root certificates
What's Changed
==============

* Bump actions/checkout from 3.0.2 to 3.1.0 by @dependabot in oras-project#47
* feat: enable Clone, Eq, PartialEq and Debug macro for RegistryAuth by @Xynnn007 in oras-project#48
* fix: address broken test by @flavio in oras-project#52
* Update rstest requirement from 0.15.0 to 0.16.0 by @dependabot in oras-project#55
* Add async_read support for pull_blob API by @arronwy in oras-project#54
* fix: rustls allow usage or system root certificates by @flavio in oras-project#56

== New Contributors
* @Xynnn007 made their first contribution in oras-project#48

Signed-off-by: Flavio Castelli <fcastelli@suse.com>
- Added OCI Image Configuration structure named `ConfigFile`
- Added an API to create a `Config` struct from
`ConfigFile`

Signed-off-by: Xynnn007 <xynnn@linux.alibaba.com>
feat: Add OCI Image Configuration structures
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.1.0 to 3.2.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v3.1.0...v3.2.0)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
…tions/actions/checkout-3.2.0

Bump actions/checkout from 3.1.0 to 3.2.0
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.2.0 to 3.3.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v3.2.0...v3.3.0)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
…tions/actions/checkout-3.3.0

Bump actions/checkout from 3.2.0 to 3.3.0
Signed-off-by: Ulf Lilleengen <lulf@redhat.com>
Bumps [engineerd/configurator](https://github.com/engineerd/configurator) from 0.0.8 to 0.0.9.
- [Release notes](https://github.com/engineerd/configurator/releases)
- [Commits](engineerd/configurator@v0.0.8...v0.0.9)

---
updated-dependencies:
- dependency-name: engineerd/configurator
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
…tions/engineerd/configurator-0.0.9

Bump engineerd/configurator from 0.0.8 to 0.0.9
Add support for compiling to wasm32 architecture
@aochagavia aochagavia changed the title Enhance client to push blobs, mount blobs, and push manifests Enhance client to push blobs, mount blobs, and push raw manifests Feb 7, 2023
@aochagavia aochagavia force-pushed the client-enhancements branch 2 times, most recently from 485bb83 to 61ca662 Compare February 7, 2023 13:36
Signed-off-by: Adolfo Ochagavía <adolfo@ochagavia.nl>
Copy link
Contributor

@thomastaylor312 thomastaylor312 left a comment

Choose a reason for hiding this comment

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

This is looking really great! Just one open question around the design of the API.

&self,
image: &Reference,
body: Vec<u8>,
content_type: HeaderValue,
Copy link
Contributor

Choose a reason for hiding this comment

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

This might be a cleaner API if this were to be H where H: TryInto<HeaderValue, Error = OciDistributionError> so people can pass anything that can be turned into a header value. Any thoughts on how you think this will be used?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I am using this function in an application that creates an OCI image in memory and pushes the result to the registry (see this blog post for details). The specific code is:

registry_client
    .push_manifest_raw(
        new_image_reference,
        image_manifest_json,
        OCI_IMAGE_MEDIA_TYPE.parse().unwrap(),
    )
    .await?;

I experimented changing the line you mentioned to content_type: impl TryInto<HeaderValue, Error = OciDistributionError> and ran into problems, but impl TryInto<HeaderValue, Error = InvalidHeaderValue> did the trick ;)

@flavio flavio mentioned this pull request Mar 2, 2023
Copy link
Contributor

@flavio flavio left a comment

Choose a reason for hiding this comment

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

Overall LGTM, I left a minor comment

digest: &str,
) -> Result<()> {
let base_url = self.to_v2_blob_upload_url(image);
let url = format!("{}?mount={}&from={}", base_url, digest, source.repository());
Copy link
Contributor

Choose a reason for hiding this comment

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

I might be a bit paranoid, but I would prefer to have the url built using the Url crate.

Using the query_pairs_mut method would allow us to do proper encoding of the query parameters

@thomastaylor312
Copy link
Contributor

Just so others know what happened, we removed some large binaries from our git history and overwrote history, so this got automatically closed.

@aochagavia feel free to reopen a new PR against main when you're ready!

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.