Skip to content

Commit 8aa0345

Browse files
Releasing version 3.64.1
Releasing version 3.64.1
2 parents 3c6ce5a + 7573395 commit 8aa0345

File tree

12 files changed

+375
-16
lines changed

12 files changed

+375
-16
lines changed

CHANGELOG.rst

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,37 @@ 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.64.1 - 2025-08-19
10+
--------------------
11+
Added
12+
~~~~~
13+
* Support for calling Oracle Cloud Infrastructure services in the eu-budapest-1 region
14+
15+
* Support for new optional parameter cidr-prefix-length for creating IPv6 Flexible CIDR in Virtual Cloud Network Service
16+
17+
* ``oci network ipv6 create --cidr-prefix-length``
18+
* ``oci network vnic assign-ipv6 --cidr-prefix-length``
19+
20+
* Database Service
21+
22+
* Support for new optional parameter source-pdb-snapshot-id for Pluggable Database resource
23+
24+
* ``oci db pluggable-database create-local-clone --source-pdb-snapshot-id``
25+
* ``oci db pluggable-database create-remote-clone --source-pdb-snapshot-id``
26+
27+
* Managing Pluggable database snapshot resources
28+
29+
* ``oci db pluggable-database create-snapshot``
30+
* ``oci db pluggable-database delete-snapshot``
31+
* ``oci db pluggable-database get-snapshot``
32+
* ``oci db pluggable-database list-snapshots``
33+
34+
* Generative AI Interface Service
35+
36+
* Support for new GenericChatRequest parameters in Generative AI inference service
37+
38+
* ``oci generative-ai-inference chat-result chat-generic-chat-request``
39+
940
3.64.0 - 2025-08-12
1041
--------------------
1142
Added

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ Jinja2>=3.1.5; python_version >= '3.7'
1515
jmespath==0.10.0
1616
ndg-httpsclient==0.4.2
1717
mock==2.0.0
18-
oci==2.158.0
18+
oci==2.158.2
1919
packaging==20.2
2020
pluggy==0.13.0
2121
py==1.11.0

services/core/src/oci_cli_virtual_network/generated/virtualnetwork_cli.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3254,6 +3254,7 @@ def create_ip_sec_connection(ctx, from_json, wait_for_state, max_wait_seconds, w
32543254
@cli_util.option('--ip-address', help=u"""An IPv6 address of your choice. Must be an available IP address within the subnet's CIDR. If you don't specify a value, Oracle automatically assigns an IPv6 address from the subnet. The subnet is the one that contains the VNIC you specify in `vnicId`.
32553255

32563256
Example: `2001:DB8::`""")
3257+
@cli_util.option('--cidr-prefix-length', type=click.INT, help=u"""Length of cidr range. Optional field to specify flexible cidr.""")
32573258
@cli_util.option('--vnic-id', help=u"""The [OCID] of the VNIC to assign the IPv6 to. The IPv6 will be in the VNIC's subnet.""")
32583259
@cli_util.option('--subnet-id', help=u"""The [OCID] of the subnet from which the IPv6 is to be drawn. The IP address, *if supplied*, must be valid for the given subnet, only valid for reserved IPs currently.""")
32593260
@cli_util.option('--lifetime', type=custom_types.CliCaseInsensitiveChoice(["EPHEMERAL", "RESERVED"]), help=u"""Lifetime of the IP address. There are two types of IPs: - Ephemeral - Reserved""")
@@ -3267,7 +3268,7 @@ def create_ip_sec_connection(ctx, from_json, wait_for_state, max_wait_seconds, w
32673268
@click.pass_context
32683269
@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'defined-tags': {'module': 'core', 'class': 'dict(str, dict(str, object))'}, 'freeform-tags': {'module': 'core', 'class': 'dict(str, string)'}}, output_type={'module': 'core', 'class': 'Ipv6'})
32693270
@cli_util.wrap_exceptions
3270-
def create_ipv6(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, defined_tags, display_name, freeform_tags, ip_address, vnic_id, subnet_id, lifetime, route_table_id, ipv6_subnet_cidr):
3271+
def create_ipv6(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, defined_tags, display_name, freeform_tags, ip_address, cidr_prefix_length, vnic_id, subnet_id, lifetime, route_table_id, ipv6_subnet_cidr):
32713272

32723273
kwargs = {}
32733274
kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id'])
@@ -3286,6 +3287,9 @@ def create_ipv6(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_
32863287
if ip_address is not None:
32873288
_details['ipAddress'] = ip_address
32883289

3290+
if cidr_prefix_length is not None:
3291+
_details['cidrPrefixLength'] = cidr_prefix_length
3292+
32893293
if vnic_id is not None:
32903294
_details['vnicId'] = vnic_id
32913295

services/core/src/oci_cli_virtual_network/virtualnetwork_cli_extended.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,7 @@ def unassign_private_ip(ctx, from_json, vnic_id, ip_address):
291291
@click.pass_context
292292
@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'defined-tags': {'module': 'core', 'class': 'dict(str, dict(str, object))'}, 'freeform-tags': {'module': 'core', 'class': 'dict(str, string)'}}, output_type={'module': 'core', 'class': 'PrivateIp'})
293293
@cli_util.wrap_exceptions
294-
def assign_ipv6(ctx, from_json, vnic_id, defined_tags, display_name, freeform_tags, ip_address, unassign_if_already_assigned, ipv6_subnet_cidr, route_table_id, lifetime):
294+
def assign_ipv6(ctx, from_json, vnic_id, defined_tags, display_name, freeform_tags, ip_address, unassign_if_already_assigned, ipv6_subnet_cidr, route_table_id, lifetime, cidr_prefix_length):
295295
networking_client = cli_util.build_client('core', 'virtual_network', ctx)
296296

297297
# First we get the VNIC because we need to know the subnet OCID for the ListIpv6s call
@@ -355,6 +355,10 @@ def assign_ipv6(ctx, from_json, vnic_id, defined_tags, display_name, freeform_ta
355355
if not is_ip_reassignment:
356356
if ip_address is not None:
357357
assign_ip_request_body['ipAddress'] = ip_address
358+
if cidr_prefix_length is not None:
359+
assign_ip_request_body['cidrPrefixLength'] = cidr_prefix_length
360+
if subnet_id is not None:
361+
assign_ip_request_body['subnetId'] = subnet_id
358362

359363
result = networking_client.create_ipv6(assign_ip_request_body)
360364
else:

services/data_safe/src/oci_cli_data_safe/generated/datasafe_cli.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13849,14 +13849,19 @@ def list_discovery_jobs(ctx, from_json, all_pages, page_size, compartment_id, co
1384913849
@cli_util.option('--target-ids', multiple=True, help=u"""An optional filter to return only findings that match the specified target ids. Use this parameter to filter by multiple target ids.""")
1385013850
@cli_util.option('--category', help=u"""The category of the finding.""")
1385113851
@cli_util.option('--contains-severity', type=custom_types.CliCaseInsensitiveChoice(["HIGH", "MEDIUM", "LOW", "EVALUATE", "ADVISORY", "PASS", "DEFERRED"]), multiple=True, help=u"""A filter to return only findings that match the specified risk level(s). Use containsSeverity parameter if need to filter by multiple risk levels.""")
13852+
@cli_util.option('--scim-query', help=u"""The scimQuery query parameter accepts filter expressions that use the syntax described in Section 3.2.2.2 of the System for Cross-Domain Identity Management (SCIM) specification, which is available at [RFC3339]. In SCIM filtering expressions, text, date, and time values must be enclosed in quotation marks, with date and time values using ISO-8601 format. (Numeric and boolean values should not be quoted.)
13853+
13854+
**Example:** | scimQuery=(severity eq 'high') scimQuery=(category eq \"Users\") and (reference eq 'CIS')
13855+
13856+
Supported fields: severity reference title category""")
1385213857
@cli_util.option('--all', 'all_pages', is_flag=True, help="""Fetches all pages of results. If you provide this option, then you cannot provide the --limit option.""")
1385313858
@cli_util.option('--page-size', type=click.INT, help="""When fetching results, the number of results to fetch per call. Only valid when used with --all or --limit, and ignored otherwise.""")
1385413859
@json_skeleton_utils.get_cli_json_input_option({'target-ids': {'module': 'data_safe', 'class': 'list[string]'}})
1385513860
@cli_util.help_option
1385613861
@click.pass_context
1385713862
@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'target-ids': {'module': 'data_safe', 'class': 'list[string]'}}, output_type={'module': 'data_safe', 'class': 'FindingAnalyticsCollection'})
1385813863
@cli_util.wrap_exceptions
13859-
def list_finding_analytics(ctx, from_json, all_pages, page_size, compartment_id, compartment_id_in_subtree, access_level, is_top_finding, group_by, top_finding_status, severity, finding_key, limit, page, target_database_group_id, contains_references, target_ids, category, contains_severity):
13864+
def list_finding_analytics(ctx, from_json, all_pages, page_size, compartment_id, compartment_id_in_subtree, access_level, is_top_finding, group_by, top_finding_status, severity, finding_key, limit, page, target_database_group_id, contains_references, target_ids, category, contains_severity, scim_query):
1386013865

1386113866
if all_pages and limit:
1386213867
raise click.UsageError('If you provide the --all option you cannot provide the --limit option')
@@ -13890,6 +13895,8 @@ def list_finding_analytics(ctx, from_json, all_pages, page_size, compartment_id,
1389013895
kwargs['category'] = category
1389113896
if contains_severity is not None and len(contains_severity) > 0:
1389213897
kwargs['contains_severity'] = contains_severity
13898+
if scim_query is not None:
13899+
kwargs['scim_query'] = scim_query
1389313900
kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id'])
1389413901
client = cli_util.build_client('data_safe', 'data_safe', ctx)
1389513902
if all_pages:
@@ -13939,6 +13946,7 @@ def list_finding_analytics(ctx, from_json, all_pages, page_size, compartment_id,
1393913946
Supported fields: severity findingKey reference targetId isTopFinding title category remarks details summary isRiskModified""")
1394013947
@cli_util.option('--field', type=custom_types.CliCaseInsensitiveChoice(["severity", "findingKey", "reference", "targetId", "isTopFinding", "title", "category", "remarks", "details", "summary", "isRiskModified"]), multiple=True, help=u"""Specifies a subset of fields to be returned in the response.""")
1394113948
@cli_util.option('--sort-by', type=custom_types.CliCaseInsensitiveChoice(["category", "findingKey", "severity"]), help=u"""The field to sort by. You can specify only one sort order(sortOrder). The default order for category is alphabetical.""")
13949+
@cli_util.option('--sort-order', type=custom_types.CliCaseInsensitiveChoice(["ASC", "DESC"]), help=u"""The sort order to use, either ascending (ASC) or descending (DESC).""")
1394213950
@cli_util.option('--finding-key', help=u"""Each finding in security assessment has an associated key (think of key as a finding's name). For a given finding, the key will be the same across targets. The user can use these keys to filter the findings.""")
1394313951
@cli_util.option('--all', 'all_pages', is_flag=True, help="""Fetches all pages of results. If you provide this option, then you cannot provide the --limit option.""")
1394413952
@cli_util.option('--page-size', type=click.INT, help="""When fetching results, the number of results to fetch per call. Only valid when used with --all or --limit, and ignored otherwise.""")
@@ -13947,7 +13955,7 @@ def list_finding_analytics(ctx, from_json, all_pages, page_size, compartment_id,
1394713955
@click.pass_context
1394813956
@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'target-ids': {'module': 'data_safe', 'class': 'list[string]'}}, output_type={'module': 'data_safe', 'class': 'list[FindingSummary]'})
1394913957
@cli_util.wrap_exceptions
13950-
def list_findings(ctx, from_json, all_pages, page_size, security_assessment_id, is_top_finding, severity, contains_severity, category, lifecycle_state, references, contains_references, limit, page, compartment_id_in_subtree, access_level, target_id, target_ids, scim_query, field, sort_by, finding_key):
13958+
def list_findings(ctx, from_json, all_pages, page_size, security_assessment_id, is_top_finding, severity, contains_severity, category, lifecycle_state, references, contains_references, limit, page, compartment_id_in_subtree, access_level, target_id, target_ids, scim_query, field, sort_by, sort_order, finding_key):
1395113959

1395213960
if all_pages and limit:
1395313961
raise click.UsageError('If you provide the --all option you cannot provide the --limit option')
@@ -13988,6 +13996,8 @@ def list_findings(ctx, from_json, all_pages, page_size, security_assessment_id,
1398813996
kwargs['field'] = field
1398913997
if sort_by is not None:
1399013998
kwargs['sort_by'] = sort_by
13999+
if sort_order is not None:
14000+
kwargs['sort_order'] = sort_order
1399114001
if finding_key is not None:
1399214002
kwargs['finding_key'] = finding_key
1399314003
kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id'])

0 commit comments

Comments
 (0)