Skip to content

Commit 50ff160

Browse files
Releasing version 3.30.0
Releasing version 3.30.0
2 parents 16d915d + ed91409 commit 50ff160

File tree

58 files changed

+385
-92
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+385
-92
lines changed

CHANGELOG.rst

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,43 @@ 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.30.0 - 2023-07-25
10+
--------------------
11+
Added
12+
~~~~~
13+
* Goldengate Service
14+
15+
* Support for Automatic Backup Download
16+
17+
* ``oci golden-gate deployment-backup copy --bucket-name --namespace-name``
18+
19+
* Budgets Service
20+
21+
* Support for creating single use (non-recurring) budgets
22+
23+
* ``oci budgets budget create``
24+
* ``oci budgets budget update``
25+
26+
* AI Document Service
27+
28+
* Support for composing two or more Document Service custom key value models into one single model.
29+
30+
* ``oci ai-document model create``
31+
32+
* Core Service
33+
34+
* Support for Custom hostname
35+
36+
* ``oci compute-management instance-pool create``
37+
* ``oci compute-management instance-pool update``
38+
39+
Changed
40+
~~~~~~~
41+
* [BREAKING] Subscriptions and AssignedSubscription resources are now polymorphic in Organizations service
42+
43+
* ``oci organizations subscription list --entity-version``
44+
* ``oci organizations assigned-subscription list --entity-version``
45+
946
3.29.4 - 2023-07-18
1047
--------------------
1148
Added

images/animation.png

660 KB
Loading

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Jinja2==3.0.3
1414
jmespath==0.10.0
1515
ndg-httpsclient==0.4.2
1616
mock==2.0.0
17-
oci==2.107.0
17+
oci==2.108.0
1818
packaging==20.2
1919
pluggy==0.13.0
2020
py==1.10.0

scripts/examples/project_o/README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,22 @@ robotics VM.Standard.E2.1 1.0 RUNNING
3838

3939
**Important:** `oci` must *installed* and *configured*. `o` does not replace `oci`, but helps you *use* `oci`.
4040

41+
#### Linux or Mac
4142
To install, get **``o``** from github, place it in your PATH (perhaps in the same place as ``oci``), and make it executable. Use these commands to download ``o`` and install it next to ``oci``.
4243
```
4344
o_src=https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/examples/project_o/o
4445
where=$(which oci) && to=${where%ci} && curl -so $to $o_src && chmod +x $to
4546
```
47+
48+
#### CloudShell
49+
The Linux install above will work, but it installs `o` in a place that is overwritten when CloudShell is updated. This will install `o` into your $HOME, which is preserved during CloudShell updates:
50+
```
51+
mkdir -p $HOME/bin $HOME/.oci
52+
o_src=https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/examples/project_o/o
53+
to=$HOME/bin/o && curl -so $to $o_src && chmod +x $to
54+
echo 'PATH=$HOME/bin:$PATH' >> $HOME/.bashrc
55+
```
56+
4657
#### Windows
4758
**`o`** version 1.6 and later runs in Windows PowerShell or Command shell, but installation not automated. To try it, use this curl command to get **`o`**. Then copy it to somewhere in your PATH.
4859
```

scripts/examples/project_o/o

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ if (sys.platform != "win32"):
2222
import errno
2323
import datetime
2424
VERSION = "1.9"
25-
UPDATED = "2023-07-05"
25+
UPDATED = "2023-07-18"
2626

2727
# ==============================================================================
2828
# Global variables
@@ -449,6 +449,10 @@ def get_new_ocids_from_returned_items(items):
449449
region_list = [{'key': i['region-key'], 'name': i['region-name']} for i in items]
450450
else:
451451
region_list = items
452+
# Add existing regions to new region list
453+
if 'regionlist' in ocid:
454+
newkeys = [r['key'] for r in region_list]
455+
region_list.extend([r for r in ocid['regionlist']['data'] if r['key'] not in newkeys])
452456
return {'regionlist': {
453457
'type': 'regionlist',
454458
'alias': 'regionlist',
@@ -543,11 +547,8 @@ def get_new_ocids_from_returned_items(items):
543547
'access-uri']))})
544548
if 'created-by' in item and '/' in item['created-by']:
545549
collected[ID]['created-by'] = item['created-by'].split('/')[1]
546-
if 'time-created' in item:
550+
if 'time-created' in item and item['time-created']:
547551
collected[ID]['time-created'] = item['time-created'][:19]
548-
# Retain access-uri.
549-
if type == 'par' and ID in ocid and 'access-uri' in ocid[ID]:
550-
collected[ID]['access-uri'] = ocid[ID]['access-uri']
551552
except BaseException:
552553
print(bold('Unable to collect ocids of type ' + type
553554
+ '. Please provide this data with your problem report:\n')
@@ -1005,7 +1006,7 @@ def value_parameter(option, value):
10051006

10061007
# Special help with structured-search --search-query "where compartmentId = ocid"
10071008
if option == '--query-text':
1008-
match = re.findall(r"(\b[cl]\w*) *!*= *('*\"*[-_/\w]+'*\"*)", value, flags=re.IGNORECASE)
1009+
match = re.findall(r"(\b[cl]\w*) *!*= *('*\"*[-_./\w]+'*\"*)", value, flags=re.IGNORECASE)
10091010
for (m, spec) in match:
10101011
if m.lower() == 'compartmentid'[:len(m)]:
10111012
if m.lower() != 'compartmentid':
@@ -1163,9 +1164,8 @@ def show_column_headers(out_fields, sep, reg=False):
11631164
return
11641165
if sep == '|':
11651166
for k in out_fields:
1166-
# print(bold(column[k]['format'].format(k)), end=' ', file=sys.stderr)
11671167
try:
1168-
if reg and k == 'id' and user_out_spec == default_out_spec:
1168+
if reg and k == 'id' and user_out_spec.startswith(default_out_spec):
11691169
print(bold(' reg'), end=' ', file=sys.stderr)
11701170
print(bold(column[k]['format'].format(k.split(".")[-1])),
11711171
end=' ', file=sys.stderr)
@@ -1242,8 +1242,14 @@ def show_item(item, fields, sep, reg=False):
12421242
else:
12431243
out.append(value)
12441244
else:
1245-
if reg and field == 'id' and sep == '|' and user_out_spec == default_out_spec and 'ocid' in value:
1246-
out.append(' ' + (value.split('.')[3]))
1245+
if reg and field == 'id' and sep == '|' and user_out_spec.startswith(default_out_spec) and 'ocid' in value:
1246+
rk = value.split('.')[3]
1247+
if len(rk) == 3:
1248+
rk = rk.upper()
1249+
elif len(rk) > 3 and 'regionlist' in ocid:
1250+
rkl = [r['key'] for r in ocid['regionlist']['data'] if r['name'] == rk]
1251+
rk = rkl[0] if rkl else ' '
1252+
out.append(' ' + rk)
12471253
out.append(column[field]['format'].format(re.sub(r'[{}\'[\]\n]', '', value)[
12481254
column[field]['offset']:]))
12491255

scripts/install/README.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,4 +79,4 @@ Checksums
7979
-----------
8080
install.sh eff201279e7198101e8cbbe4cea2ca559732f3cd502e145354d7477d2a4621ce
8181
install.ps1 8dba598ded1718cfa2e52ca8785ece31d0b573868eaec9ad2af535d43797a70c
82-
install.py f0552ebe32fe1345dae8c260f75f54cbdea7380f2a140b1686081528d4398705
82+
install.py 9d2714cad813a47e725a644a74621f29093c4e82ec9db149a09aa4d731e74e83

services/ai_document/src/oci_cli_ai_service_document/generated/aiservicedocument_cli.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -343,13 +343,13 @@ def change_project_compartment(ctx, from_json, project_id, compartment_id, if_ma
343343
@model_group.command(name=cli_util.override('ai_document.create_model.command_name', 'create'), help=u"""Create a new model. \n[Command Reference](createModel)""")
344344
@cli_util.option('--model-type', required=True, help=u"""The type of the Document model.""")
345345
@cli_util.option('--compartment-id', required=True, help=u"""The compartment identifier.""")
346-
@cli_util.option('--training-dataset', required=True, type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
347346
@cli_util.option('--project-id', required=True, help=u"""The [OCID] of the project that contains the model.""")
348347
@cli_util.option('--display-name', help=u"""A human-friendly name for the model, which can be changed.""")
349348
@cli_util.option('--description', help=u"""An optional description of the model.""")
350349
@cli_util.option('--model-version', help=u"""The model version""")
351350
@cli_util.option('--is-quick-mode', type=click.BOOL, help=u"""Set to true when experimenting with a new model type or dataset, so the model training is quick, with a predefined low number of passes through the training data.""")
352351
@cli_util.option('--max-training-time-in-hours', help=u"""The maximum model training time in hours, expressed as a decimal fraction.""")
352+
@cli_util.option('--training-dataset', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
353353
@cli_util.option('--testing-dataset', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
354354
@cli_util.option('--validation-dataset', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
355355
@cli_util.option('--component-models', type=custom_types.CLI_COMPLEX_TYPE, help=u"""The [OCID] list of active custom Key Value models that need to be composed.
@@ -366,15 +366,14 @@ def change_project_compartment(ctx, from_json, project_id, compartment_id, if_ma
366366
@click.pass_context
367367
@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'training-dataset': {'module': 'ai_document', 'class': 'Dataset'}, 'testing-dataset': {'module': 'ai_document', 'class': 'Dataset'}, 'validation-dataset': {'module': 'ai_document', 'class': 'Dataset'}, 'component-models': {'module': 'ai_document', 'class': 'list[ComponentModel]'}, 'freeform-tags': {'module': 'ai_document', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'ai_document', 'class': 'dict(str, dict(str, object))'}}, output_type={'module': 'ai_document', 'class': 'Model'})
368368
@cli_util.wrap_exceptions
369-
def create_model(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, model_type, compartment_id, training_dataset, project_id, display_name, description, model_version, is_quick_mode, max_training_time_in_hours, testing_dataset, validation_dataset, component_models, alias_name, freeform_tags, defined_tags):
369+
def create_model(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, model_type, compartment_id, project_id, display_name, description, model_version, is_quick_mode, max_training_time_in_hours, training_dataset, testing_dataset, validation_dataset, component_models, alias_name, freeform_tags, defined_tags):
370370

371371
kwargs = {}
372372
kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id'])
373373

374374
_details = {}
375375
_details['modelType'] = model_type
376376
_details['compartmentId'] = compartment_id
377-
_details['trainingDataset'] = cli_util.parse_json_parameter("training_dataset", training_dataset)
378377
_details['projectId'] = project_id
379378

380379
if display_name is not None:
@@ -392,6 +391,9 @@ def create_model(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval
392391
if max_training_time_in_hours is not None:
393392
_details['maxTrainingTimeInHours'] = max_training_time_in_hours
394393

394+
if training_dataset is not None:
395+
_details['trainingDataset'] = cli_util.parse_json_parameter("training_dataset", training_dataset)
396+
395397
if testing_dataset is not None:
396398
_details['testingDataset'] = cli_util.parse_json_parameter("testing_dataset", testing_dataset)
397399

0 commit comments

Comments
 (0)