Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 14 additions & 5 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,15 @@ All notable changes to this project will be documented in this file.

The format is based on `Keep a Changelog <http://keepachangelog.com/>`__.

3.89.1 - 2026-07-07
-------------------
Security
~~~~~~~~
- Updated urllib3 dependency to `2.7.0` for python versions `>= 3.10` per: https://www.cve.org/CVERecord?id=CVE-2026-44432 and https://www.cve.org/CVERecord?id=CVE-2026-44431
- Updated pyasn1 dependency to `0.5.0` for python versions `< 3.8` and `0.6.3` for `>= 3.8` per: https://www.cve.org/CVERecord?id=CVE-2026-30922
- Updated pytest dependency to `7.0.1` for python versions `<= 3.10` and `9.0.3` for `>= 3.11` per: https://www.cve.org/CVERecord?id=CVE-2025-71176


3.89.0 - 2026-06-30
-------------------
Added
Expand Down Expand Up @@ -307,14 +316,14 @@ Added
* ``oci network vnic assign-ipv6 --hostname``

* Database service

* Support for Oracle Database Managed Software Updates on Oracle Exadata Database Service on Exascale Infrastructure (ExaDB-XS)

* Support for creating database using managed software updates

* ``oci db database create --msu-details``
* ``oci db database create-from-backup --msu-details``

* Support for updating existing database to register managed software updates

* ``oci db database update --msu-details``
Expand All @@ -325,7 +334,7 @@ Added

* Managed Kafka service

* Support for public connectivity addons in Oracle Streaming with Apache Kafka(OSAK) Service
* Support for public connectivity addons in Oracle Streaming with Apache Kafka(OSAK) Service

* ``oci kafka addon-options list-addon-options``
* ``oci kafka cluster get-addon``
Expand Down Expand Up @@ -362,11 +371,11 @@ Changed

* ``--cidrblock`` is now an optional parameter for creating subnet

   * ``oci network subnet create --cidrblock``
   * ``oci network subnet create --cidrblock``

* [BREAKING] Support for workrequestid additions in AttachVolume, DetachVolume and TerminateInstance

* Allowed values for the parameter ``--wait-for-state`` are ACCEPTED, FAILED, IN_PROGRESS, SUCCEEDED in the following commands as it waits until the work request reaches a certain state
* Allowed values for the parameter ``--wait-for-state`` are ACCEPTED, FAILED, IN_PROGRESS, SUCCEEDED in the following commands as it waits until the work request reaches a certain state

* ``oci compute volume-attachment detach --wait-for-state``
* ``oci compute instance terminate --wait-for-state``
Expand Down
30 changes: 18 additions & 12 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,26 +7,30 @@ arrow>=1.0.0,<2.0.0
certifi>=2025.1.31,<2026.0.0
cffi>=1.9.1,<2.0.0
click<=8.1.2
coverage==4.5.2
coverage==6.2; python_version < '3.9'
coverage==7.10.7; python_version >= '3.9'
cryptography>=3.2.1,<47.0.0
httpsig-cffi==15.0.0
Jinja2<3.0.0; python_version == '3.6'
Jinja2>=3.1.5,<4.0.0; python_version >= '3.7'
jmespath>=0.10.0,<=1.0.1
ndg-httpsclient==0.4.2
mock==2.0.0
oci==2.181.0
oci==2.181.1
packaging>=22.0,<25.0; python_version > '3.8'
packaging==20.2; python_version <= '3.8'
pluggy==0.13.0
pluggy==0.13.0; python_version < '3.9'
pluggy==1.6.0; python_version >= '3.9'
py==1.11.0
pyasn1==0.2.3
pyasn1==0.5.0; python_version < '3.8'
pyasn1==0.6.3; python_version >= '3.8'
pyOpenSSL>=17.5.0,<27.0.0
pycparser==2.20
pyparsing==2.2.0
pytest==4.6.10; python_version <= '3.9'
pytest==7.1.2; python_version >= '3.10'
pytest-cov==2.5.1
pytest==7.0.1; python_version <= '3.10'
pytest==9.0.3; python_version >= '3.11'
pytest-cov==4.0.0; python_version < '3.9'
pytest-cov==7.1.0; python_version >= '3.9'
python-dateutil>=2.5.3,<3.0.0
pytz>=2016.10,<=2026.2
requests==2.27.0; python_version == '3.6'
Expand All @@ -37,13 +41,15 @@ sphinx==3.3.0; python_version < '3.13'
sphinx==6.2.1; python_version == '3.13'
sphinx-rtd-theme==0.4.3
terminaltables==3.1.10
tox==3.23.0
tox==3.28.0
vcrpy==1.13.0; python_version < '3.10'
vcrpy==7.0.0; python_version >= '3.10'
virtualenv==20.13.0; python_version <= '3.7'
virtualenv>=20.26.6,<21.0.0; python_version > '3.7'
pytest-xdist==1.22.2
pytest-forked==1.0.2
pytest-xdist==3.0.2; python_version < '3.9'
pytest-xdist==3.8.0; python_version >= '3.9'
pytest-forked==1.4.0; python_version < '3.7'
pytest-forked==1.6.0; python_version >= '3.7'
PyYAML>=5.4,<=6.0.2
docutils==0.15.2; python_version < '3.13'
docutils==0.18.1; python_version == '3.13'
Expand All @@ -54,5 +60,5 @@ setuptools==70.0.0; python_version == '3.8'
setuptools==68.0.0; python_version == '3.7'
setuptools==59.6.0; python_version == '3.6'
# this is required because of python 3.6 requests dependency version bound
urllib3==2.6.3; python_version >= '3.10'
urllib3==1.26.20; python_version < '3.10'
urllib3==2.7.0; python_version >= '3.10'
urllib3==1.26.20; python_version < '3.10'
2 changes: 1 addition & 1 deletion scripts/install/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -79,5 +79,5 @@ Checksums
-----------

install.sh 079dcc9a3e2a61ec692400e30169c9996b2998ac8c4e205198ed5863283fcb76
install.ps1 324d9a873622ce8a2a95a6a141ff939fb632d0dca4fdb45de66eddfb8ce36c2a
install.ps1 1c877a82e35563fc0d54418625b437fe12ff95557111a86edb796791b1039866
install.py f66dc9e2b69cbbd269374db638ffa9c0b08a5a4ea0b836b81336d6581aab9eed
22 changes: 11 additions & 11 deletions services/devops/tests/integ/test_devops_build.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,16 @@
runner = runner()


@pytest.mark.skip('failed in validation')
@pytest.fixture(autouse=True, scope='function')
def vcr_fixture(request):
pytest.skip('failed in validation')
with test_config_container.create_vcr(cassette_library_dir=CASSETTE_LIBRARY_DIR).use_cassette('devops_build_{name}.yml'.format(name=request.function.__name__)):
yield


@pytest.mark.skip('failed in validation')
@pytest.fixture(scope='module')
def project_and_pipeline(config_file, config_profile):
pytest.skip('failed in validation')
with test_config_container.create_vcr(cassette_library_dir=CASSETTE_LIBRARY_DIR).use_cassette('devops_build_project_and_pipeline_fixture.yml'):
# create project
notification_topic_id = 'ocid1.onstopic.oc1.iad.aaaaaaaatklfw3733kbwc2dzus633rb553dt52fdewujfea5tunntmqykmoq'
Expand Down Expand Up @@ -105,9 +105,9 @@ def test_build_pipeline_update(project_and_pipeline, config_file, config_profile
"Update API should return updated build pipeline description"


@pytest.mark.skip('failed in validation')
@pytest.fixture(scope='module')
def wait_stage(project_and_pipeline, config_file, config_profile):
pytest.skip('failed in validation')
with test_config_container.create_vcr(cassette_library_dir=CASSETTE_LIBRARY_DIR).use_cassette(
'devops_build_wait_stage_fixture.yml'):
# create wait stage
Expand Down Expand Up @@ -195,9 +195,9 @@ def test_wait_stage_update(project_and_pipeline, wait_stage, config_file, config
"Update API should return updated build pipeline stage description"


@pytest.mark.skip('failed in validation')
@pytest.fixture(scope='module')
def build_stage(project_and_pipeline, github_connection, config_file, config_profile):
pytest.skip('failed in validation')
with test_config_container.create_vcr(cassette_library_dir=CASSETTE_LIBRARY_DIR).use_cassette(
'devops_build_build_stage_fixture.yml'):
# create build stage
Expand Down Expand Up @@ -310,9 +310,9 @@ def test_build_stage_update(project_and_pipeline, build_stage, github_connection
"Update API should return updated build pipeline stage description"


@pytest.mark.skip('failed in validation')
@pytest.fixture(scope='module')
def deliver_artifact_stage(project_and_pipeline, build_stage, config_file, config_profile):
pytest.skip('failed in validation')
with test_config_container.create_vcr(cassette_library_dir=CASSETTE_LIBRARY_DIR).use_cassette(
'devops_build_deliver_artifact_stage_fixture.yml'):
# create deliver artifact stage
Expand Down Expand Up @@ -411,9 +411,9 @@ def test_deliver_artifact_stage_update(
"Update API should return updated build pipeline stage description"


@pytest.mark.skip('failed in validation')
@pytest.fixture(scope='module')
def trigger_deployment_stage(project_and_pipeline, build_stage, config_file, config_profile):
pytest.skip('failed in validation')
with test_config_container.create_vcr(cassette_library_dir=CASSETTE_LIBRARY_DIR).use_cassette(
'devops_build_trigger_deployment_stage_fixture.yml'):
project_id = project_and_pipeline[0]
Expand Down Expand Up @@ -516,9 +516,9 @@ def test_trigger_deployment_stage_update(
"Update API should return updated build pipeline stage description"


@pytest.mark.skip('failed in validation')
@pytest.fixture(scope='module')
def build_run(project_and_pipeline, wait_stage, build_stage, github_connection, config_file, config_profile):
pytest.skip('failed in validation')
with test_config_container.create_vcr(cassette_library_dir=CASSETTE_LIBRARY_DIR).use_cassette(
'devops_build_build_run_fixture.yml'):
# start build run
Expand Down Expand Up @@ -579,9 +579,9 @@ def test_build_run_list(project_and_pipeline, build_run, config_file, config_pro
assert len(build_runs) > 0, "List API should return at least one build run"


@pytest.mark.skip('failed in validation')
@pytest.fixture(scope='module')
def github_connection(project_and_pipeline, config_file, config_profile):
pytest.skip('failed in validation')
with test_config_container.create_vcr(cassette_library_dir=CASSETTE_LIBRARY_DIR).use_cassette(
'devops_build_github_connection_fixture.yml'):
# create connection
Expand Down Expand Up @@ -643,9 +643,9 @@ def test_github_connection_update(project_and_pipeline, github_connection, confi
"Update API should return updated connection description"


@pytest.mark.skip('failed in validation')
@pytest.fixture(scope='module')
def gitlab_connection(project_and_pipeline, config_file, config_profile):
pytest.skip('failed in validation')
with test_config_container.create_vcr(cassette_library_dir=CASSETTE_LIBRARY_DIR).use_cassette(
'devops_build_gitlab_connection_fixture.yml'):
# create connection
Expand Down Expand Up @@ -706,9 +706,9 @@ def test_gitlab_connection_update(project_and_pipeline, gitlab_connection, confi
"Update API should return updated connection description"


@pytest.mark.skip('failed in validation')
@pytest.fixture(scope='module')
def github_trigger(project_and_pipeline, config_file, config_profile):
pytest.skip('failed in validation')
with test_config_container.create_vcr(cassette_library_dir=CASSETTE_LIBRARY_DIR).use_cassette(
'devops_build_github_trigger_fixture.yml'):
# create trigger
Expand Down Expand Up @@ -790,9 +790,9 @@ def test_github_trigger_update(project_and_pipeline, github_trigger, config_file
"Update API should return updated trigger description"


@pytest.mark.skip('failed in validation')
@pytest.fixture(scope='module')
def gitlab_trigger(project_and_pipeline, config_file, config_profile):
pytest.skip('failed in validation')
with test_config_container.create_vcr(cassette_library_dir=CASSETTE_LIBRARY_DIR).use_cassette(
'devops_build_gitlab_trigger_fixture.yml'):
# create trigger
Expand Down
14 changes: 7 additions & 7 deletions services/devops/tests/integ/test_devops_deploy.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,16 @@
runner = runner()


@pytest.mark.skip('failed in validation')
@pytest.fixture(autouse=True, scope='function')
def vcr_fixture(request):
pytest.skip('failed in validation')
with test_config_container.create_vcr(cassette_library_dir=CASSETTE_LIBRARY_DIR).use_cassette('devops_deploy_{name}.yml'.format(name=request.function.__name__)):
yield


@pytest.mark.skip('failed in validation')
@pytest.fixture(scope='module')
def project_and_pipeline(config_file, config_profile):
pytest.skip('failed in validation')
with test_config_container.create_vcr(cassette_library_dir=CASSETTE_LIBRARY_DIR).use_cassette('devops_deploy_test_project_and_pipeline_fixture.yml'):
# create project
notification_topic_id = 'ocid1.onstopic.oc1.phx.aaaaaaaa3kvkxuoaqazlomtuu4xdfdsjtlph3uyopf4y6zmv72wilmw6egsq'
Expand Down Expand Up @@ -64,9 +64,9 @@ def project_and_pipeline(config_file, config_profile):
util.validate_response(result)


@pytest.mark.skip('failed in validation')
@pytest.fixture(scope='module')
def deploy_helm_repository_artifact(project_and_pipeline, config_file, config_profile):
pytest.skip('failed in validation')
with test_config_container.create_vcr(cassette_library_dir=CASSETTE_LIBRARY_DIR).use_cassette(
'devops_deploy_artifact_helm_repository_artifact_fixture.yml'):
# create deploy artifact
Expand Down Expand Up @@ -103,9 +103,9 @@ def test_get_helm_repository_artifact(deploy_helm_repository_artifact, config_fi
"Get Deploy Artifact API should return correct deploy artifact id"


@pytest.mark.skip('failed in validation')
@pytest.fixture(scope='module')
def deploy_helm_repository_artifact_verification_key_source(project_and_pipeline, config_file, config_profile):
pytest.skip('failed in validation')
with test_config_container.create_vcr(cassette_library_dir=CASSETTE_LIBRARY_DIR).use_cassette(
'devops_deploy_artifact_helm_repository_artifact_verification_key_source_fixture.yml'):
# create deploy artifact
Expand Down Expand Up @@ -182,9 +182,9 @@ def test_get_helm_repository_artifact_verification_source(deploy_helm_repository
"Get Deploy Artifact API should return correct vault secret OCID"


@pytest.mark.skip('failed in validation')
@pytest.fixture(scope='module')
def deploy_oke_cluster_environment(project_and_pipeline, config_file, config_profile):
pytest.skip('failed in validation')
with test_config_container.create_vcr(cassette_library_dir=CASSETTE_LIBRARY_DIR).use_cassette(
'devops_deploy_environment_oke_cluster_environment_fixture.yml'):
# create deploy environment
Expand Down Expand Up @@ -217,9 +217,9 @@ def test_get_oke_cluster_environment(deploy_oke_cluster_environment, config_file
"Get Deploy Environment API should return correct deploy environment id"


@pytest.mark.skip('failed in validation')
@pytest.fixture(scope='module')
def deploy_oke_helm_chart_stage(project_and_pipeline, deploy_helm_repository_artifact, deploy_oke_cluster_environment, config_file, config_profile):
pytest.skip('failed in validation')
with test_config_container.create_vcr(cassette_library_dir=CASSETTE_LIBRARY_DIR).use_cassette(
'devops_deploy_stage_oke_helm_chart_stage_fixture.yml'):
# create deploy stage
Expand Down Expand Up @@ -292,9 +292,9 @@ def test_get_deploy_oke_helm_chart_stage(deploy_oke_helm_chart_stage, config_fil
"Get Deploy Stage API should return correct should-cleanup-on-fail value"


@pytest.mark.skip('failed in validation')
@pytest.fixture(scope='module')
def dry_run_pipeline_deployment(project_and_pipeline, config_file, config_profile):
pytest.skip('failed in validation')
with test_config_container.create_vcr(cassette_library_dir=CASSETTE_LIBRARY_DIR).use_cassette(
'devops_deploy_deployment_dry_run_fixture.yml'):
pipeline_id = project_and_pipeline[1]
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ def open_relative(*path):
readme = f.read()

requires = [
'oci==2.181.0',
'oci==2.181.1',
'arrow>=1.0.0,<2.0.0',
'certifi>=2025.1.31,<2026.0.0',
'click<=8.1.2',
Expand Down
2 changes: 1 addition & 1 deletion src/oci_cli/version.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
# Copyright (c) 2016, 2026, Oracle and/or its affiliates. All rights reserved.
# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.

__version__ = '3.89.0'
__version__ = '3.89.1'
2 changes: 1 addition & 1 deletion tests/test_json_skeleton_command_invocation.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,9 +93,9 @@ def prepare_input_file_folder():
shutil.rmtree(INPUT_FILE_FOLDER)


@pytest.mark.skip('Skipped to allow DEX-14528')
@pytest.fixture(scope='module')
def network_resources():
pytest.skip("Skipped to allow DEX-14528")
with test_config_container.create_vcr().use_cassette('json_skeleton_command_invoke_fixture_network_resources.yml'):
vcn_name = util.random_name('cli_test_json_skeleton')
cidr_block = "10.0.0.0/16"
Expand Down