Skip to content

Commit edf1884

Browse files
Releasing version 3.74.1
Releasing version 3.74.1
2 parents b770913 + 25d05ac commit edf1884

File tree

10 files changed

+1534
-116
lines changed

10 files changed

+1534
-116
lines changed

CHANGELOG.rst

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,33 @@ All notable changes to this project will be documented in this file.
66

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

9+
3.74.1 - 2026-02-17
10+
-------------------
11+
Added
12+
~~~~~
13+
* Container Engine service
14+
15+
* Support for customer-controlled public IP decommission feature for oracle kubernetes engine
16+
17+
* ``oci ce cluster extend-endpoint-decommission-rollback-deadline``
18+
* ``oci ce cluster get-public-api-endpoint-decommission-status``
19+
* ``oci ce cluster rollback-public-api-endpoint-decommission``
20+
* ``oci ce cluster start-public-api-endpoint-decommission``
21+
22+
* Core service
23+
24+
* New optional parameter ``--gpu-memory-cluster-scale-config`` to provide GPU memory scale configuration while creating and updating Compute GPU Memory Cluster
25+
26+
* ``oci compute compute-gpu-memory-cluster create --gpu-memory-cluster-scale-config``
27+
* ``oci compute compute-gpu-memory-cluster update --gpu-memory-cluster-scale-config``
28+
29+
* MySQL HeatWave service
30+
31+
* Support for listing maintenance events
32+
33+
* ``oci mysql db-system maintenance-event list --db-system-id``
34+
35+
936
3.74.0 - 2026-02-10
1037
-------------------
1138
Added

requirements.txt

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,20 @@
33
# you may need to use the --extra-index-url option instead.
44

55
appdirs==1.4.3
6-
arrow>=1.0.0
7-
certifi>=2025.1.31
8-
cffi>=1.9.1
6+
arrow>=1.0.0,<2.0.0
7+
certifi>=2025.1.31,<2026.0.0
8+
cffi>=1.9.1,<2.0.0
99
click==8.0.4
1010
coverage==4.5.2
1111
cryptography>=3.2.1,<46.0.0
1212
httpsig-cffi==15.0.0
1313
Jinja2<3.0.0; python_version == '3.6'
14-
Jinja2>=3.1.5; python_version >= '3.7'
15-
jmespath==0.10.0
14+
Jinja2>=3.1.5,<4.0.0; python_version >= '3.7'
15+
jmespath>=0.10.0,<=1.0.1
1616
ndg-httpsclient==0.4.2
1717
mock==2.0.0
18-
oci==2.167.1
19-
packaging>=22.0; python_version > '3.8'
18+
oci==2.167.2
19+
packaging>=22.0,<25.0; python_version > '3.8'
2020
packaging==20.2; python_version <= '3.8'
2121
pluggy==0.13.0
2222
py==1.11.0
@@ -28,11 +28,11 @@ pytest==4.6.10; python_version <= '3.9'
2828
pytest==7.1.2; python_version >= '3.10'
2929
pytest-cov==2.5.1
3030
python-dateutil>=2.5.3,<3.0.0
31-
pytz>=2016.10
31+
pytz>=2016.10,<2025.0
3232
requests==2.27.0; python_version == '3.6'
3333
requests==2.31.0; python_version == '3.7'
34-
requests>=2.32.4; python_version > '3.7'
35-
six>=1.15.0
34+
requests>=2.32.4,<3.0.0; python_version > '3.7'
35+
six>=1.15.0,<2.0.0
3636
sphinx==3.3.0; python_version < '3.13'
3737
sphinx==6.2.1; python_version == '3.13'
3838
sphinx-rtd-theme==0.4.3
@@ -41,7 +41,7 @@ tox==3.23.0
4141
vcrpy==1.13.0; python_version <= '3.9'
4242
vcrpy==7.0.0; python_version >= '3.10'
4343
virtualenv==20.13.0; python_version <= '3.7'
44-
virtualenv>=20.26.6; python_version > '3.7'
44+
virtualenv>=20.26.6,<21.0.0; python_version > '3.7'
4545
pytest-xdist==1.22.2
4646
pytest-forked==1.0.2
4747
PyYAML>=5.4,<=6.0.2

services/container_engine/src/oci_cli_container_engine/generated/containerengine_cli.py

Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1155,6 +1155,37 @@ def disable_addon(ctx, from_json, wait_for_state, max_wait_seconds, wait_interva
11551155
cli_util.render_response(result, ctx)
11561156

11571157

1158+
@cluster_group.command(name=cli_util.override('ce.extend_endpoint_decommission_rollback_deadline.command_name', 'extend-endpoint-decommission-rollback-deadline'), help=u"""Extend the rollback deadline of public api endpoint decommission for a cluster. The operation can only be performed within decommission rollback deadline. \n[Command Reference](extendEndpointDecommissionRollbackDeadline)""")
1159+
@cli_util.option('--cluster-id', required=True, help=u"""The OCID of the cluster.""")
1160+
@cli_util.option('--rollback-deadline-delay', required=True, help=u"""The optional override delay of the rollback deadline once decommission is finished. maximum to 30 days could be added. Once Deadline is passed, rollback will not able to be launched.""")
1161+
@cli_util.option('--if-match', help=u"""For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` parameter to the value of the etag from a previous GET or POST response for that resource. The resource will be updated or deleted only if the etag you provide matches the resource's current etag value.""")
1162+
@json_skeleton_utils.get_cli_json_input_option({})
1163+
@cli_util.help_option
1164+
@click.pass_context
1165+
@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}, output_type={'module': 'container_engine', 'class': 'PublicApiEndpointDecommissionStatus'})
1166+
@cli_util.wrap_exceptions
1167+
def extend_endpoint_decommission_rollback_deadline(ctx, from_json, cluster_id, rollback_deadline_delay, if_match):
1168+
1169+
if isinstance(cluster_id, six.string_types) and len(cluster_id.strip()) == 0:
1170+
raise click.UsageError('Parameter --cluster-id cannot be whitespace or empty string')
1171+
1172+
kwargs = {}
1173+
if if_match is not None:
1174+
kwargs['if_match'] = if_match
1175+
kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id'])
1176+
1177+
_details = {}
1178+
_details['rollbackDeadlineDelay'] = rollback_deadline_delay
1179+
1180+
client = cli_util.build_client('container_engine', 'container_engine', ctx)
1181+
result = client.extend_endpoint_decommission_rollback_deadline(
1182+
cluster_id=cluster_id,
1183+
extend_endpoint_decommission_rollback_deadline_details=_details,
1184+
**kwargs
1185+
)
1186+
cli_util.render_response(result, ctx)
1187+
1188+
11581189
@cluster_group.command(name=cli_util.override('ce.get_addon.command_name', 'get-addon'), help=u"""Get the specified addon for a cluster. \n[Command Reference](getAddon)""")
11591190
@cli_util.option('--cluster-id', required=True, help=u"""The OCID of the cluster.""")
11601191
@cli_util.option('--addon-name', required=True, help=u"""The name of the addon.""")
@@ -1338,6 +1369,28 @@ def get_node_pool_options(ctx, from_json, node_pool_option_id, compartment_id, s
13381369
cli_util.render_response(result, ctx)
13391370

13401371

1372+
@cluster_group.command(name=cli_util.override('ce.get_public_api_endpoint_decommission_status.command_name', 'get-public-api-endpoint-decommission-status'), help=u"""Get cluster public api endpoint decommission status. \n[Command Reference](getPublicApiEndpointDecommissionStatus)""")
1373+
@cli_util.option('--cluster-id', required=True, help=u"""The OCID of the cluster.""")
1374+
@json_skeleton_utils.get_cli_json_input_option({})
1375+
@cli_util.help_option
1376+
@click.pass_context
1377+
@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}, output_type={'module': 'container_engine', 'class': 'PublicApiEndpointDecommissionStatus'})
1378+
@cli_util.wrap_exceptions
1379+
def get_public_api_endpoint_decommission_status(ctx, from_json, cluster_id):
1380+
1381+
if isinstance(cluster_id, six.string_types) and len(cluster_id.strip()) == 0:
1382+
raise click.UsageError('Parameter --cluster-id cannot be whitespace or empty string')
1383+
1384+
kwargs = {}
1385+
kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id'])
1386+
client = cli_util.build_client('container_engine', 'container_engine', ctx)
1387+
result = client.get_public_api_endpoint_decommission_status(
1388+
cluster_id=cluster_id,
1389+
**kwargs
1390+
)
1391+
cli_util.render_response(result, ctx)
1392+
1393+
13411394
@virtual_node_pool_group.command(name=cli_util.override('ce.get_virtual_node.command_name', 'get-virtual-node'), help=u"""Get the details of a virtual node. \n[Command Reference](getVirtualNode)""")
13421395
@cli_util.option('--virtual-node-pool-id', required=True, help=u"""The OCID of the virtual node pool.""")
13431396
@cli_util.option('--virtual-node-id', required=True, help=u"""The OCID of the virtual node.""")
@@ -2239,6 +2292,61 @@ def replace_boot_volume_cluster_node(ctx, from_json, wait_for_state, max_wait_se
22392292
cli_util.render_response(result, ctx)
22402293

22412294

2295+
@cluster_group.command(name=cli_util.override('ce.rollback_public_api_endpoint_decommission.command_name', 'rollback-public-api-endpoint-decommission'), help=u"""Rollback public api endpoint decommission for a cluster, legacy kubernetes endpoint will be brought back once the operation is completed. The operation can only be performed within decommission rollback deadline. \n[Command Reference](rollbackPublicApiEndpointDecommission)""")
2296+
@cli_util.option('--cluster-id', required=True, help=u"""The OCID of the cluster.""")
2297+
@cli_util.option('--if-match', help=u"""For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` parameter to the value of the etag from a previous GET or POST response for that resource. The resource will be updated or deleted only if the etag you provide matches the resource's current etag value.""")
2298+
@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), multiple=True, help="""This operation asynchronously creates, modifies or deletes a resource and uses a work request to track the progress of the operation. Specify this option to perform the action and then wait until the work request reaches a certain state. Multiple states can be specified, returning on the first state. For example, --wait-for-state ACCEPTED --wait-for-state CANCELED would return on whichever lifecycle state is reached first. If timeout is reached, a return code of 2 is returned. For any other error, a return code of 1 is returned.""")
2299+
@cli_util.option('--max-wait-seconds', type=click.INT, help="""The maximum time to wait for the work request to reach the state defined by --wait-for-state. Defaults to 1200 seconds.""")
2300+
@cli_util.option('--wait-interval-seconds', type=click.INT, help="""Check every --wait-interval-seconds to see whether the work request has reached the state defined by --wait-for-state. Defaults to 30 seconds.""")
2301+
@json_skeleton_utils.get_cli_json_input_option({})
2302+
@cli_util.help_option
2303+
@click.pass_context
2304+
@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={})
2305+
@cli_util.wrap_exceptions
2306+
def rollback_public_api_endpoint_decommission(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, cluster_id, if_match):
2307+
2308+
if isinstance(cluster_id, six.string_types) and len(cluster_id.strip()) == 0:
2309+
raise click.UsageError('Parameter --cluster-id cannot be whitespace or empty string')
2310+
2311+
kwargs = {}
2312+
if if_match is not None:
2313+
kwargs['if_match'] = if_match
2314+
kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id'])
2315+
client = cli_util.build_client('container_engine', 'container_engine', ctx)
2316+
result = client.rollback_public_api_endpoint_decommission(
2317+
cluster_id=cluster_id,
2318+
**kwargs
2319+
)
2320+
if wait_for_state:
2321+
2322+
if hasattr(client, 'get_work_request') and callable(getattr(client, 'get_work_request')):
2323+
try:
2324+
wait_period_kwargs = {}
2325+
if max_wait_seconds is not None:
2326+
wait_period_kwargs['max_wait_seconds'] = max_wait_seconds
2327+
if wait_interval_seconds is not None:
2328+
wait_period_kwargs['max_interval_seconds'] = wait_interval_seconds
2329+
if 'opc-work-request-id' not in result.headers:
2330+
click.echo('Encountered error while waiting for work request to enter the specified state. Outputting last known resource state')
2331+
cli_util.render_response(result, ctx)
2332+
return
2333+
2334+
click.echo('Action completed. Waiting until the work request has entered state: {}'.format(wait_for_state), file=sys.stderr)
2335+
result = oci.wait_until(client, client.get_work_request(result.headers['opc-work-request-id']), 'status', wait_for_state, **wait_period_kwargs)
2336+
except oci.exceptions.MaximumWaitTimeExceeded as e:
2337+
# If we fail, we should show an error, but we should still provide the information to the customer
2338+
click.echo('Failed to wait until the work request entered the specified state. Outputting last known resource state', file=sys.stderr)
2339+
cli_util.render_response(result, ctx)
2340+
sys.exit(2)
2341+
except Exception:
2342+
click.echo('Encountered error while waiting for work request to enter the specified state. Outputting last known resource state', file=sys.stderr)
2343+
cli_util.render_response(result, ctx)
2344+
raise
2345+
else:
2346+
click.echo('Unable to wait for the work request to enter the specified state', file=sys.stderr)
2347+
cli_util.render_response(result, ctx)
2348+
2349+
22422350
@cluster_group.command(name=cli_util.override('ce.start_credential_rotation.command_name', 'start-credential-rotation'), help=u"""Start cluster credential rotation by adding new credentials, old credentials will still work after this operation. \n[Command Reference](startCredentialRotation)""")
22432351
@cli_util.option('--cluster-id', required=True, help=u"""The OCID of the cluster.""")
22442352
@cli_util.option('--auto-completion-delay-duration', required=True, help=u"""The duration in days(in ISO 8601 notation eg. P5D) after which the old credentials should be retired. Maximum delay duration is 90 days.""")
@@ -2300,6 +2408,61 @@ def start_credential_rotation(ctx, from_json, wait_for_state, max_wait_seconds,
23002408
cli_util.render_response(result, ctx)
23012409

23022410

2411+
@cluster_group.command(name=cli_util.override('ce.start_public_api_endpoint_decommission.command_name', 'start-public-api-endpoint-decommission'), help=u"""Start public api endpoint decommission for a cluster, legacy kubernetes endpoint will no longer available after this operation. \n[Command Reference](startPublicApiEndpointDecommission)""")
2412+
@cli_util.option('--cluster-id', required=True, help=u"""The OCID of the cluster.""")
2413+
@cli_util.option('--if-match', help=u"""For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` parameter to the value of the etag from a previous GET or POST response for that resource. The resource will be updated or deleted only if the etag you provide matches the resource's current etag value.""")
2414+
@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), multiple=True, help="""This operation asynchronously creates, modifies or deletes a resource and uses a work request to track the progress of the operation. Specify this option to perform the action and then wait until the work request reaches a certain state. Multiple states can be specified, returning on the first state. For example, --wait-for-state ACCEPTED --wait-for-state CANCELED would return on whichever lifecycle state is reached first. If timeout is reached, a return code of 2 is returned. For any other error, a return code of 1 is returned.""")
2415+
@cli_util.option('--max-wait-seconds', type=click.INT, help="""The maximum time to wait for the work request to reach the state defined by --wait-for-state. Defaults to 1200 seconds.""")
2416+
@cli_util.option('--wait-interval-seconds', type=click.INT, help="""Check every --wait-interval-seconds to see whether the work request has reached the state defined by --wait-for-state. Defaults to 30 seconds.""")
2417+
@json_skeleton_utils.get_cli_json_input_option({})
2418+
@cli_util.help_option
2419+
@click.pass_context
2420+
@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={})
2421+
@cli_util.wrap_exceptions
2422+
def start_public_api_endpoint_decommission(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, cluster_id, if_match):
2423+
2424+
if isinstance(cluster_id, six.string_types) and len(cluster_id.strip()) == 0:
2425+
raise click.UsageError('Parameter --cluster-id cannot be whitespace or empty string')
2426+
2427+
kwargs = {}
2428+
if if_match is not None:
2429+
kwargs['if_match'] = if_match
2430+
kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id'])
2431+
client = cli_util.build_client('container_engine', 'container_engine', ctx)
2432+
result = client.start_public_api_endpoint_decommission(
2433+
cluster_id=cluster_id,
2434+
**kwargs
2435+
)
2436+
if wait_for_state:
2437+
2438+
if hasattr(client, 'get_work_request') and callable(getattr(client, 'get_work_request')):
2439+
try:
2440+
wait_period_kwargs = {}
2441+
if max_wait_seconds is not None:
2442+
wait_period_kwargs['max_wait_seconds'] = max_wait_seconds
2443+
if wait_interval_seconds is not None:
2444+
wait_period_kwargs['max_interval_seconds'] = wait_interval_seconds
2445+
if 'opc-work-request-id' not in result.headers:
2446+
click.echo('Encountered error while waiting for work request to enter the specified state. Outputting last known resource state')
2447+
cli_util.render_response(result, ctx)
2448+
return
2449+
2450+
click.echo('Action completed. Waiting until the work request has entered state: {}'.format(wait_for_state), file=sys.stderr)
2451+
result = oci.wait_until(client, client.get_work_request(result.headers['opc-work-request-id']), 'status', wait_for_state, **wait_period_kwargs)
2452+
except oci.exceptions.MaximumWaitTimeExceeded as e:
2453+
# If we fail, we should show an error, but we should still provide the information to the customer
2454+
click.echo('Failed to wait until the work request entered the specified state. Outputting last known resource state', file=sys.stderr)
2455+
cli_util.render_response(result, ctx)
2456+
sys.exit(2)
2457+
except Exception:
2458+
click.echo('Encountered error while waiting for work request to enter the specified state. Outputting last known resource state', file=sys.stderr)
2459+
cli_util.render_response(result, ctx)
2460+
raise
2461+
else:
2462+
click.echo('Unable to wait for the work request to enter the specified state', file=sys.stderr)
2463+
cli_util.render_response(result, ctx)
2464+
2465+
23032466
@cluster_group.command(name=cli_util.override('ce.update_addon.command_name', 'update-addon'), help=u"""Update addon details for a cluster. \n[Command Reference](updateAddon)""")
23042467
@cli_util.option('--cluster-id', required=True, help=u"""The OCID of the cluster.""")
23052468
@cli_util.option('--addon-name', required=True, help=u"""The name of the addon.""")

0 commit comments

Comments
 (0)