Skip to content

adding support for OCI formatted images#87

Merged
SethHollandsworth merged 1 commit intomainfrom
no_docker
Mar 13, 2025
Merged

adding support for OCI formatted images#87
SethHollandsworth merged 1 commit intomainfrom
no_docker

Conversation

@SethHollandsworth
Copy link
Copy Markdown
Owner

confcom previously relied on the manifest.json file that is created when saving tar files from docker. This file is not present when downloading/saving via podman, skopeo, oras, and potentially other open-source tools. This update supports OCI images while preserving the capability of using docker-formatted tar files.

Note that one limitation of OCI tar files is their inability to contain multiple images. This is now referenced in the example documentation.

@SethHollandsworth SethHollandsworth added the enhancement New feature or request label Mar 12, 2025
@SethHollandsworth SethHollandsworth self-assigned this Mar 12, 2025
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR adds support for OCI-formatted images by extending tar file parsing functionality and updating related tests and documentation. Key changes include:

  • Adding unit tests for OCI tar files in test_confcom_tar.py.
  • Extending tar extraction logic for OCI images in os_util.py and updating template_util.py to handle OCI layout.
  • Updating documentation and bumping the package version.

Reviewed Changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated no comments.

Show a summary per file
File Description
src/confcom/azext_confcom/tests/latest/test_confcom_tar.py Added new tests for OCI tar file processing and minor tweaks
src/confcom/azext_confcom/os_util.py Updated tar extraction logic and added helper functions for OCI images
src/confcom/azext_confcom/template_util.py Adjusted tar file handling to support both docker and OCI formats
src/confcom/azext_confcom/README.md Updated documentation regarding OCI tar file limitations
src/confcom/setup.py Bumped version number
src/confcom/azext_confcom/tests/latest/test_confcom_scenario.py Updated expected image layer hashes in tests
Comments suppressed due to low confidence (3)

src/confcom/azext_confcom/tests/latest/test_confcom_tar.py:186

  • [nitpick] Consider defining the long image name as a constant at the top of the file to improve clarity and reduce duplication.
tar_mapping_file = {"mcr.microsoft.com/aks/e2e/library-busybox:master.220314.1-linux-amd64": os.path.join(self.path, "oci2.tar")}

src/confcom/azext_confcom/os_util.py:280

  • It might be safer to check if the file exists before changing permissions to avoid potential exceptions when the file is missing.
os.chmod(filename, stat.S_IWRITE)

src/confcom/azext_confcom/template_util.py:117

  • [nitpick] Consider logging the caught exception details to aid in debugging unexpected issues during tar extraction for OCI layout.
except (KeyError, AttributeError):

@SethHollandsworth SethHollandsworth force-pushed the no_docker branch 2 times, most recently from b48db76 to 982a393 Compare March 13, 2025 15:38
Copy link
Copy Markdown
Collaborator

@ksayid ksayid left a comment

Choose a reason for hiding this comment

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

LGTM!

@SethHollandsworth SethHollandsworth merged commit 77daa3c into main Mar 13, 2025
@SethHollandsworth SethHollandsworth deleted the no_docker branch March 13, 2025 17:37
SethHollandsworth pushed a commit that referenced this pull request Aug 27, 2025
* build: add cicd pipeline (#7)

* build: move update version logic to workflow (#8)

* build: Run CI on multiple python version (#38)

* build: Run CI in Python 3.8-3.11

* build: remove pull request event for CI to avoid duplicate runs

* feat: enable openapi spec from url in api register (#74)

* feat: enable openapi spec from url in api register

* refactor: set spec definition as link format when link provided

* fix: fix style

* test: add error handling case for testing invalid spec url

* fix: fix test case

* fix: use 404 response url

* test: update case

* test: update test case

* refactor: update error logic

* test: update test case to setup live test pipeline (#76)

* test: update test case to setup live test pipeline (#75)

* test: update test case

* update

* .

* .

* .

* .

* .

* .

* .

* .

* .

* .

* .

* test: update test case

* refactor: enable both identity

* fix: bad if else

* fix: fix bad parameter

* refactor: add example (#77)

* refactor: add example

* fix: update params

* fix: bad api id

* refactor: add @filename.json examples (#78)

* refactor: add example

* fix: update params

* fix: bad api id

* refactor: add @filename.json examples

* refactor: update

* refactor: add error handling (#79)

* refactor: add error handling

* refactor: catch internal error

* fix: revert the change

* feat: support APIM/APIC sync (#80)

* feat: add APIM/APIC sync commands

* feat: rename apim to azure-api-management

* style: fix code style

* fix: sync property names with new API spec

* Revert "fix: sync property names with new API spec"

This reverts commit 04da67e.

---------

Co-authored-by: frankqianms <frankqian@microsoft.com>

* feat: resolve feedback and fix examples (#82)

* feat: resolve feedback and fix examples

* style: fix code style

* feat: amazon api gateway sync (#81)

* feat: add APIM/APIC sync commands

* feat: rename apim to azure-api-management

* style: fix code style

* fix: sync property names with new API spec

* feat: add aws api gateway sync command

* Revert "fix: sync property names with new API spec"

This reverts commit 04da67e.

* refactor: add amazonApiGatewaySource

* refactor: refactoring apim sync and amazon sync

* refactor: refactor cmd structure to make apim and aws sync seperated

* fix: remove log print

* chore: generate new cmds

* refactor: update version and remove import

* feat: add `apic integration create amazon-api-gateway`

* fix: style

* fix: change query param api-version

* revert changes in _delete.py

* fix: some neede fixs

* fix: add the help sentence

* refactor: make params clear

* refactor: handle msi-resource-id

* refacor: revert flatten of apim resource

* fix: use 06-01-preiew currently

* fix: style

* refactor: arg groups

* fix: bad short param name

* chore: re-generate

* fix: old resource_id name

* chore: arg group

* chore: naming

* fix: fix according to comments

* chore: update

* fix: style

---------

Co-authored-by: Chaoyi Yuan <chyuan@microsoft.com>

* feat: add import amazon-api-gateway cmd (#83)

* feat: add import amazon-api-gateway cmd

* feat: change arg group and update parameter name

---------

Co-authored-by: Chaoyi Yuan <chyuan@microsoft.com>

* fix: use older version API (#84)

* feat: rename command and param names (#85)

* feat: rename command and param names

* doc: update comments

* doc: update sample

* test: add test case for sync cmd `apic integration create apim` and `apic integration create aws` (#86)

* test: add test case for apim sync

* refactor: refactor for apim preparer

* refactor: refactoring case and utils, optimize checkers

* chore: remove print and add explaination

* refactor: rename file

* fix: try to fix error determing the version

* revert: Remove specific azure-cli and azure-core installations

* test: add aws sync testcase (#87)

* test: add test case for aws sync command

* fix: remove key value

* fix: remove pip install

* chore: renaming constants

* refactor: update the utils and test case

* refactor: updated

* fix: workaround for urllib3 package (#88)

* Revert "fix: workaround for urllib3 package (#88)" (#90)

This reverts commit 1d508f4.

* build: 1.2.0 beta 1 release

* build: remove CI and CD files

* doc: improve history

* fix: set extention version to be preview

* refactor: integration examples and bad example for `apic update` (#91)

* refactor: integration examples

* fix: apic update example

* feat: add api-analysis rules (#89)

* feat: analysi rule init

* feat: add create cmd

* feat: add create and delete api-analysis commands

* feat: add import-ruleset and export-ruleset commands

* fix: update aaz

* fix: registered

* fix: examples

* fix: fix style

* refactor: renaming

* refactor: regenerate aaz

* fix: fix codes

* fix: fix logics

* fix: style

* fix: rename parameter service name

* fix: change api-analysis status to preview

* fix: integration list

* refactor: modify examples

* feat: analysi rule init

* feat: add create cmd

* feat: add create and delete api-analysis commands

* feat: add import-ruleset and export-ruleset commands

* fix: update aaz

* fix: registered

* fix: examples

* fix: fix style

* refactor: renaming

* refactor: regenerate aaz

* fix: fix codes

* fix: fix logics

* fix: style

* fix: change api-analysis status to preview

* fix: change short name of service name

* fix: apic update example

* fix: examples and default value

* chore: example

* fix: bad parameter short names

* fix: downgrade api version

* fix: set default workspace for list,show,update api-analysis

* refactor: integration examples

* fix: style

* chore: update log

* test: add import-aws case and modify region

* feat: add import apim and deperacate import-from-apim, add analysis create and list test cases

* fix: correctly deprecate import-from-apim

* test: add apianalysis test cases

* build: bump up to 1.2.0b2

* test: add api-analysis update testcase

* build: change log of 1.2.0b2

* chore: unregister the filter

* fix: better methods name and remove extra lint disable

* refactor: set default analyzer-type in aaz

* refactor: remove preview tag for some integration commands and hide the analyzer_type param

* chore: update spec for filter param

* fix: set default analyzer_type correctly

* fix: import apim fix (#92)

* add CD

* rename

* upgrade upload-artifact

* fix: fix missing apis param in import apim

* fix: regenerate according to new spec

* cd: remove cd file

* test: update test cases

* fix: fix spec version in register command

* test: update test cases

* test: update recordings

* test: live test

* fix: fix test cases of api analysis

* fix: update recordings

* fix: remove comment

* fix: merge and align latest version

* Update command_patches.py

fix linter

* fix: remove import cmds & preview tag of integrate cmds

* test: remove uneeded test cases

* fix: fix linter failures for auto generated params

* test: update tests

* Update HISTORY.rst

* fix: remove extra yml

* Update HISTORY.rst

* test: update test cases and recordings

* fix: fix cases

---------

Co-authored-by: Chaoyi Yuan <blackchoey@gmail.com>
Co-authored-by: Chaoyi Yuan <chyuan@microsoft.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants