From cd8d2bc47cbae65031130c1c6c70fe26c1ff10da Mon Sep 17 00:00:00 2001 From: pankajmjx Date: Mon, 19 Jun 2023 09:52:18 +0000 Subject: [PATCH] Releasing version 3.29.1 Co-authored-by: Hamada Ibrahim Co-authored-by: Harsh Kumar Co-authored-by: Kanvi Pasricha Co-authored-by: Alex Le Co-authored-by: Nupur Gupta Co-authored-by: Karthik Kamath Co-authored-by: Mandy Tsai Co-authored-by: Anup Singh --- CHANGELOG.rst | 68 +++ requirements.txt | 2 +- scripts/examples/project_o/_o | 69 +++ scripts/examples/project_o/o | 98 ++-- scripts/examples/project_o/oci_commands | 173 +++---- .../generated/dataflow_cli.py | 482 +++++++++++++++++- .../generated/datalabelingmanagement_cli.py | 181 ++++++- .../generated/database_cli.py | 208 +++++++- .../generated/functionsmanagement_cli.py | 10 +- .../generated/identity_cli.py | 8 +- .../tests/util/generated/command_to_api.py | 8 - .../generated/rover_service_cli.py | 2 +- .../src/oci_cli_rover_bundle/__init__.py | 4 + .../generated/__init__.py | 4 + .../generated/client_mappings.py | 14 + .../generated/roverbundle_cli.py | 385 ++++++++++++++ .../roverbundle_cli_extended.py | 17 + .../generated/rovercluster_cli.py | 59 +++ .../rovercluster_cli_extended.py | 45 ++ .../generated/rovernode_cli.py | 207 +++++++- .../rovernode_cli_extended.py | 114 ++++- .../src/oci_cli_work_requests/__init__.py | 4 + .../generated/__init__.py | 4 + .../generated/client_mappings.py | 14 + .../generated/workrequests_cli.py | 257 ++++++++++ .../workrequests_cli_extended.py | 7 + setup.py | 2 +- src/oci_cli/version.py | 2 +- 28 files changed, 2242 insertions(+), 206 deletions(-) create mode 100755 scripts/examples/project_o/_o delete mode 100644 services/oci_control_center/tests/util/generated/command_to_api.py create mode 100644 services/rover/src/oci_cli_rover_bundle/__init__.py create mode 100644 services/rover/src/oci_cli_rover_bundle/generated/__init__.py create mode 100644 services/rover/src/oci_cli_rover_bundle/generated/client_mappings.py create mode 100644 services/rover/src/oci_cli_rover_bundle/generated/roverbundle_cli.py create mode 100644 services/rover/src/oci_cli_rover_bundle/roverbundle_cli_extended.py create mode 100644 services/rover/src/oci_cli_work_requests/__init__.py create mode 100644 services/rover/src/oci_cli_work_requests/generated/__init__.py create mode 100644 services/rover/src/oci_cli_work_requests/generated/client_mappings.py create mode 100644 services/rover/src/oci_cli_work_requests/generated/workrequests_cli.py create mode 100644 services/rover/src/oci_cli_work_requests/workrequests_cli_extended.py diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 5b6ae47ee..b43ad79e6 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -5,6 +5,74 @@ Change Log All notable changes to this project will be documented in this file. The format is based on `Keep a Changelog `__. +3.29.1 - 2023-06-20 +-------------------- +Added +~~~~~ + +* Support for the Serial Console Access in the Database service + + * ``oci db console-connection create`` + * ``oci db console-connection delete`` + * ``oci db console-connection update`` + * ``oci db node update`` + +* Database Migration Service + + * Support for creating a new connection with Network Security Group (NSG) Id's + + * ``oci database-migration connection create --nsg-ids`` + + * Support for updating a connection with new Network Security Group (NSG) Id's + + * ``oci database-migration connection update --nsg-ids`` + +* Support for new optional parameter in the Functions service + + * ``oci fn application create --shape`` + +* Data Flow service + + * Support for creating and managing Data Flow Pools + + * ``oci data-flow pool`` + + * Support for additional optional parameters for using Data Flow pools + + * ``oci data-flow application create --pool-id`` + * ``oci data-flow application update --pool-id`` + * ``oci data-flow run create --pool-id`` + * ``oci data-flow run submit --pool-id`` + * ``oci data-flow run list --pool-id`` + +* Rover Node Service + + * Support for the following in the Roving Edge Infrastructure Service + + * ``oci rover node create --cert-compartment-id --cert-key-algorithm --cert-signature-algorithm --common-name --issuer-certificate-authority-id --time-cert-validity-end`` + * ``oci rover node update --cert-compartment-id --cert-key-algorithm --cert-signature-algorithm --certificate-authority-id --common-name --time-cert-validity-end`` + + * Commands for rover upgrade bundle support + + * ``oci rover node rover-bundle copy-to-customer`` + * ``oci rover node rover-bundle get-status`` + * ``oci rover node rover-bundle-request list`` + * ``oci rover node rover-bundle-version get`` + + * Commands for rover node certificate support + + * ``oci rover node ca-bundle get`` + * ``oci rover node certificate create`` + * ``oci rover node certificate update`` + * ``oci rover node certificate get-leaf-certificate`` + * ``oci rover node certificate-authority update-root-ca`` + + * Commands for rover upgrade bundle support + + * ``oci rover standalone-cluster rover-bundle copy-to-customer`` + * ``oci rover standalone-cluster rover-bundle get-status`` + * ``oci rover standalone-cluster rover-bundle-request list`` + * ``oci rover standalone-cluster rover-bundle-version get`` 3.29.0 - 2023-06-13 -------------------- diff --git a/requirements.txt b/requirements.txt index 8b57324c8..7d0de9fb7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -14,7 +14,7 @@ Jinja2==3.0.3 jmespath==0.10.0 ndg-httpsclient==0.4.2 mock==2.0.0 -oci==2.104.2 +oci==2.104.3 packaging==20.2 pluggy==0.13.0 py==1.10.0 diff --git a/scripts/examples/project_o/_o b/scripts/examples/project_o/_o new file mode 100755 index 000000000..35598e39e --- /dev/null +++ b/scripts/examples/project_o/_o @@ -0,0 +1,69 @@ +# Copyright (c) 2021, 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. + +UPDATED="2021-04-26" + +# This supports bash and zsh autocomplete for the o command. +# The same autocomplete works for "oci" as well. +# +# It uses the o's oci_commands file to get a list of commands, subcommands +# and parameters. Completion options are found by +# perl-ing oci_commands, which makes it really FAST and effective. +# +# REQUIRES: $HOME/.oci/oci_commands file, a text file listing +# of oci commands and parameters (courtesy of Project o) +OCI_COMMANDS=$HOME/.oci/oci_commands +[ ! -e $OCI_COMMANDS ] && OCI_COMMANDS=`which oci`_commands + +# zsh setup for MacOS +# autoload -U +X bashcompinit && bashcompinit +# autoload -U +X compinit && compinit + +# zsh setup for Linux +# autoload bashcompinit +# bashcompinit + +# call function _o_completion for o or oci when [tab] is pressed +complete -F _o_completion o +complete -F _o_completion oci + +# log useful for debugging; otherwise it's hard to see what's going on +pdate() { echo -e "import datetime as dt\nprint(dt.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3])"| python; } +log() { echo $(pdate) $@ >> log.txt ;} + +# This function called on [tab] press +_o_completion() { + export word="${COMP_WORDS[COMP_CWORD]}" # possible incomplete last word + IN="${COMP_WORDS[@]}" + IN=${IN/#o/oci} + IN=${IN/#ocici/oci} + # log A .${IN}. word .${word}. + export IN + if [ "${IN}" = "${IN%% -*}" ] + then + if [ "$word" != "" ]; then + clist=$(perl -e 'my %c; if ($ENV{IN} =~ /(.*) (.*)/) { ($p1,$p2)=($1,$2) } # noqa: E999 + while (<>) { $c{$1}=1 if /^$p1 ($p2\S*) /;} + $,="\n"; print sort keys %c;' $OCI_COMMANDS) + # log B $clist + else + IN="${IN%% } " + clist=$(perl -e 'my %c; while (<>) { $c{$1}=1 if /^$ENV{IN}([^-]\S+) /;} + $,="\n"; print sort keys %c;' $OCI_COMMANDS) + # log C $clist + [ "$clist" = "" ] && clist=$(grep "$IN" $OCI_COMMANDS | + perl -pe 's/.*? -/-/; s/\+ //; s/ [^-]\S+//g; @c{split /\s+/}=(); $,="\n"; print sort keys %c') + # log D $clist + fi + COMPREPLY=($(compgen -W "$clist" -- "$word")); + else + clist=$(grep "${IN%% -*}" $OCI_COMMANDS | + perl -ne 's/.*? -/-/; s/\+ //; s/ [^-]\S+//g; @c{split /\s+/}=(); $,="\n"; print sort keys %c') + # log E $clist + for i in ${COMP_WORDS[@]}; do # remove already used params from list + [ "${i%%-*}" = "" ] && [ "$i" != "$word" ] && clist=${clist/$i/} + done + COMPREPLY=($(compgen -W "$clist" -- "$word")); + fi + # log R ${COMPREPLY[@]} +} diff --git a/scripts/examples/project_o/o b/scripts/examples/project_o/o index c358de9af..4015fe352 100755 --- a/scripts/examples/project_o/o +++ b/scripts/examples/project_o/o @@ -21,8 +21,8 @@ if (sys.platform != "win32"): import fcntl import errno import datetime -VERSION = "1.7" -UPDATED = "2023-05-02" +VERSION = "1.8" +UPDATED = "2023-06-12" # ============================================================================== # Global variables @@ -57,7 +57,6 @@ default_out_spec = 'name{:.30}#shape#cidr-block#prohibit-public{:5.5}' \ '#token' matches = [] # list of commands that match user input -best_match = None # matches[best_match] is the closest match all_options_for_this_cmd = '' # for best_match remaining_options = '' # for best_match options_out = [] # list of expanded options to be passed to oci cli @@ -91,11 +90,13 @@ def usage(s=''): Options and parameters for These will be expanded into a more correct oci command - . or go Run the oci command if the line ends with "." (or "go")""") + . or go If the line ends with "." (or "go") run the oci command + ! If line ends with "!", force-run the command, even if + param substitution fails""") if s != "help": print(""" - o help More "o" options. Use "--help ." to get oci help""") + o help More "o" options and usage.""") else: print(""" More output options: @@ -122,7 +123,15 @@ def usage(s=''): o prune "name" Remove OCIDs for resources matching "name" from $HOME/.oci/ocids. If "name" is a compartment, remove - all OCIDS under compartment "name".""") + all OCIDS under compartment "name". + + touch $HOME/.oci/.otmp Activate "save last result" feature. With this + you can reformat output from the last command + without re-running the command with: + o -o + + o help Show all parameters, including globals + o --help . Get help from oci""") print(""" o Version {} - {} """.format(VERSION, UPDATED)) @@ -271,10 +280,9 @@ def setup_ocids_file(): and I'll do this for you: - o iam compartment get -c go - o iam ad list -c go - o iam region list go - o iam compartment list -c -ciis true -all go + o iam compartment list -c -ciis true -all . + o iam ad list -c . + o iam region-subscription list . """) # To be extra helpful, get likely tenancy ocid from oci config file @@ -293,23 +301,30 @@ and I'll do this for you: if len(sys.argv) == 3: print("Tenancy name:", sys.argv[2]) print(bold('Setting up your ' + ocids_file_name + ' file:')) - if run_command(sys.argv[0] + ' -o name iam compartment get -c ' + sys.argv[1] + ' go'): + print(bold('\nGetting compartment names and ocids...'), end='') + if run_command(sys.argv[0] + ' -o name iam compartment list -c ' + sys.argv[1] + ' -ciis true -all .'): + print('\nThat didn\'t work. Your account may need additional privileges.') + exit(0) + print(bold('\nGetting availability domains...'), end='') + run_command(sys.argv[0] + ' -o name iam ad list -c ' + sys.argv[1] + ' .') + print(bold('\nGetting regions...'), end='') + run_command(sys.argv[0] + ' -o name iam region-subscription list .') + print(bold('\nGetting tenancy name from root compartment...'), end='') + if run_command(sys.argv[0] + ' -o name iam compartment get -c ' + sys.argv[1] + ' .'): # compartment get on tenancy failed; try saving a stub for tenancy - print("\nThat didn't work. Creating a stub for tenancy root.") + print("\nCould not get root compartment.") + tenancy_name = input(bold("Enter tenancy name: ")) + if not tenancy_name: + tenancy_name = 'root' newids = {'root': { 'type': 'tenancy', - 'alias': 'root' if len(sys.argv) == 2 - else sys.argv[2], + 'alias': tenancy_name, 'id': sys.argv[1], - 'name': 'root' if len(sys.argv) == 2 else sys.argv[2] + 'name': tenancy_name, }, } ocids_file('write', newids) exit(0) - run_command(sys.argv[0] + ' -o name iam ad list -c ' + sys.argv[1] + ' go') - run_command(sys.argv[0] + ' -o name iam region list go') - run_command(sys.argv[0] + ' -o name iam compartment list -c ' - + sys.argv[1] + ' -ciis true -all go') print('\n' + bold('All set. Have fun!\n')) exit(0) @@ -342,7 +357,7 @@ def ocids_file(action, new_ocids={}): # Run setup if no ocids_file exists or # if this is an "o " setup command and new_ocids is empty if (not new_ocids - and (not re.search('get.*-c ocid..tenancy', ' '.join(sys.argv)) + and (not (re.search('iam compartment list .*-c ocid..tenancy', ' '.join(sys.argv))) and (not os.path.exists(ocids_file_name) or re.search('o [^c]*ocid..tenancy', ' '.join(sys.argv))))): setup_ocids_file() @@ -570,10 +585,8 @@ def args_match_command(c, params): # accept plurals in place of singulars if (len(a) > 3 and a[-1] == 's' and a not in ['address', 'access', 'waas']): a = a[:-1] - - # stop searching at first -opt - if (len(a) and a[0] == '-'): - return (True) + if a[-2:] == 'ie': + a = a[:-2] # Look for full-word match first if ' ' + a + ' ' in action: @@ -584,7 +597,7 @@ def args_match_command(c, params): # look for word starting with arg if ' ' + a in action or '-' + a in action: # Scratch out this match - action = re.sub(' ' + a + r'\S+', ' ', action, count=1) + action = re.sub(' ' + r'(\S+-)*' + a + r'(\S+)', ' ', action, count=1) continue # look for rlc -> really-long-command @@ -1163,7 +1176,7 @@ def jdump_item(item, indent=2): re.sub(r'(?m)^[\s{}[\],]+\n', '', # noqa: E128 # noqa: E128 change key: [ value ] -> key: value re.sub(r': \[\s+("[^"]*")\s+]', r': \1', # noqa: E128 - json.dumps(item, indent=indent))))))) # noqa: E128 + json.dumps(item, indent=indent, ensure_ascii=False))))))) # noqa: E128 # ============================================================================== @@ -1212,7 +1225,7 @@ def show_item(item, fields, sep): else: out.append(value) else: - if field == 'id' and sep == '|' and user_out_spec == default_out_spec: + if field == 'id' and sep == '|' and user_out_spec == default_out_spec and 'ocid' in value: out.append(' ' + value.split('.')[3]) out.append(column[field]['format'].format(re.sub(r'[{}\'[\]\n]', '', value)[ column[field]['offset']:])) @@ -1959,20 +1972,19 @@ elif 'help' == CLI_params[-1]: # ============================================================================== # Identify matching oci cli command(s) # ============================================================================== -options_in_args = any(len(i) > 0 and '-' in i[0] for i in CLI_params) +command_words = [i for i, w in enumerate(CLI_params) if w.startswith('-')] +ncw = command_words[0] if command_words else len(CLI_params) +options_in_args = len(command_words) > 0 -# Prioritize core services above others. The list could include: os, fs, bv -# But these already have priority due to their short service names. -# Each service name must end with ' '. -priority_services = ('compute ', 'bv ', 'os ', 'network ', 'iam ') +# Prioritize core services above others. +priority_services = ('compute ', 'bv ', 'os ', 'network ', 'iam ', 'db ') # Find matching commands. Sort by priority, then by command length. -matches = sorted([c for c in command if args_match_command(c, CLI_params)], +matches = sorted([c for c in command if args_match_command(c, CLI_params[:ncw])], key=lambda c: (len(c['action']) if len(c['action']) < 25 else int(round(len(c['action']) / 10.) * 10.)) if c['action'].startswith(priority_services) else (1.5 * len(c['action']) if len(c['action']) < 25 else 1.5 * int(round(len(c['action']) / 10.) * 10.)), reverse=True) -best_match = len(matches) - 1 # ============================================================================== # Take action - either show help or 'go' run the command @@ -1982,8 +1994,8 @@ if len(matches) == 0: + '\n\nTry: o .') # If many matches, list matches and exit -elif not (len(matches) <= 16 or ('db' in CLI_params and len(matches) <= 50) - or matches[best_match]['action'].split(' ')[0] + ' ' in priority_services): +elif not (len(matches) <= 16 + or (matches[-1]['action'].split(' ')[0] + ' ' in priority_services and len(matches) < 200 and ncw > 1)): print(bold('Possible commands:')) for c in matches: show_command(c, prefix=' ') @@ -1994,28 +2006,30 @@ elif not (len(matches) <= 16 or ('db' in CLI_params and len(matches) <= 50) elif show_help: for c in matches: show_command(c, full=True) - print('use:', bold('o ' + c['action'] + ' --help go'), 'for full oci help') + print('For oci help:', bold('o ' + c['action'] + ' --help .\n') + + 'https://docs.oracle.com/en-us/iaas/tools/oci-cli/latest/oci_cli_docs/cmdref/' + + c['action'].replace(' ', '/') + '.html') exit(0) # Fewer than 16 matches. Didn't ask for help. elif not go and quiet < 1: if len(matches) > 1: if options_in_args: - print(bold(str(len(matches)) + ' other matching commands not shown.' + print(bold(str(len(matches) - 1) + ' other matching commands not shown.' + ' (Remove parameters to see other commands.)'), end='') else: print(bold('Possible matches:')) for i in range(len(matches)): - if i != best_match: + if i != len(matches) - 1: show_command(matches[i], prefix=' ') print(bold('\nBest match:')) - show_command(matches[best_match], full=True) + show_command(matches[-1], full=True) # ============================================================================== -# We've settled on matching_command[best_match]. +# We've settled on matches[-1] as the best match. # Continue interpreting additional parameters (even if no 'go') # ============================================================================== -c = matches[best_match] +c = matches[-1] oci_command_line = 'oci ' + c['action'] + ' ' if c['action'] in ('audit event list', 'logging-search search-logs') and \ diff --git a/scripts/examples/project_o/oci_commands b/scripts/examples/project_o/oci_commands index f76702023..840e19ad7 100644 --- a/scripts/examples/project_o/oci_commands +++ b/scripts/examples/project_o/oci_commands @@ -1,5 +1,13 @@ -3.26 +3.28.2 global_options --auth --auth-purpose --cert-bundle --cli-auto-prompt --cli-rc-file --config-file --connection-timeout --debug --defaults-file --endpoint --from-json --generate-full-command-json-input --generate-param-json-input --help --latest-version --max-retries --no-retry --opc-client-request-id --opc-request-id --output --profile --query --raw-output --read-timeout --realm-specific-endpoint --region --release-info --request-id --version +oci access-governance-cp governance-instance change-compartment --compartment-id [text] --governance-instance-id [text] + --from-json [text] --if-match [text] +oci access-governance-cp governance-instance create --compartment-id [text] --display-name [text] --idcs-access-token [text] --license-type [AG_OCI|AG_ORACLE_WORKLOADS|BRING_YOUR_OWN_LICENSE|NEW_LICENSE] --tenancy-namespace [text] + --defined-tags [complex type] --description [text] --freeform-tags [complex type] --from-json [text] --max-wait-seconds [integer] --system-tags [complex type] --wait-for-state [ACTIVE|CREATING|DELETED|DELETING|NEEDS_ATTENTION] --wait-interval-seconds [integer] +oci access-governance-cp governance-instance delete --governance-instance-id [text] + --force --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACTIVE|CREATING|DELETED|DELETING|NEEDS_ATTENTION] --wait-interval-seconds [integer] +oci access-governance-cp governance-instance get --governance-instance-id [text] + --from-json [text] +oci access-governance-cp governance-instance update --governance-instance-id [text] + --defined-tags [complex type] --description [text] --display-name [text] --force --freeform-tags [complex type] --from-json [text] --if-match [text] --license-type [AG_OCI|AG_ORACLE_WORKLOADS|BRING_YOUR_OWN_LICENSE|NEW_LICENSE] --max-wait-seconds [integer] --wait-for-state [ACTIVE|CREATING|DELETED|DELETING|NEEDS_ATTENTION] --wait-interval-seconds [integer] +oci access-governance-cp governance-instance update-governance-instance-configuration --compartment-id [text] + --force --from-json [text] --if-match [text] --sender-info [complex type] +oci access-governance-cp governance-instance-collection list-governance-instances --compartment-id [text] + --all --display-name [text] --from-json [text] --id [text] --lifecycle-state [text] --limit [integer] --page [text] --page-size [integer] --sort-by [displayName|lifecycleState|timeCreated|timeUpdated] --sort-order [ASC|DESC] +oci access-governance-cp governance-instance-configuration get --compartment-id [text] + --from-json [text] oci adm knowledge-base change-compartment --compartment-id [text] --knowledge-base-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED|WAITING] --wait-interval-seconds [integer] oci adm knowledge-base create --compartment-id [text] + --defined-tags [complex type] --display-name [text] --freeform-tags [complex type] --from-json [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED|WAITING] --wait-interval-seconds [integer] oci adm knowledge-base delete --knowledge-base-id [text] + --force --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED|WAITING] --wait-interval-seconds [integer] @@ -402,7 +410,7 @@ oci bds bds-metastore-configuration get --bds-instance-id [text] --metastore-con oci bds bds-metastore-configuration list --bds-instance-id [text] + --all --bds-api-key-id [text] --display-name [text] --from-json [text] --lifecycle-state [ACTIVATING|ACTIVE|CREATING|DELETED|DELETING|FAILED|INACTIVE|UPDATING] --limit [integer] --metastore-id [text] --metastore-type [EXTERNAL|LOCAL] --page [text] --page-size [integer] --sort-by [displayName|timeCreated] --sort-order [ASC|DESC] oci bds bds-metastore-configuration test --bds-instance-id [text] --cluster-admin-password [text] --metastore-config-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] oci bds bds-metastore-configuration update --bds-instance-id [text] --metastore-config-id [text] + --bds-api-key-id [text] --bds-api-key-passphrase [text] --cluster-admin-password [text] --display-name [text] --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] -oci bds block-storage add --bds-instance-id [text] --block-volume-size-in-gbs [integer] --cluster-admin-password [text] --node-type [COMPUTE_ONLY_WORKER|WORKER] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] +oci bds block-storage add --bds-instance-id [text] --block-volume-size-in-gbs [integer] --cluster-admin-password [text] --node-type [COMPUTE_ONLY_WORKER|KAFKA_BROKER|WORKER] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] oci bds cloudsql add --bds-instance-id [text] --cluster-admin-password [text] --shape [text] + --block-volume-size-in-gbs [integer] --from-json [text] --if-match [text] --max-wait-seconds [integer] --shape-config [complex type] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] oci bds cloudsql remove --bds-instance-id [text] --cluster-admin-password [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] oci bds instance change-compartment --bds-instance-id [text] --compartment-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] @@ -420,7 +428,9 @@ oci bds instance restart-node --bds-instance-id [text] --node-id [text] + --from oci bds instance start --bds-instance-id [text] --cluster-admin-password [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] oci bds instance stop --bds-instance-id [text] --cluster-admin-password [text] + --from-json [text] --if-match [text] --is-force-stop-jobs [boolean] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] oci bds instance update --bds-instance-id [text] + --bootstrap-script-url [text] --defined-tags [complex type] --display-name [text] --force --freeform-tags [complex type] --from-json [text] --if-match [text] --kms-key-id [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] -oci bds instance worker-nodes add --bds-instance-id [text] --cluster-admin-password [text] --node-type [COMPUTE_ONLY_WORKER|EDGE|WORKER] --number-of-worker-nodes [integer] + --block-volume-size-in-gbs [integer] --from-json [text] --if-match [text] --max-wait-seconds [integer] --shape [text] --shape-config [complex type] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] +oci bds instance worker-nodes add --bds-instance-id [text] --cluster-admin-password [text] --node-type [COMPUTE_ONLY_WORKER|EDGE|KAFKA_BROKER|WORKER] --number-of-worker-nodes [integer] + --block-volume-size-in-gbs [integer] --from-json [text] --if-match [text] --max-wait-seconds [integer] --shape [text] --shape-config [complex type] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] +oci bds kafka add --bds-instance-id [text] --cluster-admin-password [text] --number-of-kafka-nodes [integer] --shape [text] + --block-volume-size-in-gbs [integer] --from-json [text] --if-match [text] --max-wait-seconds [integer] --shape-config [complex type] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] +oci bds kafka remove --bds-instance-id [text] --cluster-admin-password [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] oci bds work-request get --work-request-id [text] + --from-json [text] oci bds work-request list --compartment-id [text] + --all --from-json [text] --limit [integer] --page [text] --page-size [integer] --resource-id [text] --sort-by [displayName|timeCreated] --sort-order [ASC|DESC] oci bds work-request-error list --work-request-id [text] + --all --from-json [text] --limit [integer] --page [text] --page-size [integer] --sort-by [displayName|timeCreated] --sort-order [ASC|DESC] @@ -860,6 +870,7 @@ oci compute capacity-reservation instance list --capacity-reservation-id [text] oci compute capacity-reservation instance-shape list --compartment-id [text] + --all --availability-domain [text] --display-name [text] --from-json [text] --limit [integer] --page [text] --page-size [integer] --sort-by [DISPLAYNAME|TIMECREATED] --sort-order [ASC|DESC] oci compute capacity-reservation list --compartment-id [text] + --all --availability-domain [text] --display-name [text] --from-json [text] --lifecycle-state [ACTIVE|CREATING|DELETED|DELETING|MOVING|UPDATING] --limit [integer] --page [text] --page-size [integer] --sort-by [DISPLAYNAME|TIMECREATED] --sort-order [ASC|DESC] oci compute capacity-reservation update --capacity-reservation-id [text] + --defined-tags [complex type] --display-name [text] --force --freeform-tags [complex type] --from-json [text] --if-match [text] --instance-reservation-configs [complex type] --is-default-reservation [boolean] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] +oci compute compute-capacity-report create --availability-domain [text] --compartment-id [text] --shape-availabilities [complex type] + --from-json [text] oci compute compute-cluster change-compartment --compartment-id [text] --compute-cluster-id [text] + --from-json [text] --if-match [text] oci compute compute-cluster create --availability-domain [text] --compartment-id [text] + --defined-tags [complex type] --display-name [text] --freeform-tags [complex type] --from-json [text] --max-wait-seconds [integer] --wait-for-state [ACTIVE|DELETED] --wait-interval-seconds [integer] oci compute compute-cluster delete --compute-cluster-id [text] + --force --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACTIVE|DELETED] --wait-interval-seconds [integer] @@ -971,6 +982,7 @@ oci compute-management instance-pool list --compartment-id [text] + --all --disp oci compute-management instance-pool list-instances --compartment-id [text] --instance-pool-id [text] + --all --display-name [text] --from-json [text] --limit [integer] --page [text] --page-size [integer] --sort-by [DISPLAYNAME|TIMECREATED] --sort-order [ASC|DESC] oci compute-management instance-pool reset --instance-pool-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [PROVISIONING|RUNNING|SCALING|STARTING|STOPPED|STOPPING|TERMINATED|TERMINATING] --wait-interval-seconds [integer] oci compute-management instance-pool softreset --instance-pool-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [PROVISIONING|RUNNING|SCALING|STARTING|STOPPED|STOPPING|TERMINATED|TERMINATING] --wait-interval-seconds [integer] +oci compute-management instance-pool softstop --instance-pool-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [PROVISIONING|RUNNING|SCALING|STARTING|STOPPED|STOPPING|TERMINATED|TERMINATING] --wait-interval-seconds [integer] oci compute-management instance-pool start --instance-pool-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [PROVISIONING|RUNNING|SCALING|STARTING|STOPPED|STOPPING|TERMINATED|TERMINATING] --wait-interval-seconds [integer] oci compute-management instance-pool stop --instance-pool-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [PROVISIONING|RUNNING|SCALING|STARTING|STOPPED|STOPPING|TERMINATED|TERMINATING] --wait-interval-seconds [integer] oci compute-management instance-pool terminate --instance-pool-id [text] + --force --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [PROVISIONING|RUNNING|SCALING|STARTING|STOPPED|STOPPING|TERMINATED|TERMINATING] --wait-interval-seconds [integer] @@ -1147,85 +1159,6 @@ oci data-catalog work-request get --work-request-id [text] + --from-json [text] oci data-catalog work-request list --compartment-id [text] + --all --from-json [text] --limit [integer] --page [text] --page-size [integer] oci data-catalog work-request-error list --work-request-id [text] + --all --from-json [text] --limit [integer] --page [text] --page-size [integer] --sort-by [CODE|TIMESTAMP] --sort-order [ASC|DESC] oci data-catalog work-request-log list --work-request-id [text] + --all --from-json [text] --limit [integer] --page [text] --page-size [integer] --sort-by [MESSAGE|TIMESTAMP] --sort-order [ASC|DESC] -oci data-connectivity attach-data-asset-info create-attach-data-asset --data-assets [complex type] --endpoint-id [text] --registry-id [text] + --from-json [text] --if-match [text] -oci data-connectivity connection create --identifier [text] --name [text] --properties [complex type] --registry-id [text] --type [text] + --connection-properties [complex type] --description [text] --from-json [text] --is-default [boolean] --key [text] --metadata [complex type] --model-type [text] --model-version [text] --object-status [integer] --object-version [integer] --primary-schema [complex type] --registry-metadata [complex type] -oci data-connectivity connection delete --connection-key [text] --registry-id [text] + --force --from-json [text] --if-match [text] -oci data-connectivity connection get --connection-key [text] --registry-id [text] + --from-json [text] -oci data-connectivity connection list --data-asset-key [text] --registry-id [text] + --all --favorites-query-param [ALL|FAVORITES_ONLY|NON_FAVORITES_ONLY] --fields [text] --from-json [text] --limit [integer] --name [text] --page [text] --page-size [integer] --sort-by [displayName|id|timeCreated] --sort-order [ASC|DESC] --type [text] -oci data-connectivity connection update --connection-key [text] --properties [complex type] --registry-id [text] --type [text] + --connection-properties [complex type] --description [text] --force --from-json [text] --identifier [text] --if-match [text] --is-default [boolean] --metadata [complex type] --model-type [text] --model-version [text] --name [text] --object-status [integer] --object-version [integer] --primary-schema [complex type] --registry-metadata [complex type] -oci data-connectivity connection-validation create --registry-id [text] + --connection [complex type] --data-asset [complex type] --endpoint-id [text] --from-json [text] --registry-metadata [complex type] -oci data-connectivity connectivity-validation create --model-type [SOURCE_OPERATOR|TARGET_OPERATOR] --registry-id [text] + --description [text] --endpoint-id [text] --from-json [text] --identifier [text] --input-ports [complex type] --key [text] --model-version [text] --name [text] --object-status [integer] --object-version [integer] --op-config-values [complex type] --output-ports [complex type] --parameters [complex type] --parent-ref [complex type] -oci data-connectivity connectivity-validation create-connectivity-validation-source --entity [complex type] --registry-id [text] + --description [text] --endpoint-id [text] --fixed-data-shape [complex type] --from-json [text] --identifier [text] --input-ports [complex type] --is-copy-fields [boolean] --is-predefined-shape [boolean] --is-read-access [boolean] --key [text] --model-version [text] --name [text] --object-status [integer] --object-version [integer] --op-config-values [complex type] --output-ports [complex type] --parameters [complex type] --parent-ref [complex type] --read-operation-config [complex type] --schema-drift-config [complex type] -oci data-connectivity connectivity-validation create-connectivity-validation-target --entity [complex type] --registry-id [text] + --data-property [APPEND|BACKUP|IGNORE|MERGE|OVERWRITE|TRUNCATE] --description [text] --endpoint-id [text] --fixed-data-shape [complex type] --from-json [text] --identifier [text] --input-ports [complex type] --is-copy-fields [boolean] --is-predefined-shape [boolean] --is-read-access [boolean] --key [text] --model-version [text] --name [text] --object-status [integer] --object-version [integer] --op-config-values [complex type] --output-ports [complex type] --parameters [complex type] --parent-ref [complex type] --schema-drift-config [complex type] --write-operation-config [complex type] -oci data-connectivity data-asset create --identifier [text] --name [text] --properties [complex type] --registry-id [text] --type [text] + --asset-properties [complex type] --default-connection [complex type] --description [text] --end-points [complex type] --external-key [text] --from-json [text] --key [text] --metadata [complex type] --model-type [text] --model-version [text] --native-type-system [complex type] --object-status [integer] --object-version [integer] --registry-metadata [complex type] -oci data-connectivity data-asset delete --data-asset-key [text] --registry-id [text] + --force --from-json [text] --if-match [text] -oci data-connectivity data-asset get --data-asset-key [text] --registry-id [text] + --from-json [text] -oci data-connectivity data-asset list --registry-id [text] + --all --endpoint-ids [text] --exclude-endpoint-ids [text] --exclude-types [text] --favorites-query-param [ALL|FAVORITES_ONLY|NON_FAVORITES_ONLY] --fields [text] --folder-id [text] --from-json [text] --include-types [text] --limit [integer] --name [text] --page [text] --page-size [integer] --sort-by [displayName|id|timeCreated] --sort-order [ASC|DESC] -oci data-connectivity data-asset update --data-asset-key [text] --properties [complex type] --registry-id [text] --type [text] + --asset-properties [complex type] --default-connection [complex type] --description [text] --end-points [complex type] --external-key [text] --force --from-json [text] --identifier [text] --if-match [text] --metadata [complex type] --model-type [text] --model-version [text] --name [text] --native-type-system [complex type] --object-status [integer] --object-version [integer] --registry-metadata [complex type] -oci data-connectivity data-entity create-data-preview-ds --registry-id [text] + --connection [complex type] --data-asset [complex type] --data-entity-description [text] --data-entity-entity-properties [complex type] --data-entity-entity-type [DATA_STORE|FILE|MESSAGE|SQL|TABLE|VIEW] --data-entity-filters [text] --data-entity-identifier [text] --data-entity-key [text] --data-entity-metadata [complex type] --data-entity-name [text] --data-entity-parent-ref [complex type] --data-entity-shape [complex type] --data-entity-shape-id [text] --data-entity-unique-keys [complex type] --effective-date-disabled [boolean] --endpoint-id [text] --external-key [text] --external-key [text] --foreign-keys [complex type] --foreign-keys [complex type] --from-json [text] --if-match [text] --is-date-disabled [boolean] --is-flex [boolean] --is-flex-data-store [boolean] --is-silent-error [boolean] --is-silent-error [boolean] --label [text] --model-version [text] --model-version [text] --object-status [integer] --object-status [integer] --object-version [integer] --object-version [integer] --other-type-label [text] --read-operation-config [complex type] --resource-name [text] --resource-name [text] --schema [complex type] --supports-incremental [boolean] --supports-incremental [boolean] -oci data-connectivity data-entity create-data-preview-file --registry-id [text] + --connection [complex type] --data-asset [complex type] --data-entity-data-format [complex type] --data-entity-description [text] --data-entity-entity-properties [complex type] --data-entity-entity-type [DATA_STORE|FILE|MESSAGE|SQL|TABLE|VIEW] --data-entity-identifier [text] --data-entity-key [text] --data-entity-metadata [complex type] --data-entity-name [text] --data-entity-parent-ref [complex type] --data-entity-shape [complex type] --data-entity-shape-id [text] --data-entity-unique-keys [complex type] --endpoint-id [text] --external-key [text] --external-key [text] --foreign-keys [complex type] --foreign-keys [complex type] --from-json [text] --if-match [text] --label [text] --model-version [text] --model-version [text] --object-status [integer] --object-status [integer] --object-version [integer] --object-version [integer] --read-operation-config [complex type] --resource-name [text] --resource-name [text] --schema [complex type] --type-label [text] -oci data-connectivity data-entity create-data-preview-sql --registry-id [text] + --connection [complex type] --data-asset [complex type] --data-entity-description [text] --data-entity-entity-properties [complex type] --data-entity-entity-type [DATA_STORE|FILE|MESSAGE|SQL|TABLE|VIEW] --data-entity-identifier [text] --data-entity-key [text] --data-entity-metadata [complex type] --data-entity-name [text] --data-entity-parent-ref [complex type] --data-entity-shape [complex type] --data-entity-shape-id [text] --data-entity-sql-query [text] --data-entity-unique-keys [complex type] --endpoint-id [text] --external-key [text] --external-key [text] --foreign-keys [complex type] --foreign-keys [complex type] --from-json [text] --if-match [text] --label [text] --model-version [text] --model-version [text] --object-status [integer] --object-status [integer] --object-version [integer] --object-version [integer] --read-operation-config [complex type] --resource-name [text] --resource-name [text] --schema [complex type] --type-label [text] -oci data-connectivity data-entity create-data-preview-table --registry-id [text] + --connection [complex type] --data-asset [complex type] --data-entity-description [text] --data-entity-entity-properties [complex type] --data-entity-entity-type [DATA_STORE|FILE|MESSAGE|SQL|TABLE|VIEW] --data-entity-identifier [text] --data-entity-key [text] --data-entity-metadata [complex type] --data-entity-name [text] --data-entity-parent-ref [complex type] --data-entity-shape [complex type] --data-entity-shape-id [text] --data-entity-unique-keys [complex type] --endpoint-id [text] --external-key [text] --external-key [text] --foreign-keys [complex type] --foreign-keys [complex type] --from-json [text] --if-match [text] --label [text] --model-version [text] --model-version [text] --object-status [integer] --object-status [integer] --object-version [integer] --object-version [integer] --read-operation-config [complex type] --resource-name [text] --resource-name [text] --schema [complex type] --type-label [text] -oci data-connectivity data-entity create-data-preview-view --registry-id [text] + --connection [complex type] --data-asset [complex type] --data-entity-description [text] --data-entity-entity-properties [complex type] --data-entity-entity-type [DATA_STORE|FILE|MESSAGE|SQL|TABLE|VIEW] --data-entity-identifier [text] --data-entity-key [text] --data-entity-metadata [complex type] --data-entity-name [text] --data-entity-parent-ref [complex type] --data-entity-shape [complex type] --data-entity-shape-id [text] --data-entity-unique-keys [complex type] --endpoint-id [text] --external-key [text] --external-key [text] --foreign-keys [complex type] --foreign-keys [complex type] --from-json [text] --if-match [text] --label [text] --model-version [text] --model-version [text] --object-status [integer] --object-status [integer] --object-version [integer] --object-version [integer] --read-operation-config [complex type] --resource-name [text] --resource-name [text] --schema [complex type] --type-label [text] -oci data-connectivity data-entity create-data-profile-ds --registry-id [text] + --connection [complex type] --data-asset [complex type] --data-entity-description [text] --data-entity-entity-properties [complex type] --data-entity-entity-type [DATA_STORE|FILE|MESSAGE|SQL|TABLE|VIEW] --data-entity-filters [text] --data-entity-identifier [text] --data-entity-key [text] --data-entity-metadata [complex type] --data-entity-name [text] --data-entity-parent-ref [complex type] --data-entity-shape [complex type] --data-entity-shape-id [text] --data-entity-unique-keys [complex type] --effective-date-disabled [boolean] --endpoint-id [text] --external-key [text] --external-key [text] --foreign-keys [complex type] --foreign-keys [complex type] --from-json [text] --if-match [text] --is-date-disabled [boolean] --is-flex [boolean] --is-flex-data-store [boolean] --is-silent-error [boolean] --is-silent-error [boolean] --label [text] --model-version [text] --model-version [text] --object-status [integer] --object-status [integer] --object-version [integer] --object-version [integer] --profile-config [complex type] --read-operation-config [complex type] --resource-name [text] --resource-name [text] --schema [complex type] --supports-incremental [boolean] --supports-incremental [boolean] --type-label [text] -oci data-connectivity data-entity create-data-profile-file --registry-id [text] + --connection [complex type] --data-asset [complex type] --data-entity-data-format [complex type] --data-entity-description [text] --data-entity-entity-properties [complex type] --data-entity-entity-type [DATA_STORE|FILE|MESSAGE|SQL|TABLE|VIEW] --data-entity-identifier [text] --data-entity-key [text] --data-entity-metadata [complex type] --data-entity-name [text] --data-entity-parent-ref [complex type] --data-entity-shape [complex type] --data-entity-shape-id [text] --data-entity-unique-keys [complex type] --endpoint-id [text] --external-key [text] --external-key [text] --foreign-keys [complex type] --foreign-keys [complex type] --from-json [text] --if-match [text] --label [text] --model-version [text] --model-version [text] --object-status [integer] --object-status [integer] --object-version [integer] --object-version [integer] --profile-config [complex type] --read-operation-config [complex type] --resource-name [text] --resource-name [text] --schema [complex type] --type-label [text] -oci data-connectivity data-entity create-data-profile-sql --registry-id [text] + --connection [complex type] --data-asset [complex type] --data-entity-description [text] --data-entity-entity-properties [complex type] --data-entity-entity-type [DATA_STORE|FILE|MESSAGE|SQL|TABLE|VIEW] --data-entity-identifier [text] --data-entity-key [text] --data-entity-metadata [complex type] --data-entity-name [text] --data-entity-parent-ref [complex type] --data-entity-shape [complex type] --data-entity-shape-id [text] --data-entity-sql-query [text] --data-entity-unique-keys [complex type] --endpoint-id [text] --external-key [text] --external-key [text] --foreign-keys [complex type] --foreign-keys [complex type] --from-json [text] --if-match [text] --label [text] --model-version [text] --model-version [text] --object-status [integer] --object-status [integer] --object-version [integer] --object-version [integer] --profile-config [complex type] --read-operation-config [complex type] --resource-name [text] --resource-name [text] --schema [complex type] --type-label [text] -oci data-connectivity data-entity create-data-profile-table --registry-id [text] + --connection [complex type] --data-asset [complex type] --data-entity-description [text] --data-entity-entity-properties [complex type] --data-entity-entity-type [DATA_STORE|FILE|MESSAGE|SQL|TABLE|VIEW] --data-entity-identifier [text] --data-entity-key [text] --data-entity-metadata [complex type] --data-entity-name [text] --data-entity-parent-ref [complex type] --data-entity-shape [complex type] --data-entity-shape-id [text] --data-entity-unique-keys [complex type] --endpoint-id [text] --external-key [text] --external-key [text] --foreign-keys [complex type] --foreign-keys [complex type] --from-json [text] --if-match [text] --label [text] --model-version [text] --model-version [text] --object-status [integer] --object-status [integer] --object-version [integer] --object-version [integer] --profile-config [complex type] --read-operation-config [complex type] --resource-name [text] --resource-name [text] --schema [complex type] --type-label [text] -oci data-connectivity data-entity create-data-profile-view --registry-id [text] + --connection [complex type] --data-asset [complex type] --data-entity-description [text] --data-entity-entity-properties [complex type] --data-entity-entity-type [DATA_STORE|FILE|MESSAGE|SQL|TABLE|VIEW] --data-entity-identifier [text] --data-entity-key [text] --data-entity-metadata [complex type] --data-entity-name [text] --data-entity-parent-ref [complex type] --data-entity-shape [complex type] --data-entity-shape-id [text] --data-entity-unique-keys [complex type] --endpoint-id [text] --external-key [text] --external-key [text] --foreign-keys [complex type] --foreign-keys [complex type] --from-json [text] --if-match [text] --label [text] --model-version [text] --model-version [text] --object-status [integer] --object-status [integer] --object-version [integer] --object-version [integer] --profile-config [complex type] --read-operation-config [complex type] --resource-name [text] --resource-name [text] --schema [complex type] --type-label [text] -oci data-connectivity data-entity create-entity-shape --connection-key [text] --model-type [DATA_STORE_ENTITY|FILE_ENTITY|MESSAGE_ENTITY|SQL_ENTITY|TABLE_ENTITY|VIEW_ENTITY] --name [text] --registry-id [text] --schema-resource-name [text] + --authorization-mode [INSTANCE_PRINCIPAL|OBO|RESOURCE_PRINCIPAL|UNDEFINED|USER_PRINCIPAL] --endpoint-id [text] --entity-properties [complex type] --entity-type [DATA_STORE|FILE|MESSAGE|SQL|TABLE|VIEW] --external-key [text] --foreign-keys [complex type] --from-json [text] --identifier [text] --if-match [text] --key [text] --model-version [text] --object-status [integer] --object-version [integer] --other-type-label [text] --parent-ref [complex type] --resource-name [text] --shape [complex type] --shape-id [text] --types [complex type] --unique-keys [complex type] -oci data-connectivity data-entity create-entity-shape-create-entity-shape-from-message --connection-key [text] --name [text] --registry-id [text] --schema-resource-name [text] + --authorization-mode [INSTANCE_PRINCIPAL|OBO|RESOURCE_PRINCIPAL|UNDEFINED|USER_PRINCIPAL] --data-format [complex type] --endpoint-id [text] --entity-properties [complex type] --entity-type [DATA_STORE|FILE|MESSAGE|SQL|TABLE|VIEW] --external-key [text] --foreign-keys [complex type] --from-json [text] --identifier [text] --if-match [text] --key [text] --model-version [text] --object-status [integer] --object-version [integer] --other-type-label [text] --parent-ref [complex type] --resource-name [text] --shape [complex type] --shape-id [text] --types [complex type] --unique-keys [complex type] -oci data-connectivity data-entity create-entity-shape-ds --connection-key [text] --name [text] --registry-id [text] --schema-resource-name [text] + --authorization-mode [INSTANCE_PRINCIPAL|OBO|RESOURCE_PRINCIPAL|UNDEFINED|USER_PRINCIPAL] --endpoint-id [text] --entity-properties [complex type] --entity-type [DATA_STORE|FILE|MESSAGE|SQL|TABLE|VIEW] --external-key [text] --foreign-keys [complex type] --from-json [text] --identifier [text] --if-match [text] --key [text] --model-version [text] --object-status [integer] --object-version [integer] --other-type-label [text] --parent-ref [complex type] --resource-name [text] --shape [complex type] --shape-id [text] --types [complex type] --unique-keys [complex type] -oci data-connectivity data-entity create-entity-shape-file --connection-key [text] --name [text] --registry-id [text] --schema-resource-name [text] + --authorization-mode [INSTANCE_PRINCIPAL|OBO|RESOURCE_PRINCIPAL|UNDEFINED|USER_PRINCIPAL] --data-format [complex type] --endpoint-id [text] --entity-properties [complex type] --entity-type [DATA_STORE|FILE|MESSAGE|SQL|TABLE|VIEW] --external-key [text] --foreign-keys [complex type] --from-json [text] --identifier [text] --if-match [text] --key [text] --model-version [text] --object-status [integer] --object-version [integer] --other-type-label [text] --parent-ref [complex type] --resource-name [text] --shape [complex type] --shape-id [text] --types [complex type] --unique-keys [complex type] -oci data-connectivity data-entity create-entity-shape-sql --connection-key [text] --name [text] --registry-id [text] --schema-resource-name [text] + --authorization-mode [INSTANCE_PRINCIPAL|OBO|RESOURCE_PRINCIPAL|UNDEFINED|USER_PRINCIPAL] --endpoint-id [text] --entity-properties [complex type] --entity-type [DATA_STORE|FILE|MESSAGE|SQL|TABLE|VIEW] --external-key [text] --foreign-keys [complex type] --from-json [text] --identifier [text] --if-match [text] --key [text] --model-version [text] --object-status [integer] --object-version [integer] --other-type-label [text] --parent-ref [complex type] --resource-name [text] --shape [complex type] --shape-id [text] --sql-query [text] --types [complex type] --unique-keys [complex type] -oci data-connectivity data-entity create-entity-shape-table --connection-key [text] --name [text] --registry-id [text] --schema-resource-name [text] + --authorization-mode [INSTANCE_PRINCIPAL|OBO|RESOURCE_PRINCIPAL|UNDEFINED|USER_PRINCIPAL] --endpoint-id [text] --entity-properties [complex type] --entity-type [DATA_STORE|FILE|MESSAGE|SQL|TABLE|VIEW] --external-key [text] --foreign-keys [complex type] --from-json [text] --identifier [text] --if-match [text] --key [text] --model-version [text] --object-status [integer] --object-version [integer] --other-type-label [text] --parent-ref [complex type] --resource-name [text] --shape [complex type] --shape-id [text] --types [complex type] --unique-keys [complex type] -oci data-connectivity data-entity create-entity-shape-view --connection-key [text] --name [text] --registry-id [text] --schema-resource-name [text] + --authorization-mode [INSTANCE_PRINCIPAL|OBO|RESOURCE_PRINCIPAL|UNDEFINED|USER_PRINCIPAL] --endpoint-id [text] --entity-properties [complex type] --entity-type [DATA_STORE|FILE|MESSAGE|SQL|TABLE|VIEW] --external-key [text] --foreign-keys [complex type] --from-json [text] --identifier [text] --if-match [text] --key [text] --model-version [text] --object-status [integer] --object-version [integer] --other-type-label [text] --parent-ref [complex type] --resource-name [text] --shape [complex type] --shape-id [text] --types [complex type] --unique-keys [complex type] -oci data-connectivity data-entity get --connection-key [text] --data-entity-key [text] --registry-id [text] --schema-resource-name [text] + --endpoint-id [text] --from-json [text] -oci data-connectivity data-entity list --connection-key [text] --registry-id [text] --schema-resource-name [text] + --all --api-mode [ALL|PREVIEW] --endpoint-id [text] --fields [text] --from-json [text] --include-types [text] --is-pattern [boolean] --limit [integer] --name [text] --name-list [text] --page [text] --page-size [integer] --sort-by [displayName|id|timeCreated] --sort-order [ASC|DESC] --type [text] -oci data-connectivity data-preview create --registry-id [text] + --connection [complex type] --data-asset [complex type] --data-entity [complex type] --endpoint-id [text] --from-json [text] --if-match [text] --read-operation-config [complex type] --schema [complex type] -oci data-connectivity data-preview create-data-preview-derived-entity --data-entity-name [text] --data-entity-resource-name [text] --registry-id [text] + --connection [complex type] --data-asset [complex type] --data-entity-derived-properties [complex type] --data-entity-entity-properties [complex type] --data-entity-identifier [text] --data-entity-key [text] --data-entity-metadata [complex type] --data-entity-mode [IN|OUT] --data-entity-model-version [text] --data-entity-object-status [integer] --data-entity-object-version [integer] --data-entity-parent-ref [complex type] --data-entity-ref-data-object [complex type] --data-entity-shape [complex type] --data-entity-shape-id [text] --endpoint-id [text] --from-json [text] --if-match [text] --read-operation-config [complex type] --schema [complex type] -oci data-connectivity data-profile create --registry-id [text] + --connection [complex type] --data-asset [complex type] --data-entity [complex type] --endpoint-id [text] --from-json [text] --if-match [text] --profile-config [complex type] --read-operation-config [complex type] --schema [complex type] -oci data-connectivity data-profile create-data-profile-derived-entity --data-entity-name [text] --data-entity-resource-name [text] --registry-id [text] + --connection [complex type] --data-asset [complex type] --data-entity-derived-properties [complex type] --data-entity-entity-properties [complex type] --data-entity-identifier [text] --data-entity-key [text] --data-entity-metadata [complex type] --data-entity-mode [IN|OUT] --data-entity-model-version [text] --data-entity-object-status [integer] --data-entity-object-version [integer] --data-entity-parent-ref [complex type] --data-entity-ref-data-object [complex type] --data-entity-shape [complex type] --data-entity-shape-id [text] --endpoint-id [text] --from-json [text] --if-match [text] --profile-config [complex type] --read-operation-config [complex type] --schema [complex type] -oci data-connectivity detach-data-asset-info create-detach-data-asset --data-assets [complex type] --endpoint-id [text] --registry-id [text] + --from-json [text] --if-match [text] -oci data-connectivity endpoint change-compartment --compartment-id [text] --endpoint-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --registry-id [text] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] -oci data-connectivity endpoint create --display-name [text] + --compartment-id [text] --defined-tags [complex type] --description [text] --dns-zones [complex type] --endpoint-size [integer] --freeform-tags [complex type] --from-json [text] --max-wait-seconds [integer] --nsg-ids [complex type] --registry-id [text] --subnet-id [text] --vcn-id [text] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] -oci data-connectivity endpoint delete --endpoint-id [text] + --force --from-json [text] --if-match [text] --is-force-operation [boolean] --max-wait-seconds [integer] --registry-id [text] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] -oci data-connectivity endpoint get --endpoint-id [text] + --from-json [text] --registry-id [text] -oci data-connectivity endpoint list --compartment-id [text] + --all --from-json [text] --lifecycle-state [ACTIVE|CREATING|DELETED|DELETING|FAILED|INACTIVE|STARTING|STOPPED|STOPPING|UPDATING] --limit [integer] --name [text] --page [text] --page-size [integer] --registry-id [text] --sort-by [DISPLAYNAME|TIMECREATED|TIMEUPDATED] --sort-order [ASC|DESC] -oci data-connectivity endpoint update --endpoint-id [text] + --defined-tags [complex type] --description [text] --display-name [text] --dns-zones [complex type] --endpoint-size [integer] --force --freeform-tags [complex type] --from-json [text] --if-match [text] --max-wait-seconds [integer] --nsg-ids [complex type] --registry-id [text] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] -oci data-connectivity endpoint validate-data-asset-network-reachablity --endpoint-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --registry-id [text] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] -oci data-connectivity execute-operation-job get --connection-key [text] --job-key [text] --registry-id [text] --schema-resource-name [text] + --endpoint-id [text] --from-json [text] -oci data-connectivity execute-operation-job-details create-execute-operation-job --connection-key [text] --registry-id [text] --schema-resource-name [text] + --call-operation-config [complex type] --endpoint-id [text] --from-json [text] --input-records [complex type] --operation [complex type] -oci data-connectivity execute-operation-job-details create-execute-operation-job-operation-from-api --connection-key [text] --operation-name [text] --operation-resource-name [text] --registry-id [text] --schema-resource-name [text] + --call-operation-config [complex type] --endpoint-id [text] --from-json [text] --input-records [complex type] --operation-external-key [text] --operation-key [text] --operation-metadata [complex type] --operation-model-version [text] --operation-object-status [integer] --operation-object-version [integer] --operation-operation-attributes [complex type] --operation-parent-ref [complex type] --operation-shape [complex type] -oci data-connectivity execute-operation-job-details create-execute-operation-job-operation-from-procedure --connection-key [text] --registry-id [text] --schema-resource-name [text] + --call-operation-config [complex type] --endpoint-id [text] --from-json [text] --input-records [complex type] --object-version [integer] --operation-external-key [text] --operation-key [text] --operation-metadata [complex type] --operation-model-version [text] --operation-name [text] --operation-object-status [integer] --operation-operation-attributes [complex type] --operation-parent-ref [complex type] --operation-resource-name [text] --operation-shape [complex type] -oci data-connectivity folder create --identifier [text] --name [text] --registry-id [text] + --data-assets [complex type] --description [text] --from-json [text] --key [text] --model-type [text] --model-version [text] --object-status [integer] --object-version [integer] --parent-ref [complex type] -oci data-connectivity folder delete --folder-key [text] --registry-id [text] + --force --from-json [text] --if-match [text] -oci data-connectivity folder get --folder-key [text] --registry-id [text] + --from-json [text] -oci data-connectivity folder list --registry-id [text] + --all --favorites-query-param [ALL|FAVORITES_ONLY|NON_FAVORITES_ONLY] --fields [text] --from-json [text] --limit [integer] --name [text] --page [text] --page-size [integer] --sort-by [displayName|id|timeCreated] --sort-order [ASC|DESC] --type [text] -oci data-connectivity folder update --folder-key [text] --key [text] --model-type [text] --object-version [integer] --registry-id [text] + --data-assets [complex type] --description [text] --force --from-json [text] --identifier [text] --if-match [text] --model-version [text] --name [text] --object-status [integer] --parent-ref [complex type] -oci data-connectivity full-push-down-task-response create-full-push-down-task --model-type [text] --registry-id [text] + --endpoint-id [text] --from-json [text] --if-match [text] --source [complex type] --target [complex type] -oci data-connectivity network-validation test-network-connectivity get-status-collection --endpoint-key [text] --registry-id [text] + --from-json [text] --limit [integer] --page [text] --sort-by [displayName|id|timeCreated] --sort-order [ASC|DESC] -oci data-connectivity operation get --connection-key [text] --operation-resource-name [text] --registry-id [text] --schema-resource-name [text] + --endpoint-id [text] --from-json [text] -oci data-connectivity operation-summary-collection list-operations --connection-key [text] --registry-id [text] --schema-resource-name [text] + --all --endpoint-id [text] --from-json [text] --limit [integer] --name [text] --page [text] --page-size [integer] --sort-by [displayName|id|timeCreated] --sort-order [ASC|DESC] -oci data-connectivity reference-artifact-summary-collection list-reference-artifacts --dcms-artifact-id [text] --registry-id [text] + --all --exclude-types [text] --favorites-query-param [ALL|FAVORITES_ONLY|NON_FAVORITES_ONLY] --fields [text] --from-json [text] --limit [integer] --name [text] --page [text] --page-size [integer] --service-artifact-id [text] --sort-by [displayName|id|timeCreated] --sort-order [ASC|DESC] --type [text] -oci data-connectivity reference-info create-de-reference-artifact --dcms-artifact-id [text] --registry-id [text] --service-artifact-id [text] + --from-json [text] --if-match [text] -oci data-connectivity reference-info create-reference-artifact --dcms-artifact-id [text] --registry-id [text] --service-artifact-id [text] + --from-json [text] --if-match [text] -oci data-connectivity registry change-compartment --compartment-id [text] --registry-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] -oci data-connectivity registry create --display-name [text] + --compartment-id [text] --defined-tags [complex type] --description [text] --freeform-tags [complex type] --from-json [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] -oci data-connectivity registry delete --registry-id [text] + --force --from-json [text] --if-match [text] --is-force-operation [boolean] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] -oci data-connectivity registry get --registry-id [text] + --from-json [text] -oci data-connectivity registry list --compartment-id [text] + --all --from-json [text] --is-deep-lookup [boolean] --lifecycle-state [ACTIVE|CREATING|DELETED|DELETING|FAILED|INACTIVE|STARTING|STOPPED|STOPPING|UPDATING] --limit [integer] --name [text] --page [text] --page-size [integer] -oci data-connectivity registry update --registry-id [text] + --defined-tags [complex type] --description [text] --display-name [text] --force --freeform-tags [complex type] --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] -oci data-connectivity schema get --connection-key [text] --registry-id [text] --schema-resource-name [text] + --endpoint-id [text] --from-json [text] -oci data-connectivity schema list --connection-key [text] --registry-id [text] + --all --endpoint-id [text] --fields [text] --from-json [text] --include-types [text] --limit [integer] --name [text] --name-list [text] --page [text] --page-size [integer] --schema-resource-key [text] --sort-by [displayName|id|timeCreated] --sort-order [ASC|DESC] -oci data-connectivity test-network-connectivity create --data-asset-key [text] --registry-id [text] + --endpoint-id [text] --from-json [text] --if-match [text] -oci data-connectivity test-network-connectivity delete-network-connectivity-status --registry-id [text] --status-key [text] + --force --from-json [text] --if-match [text] -oci data-connectivity test-network-connectivity get-network-connectivity-status --data-asset-key [text] --registry-id [text] + --endpoint-id [text] --from-json [text] --if-match [text] -oci data-connectivity type get --registry-id [text] --type-key [text] + --fields [text] --from-json [text] -oci data-connectivity types-summary-collection list-types --registry-id [text] + --all --from-json [text] --limit [integer] --name [text] --page [text] --page-size [integer] --sort-by [displayName|id|timeCreated] --sort-order [ASC|DESC] --type [text] -oci data-connectivity work-request get --work-request-id [text] + --from-json [text] -oci data-connectivity work-request list --compartment-id [text] + --all --from-json [text] --limit [integer] --page [text] --page-size [integer] --registry-id [text] --work-request-status [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] -oci data-connectivity work-request-error list --work-request-id [text] + --all --from-json [text] --limit [integer] --page [text] --page-size [integer] -oci data-connectivity work-request-log list --work-request-id [text] + --all --from-json [text] --limit [integer] --page [text] --page-size [integer] oci data-flow application change-compartment --application-id [text] --compartment-id [text] + --from-json [text] --if-match [text] oci data-flow application create --compartment-id [text] --display-name [text] --driver-shape [text] --executor-shape [text] --language [JAVA|PYTHON|SCALA|SQL] --num-executors [integer] --spark-version [text] + --application-log-config [complex type] --archive-uri [text] --arguments [text] --class-name [text] --configuration [text] --defined-tags [complex type] --description [text] --driver-shape-config [complex type] --executor-shape-config [complex type] --file-uri [text] --freeform-tags [complex type] --from-json [text] --idle-timeout-in-minutes [integer] --logs-bucket-uri [text] --max-duration-in-minutes [integer] --max-wait-seconds [integer] --metastore-id [text] --parameters [text] --private-endpoint-id [text] --type [BATCH|SESSION|STREAMING] --wait-for-state [ACTIVE|DELETED|INACTIVE] --wait-interval-seconds [integer] --warehouse-bucket-uri [text] oci data-flow application delete --application-id [text] + --force --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACTIVE|DELETED|INACTIVE] --wait-interval-seconds [integer] @@ -1993,15 +1926,15 @@ oci database-migration job list --migration-id [text] + --all --display-name [te oci database-migration job resume --job-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-after [ODMS_CLEANUP|ODMS_DATA_UPLOAD|ODMS_INITIAL_LOAD_EXPORT|ODMS_INITIAL_LOAD_IMPORT|ODMS_MONITOR_REPLICATION_LAG|ODMS_POST_INITIAL_LOAD|ODMS_PREPARE|ODMS_PREPARE_REPLICATION_TARGET|ODMS_SWITCHOVER|ODMS_VALIDATE|ODMS_VALIDATE_DATAPUMP_ESTIMATE_SRC|ODMS_VALIDATE_DATAPUMP_SETTINGS|ODMS_VALIDATE_DATAPUMP_SETTINGS_SRC|ODMS_VALIDATE_DATAPUMP_SETTINGS_TGT|ODMS_VALIDATE_DATAPUMP_SRC|ODMS_VALIDATE_GG_HUB|ODMS_VALIDATE_PREMIGRATION_ADVISOR|ODMS_VALIDATE_SRC|ODMS_VALIDATE_TGT] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED|TERMINATED|UNKNOWN|WAITING] --wait-interval-seconds [integer] oci database-migration job update --job-id [text] + --defined-tags [complex type] --display-name [text] --force --freeform-tags [complex type] --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED|TERMINATED|UNKNOWN|WAITING] --wait-interval-seconds [integer] oci database-migration job-output list --job-id [text] + --all --from-json [text] --limit [integer] --page [text] --page-size [integer] -oci database-migration migration add --items [complex type] --migration-id [text] + --from-json [text] --if-match [text] +oci database-migration migration add --items [complex type] --migration-id [text] + --csv-text [text] --from-json [text] --if-match [text] oci database-migration migration change-compartment --compartment-id [text] --migration-id [text] + --from-json [text] --if-match [text] oci database-migration migration clone --migration-id [text] --source-database-connection-id [text] --target-database-connection-id [text] + --agent-id [text] --compartment-id [text] --defined-tags [complex type] --display-name [text] --exclude-objects [complex type] --freeform-tags [complex type] --from-json [text] --if-match [text] --include-objects [complex type] --max-wait-seconds [integer] --source-container-database-connection-id [text] --vault-details [complex type] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED|WAITING] --wait-interval-seconds [integer] -oci database-migration migration create --compartment-id [text] --source-database-connection-id [text] --target-database-connection-id [text] --type [OFFLINE|ONLINE] + --advisor-settings [complex type] --agent-id [text] --data-transfer-medium-details [complex type] --datapump-settings [complex type] --defined-tags [complex type] --display-name [text] --dump-transfer-details [complex type] --exclude-objects [complex type] --freeform-tags [complex type] --from-json [text] --golden-gate-details [complex type] --include-objects [complex type] --max-wait-seconds [integer] --source-container-database-connection-id [text] --vault-details [complex type] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED|WAITING] --wait-interval-seconds [integer] +oci database-migration migration create --compartment-id [text] --source-database-connection-id [text] --target-database-connection-id [text] --type [OFFLINE|ONLINE] + --advisor-settings [complex type] --agent-id [text] --csv-text [text] --data-transfer-medium-details [complex type] --datapump-settings [complex type] --defined-tags [complex type] --display-name [text] --dump-transfer-details [complex type] --exclude-objects [complex type] --freeform-tags [complex type] --from-json [text] --golden-gate-details [complex type] --include-objects [complex type] --max-wait-seconds [integer] --source-container-database-connection-id [text] --vault-details [complex type] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED|WAITING] --wait-interval-seconds [integer] oci database-migration migration delete --migration-id [text] + --force --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED|WAITING] --wait-interval-seconds [integer] oci database-migration migration evaluate --migration-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED|WAITING] --wait-interval-seconds [integer] oci database-migration migration get --migration-id [text] + --from-json [text] --if-match [text] oci database-migration migration list --compartment-id [text] + --all --display-name [text] --from-json [text] --lifecycle-details [ABORTING|DONE|MIGRATING|READY|VALIDATED|VALIDATING|WAITING] --lifecycle-state [ACCEPTED|ACTIVE|CANCELED|CREATING|DELETED|DELETING|FAILED|INACTIVE|IN_PROGRESS|NEEDS_ATTENTION|SUCCEEDED|UPDATING|WAITING] --limit [integer] --page [text] --page-size [integer] --sort-by [displayName|timeCreated] --sort-order [ASC|DESC] -oci database-migration migration remove --items [complex type] --migration-id [text] + --from-json [text] --if-match [text] +oci database-migration migration remove --items [complex type] --migration-id [text] + --csv-text [text] --from-json [text] --if-match [text] oci database-migration migration retrieve-supported-phases --migration-id [text] + --from-json [text] oci database-migration migration start --migration-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-after [ODMS_CLEANUP|ODMS_DATA_UPLOAD|ODMS_INITIAL_LOAD_EXPORT|ODMS_INITIAL_LOAD_IMPORT|ODMS_MONITOR_REPLICATION_LAG|ODMS_POST_INITIAL_LOAD|ODMS_PREPARE|ODMS_PREPARE_REPLICATION_TARGET|ODMS_SWITCHOVER|ODMS_VALIDATE|ODMS_VALIDATE_DATAPUMP_ESTIMATE_SRC|ODMS_VALIDATE_DATAPUMP_SETTINGS|ODMS_VALIDATE_DATAPUMP_SETTINGS_SRC|ODMS_VALIDATE_DATAPUMP_SETTINGS_TGT|ODMS_VALIDATE_DATAPUMP_SRC|ODMS_VALIDATE_GG_HUB|ODMS_VALIDATE_PREMIGRATION_ADVISOR|ODMS_VALIDATE_SRC|ODMS_VALIDATE_TGT] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED|WAITING] --wait-interval-seconds [integer] oci database-migration migration update --migration-id [text] + --advisor-settings [complex type] --agent-id [text] --data-transfer-medium-details [complex type] --datapump-settings [complex type] --defined-tags [complex type] --display-name [text] --dump-transfer-details [complex type] --exclude-objects [complex type] --force --freeform-tags [complex type] --from-json [text] --golden-gate-details [complex type] --if-match [text] --include-objects [complex type] --max-wait-seconds [integer] --source-container-database-connection-id [text] --source-database-connection-id [text] --target-database-connection-id [text] --type [OFFLINE|ONLINE] --vault-details [complex type] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED|WAITING] --wait-interval-seconds [integer] @@ -2032,7 +1965,7 @@ oci db autonomous-container-database-dataguard switchover --autonomous-container oci db autonomous-container-database-dataguard update --autonomous-container-database-dataguard-association-id [text] --autonomous-container-database-id [text] + --fast-start-fail-over-lag-limit-in-seconds [integer] --from-json [text] --if-match [text] --is-automatic-failover-enabled [boolean] --max-wait-seconds [integer] --protection-mode [MAXIMUM_AVAILABILITY|MAXIMUM_PERFORMANCE] --wait-for-state [AVAILABLE|FAILED|PROVISIONING|ROLE_CHANGE_IN_PROGRESS|TERMINATED|TERMINATING|UNAVAILABLE|UPDATING] --wait-interval-seconds [integer] oci db autonomous-container-database-version list --compartment-id [text] --service-component [ADBD|EXACC] + --all --from-json [text] --limit [integer] --page [text] --page-size [integer] --sort-order [ASC|DESC] oci db autonomous-database change-compartment --autonomous-database-id [text] --compartment-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] -oci db autonomous-database change-disaster-recovery-configuration --autonomous-database-id [text] + --disaster-recovery-type [ADG|BACKUP_BASED] --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [AVAILABLE|AVAILABLE_NEEDS_ATTENTION|BACKUP_IN_PROGRESS|INACCESSIBLE|MAINTENANCE_IN_PROGRESS|PROVISIONING|RECREATING|RESTARTING|RESTORE_FAILED|RESTORE_IN_PROGRESS|ROLE_CHANGE_IN_PROGRESS|SCALE_IN_PROGRESS|STANDBY|STARTING|STOPPED|STOPPING|TERMINATED|TERMINATING|UNAVAILABLE|UPDATING|UPGRADING] --wait-interval-seconds [integer] +oci db autonomous-database change-disaster-recovery-configuration --autonomous-database-id [text] + --disaster-recovery-type [ADG|BACKUP_BASED] --from-json [text] --if-match [text] --is-snapshot-standby [boolean] --max-wait-seconds [integer] --wait-for-state [AVAILABLE|AVAILABLE_NEEDS_ATTENTION|BACKUP_IN_PROGRESS|INACCESSIBLE|MAINTENANCE_IN_PROGRESS|PROVISIONING|RECREATING|RESTARTING|RESTORE_FAILED|RESTORE_IN_PROGRESS|ROLE_CHANGE_IN_PROGRESS|SCALE_IN_PROGRESS|STANDBY|STARTING|STOPPED|STOPPING|TERMINATED|TERMINATING|UNAVAILABLE|UPDATING|UPGRADING] --wait-interval-seconds [integer] oci db autonomous-database configure-key --autonomous-database-id [text] + --from-json [text] --if-match [text] --is-using-oracle-managed-keys [boolean] --kms-key-id [text] --max-wait-seconds [integer] --vault-id [text] --wait-for-state [ACCEPTED|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] oci db autonomous-database create --compartment-id [text] + --admin-password [text] --are-primary-whitelisted-ips-used [boolean] --autonomous-container-database-id [text] --character-set [text] --compute-count [float] --compute-model [ECPU|OCPU] --cpu-core-count [integer] --customer-contacts [complex type] --data-storage-size-in-gbs [integer] --data-storage-size-in-tbs [integer] --database-edition [text] --db-name [text] --db-tools-details [complex type] --db-version [text] --db-workload [AJD|APEX|DW|OLTP] --defined-tags [complex type] --display-name [text] --freeform-tags [complex type] --from-json [text] --is-acl-enabled [boolean] --is-auto-scaling-enabled [boolean] --is-auto-scaling-for-storage-enabled [boolean] --is-data-guard-enabled [boolean] --is-dedicated [boolean] --is-free-tier [boolean] --is-local-data-guard-enabled [boolean] --is-mtls-connection-required [boolean] --is-preview-version-with-service-terms-accepted [boolean] --kms-key-id [text] --license-model [BRING_YOUR_OWN_LICENSE|LICENSE_INCLUDED] --maintenance-schedule-type [EARLY|REGULAR] --max-cpu-core-count [integer] --max-wait-seconds [integer] --ncharacter-set [text] --nsg-ids [complex type] --ocpu-count [float] --private-endpoint-ip [text] --private-endpoint-label [text] --scheduled-operations [complex type] --secret-id [text] --secret-version-number [integer] --standby-whitelisted-ips [complex type] --subnet-id [text] --vault-id [text] --wait-for-state [AVAILABLE|AVAILABLE_NEEDS_ATTENTION|BACKUP_IN_PROGRESS|INACCESSIBLE|MAINTENANCE_IN_PROGRESS|PROVISIONING|RECREATING|RESTARTING|RESTORE_FAILED|RESTORE_IN_PROGRESS|ROLE_CHANGE_IN_PROGRESS|SCALE_IN_PROGRESS|STANDBY|STARTING|STOPPED|STOPPING|TERMINATED|TERMINATING|UNAVAILABLE|UPDATING|UPGRADING] --wait-interval-seconds [integer] --whitelisted-ips [complex type] oci db autonomous-database create-adb-cross-region-data-guard-details --compartment-id [text] --source-id [text] + --admin-password [text] --are-primary-whitelisted-ips-used [boolean] --autonomous-container-database-id [text] --character-set [text] --compute-count [float] --compute-model [ECPU|OCPU] --cpu-core-count [integer] --customer-contacts [complex type] --data-storage-size-in-gbs [integer] --data-storage-size-in-tbs [integer] --database-edition [text] --db-name [text] --db-tools-details [complex type] --db-version [text] --db-workload [AJD|APEX|DW|OLTP] --defined-tags [complex type] --display-name [text] --freeform-tags [complex type] --from-json [text] --is-access-control-enabled [boolean] --is-auto-scaling-enabled [boolean] --is-auto-scaling-for-storage-enabled [boolean] --is-data-guard-enabled [boolean] --is-dedicated [boolean] --is-free-tier [boolean] --is-local-data-guard-enabled [boolean] --is-mtls-connection-required [boolean] --is-preview-version-with-service-terms-accepted [boolean] --kms-key-id [text] --license-model [BRING_YOUR_OWN_LICENSE|LICENSE_INCLUDED] --maintenance-schedule-type [EARLY|REGULAR] --max-cpu-core-count [integer] --max-wait-seconds [integer] --ncharacter-set [text] --nsg-ids [complex type] --ocpu-count [float] --private-endpoint-ip [text] --private-endpoint-label [text] --scheduled-operations [complex type] --secret-id [text] --secret-version-number [integer] --standby-whitelisted-ips [complex type] --subnet-id [text] --vault-id [text] --wait-for-state [AVAILABLE|AVAILABLE_NEEDS_ATTENTION|BACKUP_IN_PROGRESS|INACCESSIBLE|MAINTENANCE_IN_PROGRESS|PROVISIONING|RECREATING|RESTARTING|RESTORE_FAILED|RESTORE_IN_PROGRESS|ROLE_CHANGE_IN_PROGRESS|SCALE_IN_PROGRESS|STANDBY|STARTING|STOPPED|STOPPING|TERMINATED|TERMINATING|UNAVAILABLE|UPDATING|UPGRADING] --wait-interval-seconds [integer] --whitelisted-ips [complex type] @@ -2124,7 +2057,7 @@ oci db cloud-exa-infra delete --cloud-exa-infra-id [text] + --force --from-json oci db cloud-exa-infra get --cloud-exa-infra-id [text] + --from-json [text] oci db cloud-exa-infra list --compartment-id [text] + --all --display-name [text] --from-json [text] --lifecycle-state [AVAILABLE|FAILED|MAINTENANCE_IN_PROGRESS|PROVISIONING|TERMINATED|TERMINATING|UPDATING] --limit [integer] --page [text] --page-size [integer] --sort-by [DISPLAYNAME|TIMECREATED] --sort-order [ASC|DESC] oci db cloud-exa-infra update --cloud-exa-infra-id [text] + --compute-count [integer] --customer-contacts [complex type] --defined-tags [complex type] --display-name [text] --force --freeform-tags [complex type] --from-json [text] --if-match [text] --maintenance-window [complex type] --max-wait-seconds [integer] --storage-count [integer] --wait-for-state [AVAILABLE|FAILED|MAINTENANCE_IN_PROGRESS|PROVISIONING|TERMINATED|TERMINATING|UPDATING] --wait-interval-seconds [integer] -oci db cloud-exadata-infrastructure-unallocated-resources get --cloud-exadata-infrastructure-id [text] + --from-json [text] +oci db cloud-exadata-infrastructure-unallocated-resources get --cloud-exadata-infrastructure-id [text] + --db-servers [text] --from-json [text] oci db cloud-vm-cluster add --cloud-vm-cluster-id [text] --db-servers [complex type] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [AVAILABLE|FAILED|MAINTENANCE_IN_PROGRESS|PROVISIONING|TERMINATED|TERMINATING|UPDATING] --wait-interval-seconds [integer] oci db cloud-vm-cluster change-compartment --cloud-vm-cluster-id [text] --compartment-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] oci db cloud-vm-cluster create --backup-subnet-id [text] --cloud-exa-infra-id [text] --compartment-id [text] --cpu-core-count [integer] --display-name [text] --gi-version [text] --hostname [text] --ssh-authorized-keys-file [filename] --subnet-id [text] + --backup-network-nsg-ids [complex type] --cluster-name [text] --data-collection-options [complex type] --data-storage-percentage [integer] --data-storage-size-in-tbs [text] --db-node-storage-size-in-gbs [integer] --db-servers [complex type] --defined-tags [complex type] --domain [text] --freeform-tags [complex type] --from-json [text] --is-local-backup [boolean] --is-sparse-diskgroup [boolean] --license-model [BRING_YOUR_OWN_LICENSE|LICENSE_INCLUDED] --max-wait-seconds [integer] --memory-size-in-gbs [integer] --nsg-ids [complex type] --ocpu-count [float] --private-zone-id [text] --scan-listener-port-tcp [integer] --scan-listener-port-tcp-ssl [integer] --time-zone [text] --wait-for-state [AVAILABLE|FAILED|MAINTENANCE_IN_PROGRESS|PROVISIONING|TERMINATED|TERMINATING|UPDATING] --wait-interval-seconds [integer] @@ -2156,7 +2089,7 @@ oci db database convert-to-new-pdb --cdb-admin-password [text] --cdb-name [text] oci db database convert-to-new-pdb-precheck --cdb-admin-password [text] --cdb-name [text] --database-id [text] --non-cdb-tde-password [text] + --additional-cdb-params [text] --cdb-tde-password [text] --from-json [text] --if-match [text] --max-wait-seconds [integer] --pdb-admin-password [text] --wait-for-state [AVAILABLE|BACKUP_IN_PROGRESS|CONVERTING|FAILED|PROVISIONING|RESTORE_FAILED|TERMINATED|TERMINATING|UPDATING|UPGRADING] --wait-interval-seconds [integer] oci db database convert-to-pdb-sync --database-id [text] + --from-json [text] --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [AVAILABLE|BACKUP_IN_PROGRESS|CONVERTING|FAILED|PROVISIONING|RESTORE_FAILED|TERMINATED|TERMINATING|UPDATING|UPGRADING] --wait-interval-seconds [integer] oci db database convert-to-pdb-sync-rollback --database-id [text] + --from-json [text] --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [AVAILABLE|BACKUP_IN_PROGRESS|CONVERTING|FAILED|PROVISIONING|RESTORE_FAILED|TERMINATED|TERMINATING|UPDATING|UPGRADING] --wait-interval-seconds [integer] -oci db database create --admin-password [text] --db-name [text] + --auto-backup-enabled [boolean] --auto-backup-window [text] --backup-destination [complex type] --character-set [text] --database-software-image-id [text] --db-home-id [text] --db-system-id [text] --db-unique-name [text] --db-version [text] --db-workload [DSS|OLTP] --defined-tags [complex type] --freeform-tags [complex type] --from-json [text] --is-desupported-version [boolean] --kms-key-id [text] --kms-key-version-id [text] --max-wait-seconds [integer] --ncharacter-set [text] --pdb-name [text] --recovery-window-in-days [integer range] --sid-prefix [text] --source [DATABASE|DB_BACKUP|NONE|VM_CLUSTER_BACKUP|VM_CLUSTER_NEW] --tde-wallet-password [text] --vault-id [text] --vm-cluster-id [text] --wait-for-state [AVAILABLE|FAILED|PROVISIONING|TERMINATED|TERMINATING|UPDATING] --wait-interval-seconds [integer] +oci db database create --admin-password [text] --db-name [text] + --auto-backup-enabled [boolean] --auto-backup-window [text] --auto-full-backup-day [text] --auto-full-backup-window [text] --backup-destination [complex type] --character-set [text] --database-software-image-id [text] --db-home-id [text] --db-system-id [text] --db-unique-name [text] --db-version [text] --db-workload [DSS|OLTP] --defined-tags [complex type] --freeform-tags [complex type] --from-json [text] --is-desupported-version [boolean] --kms-key-id [text] --kms-key-version-id [text] --max-wait-seconds [integer] --ncharacter-set [text] --pdb-name [text] --recovery-window-in-days [integer range] --run-immediate-full-backup [boolean] --sid-prefix [text] --source [DATABASE|DB_BACKUP|NONE|VM_CLUSTER_BACKUP|VM_CLUSTER_NEW] --tde-wallet-password [text] --vault-id [text] --vm-cluster-id [text] --wait-for-state [AVAILABLE|FAILED|PROVISIONING|TERMINATED|TERMINATING|UPDATING] --wait-interval-seconds [integer] oci db database create-database-from-backup --database [complex type] --db-home-id [text] + --db-version [text] --from-json [text] --kms-key-id [text] --kms-key-version-id [text] --max-wait-seconds [integer] --wait-for-state [AVAILABLE|BACKUP_IN_PROGRESS|CONVERTING|FAILED|PROVISIONING|RESTORE_FAILED|TERMINATED|TERMINATING|UPDATING|UPGRADING] --wait-interval-seconds [integer] oci db database create-from-backup --admin-password [text] --backup-id [text] + --backup-tde-password [text] --database-software-image-id [text] --db-name [text] --db-system-id [text] --db-unique-name [text] --defined-tags [complex type] --freeform-tags [complex type] --from-json [text] --is-desupported-version [boolean] --kms-key-id [text] --kms-key-version-id [text] --max-wait-seconds [integer] --sid-prefix [text] --vm-cluster-id [text] --wait-for-state [AVAILABLE|FAILED|PROVISIONING|TERMINATED|TERMINATING|UPDATING] --wait-interval-seconds [integer] oci db database create-from-database --admin-password [text] --database-id [text] + --backup-tde-password [text] --database-software-image-id [text] --db-name [text] --db-system-id [text] --defined-tags [complex type] --freeform-tags [complex type] --from-json [text] --is-desupported-version [boolean] --kms-key-id [text] --kms-key-version-id [text] --max-wait-seconds [integer] --point-in-time-recovery-timestamp [text] --wait-for-state [AVAILABLE|FAILED|PROVISIONING|TERMINATED|TERMINATING|UPDATING] --wait-interval-seconds [integer] @@ -2172,7 +2105,7 @@ oci db database modify-database-management --database-id [text] + --from-json [t oci db database patch --database-id [text] + --database-software-image-id [text] --from-json [text] --one-off-patches [complex type] --patch-action [text] --patch-id [text] oci db database restore --database-id [text] + --database-scn [text] --from-json [text] --if-match [text] --latest [boolean] --max-wait-seconds [integer] --timestamp [datetime] --wait-for-state [AVAILABLE|BACKUP_IN_PROGRESS|CONVERTING|FAILED|PROVISIONING|RESTORE_FAILED|TERMINATED|TERMINATING|UPDATING|UPGRADING] --wait-interval-seconds [integer] oci db database rotate-vault-key --database-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [AVAILABLE|BACKUP_IN_PROGRESS|CONVERTING|FAILED|PROVISIONING|RESTORE_FAILED|TERMINATED|TERMINATING|UPDATING|UPGRADING] --wait-interval-seconds [integer] -oci db database update --database-id [text] + --auto-backup-enabled [boolean] --auto-backup-window [text] --backup-destination [complex type] --db-home-id [text] --defined-tags [complex type] --force --freeform-tags [complex type] --from-json [text] --if-match [text] --max-wait-seconds [integer] --new-admin-password [text] --new-tde-wallet-password [text] --old-tde-wallet-password [text] --recovery-window-in-days [integer range] --wait-for-state [AVAILABLE|BACKUP_IN_PROGRESS|CONVERTING|FAILED|PROVISIONING|RESTORE_FAILED|TERMINATED|TERMINATING|UPDATING|UPGRADING] --wait-interval-seconds [integer] +oci db database update --database-id [text] + --auto-backup-enabled [boolean] --auto-backup-window [text] --auto-full-backup-day [text] --auto-full-backup-window [text] --backup-destination [complex type] --db-home-id [text] --defined-tags [complex type] --force --freeform-tags [complex type] --from-json [text] --if-match [text] --max-wait-seconds [integer] --new-admin-password [text] --new-tde-wallet-password [text] --old-tde-wallet-password [text] --recovery-window-in-days [integer range] --wait-for-state [AVAILABLE|BACKUP_IN_PROGRESS|CONVERTING|FAILED|PROVISIONING|RESTORE_FAILED|TERMINATED|TERMINATING|UPDATING|UPGRADING] --wait-interval-seconds [integer] oci db database upgrade --action [PRECHECK|ROLLBACK|UPGRADE] --database-id [text] + --database-upgrade-source-details [complex type] --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [AVAILABLE|BACKUP_IN_PROGRESS|CONVERTING|FAILED|PROVISIONING|RESTORE_FAILED|TERMINATED|TERMINATING|UPDATING|UPGRADING] --wait-interval-seconds [integer] oci db database upgrade-rollback --database-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [AVAILABLE|BACKUP_IN_PROGRESS|CONVERTING|FAILED|PROVISIONING|RESTORE_FAILED|TERMINATED|TERMINATING|UPDATING|UPGRADING] --wait-interval-seconds [integer] oci db database upgrade-with-database-software-image --action [PRECHECK|ROLLBACK|UPGRADE] --database-id [text] --database-software-image-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --options [text] --wait-for-state [AVAILABLE|BACKUP_IN_PROGRESS|CONVERTING|FAILED|PROVISIONING|RESTORE_FAILED|TERMINATED|TERMINATING|UPDATING|UPGRADING] --wait-interval-seconds [integer] @@ -2199,11 +2132,12 @@ oci db exadata-infrastructure change-compartment --compartment-id [text] --exada oci db exadata-infrastructure create --admin-network-cidr [text] --cloud-control-plane-server1 [text] --cloud-control-plane-server2 [text] --compartment-id [text] --display-name [text] --dns-server [complex type] --gateway [text] --infini-band-network-cidr [text] --netmask [text] --ntp-server [complex type] --shape [text] --time-zone [text] + --compute-count [integer] --contacts [complex type] --corporate-proxy [text] --defined-tags [complex type] --freeform-tags [complex type] --from-json [text] --is-cps-offline-report-enabled [boolean] --is-multi-rack-deployment [boolean] --maintenance-window [complex type] --max-wait-seconds [integer] --multi-rack-configuration-file [text] --network-bonding-mode-details [complex type] --storage-count [integer] --wait-for-state [ACTIVATING|ACTIVATION_FAILED|ACTIVE|CREATING|DELETED|DELETING|DISCONNECTED|FAILED|MAINTENANCE_IN_PROGRESS|REQUIRES_ACTIVATION|UPDATING|WAITING_FOR_CONNECTIVITY] --wait-interval-seconds [integer] oci db exadata-infrastructure delete --exadata-infrastructure-id [text] + --force --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] oci db exadata-infrastructure download-config-file --exadata-infrastructure-id [text] --file [filename] + --from-json [text] -oci db exadata-infrastructure generate-recommended-vm-cluster-network --compartment-id [text] --display-name [text] --exadata-infrastructure-id [text] --networks [complex type] + --db-servers [complex type] --defined-tags [complex type] --dns [complex type] --freeform-tags [complex type] --from-json [text] --ntp [complex type] --scan-listener-port-tcp [integer] --scan-listener-port-tcp-ssl [integer] +oci db exadata-infrastructure generate-recommended-vm-cluster-network --compartment-id [text] --display-name [text] --exadata-infrastructure-id [text] --networks [complex type] + --db-servers [complex type] --defined-tags [complex type] --dns [complex type] --dr-scan-listener-port-tcp [integer] --freeform-tags [complex type] --from-json [text] --ntp [complex type] --scan-listener-port-tcp [integer] --scan-listener-port-tcp-ssl [integer] oci db exadata-infrastructure get --exadata-infrastructure-id [text] + --excluded-fields [multiRackConfigurationFile] --from-json [text] oci db exadata-infrastructure get-compute-units --autonomous-exadata-infrastructure-id [text] + --from-json [text] oci db exadata-infrastructure list --compartment-id [text] + --all --display-name [text] --excluded-fields [multiRackConfigurationFile] --from-json [text] --lifecycle-state [ACTIVATING|ACTIVATION_FAILED|ACTIVE|CREATING|DELETED|DELETING|DISCONNECTED|FAILED|MAINTENANCE_IN_PROGRESS|REQUIRES_ACTIVATION|UPDATING|WAITING_FOR_CONNECTIVITY] --limit [integer] --page [text] --page-size [integer] --sort-by [DISPLAYNAME|TIMECREATED] --sort-order [ASC|DESC] oci db exadata-infrastructure update --exadata-infrastructure-id [text] + --additional-compute-count [integer] --additional-compute-system-model [X7|X8|X8M|X9M] --additional-storage-count [integer] --admin-network-cidr [text] --cloud-control-plane-server1 [text] --cloud-control-plane-server2 [text] --contacts [complex type] --corporate-proxy [text] --defined-tags [complex type] --dns-server [complex type] --force --freeform-tags [complex type] --from-json [text] --gateway [text] --if-match [text] --infini-band-network-cidr [text] --is-cps-offline-report-enabled [boolean] --is-multi-rack-deployment [boolean] --maintenance-window [complex type] --max-wait-seconds [integer] --multi-rack-configuration-file [text] --netmask [text] --network-bonding-mode-details [complex type] --ntp-server [complex type] --time-zone [text] --wait-for-state [ACTIVATING|ACTIVATION_FAILED|ACTIVE|CREATING|DELETED|DELETING|DISCONNECTED|FAILED|MAINTENANCE_IN_PROGRESS|REQUIRES_ACTIVATION|UPDATING|WAITING_FOR_CONNECTIVITY] --wait-interval-seconds [integer] +oci db exadata-infrastructure-un-allocated-resources get --exadata-infrastructure-id [text] + --db-servers [text] --from-json [text] oci db external-backup-job complete --backup-id [text] + --cf-backup-handle [text] --data-size [integer] --from-json [text] --if-match [text] --redo-size [integer] --spf-backup-handle [text] --sql-patches [complex type] --tde-wallet-path [text] oci db external-backup-job create --availability-domain [text] --character-set [text] --compartment-id [text] --database-edition [ENTERPRISE_EDITION|ENTERPRISE_EDITION_EXTREME_PERFORMANCE|ENTERPRISE_EDITION_HIGH_PERFORMANCE|STANDARD_EDITION] --database-mode [RAC|SI] --db-name [text] --db-version [text] --display-name [text] --external-database-identifier [integer] --ncharacter-set [text] + --db-unique-name [text] --from-json [text] --pdb-name [text] oci db external-backup-job get --backup-id [text] + --from-json [text] @@ -2269,6 +2203,13 @@ oci db node reset --db-node-id [text] + --from-json [text] --if-match [text] --m oci db node soft-reset --db-node-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [AVAILABLE|FAILED|PROVISIONING|STARTING|STOPPED|STOPPING|TERMINATED|TERMINATING|UPDATING] --wait-interval-seconds [integer] oci db node start --db-node-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [AVAILABLE|FAILED|PROVISIONING|STARTING|STOPPED|STOPPING|TERMINATED|TERMINATING|UPDATING] --wait-interval-seconds [integer] oci db node stop --db-node-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [AVAILABLE|FAILED|PROVISIONING|STARTING|STOPPED|STOPPING|TERMINATED|TERMINATING|UPDATING] --wait-interval-seconds [integer] +oci db oneoff-patch change-compartment --compartment-id [text] --oneoff-patch-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] +oci db oneoff-patch create --compartment-id [text] --db-version [text] --display-name [text] --release-update [text] + --defined-tags [complex type] --freeform-tags [complex type] --from-json [text] --max-wait-seconds [integer] --one-off-patches [complex type] --wait-for-state [AVAILABLE|CREATING|DELETED|DELETING|EXPIRED|FAILED|INACTIVE|TERMINATED|TERMINATING|UPDATING] --wait-interval-seconds [integer] +oci db oneoff-patch delete --oneoff-patch-id [text] + --force --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] +oci db oneoff-patch download --oneoff-patch-id [text] + --from-json [text] --if-match [text] +oci db oneoff-patch get --oneoff-patch-id [text] + --from-json [text] +oci db oneoff-patch list --compartment-id [text] + --all --display-name [text] --from-json [text] --lifecycle-state [AVAILABLE|CREATING|DELETED|DELETING|EXPIRED|FAILED|INACTIVE|TERMINATED|TERMINATING|UPDATING] --limit [integer] --page [text] --page-size [integer] --sort-by [DISPLAYNAME|TIMECREATED] --sort-order [ASC|DESC] +oci db oneoff-patch update --oneoff-patch-id [text] + --defined-tags [complex type] --force --freeform-tags [complex type] --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [AVAILABLE|CREATING|DELETED|DELETING|EXPIRED|FAILED|INACTIVE|TERMINATED|TERMINATING|UPDATING] --wait-interval-seconds [integer] oci db patch get by-database --database-id [text] --patch-id [text] + --from-json [text] oci db patch get by-db-system --db-system-id [text] --patch-id [text] + --from-json [text] oci db patch get-db-home --db-home-id [text] --patch-id [text] + --from-json [text] @@ -2301,7 +2242,7 @@ oci db pluggable-database update --pluggable-database-id [text] + --defined-tags oci db system change-compartment --compartment-id [text] --db-system-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] oci db system get --db-system-id [text] + --from-json [text] oci db system get-exadata-iorm-config --db-system-id [text] + --from-json [text] -oci db system launch --admin-password [text] --availability-domain [text] --compartment-id [text] --cpu-core-count [integer] --database-edition [ENTERPRISE_EDITION|ENTERPRISE_EDITION_EXTREME_PERFORMANCE|ENTERPRISE_EDITION_HIGH_PERFORMANCE|STANDARD_EDITION] --db-name [text] --db-version [text] --hostname [text] --shape [text] --ssh-authorized-keys-file [filename] --subnet-id [text] + --auto-backup-enabled [boolean] --backup-network-nsg-ids [complex type] --backup-subnet-id [text] --character-set [text] --cluster-name [text] --data-storage-percentage [integer] --database-software-image-id [text] --db-unique-name [text] --db-workload [text] --defined-tags [complex type] --disk-redundancy [HIGH|NORMAL] --display-name [text] --domain [text] --fault-domains [complex type] --freeform-tags [complex type] --from-json [text] --initial-data-storage-size-in-gb [integer] --is-diagnostics-events-enabled [boolean] --is-health-monitoring-enabled [boolean] --is-incident-logs-enabled [boolean] --kms-key-id [text] --kms-key-version-id [text] --license-model [BRING_YOUR_OWN_LICENSE|LICENSE_INCLUDED] --maintenance-window-details [complex type] --max-wait-seconds [integer] --ncharacter-set [text] --node-count [integer] --nsg-ids [complex type] --pdb-name [text] --private-ip [text] --recovery-window-in-days [integer range] --sparse-diskgroup [boolean] --storage-management [ASM|LVM] --storage-performance [BALANCED|HIGH_PERFORMANCE] --tde-wallet-password [text] --time-zone [text] --vault-id [text] --wait-for-state [AVAILABLE|FAILED|MAINTENANCE_IN_PROGRESS|MIGRATED|NEEDS_ATTENTION|PROVISIONING|TERMINATED|TERMINATING|UPDATING|UPGRADING] --wait-interval-seconds [integer] +oci db system launch --admin-password [text] --availability-domain [text] --compartment-id [text] --cpu-core-count [integer] --database-edition [ENTERPRISE_EDITION|ENTERPRISE_EDITION_EXTREME_PERFORMANCE|ENTERPRISE_EDITION_HIGH_PERFORMANCE|STANDARD_EDITION] --db-name [text] --db-version [text] --hostname [text] --shape [text] --ssh-authorized-keys-file [filename] --subnet-id [text] + --auto-backup-enabled [boolean] --auto-backup-window [text] --auto-full-backup-day [text] --auto-full-backup-window [text] --backup-network-nsg-ids [complex type] --backup-subnet-id [text] --character-set [text] --cluster-name [text] --data-storage-percentage [integer] --database-software-image-id [text] --db-unique-name [text] --db-workload [text] --defined-tags [complex type] --disk-redundancy [HIGH|NORMAL] --display-name [text] --domain [text] --fault-domains [complex type] --freeform-tags [complex type] --from-json [text] --initial-data-storage-size-in-gb [integer] --is-diagnostics-events-enabled [boolean] --is-health-monitoring-enabled [boolean] --is-incident-logs-enabled [boolean] --kms-key-id [text] --kms-key-version-id [text] --license-model [BRING_YOUR_OWN_LICENSE|LICENSE_INCLUDED] --maintenance-window-details [complex type] --max-wait-seconds [integer] --ncharacter-set [text] --node-count [integer] --nsg-ids [complex type] --pdb-name [text] --private-ip [text] --recovery-window-in-days [integer range] --run-immediate-full-backup [boolean] --sparse-diskgroup [boolean] --storage-management [ASM|LVM] --storage-performance [BALANCED|HIGH_PERFORMANCE] --tde-wallet-password [text] --time-zone [text] --vault-id [text] --wait-for-state [AVAILABLE|FAILED|MAINTENANCE_IN_PROGRESS|MIGRATED|NEEDS_ATTENTION|PROVISIONING|TERMINATED|TERMINATING|UPDATING|UPGRADING] --wait-interval-seconds [integer] oci db system launch-from-backup --admin-password [text] --availability-domain [text] --backup-id [text] --compartment-id [text] --cpu-core-count [integer] --database-edition [ENTERPRISE_EDITION|ENTERPRISE_EDITION_EXTREME_PERFORMANCE|ENTERPRISE_EDITION_HIGH_PERFORMANCE|STANDARD_EDITION] --hostname [text] --shape [text] --ssh-authorized-keys-file [filename] --subnet-id [text] + --backup-network-nsg-ids [complex type] --backup-subnet-id [text] --backup-tde-password [text] --cluster-name [text] --data-storage-percentage [integer] --database-software-image-id [text] --db-name [text] --db-unique-name [text] --defined-tags [complex type] --disk-redundancy [HIGH|NORMAL] --display-name [text] --domain [text] --fault-domains [complex type] --freeform-tags [complex type] --from-json [text] --initial-data-storage-size-in-gb [integer] --is-diagnostics-events-enabled [boolean] --is-health-monitoring-enabled [boolean] --is-incident-logs-enabled [boolean] --kms-key-id [text] --kms-key-version-id [text] --license-model [BRING_YOUR_OWN_LICENSE|LICENSE_INCLUDED] --max-wait-seconds [integer] --node-count [integer] --nsg-ids [complex type] --private-ip [text] --sparse-diskgroup [boolean] --storage-management [ASM|LVM] --storage-performance [BALANCED|HIGH_PERFORMANCE] --time-zone [text] --wait-for-state [AVAILABLE|FAILED|MAINTENANCE_IN_PROGRESS|MIGRATED|NEEDS_ATTENTION|PROVISIONING|TERMINATED|TERMINATING|UPDATING|UPGRADING] --wait-interval-seconds [integer] oci db system launch-from-database --availability-domain [text] --compartment-id [text] --cpu-core-count [integer] --database-edition [ENTERPRISE_EDITION|ENTERPRISE_EDITION_EXTREME_PERFORMANCE|ENTERPRISE_EDITION_HIGH_PERFORMANCE|STANDARD_EDITION] --db-home [complex type] --hostname [text] --shape [text] --ssh-public-keys [complex type] --subnet-id [text] + --backup-network-nsg-ids [complex type] --backup-subnet-id [text] --cluster-name [text] --data-storage-percentage [integer] --db-system-options [complex type] --defined-tags [complex type] --disk-redundancy [HIGH|NORMAL] --display-name [text] --domain [text] --fault-domains [complex type] --freeform-tags [complex type] --from-json [text] --initial-data-storage-size-in-gb [integer] --is-diagnostics-events-enabled [boolean] --is-health-monitoring-enabled [boolean] --is-incident-logs-enabled [boolean] --kms-key-id [text] --kms-key-version-id [text] --license-model [BRING_YOUR_OWN_LICENSE|LICENSE_INCLUDED] --max-wait-seconds [integer] --node-count [integer] --nsg-ids [complex type] --private-ip [text] --sparse-diskgroup [boolean] --storage-performance [BALANCED|HIGH_PERFORMANCE] --time-zone [text] --wait-for-state [AVAILABLE|FAILED|MAINTENANCE_IN_PROGRESS|MIGRATED|NEEDS_ATTENTION|PROVISIONING|TERMINATED|TERMINATING|UPDATING|UPGRADING] --wait-interval-seconds [integer] oci db system launch-from-db-system --availability-domain [text] --compartment-id [text] --cpu-core-count [integer] --db-home [complex type] --hostname [text] --shape [text] --source-db-system-id [text] --ssh-public-keys [complex type] --subnet-id [text] + --backup-network-nsg-ids [complex type] --backup-subnet-id [text] --cluster-name [text] --data-storage-percentage [integer] --db-system-options [complex type] --defined-tags [complex type] --display-name [text] --domain [text] --fault-domains [complex type] --freeform-tags [complex type] --from-json [text] --initial-data-storage-size-in-gb [integer] --is-diagnostics-events-enabled [boolean] --is-health-monitoring-enabled [boolean] --is-incident-logs-enabled [boolean] --kms-key-id [text] --kms-key-version-id [text] --license-model [BRING_YOUR_OWN_LICENSE|LICENSE_INCLUDED] --max-wait-seconds [integer] --node-count [integer] --nsg-ids [complex type] --private-ip [text] --sparse-diskgroup [boolean] --storage-performance [BALANCED|HIGH_PERFORMANCE] --time-zone [text] --wait-for-state [AVAILABLE|FAILED|MAINTENANCE_IN_PROGRESS|MIGRATED|NEEDS_ATTENTION|PROVISIONING|TERMINATED|TERMINATING|UPDATING|UPGRADING] --wait-interval-seconds [integer] @@ -2329,14 +2270,14 @@ oci db vm-cluster list-update-histories --vm-cluster-id [text] + --all --from-js oci db vm-cluster list-updates --vm-cluster-id [text] + --all --from-json [text] --lifecycle-state [AVAILABLE|FAILED|IN_PROGRESS|SUCCESS] --limit [integer] --page [text] --page-size [integer] --update-type [GI_PATCH|GI_UPGRADE|OS_UPDATE] oci db vm-cluster remove --db-servers [complex type] --vm-cluster-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [AVAILABLE|FAILED|MAINTENANCE_IN_PROGRESS|PROVISIONING|TERMINATED|TERMINATING|UPDATING] --wait-interval-seconds [integer] oci db vm-cluster update --vm-cluster-id [text] + --cpu-core-count [integer] --data-collection-options [complex type] --data-storage-size-in-gbs [text] --data-storage-size-in-tbs [text] --db-node-storage-size-in-gbs [integer] --defined-tags [complex type] --force --freeform-tags [complex type] --from-json [text] --if-match [text] --license-model [BRING_YOUR_OWN_LICENSE|LICENSE_INCLUDED] --max-wait-seconds [integer] --memory-size-in-gbs [integer] --ocpu-count [float] --patch-action [text] --patch-id [text] --ssh-public-keys [complex type] --update-action [text] --update-id [text] --wait-for-state [AVAILABLE|FAILED|MAINTENANCE_IN_PROGRESS|PROVISIONING|TERMINATED|TERMINATING|UPDATING] --wait-interval-seconds [integer] -oci db vm-cluster-network create --compartment-id [text] --display-name [text] --exadata-infrastructure-id [text] --scans [complex type] --vm-networks [complex type] + --defined-tags [complex type] --dns [complex type] --freeform-tags [complex type] --from-json [text] --max-wait-seconds [integer] --ntp [complex type] --wait-for-state [ALLOCATED|CREATING|FAILED|NEEDS_ATTENTION|REQUIRES_VALIDATION|TERMINATED|TERMINATING|UPDATING|VALIDATED|VALIDATING|VALIDATION_FAILED] --wait-interval-seconds [integer] +oci db vm-cluster-network create --compartment-id [text] --display-name [text] --exadata-infrastructure-id [text] --scans [complex type] --vm-networks [complex type] + --defined-tags [complex type] --dns [complex type] --dr-scans [complex type] --freeform-tags [complex type] --from-json [text] --max-wait-seconds [integer] --ntp [complex type] --wait-for-state [ALLOCATED|CREATING|FAILED|NEEDS_ATTENTION|REQUIRES_VALIDATION|TERMINATED|TERMINATING|UPDATING|VALIDATED|VALIDATING|VALIDATION_FAILED] --wait-interval-seconds [integer] oci db vm-cluster-network delete --exadata-infrastructure-id [text] --vm-cluster-network-id [text] + --force --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] oci db vm-cluster-network download-validation-report --exadata-infrastructure-id [text] --file [filename] --vm-cluster-network-id [text] + --from-json [text] oci db vm-cluster-network download-vm-cluster-network-config-file --exadata-infrastructure-id [text] --file [filename] --vm-cluster-network-id [text] + --from-json [text] oci db vm-cluster-network get --exadata-infrastructure-id [text] --vm-cluster-network-id [text] + --from-json [text] oci db vm-cluster-network list --compartment-id [text] --exadata-infrastructure-id [text] + --all --display-name [text] --from-json [text] --lifecycle-state [ALLOCATED|CREATING|FAILED|NEEDS_ATTENTION|REQUIRES_VALIDATION|TERMINATED|TERMINATING|UPDATING|VALIDATED|VALIDATING|VALIDATION_FAILED] --limit [integer] --page [text] --page-size [integer] --sort-by [DISPLAYNAME|TIMECREATED] --sort-order [ASC|DESC] oci db vm-cluster-network resize --action [ADD_DBSERVER_NETWORK|REMOVE_DBSERVER_NETWORK] --exadata-infrastructure-id [text] --vm-cluster-network-id [text] --vm-networks [complex type] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ALLOCATED|CREATING|FAILED|NEEDS_ATTENTION|REQUIRES_VALIDATION|TERMINATED|TERMINATING|UPDATING|VALIDATED|VALIDATING|VALIDATION_FAILED] --wait-interval-seconds [integer] -oci db vm-cluster-network update --exadata-infrastructure-id [text] --vm-cluster-network-id [text] + --defined-tags [complex type] --dns [complex type] --force --freeform-tags [complex type] --from-json [text] --if-match [text] --max-wait-seconds [integer] --ntp [complex type] --scans [complex type] --vm-networks [complex type] --wait-for-state [ALLOCATED|CREATING|FAILED|NEEDS_ATTENTION|REQUIRES_VALIDATION|TERMINATED|TERMINATING|UPDATING|VALIDATED|VALIDATING|VALIDATION_FAILED] --wait-interval-seconds [integer] +oci db vm-cluster-network update --exadata-infrastructure-id [text] --vm-cluster-network-id [text] + --defined-tags [complex type] --dns [complex type] --dr-scans [complex type] --force --freeform-tags [complex type] --from-json [text] --if-match [text] --max-wait-seconds [integer] --ntp [complex type] --scans [complex type] --vm-networks [complex type] --wait-for-state [ALLOCATED|CREATING|FAILED|NEEDS_ATTENTION|REQUIRES_VALIDATION|TERMINATED|TERMINATING|UPDATING|VALIDATED|VALIDATING|VALIDATION_FAILED] --wait-interval-seconds [integer] oci db vm-cluster-network validate --exadata-infrastructure-id [text] --vm-cluster-network-id [text] + --from-json [text] --max-wait-seconds [integer] --wait-for-state [ALLOCATED|CREATING|FAILED|NEEDS_ATTENTION|REQUIRES_VALIDATION|TERMINATED|TERMINATING|UPDATING|VALIDATED|VALIDATING|VALIDATION_FAILED] --wait-interval-seconds [integer] oci dbtools connection change-compartment --compartment-id [text] --connection-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED|WAITING] --wait-interval-seconds [integer] oci dbtools connection create-mysql-database --compartment-id [text] --display-name [text] --user-password-secret-id [text] + --advanced-properties [complex type] --connection-string [text] --defined-tags [complex type] --freeform-tags [complex type] --from-json [text] --key-stores [complex type] --max-wait-seconds [integer] --private-endpoint-id [text] --related-resource [complex type] --user-name [text] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED|WAITING] --wait-interval-seconds [integer] @@ -2608,13 +2549,14 @@ oci dns view get --view-id [text] + --from-json [text] --if-modified-since [text oci dns view list --compartment-id [text] + --all --display-name [text] --from-json [text] --id [text] --lifecycle-state [ACTIVE|DELETED|DELETING|UPDATING] --limit [integer] --page [text] --page-size [integer] --scope [GLOBAL|PRIVATE] --sort-by [displayName|timeCreated] --sort-order [ASC|DESC] oci dns view update --view-id [text] + --defined-tags [complex type] --display-name [text] --force --freeform-tags [complex type] --from-json [text] --if-match [text] --if-unmodified-since [text] --max-wait-seconds [integer] --scope [GLOBAL|PRIVATE] --wait-for-state [ACTIVE|DELETED|DELETING|UPDATING] --wait-interval-seconds [integer] oci dns zone change-compartment --compartment-id [text] --zone-id [text] + --from-json [text] --if-match [text] --scope [GLOBAL|PRIVATE] -oci dns zone create --compartment-id [text] --name [text] --zone-type [PRIMARY|SECONDARY] + --defined-tags [complex type] --external-masters [complex type] --freeform-tags [complex type] --from-json [text] --max-wait-seconds [integer] --scope [GLOBAL|PRIVATE] --view-id [text] --wait-for-state [ACTIVE|CREATING|DELETED|DELETING|FAILED|UPDATING] --wait-interval-seconds [integer] +oci dns zone create --compartment-id [text] --name [text] --zone-type [PRIMARY|SECONDARY] + --defined-tags [complex type] --external-downstreams [complex type] --external-masters [complex type] --freeform-tags [complex type] --from-json [text] --max-wait-seconds [integer] --scope [GLOBAL|PRIVATE] --view-id [text] --wait-for-state [ACTIVE|CREATING|DELETED|DELETING|FAILED|UPDATING] --wait-interval-seconds [integer] +oci dns zone create-zone-from-zone-file --compartment-id [text] --create-zone-from-zone-file-details [text] + --from-json [text] --scope [GLOBAL|PRIVATE] --view-id [text] oci dns zone delete --zone-name-or-id [text] + --compartment-id [text] --force --from-json [text] --if-match [text] --if-unmodified-since [text] --max-wait-seconds [integer] --scope [GLOBAL|PRIVATE] --view-id [text] --wait-for-state [ACTIVE|CREATING|DELETED|DELETING|FAILED|UPDATING] --wait-interval-seconds [integer] oci dns zone get --zone-name-or-id [text] + --compartment-id [text] --from-json [text] --if-modified-since [text] --if-none-match [text] --scope [GLOBAL|PRIVATE] --view-id [text] oci dns zone get-zone-content --file [filename] --zone-name-or-id [text] + --from-json [text] --if-modified-since [text] --if-none-match [text] --scope [GLOBAL|PRIVATE] --view-id [text] oci dns zone list --compartment-id [text] + --all --from-json [text] --lifecycle-state [ACTIVE|CREATING|DELETED|DELETING|FAILED|UPDATING] --limit [integer] --name [text] --name-contains [text] --page [text] --page-size [integer] --scope [GLOBAL|PRIVATE] --sort-by [name|timeCreated|zoneType] --sort-order [ASC|DESC] --time-created-greater-than-or-equal-to [datetime] --time-created-less-than [datetime] --tsig-key-id [text] --view-id [text] --zone-type [PRIMARY|SECONDARY] oci dns zone migrate-from-dynect --compartment-id [text] --dynect-migration-details [complex type] --name [text] + --defined-tags [complex type] --freeform-tags [complex type] --from-json [text] --max-wait-seconds [integer] --scope [GLOBAL|PRIVATE] --view-id [text] --wait-for-state [ACTIVE|CREATING|DELETED|DELETING|FAILED|UPDATING] --wait-interval-seconds [integer] -oci dns zone update --zone-name-or-id [text] + --compartment-id [text] --defined-tags [complex type] --external-masters [complex type] --force --freeform-tags [complex type] --from-json [text] --if-match [text] --if-unmodified-since [text] --max-wait-seconds [integer] --scope [GLOBAL|PRIVATE] --view-id [text] --wait-for-state [ACTIVE|CREATING|DELETED|DELETING|FAILED|UPDATING] --wait-interval-seconds [integer] +oci dns zone update --zone-name-or-id [text] + --compartment-id [text] --defined-tags [complex type] --external-downstreams [complex type] --external-masters [complex type] --force --freeform-tags [complex type] --from-json [text] --if-match [text] --if-unmodified-since [text] --max-wait-seconds [integer] --scope [GLOBAL|PRIVATE] --view-id [text] --wait-for-state [ACTIVE|CREATING|DELETED|DELETING|FAILED|UPDATING] --wait-interval-seconds [integer] oci dns zone-transfer-server list --compartment-id [text] + --all --from-json [text] --page [text] --scope [GLOBAL|PRIVATE] oci dts appliance cancel --appliance-label [text] --job-id [text] + --from-json [text] oci dts appliance delete --appliance-label [text] --job-id [text] + --force --from-json [text] @@ -2743,12 +2685,20 @@ oci fs export-set get --export-set-id [text] + --from-json [text] oci fs export-set list --availability-domain [text] --compartment-id [text] + --all --display-name [text] --from-json [text] --id [text] --lifecycle-state [ACTIVE|CREATING|DELETED|DELETING|FAILED] --limit [integer] --page [text] --page-size [integer] --sort-by [DISPLAYNAME|TIMECREATED] --sort-order [ASC|DESC] oci fs export-set update --export-set-id [text] + --display-name [text] --from-json [text] --if-match [text] --max-fs-stat-bytes [integer] --max-fs-stat-files [integer] --max-wait-seconds [integer] --wait-for-state [ACTIVE|CREATING|DELETED|DELETING] --wait-interval-seconds [integer] oci fs file-system change-compartment --compartment-id [text] --file-system-id [text] + --from-json [text] --if-match [text] -oci fs file-system create --availability-domain [text] --compartment-id [text] + --defined-tags [complex type] --display-name [text] --freeform-tags [complex type] --from-json [text] --kms-key-id [text] --max-wait-seconds [integer] --source-snapshot-id [text] --wait-for-state [ACTIVE|CREATING|DELETED|DELETING|FAILED] --wait-interval-seconds [integer] +oci fs file-system create --availability-domain [text] --compartment-id [text] + --defined-tags [complex type] --display-name [text] --filesystem-snapshot-policy-id [text] --freeform-tags [complex type] --from-json [text] --kms-key-id [text] --max-wait-seconds [integer] --source-snapshot-id [text] --wait-for-state [ACTIVE|CREATING|DELETED|DELETING|FAILED] --wait-interval-seconds [integer] oci fs file-system delete --file-system-id [text] + --force --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACTIVE|CREATING|DELETED|DELETING|FAILED] --wait-interval-seconds [integer] oci fs file-system estimate-replication --file-system-id [text] + --change-rate-in-m-bps [integer] --from-json [text] --if-match [text] oci fs file-system get --file-system-id [text] + --from-json [text] -oci fs file-system list --availability-domain [text] --compartment-id [text] + --all --display-name [text] --from-json [text] --id [text] --lifecycle-state [ACTIVE|CREATING|DELETED|DELETING|FAILED] --limit [integer] --page [text] --page-size [integer] --parent-file-system-id [text] --sort-by [DISPLAYNAME|TIMECREATED] --sort-order [ASC|DESC] --source-snapshot-id [text] -oci fs file-system update --file-system-id [text] + --defined-tags [complex type] --display-name [text] --force --freeform-tags [complex type] --from-json [text] --if-match [text] --kms-key-id [text] --max-wait-seconds [integer] --wait-for-state [ACTIVE|CREATING|DELETED|DELETING|FAILED] --wait-interval-seconds [integer] +oci fs file-system list --availability-domain [text] --compartment-id [text] + --all --display-name [text] --filesystem-snapshot-policy-id [text] --from-json [text] --id [text] --lifecycle-state [ACTIVE|CREATING|DELETED|DELETING|FAILED] --limit [integer] --page [text] --page-size [integer] --parent-file-system-id [text] --sort-by [DISPLAYNAME|TIMECREATED] --sort-order [ASC|DESC] --source-snapshot-id [text] +oci fs file-system update --file-system-id [text] + --defined-tags [complex type] --display-name [text] --filesystem-snapshot-policy-id [text] --force --freeform-tags [complex type] --from-json [text] --if-match [text] --kms-key-id [text] --max-wait-seconds [integer] --wait-for-state [ACTIVE|CREATING|DELETED|DELETING|FAILED] --wait-interval-seconds [integer] +oci fs filesystem-snapshot-policy change-compartment --compartment-id [text] --filesystem-snapshot-policy-id [text] + --from-json [text] --if-match [text] +oci fs filesystem-snapshot-policy create --availability-domain [text] --compartment-id [text] + --defined-tags [complex type] --display-name [text] --freeform-tags [complex type] --from-json [text] --max-wait-seconds [integer] --policy-prefix [text] --schedules [complex type] --wait-for-state [ACTIVE|CREATING|DELETED|DELETING|FAILED|INACTIVE] --wait-interval-seconds [integer] +oci fs filesystem-snapshot-policy delete --filesystem-snapshot-policy-id [text] + --force --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACTIVE|CREATING|DELETED|DELETING|FAILED|INACTIVE] --wait-interval-seconds [integer] +oci fs filesystem-snapshot-policy get --filesystem-snapshot-policy-id [text] + --from-json [text] +oci fs filesystem-snapshot-policy list --availability-domain [text] --compartment-id [text] + --all --display-name [text] --from-json [text] --id [text] --lifecycle-state [ACTIVE|CREATING|DELETED|DELETING|FAILED|INACTIVE] --limit [integer] --page [text] --page-size [integer] --sort-by [DISPLAYNAME|TIMECREATED] --sort-order [ASC|DESC] +oci fs filesystem-snapshot-policy pause --filesystem-snapshot-policy-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACTIVE|CREATING|DELETED|DELETING|FAILED|INACTIVE] --wait-interval-seconds [integer] +oci fs filesystem-snapshot-policy unpause --filesystem-snapshot-policy-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACTIVE|CREATING|DELETED|DELETING|FAILED|INACTIVE] --wait-interval-seconds [integer] +oci fs filesystem-snapshot-policy update --filesystem-snapshot-policy-id [text] + --defined-tags [complex type] --display-name [text] --force --freeform-tags [complex type] --from-json [text] --if-match [text] --max-wait-seconds [integer] --policy-prefix [text] --schedules [complex type] --wait-for-state [ACTIVE|CREATING|DELETED|DELETING|FAILED|INACTIVE] --wait-interval-seconds [integer] oci fs mount-target change-compartment --compartment-id [text] --mount-target-id [text] + --from-json [text] --if-match [text] oci fs mount-target create --availability-domain [text] --compartment-id [text] --subnet-id [text] + --defined-tags [complex type] --display-name [text] --freeform-tags [complex type] --from-json [text] --hostname-label [text] --ip-address [text] --max-wait-seconds [integer] --nsg-ids [complex type] --wait-for-state [ACTIVE|CREATING|DELETED|DELETING|FAILED] --wait-interval-seconds [integer] oci fs mount-target delete --mount-target-id [text] + --force --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACTIVE|CREATING|DELETED|DELETING|FAILED] --wait-interval-seconds [integer] @@ -2764,11 +2714,11 @@ oci fs replication update --replication-id [text] + --defined-tags [complex type oci fs replication-target delete --replication-target-id [text] + --force --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACTIVE|CREATING|DELETED|DELETING|FAILED] --wait-interval-seconds [integer] oci fs replication-target get --replication-target-id [text] + --from-json [text] oci fs replication-target list --availability-domain [text] --compartment-id [text] + --all --display-name [text] --from-json [text] --id [text] --lifecycle-state [ACTIVE|CREATING|DELETED|DELETING|FAILED] --limit [integer] --page [text] --page-size [integer] --sort-by [displayName|timeCreated] --sort-order [ASC|DESC] -oci fs snapshot create --file-system-id [text] --name [text] + --defined-tags [complex type] --freeform-tags [complex type] --from-json [text] --max-wait-seconds [integer] --wait-for-state [ACTIVE|CREATING|DELETED|DELETING] --wait-interval-seconds [integer] +oci fs snapshot create --file-system-id [text] --name [text] + --defined-tags [complex type] --expiration-time [datetime] --freeform-tags [complex type] --from-json [text] --max-wait-seconds [integer] --wait-for-state [ACTIVE|CREATING|DELETED|DELETING] --wait-interval-seconds [integer] oci fs snapshot delete --snapshot-id [text] + --force --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACTIVE|CREATING|DELETED|DELETING] --wait-interval-seconds [integer] oci fs snapshot get --snapshot-id [text] + --from-json [text] -oci fs snapshot list --file-system-id [text] + --all --from-json [text] --id [text] --lifecycle-state [ACTIVE|CREATING|DELETED|DELETING|FAILED] --limit [integer] --page [text] --page-size [integer] --sort-order [ASC|DESC] -oci fs snapshot update --snapshot-id [text] + --defined-tags [complex type] --force --freeform-tags [complex type] --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACTIVE|CREATING|DELETED|DELETING] --wait-interval-seconds [integer] +oci fs snapshot list + --all --compartment-id [text] --file-system-id [text] --filesystem-snapshot-policy-id [text] --from-json [text] --id [text] --lifecycle-state [ACTIVE|CREATING|DELETED|DELETING|FAILED] --limit [integer] --page [text] --page-size [integer] --sort-order [ASC|DESC] +oci fs snapshot update --snapshot-id [text] + --defined-tags [complex type] --expiration-time [datetime] --force --freeform-tags [complex type] --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACTIVE|CREATING|DELETED|DELETING] --wait-interval-seconds [integer] oci fusion-apps create-refresh-activity-details create-refresh-activity --fusion-environment-id [text] --source-fusion-environment-id [text] + --from-json [text] --max-wait-seconds [integer] --time-scheduled-start [datetime] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] oci fusion-apps data-masking-activity create --fusion-environment-id [text] + --from-json [text] --is-resume-data-masking [boolean] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] oci fusion-apps data-masking-activity get --data-masking-activity-id [text] --fusion-environment-id [text] + --from-json [text] @@ -2797,8 +2747,11 @@ oci fusion-apps refresh-activity get --fusion-environment-id [text] --refresh-ac oci fusion-apps refresh-activity list --fusion-environment-id [text] + --all --display-name [text] --from-json [text] --lifecycle-state [ACCEPTED|CANCELED|FAILED|IN_PROGRESS|NEEDS_ATTENTION|SUCCEEDED] --limit [integer] --page [text] --page-size [integer] --sort-by [DISPLAY_NAME|TIME_CREATED] --sort-order [ASC|DESC] --time-expected-finish-less-than-or-equal-to [datetime] --time-scheduled-start-greater-than-or-equal-to [datetime] oci fusion-apps scheduled-activity get --fusion-environment-id [text] --scheduled-activity-id [text] + --from-json [text] oci fusion-apps scheduled-activity list --fusion-environment-id [text] + --all --display-name [text] --from-json [text] --lifecycle-state [ACCEPTED|CANCELED|FAILED|IN_PROGRESS|SUCCEEDED] --limit [integer] --page [text] --page-size [integer] --run-cycle [MONTHLY|ONEOFF|QUARTERLY|VERTEX] --sort-by [DISPLAY_NAME|TIME_CREATED] --sort-order [ASC|DESC] --time-expected-finish-less-than-or-equal-to [datetime] --time-scheduled-start-greater-than-or-equal-to [datetime] +oci fusion-apps service-attachment create --fusion-environment-id [text] --service-instance-id [text] --service-instance-type [text] + --from-json [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] +oci fusion-apps service-attachment delete --fusion-environment-id [text] --service-attachment-id [text] + --force --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] oci fusion-apps service-attachment get --fusion-environment-id [text] --service-attachment-id [text] + --from-json [text] oci fusion-apps service-attachment list --fusion-environment-id [text] + --all --display-name [text] --from-json [text] --lifecycle-state [ACTIVE|CREATING|DELETED|DELETING|FAILED|UPDATING] --limit [integer] --page [text] --page-size [integer] --service-instance-type [ANALYTICS_WAREHOUSE|DIGITAL_ASSISTANT|INTEGRATION_CLOUD|VBCS|VISUAL_BUILDER_STUDIO] --sort-by [DISPLAY_NAME|TIME_CREATED] --sort-order [ASC|DESC] +oci fusion-apps service-attachment verify --fusion-environment-id [text] --service-instance-id [text] --service-instance-type [text] + --from-json [text] oci fusion-apps time-available-for-refresh list --fusion-environment-id [text] + --all --from-json [text] --limit [integer] --page [text] --page-size [integer] --sort-by [DISPLAY_NAME|TIME_CREATED] --sort-order [ASC|DESC] oci fusion-apps update-refresh-activity-details update-refresh-activity --fusion-environment-id [text] --refresh-activity-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --time-scheduled-start [datetime] --wait-for-state [ACCEPTED|CANCELED|FAILED|IN_PROGRESS|NEEDS_ATTENTION|SUCCEEDED] --wait-interval-seconds [integer] oci fusion-apps work-request get --work-request-id [text] + --from-json [text] @@ -3618,15 +3571,13 @@ oci logging log-group delete --log-group-id [text] + --force --from-json [text] oci logging log-group get --log-group-id [text] + --from-json [text] oci logging log-group list --compartment-id [text] + --all --compartmentidinsubtree [boolean] --display-name [text] --from-json [text] --limit [integer] --page [text] --page-size [integer] --sort-by [displayName|timeCreated] --sort-order [ASC|DESC] oci logging log-group update --log-group-id [text] + --defined-tags [complex type] --description [text] --display-name [text] --force --freeform-tags [complex type] --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELLING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] -oci logging log-included-search get --compartment-id [text] --log-included-search-id [text] + --from-json [text] -oci logging log-included-search list --compartment-id [text] + --all --display-name [text] --from-json [text] --limit [integer] --log-included-search-id [text] --page [text] --page-size [integer] --sort-by [displayName|timeCreated] --sort-order [ASC|DESC] oci logging log-saved-search change-compartment --compartment-id [text] --log-saved-search-id [text] + --from-json [text] --if-match [text] oci logging log-saved-search create --compartment-id [text] --log-query [text] --name [text] + --defined-tags [complex type] --description [text] --freeform-tags [complex type] --from-json [text] --max-wait-seconds [integer] --wait-for-state [ACTIVE|CREATING|DELETING|FAILED|INACTIVE|UPDATING] --wait-interval-seconds [integer] oci logging log-saved-search delete --log-saved-search-id [text] + --force --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACTIVE|CREATING|DELETING|FAILED|INACTIVE|UPDATING] --wait-interval-seconds [integer] oci logging log-saved-search get --log-saved-search-id [text] + --from-json [text] oci logging log-saved-search list --compartment-id [text] + --all --from-json [text] --limit [integer] --log-saved-search-id [text] --name [text] --page [text] --page-size [integer] --sort-by [displayName|timeCreated] --sort-order [ASC|DESC] oci logging log-saved-search update --log-saved-search-id [text] + --defined-tags [complex type] --description [text] --force --freeform-tags [complex type] --from-json [text] --if-match [text] --log-query [text] --max-wait-seconds [integer] --name [text] --wait-for-state [ACTIVE|CREATING|DELETING|FAILED|INACTIVE|UPDATING] --wait-interval-seconds [integer] -oci logging service list + --all --from-json [text] +oci logging service list + --all --from-json [text] --service-stage [text] oci logging work-request delete --work-request-id [text] + --force --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELLING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] oci logging work-request get --work-request-id [text] + --from-json [text] oci logging work-request list --compartment-id [text] + --all --from-json [text] --id [text] --limit [integer] --page [text] --page-size [integer] --sort-by [operationType|status|timeAccepted] --sort-order [ASC|DESC] --status [ACCEPTED|CANCELED|CANCELLING|FAILED|IN_PROGRESS|SUCCEEDED] @@ -3658,19 +3609,19 @@ oci management-agent work-request list --compartment-id [text] + --agent-id [tex oci management-agent work-request-error list --work-request-id [text] + --all --from-json [text] --limit [integer] --page [text] --page-size [integer] --sort-by [timestamp] --sort-order [ASC|DESC] oci management-agent work-request-log-entry list-work-request-logs --work-request-id [text] + --all --from-json [text] --limit [integer] --page [text] --page-size [integer] --sort-by [timestamp] --sort-order [ASC|DESC] oci management-dashboard dashboard change-compartment --compartment-id [text] --management-dashboard-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACTIVE] --wait-interval-seconds [integer] -oci management-dashboard dashboard create --compartment-id [text] --data-config [complex type] --description [text] --display-name [text] --is-favorite [boolean] --is-oob-dashboard [boolean] --is-show-description [boolean] --is-show-in-home [boolean] --metadata-version [text] --nls [complex type] --provider-id [text] --provider-name [text] --provider-version [text] --screen-image [text] --tiles [complex type] --type [text] --ui-config [complex type] + --dashboard-id [text] --defined-tags [complex type] --drilldown-config [complex type] --freeform-tags [complex type] --from-json [text] --max-wait-seconds [integer] --parameters-config [complex type] --wait-for-state [ACTIVE] --wait-interval-seconds [integer] +oci management-dashboard dashboard create --compartment-id [text] --data-config [complex type] --description [text] --display-name [text] --is-favorite [boolean] --is-oob-dashboard [boolean] --is-show-description [boolean] --is-show-in-home [boolean] --metadata-version [text] --nls [complex type] --provider-id [text] --provider-name [text] --provider-version [text] --screen-image [text] --tiles [complex type] --type [text] --ui-config [complex type] + --dashboard-id [text] --defined-tags [complex type] --drilldown-config [complex type] --features-config [complex type] --freeform-tags [complex type] --from-json [text] --max-wait-seconds [integer] --parameters-config [complex type] --wait-for-state [ACTIVE] --wait-interval-seconds [integer] oci management-dashboard dashboard delete --management-dashboard-id [text] + --force --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACTIVE] --wait-interval-seconds [integer] oci management-dashboard dashboard export --export-dashboard-id [text] + --from-json [text] oci management-dashboard dashboard get --management-dashboard-id [text] + --from-json [text] oci management-dashboard dashboard import --dashboards [complex type] + --defined-tags [complex type] --freeform-tags [complex type] --from-json [text] --if-match [text] oci management-dashboard dashboard list --compartment-id [text] + --all --display-name [text] --from-json [text] --limit [integer] --page [text] --page-size [integer] --sort-by [displayName|timeCreated] --sort-order [ASC|DESC] -oci management-dashboard dashboard update --management-dashboard-id [text] + --compartment-id [text] --data-config [complex type] --defined-tags [complex type] --description [text] --display-name [text] --drilldown-config [complex type] --force --freeform-tags [complex type] --from-json [text] --if-match [text] --is-favorite [boolean] --is-oob-dashboard [boolean] --is-show-description [boolean] --is-show-in-home [boolean] --max-wait-seconds [integer] --metadata-version [text] --nls [complex type] --parameters-config [complex type] --provider-id [text] --provider-name [text] --provider-version [text] --screen-image [text] --tiles [complex type] --type [text] --ui-config [complex type] --wait-for-state [ACTIVE] --wait-interval-seconds [integer] +oci management-dashboard dashboard update --management-dashboard-id [text] + --compartment-id [text] --data-config [complex type] --defined-tags [complex type] --description [text] --display-name [text] --drilldown-config [complex type] --features-config [complex type] --force --freeform-tags [complex type] --from-json [text] --if-match [text] --is-favorite [boolean] --is-oob-dashboard [boolean] --is-show-description [boolean] --is-show-in-home [boolean] --max-wait-seconds [integer] --metadata-version [text] --nls [complex type] --parameters-config [complex type] --provider-id [text] --provider-name [text] --provider-version [text] --screen-image [text] --tiles [complex type] --type [text] --ui-config [complex type] --wait-for-state [ACTIVE] --wait-interval-seconds [integer] oci management-dashboard saved-search change-compartment --compartment-id [text] --management-saved-search-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACTIVE] --wait-interval-seconds [integer] -oci management-dashboard saved-search create --compartment-id [text] --data-config [complex type] --description [text] --display-name [text] --is-oob-saved-search [boolean] --metadata-version [text] --nls [complex type] --provider-id [text] --provider-name [text] --provider-version [text] --screen-image [text] --type [FILTER_DONT_SHOW_IN_DASHBOARD|FILTER_SHOW_IN_DASHBOARD|SEARCH_DONT_SHOW_IN_DASHBOARD|SEARCH_SHOW_IN_DASHBOARD|WIDGET_DONT_SHOW_IN_DASHBOARD|WIDGET_SHOW_IN_DASHBOARD] --ui-config [complex type] --widget-template [text] --widget-vm [text] + --defined-tags [complex type] --drilldown-config [complex type] --freeform-tags [complex type] --from-json [text] --id [text] --max-wait-seconds [integer] --parameters-config [complex type] --wait-for-state [ACTIVE] --wait-interval-seconds [integer] +oci management-dashboard saved-search create --compartment-id [text] --data-config [complex type] --description [text] --display-name [text] --is-oob-saved-search [boolean] --metadata-version [text] --nls [complex type] --provider-id [text] --provider-name [text] --provider-version [text] --screen-image [text] --type [FILTER_DONT_SHOW_IN_DASHBOARD|FILTER_SHOW_IN_DASHBOARD|SEARCH_DONT_SHOW_IN_DASHBOARD|SEARCH_SHOW_IN_DASHBOARD|WIDGET_DONT_SHOW_IN_DASHBOARD|WIDGET_SHOW_IN_DASHBOARD] --ui-config [complex type] --widget-template [text] --widget-vm [text] + --defined-tags [complex type] --drilldown-config [complex type] --features-config [complex type] --freeform-tags [complex type] --from-json [text] --id [text] --max-wait-seconds [integer] --parameters-config [complex type] --wait-for-state [ACTIVE] --wait-interval-seconds [integer] oci management-dashboard saved-search delete --management-saved-search-id [text] + --force --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACTIVE] --wait-interval-seconds [integer] oci management-dashboard saved-search get --management-saved-search-id [text] + --from-json [text] oci management-dashboard saved-search list --compartment-id [text] + --all --display-name [text] --from-json [text] --limit [integer] --page [text] --page-size [integer] --sort-by [displayName|timeCreated] --sort-order [ASC|DESC] -oci management-dashboard saved-search update --management-saved-search-id [text] + --compartment-id [text] --data-config [complex type] --defined-tags [complex type] --description [text] --display-name [text] --drilldown-config [complex type] --force --freeform-tags [complex type] --from-json [text] --if-match [text] --is-oob-saved-search [boolean] --max-wait-seconds [integer] --metadata-version [text] --nls [complex type] --parameters-config [complex type] --provider-id [text] --provider-name [text] --provider-version [text] --screen-image [text] --type [FILTER_DONT_SHOW_IN_DASHBOARD|FILTER_SHOW_IN_DASHBOARD|SEARCH_DONT_SHOW_IN_DASHBOARD|SEARCH_SHOW_IN_DASHBOARD|WIDGET_DONT_SHOW_IN_DASHBOARD|WIDGET_SHOW_IN_DASHBOARD] --ui-config [complex type] --wait-for-state [ACTIVE] --wait-interval-seconds [integer] --widget-template [text] --widget-vm [text] +oci management-dashboard saved-search update --management-saved-search-id [text] + --compartment-id [text] --data-config [complex type] --defined-tags [complex type] --description [text] --display-name [text] --drilldown-config [complex type] --features-config [complex type] --force --freeform-tags [complex type] --from-json [text] --if-match [text] --is-oob-saved-search [boolean] --max-wait-seconds [integer] --metadata-version [text] --nls [complex type] --parameters-config [complex type] --provider-id [text] --provider-name [text] --provider-version [text] --screen-image [text] --type [FILTER_DONT_SHOW_IN_DASHBOARD|FILTER_SHOW_IN_DASHBOARD|SEARCH_DONT_SHOW_IN_DASHBOARD|SEARCH_SHOW_IN_DASHBOARD|WIDGET_DONT_SHOW_IN_DASHBOARD|WIDGET_SHOW_IN_DASHBOARD] --ui-config [complex type] --wait-for-state [ACTIVE] --wait-interval-seconds [integer] --widget-template [text] --widget-vm [text] oci marketplace accepted-agreement create --agreement-id [text] --compartment-id [text] --listing-id [text] --package-version [text] --signature [text] + --defined-tags [complex type] --display-name [text] --freeform-tags [complex type] --from-json [text] oci marketplace accepted-agreement delete --accepted-agreement-id [text] + --force --from-json [text] --if-match [text] --signature [text] oci marketplace accepted-agreement get --accepted-agreement-id [text] + --from-json [text] @@ -3797,13 +3748,13 @@ oci mysql db-system clone --compartment-id [text] --shape-name [text] --source-b oci mysql db-system create --compartment-id [text] --shape-name [text] --subnet-id [text] + --admin-password [text] --admin-username [text] --availability-domain [text] --backup-policy [complex type] --configuration-id [text] --crash-recovery [DISABLED|ENABLED] --data-storage-size-in-gbs [integer] --defined-tags [complex type] --deletion-policy [complex type] --description [text] --display-name [text] --fault-domain [text] --freeform-tags [complex type] --from-json [text] --hostname-label [text] --ip-address [text] --is-highly-available [boolean] --maintenance [complex type] --max-wait-seconds [integer] --mysql-version [text] --port [integer] --port-x [integer] --source [complex type] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] oci mysql db-system delete --db-system-id [text] + --force --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] oci mysql db-system get --db-system-id [text] + --from-json [text] --if-none-match [text] -oci mysql db-system heatwave-cluster add --cluster-size [integer] --db-system-id [text] --shape-name [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] +oci mysql db-system heatwave-cluster add --cluster-size [integer] --db-system-id [text] --shape-name [text] + --from-json [text] --if-match [text] --is-lakehouse-enabled [boolean] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] oci mysql db-system heatwave-cluster delete --db-system-id [text] + --force --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] oci mysql db-system heatwave-cluster get --db-system-id [text] + --from-json [text] --if-none-match [text] oci mysql db-system heatwave-cluster restart --db-system-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] oci mysql db-system heatwave-cluster start --db-system-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] oci mysql db-system heatwave-cluster stop --db-system-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] -oci mysql db-system heatwave-cluster update --db-system-id [text] + --cluster-size [integer] --from-json [text] --if-match [text] --max-wait-seconds [integer] --shape-name [text] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] +oci mysql db-system heatwave-cluster update --db-system-id [text] + --cluster-size [integer] --from-json [text] --if-match [text] --is-lakehouse-enabled [boolean] --max-wait-seconds [integer] --shape-name [text] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] oci mysql db-system heatwave-cluster-memory-estimate generate --db-system-id [text] + --from-json [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] oci mysql db-system heatwave-cluster-memory-estimate get --db-system-id [text] + --from-json [text] oci mysql db-system import --compartment-id [text] --shape-name [text] --source-url [text] --subnet-id [text] + --admin-password [text] --admin-username [text] --availability-domain [text] --backup-policy [complex type] --configuration-id [text] --crash-recovery [DISABLED|ENABLED] --data-storage-size-in-gbs [integer] --defined-tags [complex type] --deletion-policy [complex type] --description [text] --display-name [text] --fault-domain [text] --freeform-tags [complex type] --from-json [text] --hostname-label [text] --ip-address [text] --is-highly-available [boolean] --maintenance [complex type] --max-wait-seconds [integer] --mysql-version [text] --port [integer] --port-x [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] @@ -4151,7 +4102,7 @@ oci ocvs esxi-host list + --all --compute-id [text] --display-name [text] --from oci ocvs esxi-host update --esxi-id [text] + --defined-tags [complex type] --display-name [text] --force --freeform-tags [complex type] --from-json [text] --if-match [text] --max-wait-seconds [integer] --next-sku [HOUR|MONTH|ONE_YEAR|THREE_YEARS] --wait-for-state [ACTIVE|CREATING|DELETED|DELETING|FAILED|UPDATING] --wait-interval-seconds [integer] oci ocvs sddc cancel-downgrade-hcx --sddc-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] oci ocvs sddc change-compartment --compartment-id [text] --sddc-id [text] + --from-json [text] --if-match [text] -oci ocvs sddc create --compartment-id [text] --compute-availability-domain [text] --esxi-count [text] --instance-prefix [text] --nsx-edge-up1-id [text] --nsx-edge-up2-id [text] --nsx-edge-vtep-id [text] --nsx-vtep-id [text] --prov-subnet-id [text] --ssh-authorized-keys [text] --vmotion-id [text] --vmware-version [text] --vsan-id [text] --vsphere-id [text] + --capacity-reservation-id [text] --defined-tags [complex type] --display-name [text] --freeform-tags [complex type] --from-json [text] --hcx-vlan-id [text] --initial-host-ocpu-count [float] --initial-host-shape-name [text] --initial-sku [HOUR|MONTH|ONE_YEAR|THREE_YEARS] --is-hcx-enabled [boolean] --is-hcx-enterprise-enabled [boolean] --is-shielded-instance-enabled [boolean] --is-single-host-sddc [boolean] --max-wait-seconds [integer] --provisioning-vlan-id [text] --replication-vlan-id [text] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] --workload-cidr [text] +oci ocvs sddc create --compartment-id [text] --compute-availability-domain [text] --esxi-count [text] --instance-prefix [text] --nsx-edge-up1-id [text] --nsx-edge-up2-id [text] --nsx-edge-vtep-id [text] --nsx-vtep-id [text] --prov-subnet-id [text] --ssh-authorized-keys [text] --vmotion-id [text] --vmware-version [text] --vsan-id [text] --vsphere-id [text] + --capacity-reservation-id [text] --datastores [complex type] --defined-tags [complex type] --display-name [text] --freeform-tags [complex type] --from-json [text] --hcx-vlan-id [text] --initial-host-ocpu-count [float] --initial-host-shape-name [text] --initial-sku [HOUR|MONTH|ONE_YEAR|THREE_YEARS] --is-hcx-enabled [boolean] --is-hcx-enterprise-enabled [boolean] --is-shielded-instance-enabled [boolean] --is-single-host-sddc [boolean] --max-wait-seconds [integer] --provisioning-vlan-id [text] --replication-vlan-id [text] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] --workload-cidr [text] oci ocvs sddc delete --sddc-id [text] + --force --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] oci ocvs sddc downgrade-hcx --reserving-hcx-on-premise-license-keys [complex type] --sddc-id [text] + --from-json [text] --if-match [text] --max-wait-seconds [integer] --wait-for-state [ACCEPTED|CANCELED|CANCELING|FAILED|IN_PROGRESS|SUCCEEDED] --wait-interval-seconds [integer] oci ocvs sddc get --sddc-id [text] + --from-json [text] diff --git a/services/data_flow/src/oci_cli_data_flow/generated/dataflow_cli.py b/services/data_flow/src/oci_cli_data_flow/generated/dataflow_cli.py index 46e1ac401..22ec90c20 100644 --- a/services/data_flow/src/oci_cli_data_flow/generated/dataflow_cli.py +++ b/services/data_flow/src/oci_cli_data_flow/generated/dataflow_cli.py @@ -46,6 +46,12 @@ def work_request_error_group(): pass +@click.command(cli_util.override('data_flow.pool_group.command_name', 'pool'), cls=CommandGroupWithAlias, help="""A Data Flow pool object.""") +@cli_util.help_option_group +def pool_group(): + pass + + @click.command(cli_util.override('data_flow.private_endpoint_group.command_name', 'private-endpoint'), cls=CommandGroupWithAlias, help="""A Data Flow private endpoint object.""") @cli_util.help_option_group def private_endpoint_group(): @@ -80,6 +86,7 @@ def work_request_group(): data_flow_root_group.add_command(statement_collection_group) data_flow_root_group.add_command(application_group) data_flow_root_group.add_command(work_request_error_group) +data_flow_root_group.add_command(pool_group) data_flow_root_group.add_command(private_endpoint_group) data_flow_root_group.add_command(statement_group) data_flow_root_group.add_command(run_log_summary_group) @@ -118,6 +125,37 @@ def change_application_compartment(ctx, from_json, application_id, compartment_i cli_util.render_response(result, ctx) +@pool_group.command(name=cli_util.override('data_flow.change_pool_compartment.command_name', 'change-compartment'), help=u"""Moves a pool into a different compartment. When provided, If-Match is checked against ETag values of the resource. Associated resources, like historical metrics, will not be automatically moved. The pool must be in a terminal state (STOPPED, FAILED) in order for it to be moved to a different compartment \n[Command Reference](changePoolCompartment)""") +@cli_util.option('--pool-id', required=True, help=u"""The unique ID for a pool.""") +@cli_util.option('--compartment-id', required=True, help=u"""The OCID of a compartment.""") +@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.""") +@json_skeleton_utils.get_cli_json_input_option({}) +@cli_util.help_option +@click.pass_context +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}) +@cli_util.wrap_exceptions +def change_pool_compartment(ctx, from_json, pool_id, compartment_id, if_match): + + if isinstance(pool_id, six.string_types) and len(pool_id.strip()) == 0: + raise click.UsageError('Parameter --pool-id cannot be whitespace or empty string') + + kwargs = {} + if if_match is not None: + kwargs['if_match'] = if_match + kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) + + _details = {} + _details['compartmentId'] = compartment_id + + client = cli_util.build_client('data_flow', 'data_flow', ctx) + result = client.change_pool_compartment( + pool_id=pool_id, + change_pool_compartment_details=_details, + **kwargs + ) + cli_util.render_response(result, ctx) + + @private_endpoint_group.command(name=cli_util.override('data_flow.change_private_endpoint_compartment.command_name', 'change-compartment'), help=u"""Moves a private endpoint into a different compartment. When provided, If-Match is checked against ETag values of the resource. \n[Command Reference](changePrivateEndpointCompartment)""") @cli_util.option('--private-endpoint-id', required=True, help=u"""The unique ID for a private endpoint.""") @cli_util.option('--compartment-id', required=True, help=u"""The OCID of a compartment.""") @@ -231,6 +269,7 @@ def change_run_compartment(ctx, from_json, run_id, compartment_id, if_match): @cli_util.option('--parameters', type=custom_types.CLI_COMPLEX_TYPE, help=u"""An array of name/value pairs used to fill placeholders found in properties like `Application.arguments`. The name must be a string of one or more word characters (a-z, A-Z, 0-9, _). The value can be a string of 0 or more characters of any kind. Example: [ { name: \"iterations\", value: \"10\"}, { name: \"input_file\", value: \"mydata.xml\" }, { name: \"variable_x\", value: \"${x}\"} ] This option is a JSON list with items of type ApplicationParameter. For documentation on ApplicationParameter please see our API reference: https://docs.cloud.oracle.com/api/#/en/dataflow/20200129/datatypes/ApplicationParameter.""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) +@cli_util.option('--pool-id', help=u"""The OCID of a pool. Unique Id to indentify a dataflow pool resource.""") @cli_util.option('--private-endpoint-id', help=u"""The OCID of a private endpoint.""") @cli_util.option('--type', type=custom_types.CliCaseInsensitiveChoice(["BATCH", "STREAMING", "SESSION"]), help=u"""The Spark application processing type.""") @cli_util.option('--warehouse-bucket-uri', help=u"""An Oracle Cloud Infrastructure URI of the bucket to be used as default warehouse directory for BATCH SQL runs. See https://docs.cloud.oracle.com/iaas/Content/API/SDKDocs/hdfsconnector.htm#uriformat.""") @@ -244,7 +283,7 @@ def change_run_compartment(ctx, from_json, run_id, compartment_id, if_match): @click.pass_context @json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'arguments': {'module': 'data_flow', 'class': 'list[string]'}, 'application-log-config': {'module': 'data_flow', 'class': 'ApplicationLogConfig'}, 'configuration': {'module': 'data_flow', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'data_flow', 'class': 'dict(str, dict(str, object))'}, 'driver-shape-config': {'module': 'data_flow', 'class': 'ShapeConfig'}, 'executor-shape-config': {'module': 'data_flow', 'class': 'ShapeConfig'}, 'freeform-tags': {'module': 'data_flow', 'class': 'dict(str, string)'}, 'parameters': {'module': 'data_flow', 'class': 'list[ApplicationParameter]'}}, output_type={'module': 'data_flow', 'class': 'Application'}) @cli_util.wrap_exceptions -def create_application(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, compartment_id, display_name, driver_shape, executor_shape, language, num_executors, spark_version, archive_uri, arguments, application_log_config, class_name, configuration, defined_tags, description, driver_shape_config, execute, executor_shape_config, file_uri, freeform_tags, logs_bucket_uri, metastore_id, parameters, private_endpoint_id, type, warehouse_bucket_uri, max_duration_in_minutes, idle_timeout_in_minutes): +def create_application(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, compartment_id, display_name, driver_shape, executor_shape, language, num_executors, spark_version, archive_uri, arguments, application_log_config, class_name, configuration, defined_tags, description, driver_shape_config, execute, executor_shape_config, file_uri, freeform_tags, logs_bucket_uri, metastore_id, parameters, pool_id, private_endpoint_id, type, warehouse_bucket_uri, max_duration_in_minutes, idle_timeout_in_minutes): kwargs = {} kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) @@ -303,6 +342,9 @@ def create_application(ctx, from_json, wait_for_state, max_wait_seconds, wait_in if parameters is not None: _details['parameters'] = cli_util.parse_json_parameter("parameters", parameters) + if pool_id is not None: + _details['poolId'] = pool_id + if private_endpoint_id is not None: _details['privateEndpointId'] = private_endpoint_id @@ -349,6 +391,81 @@ def create_application(ctx, from_json, wait_for_state, max_wait_seconds, wait_in cli_util.render_response(result, ctx) +@pool_group.command(name=cli_util.override('data_flow.create_pool.command_name', 'create'), help=u"""Create a pool to be used by dataflow runs or applications. \n[Command Reference](createPool)""") +@cli_util.option('--compartment-id', required=True, help=u"""The OCID of a compartment.""") +@cli_util.option('--display-name', required=True, help=u"""A user-friendly name. It does not have to be unique. Avoid entering confidential information.""") +@cli_util.option('--configurations', required=True, type=custom_types.CLI_COMPLEX_TYPE, help=u"""List of PoolConfig items.""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) +@cli_util.option('--description', help=u"""A user-friendly description. Avoid entering confidential information.""") +@cli_util.option('--schedules', type=custom_types.CLI_COMPLEX_TYPE, help=u"""A list of schedules for pool to auto start and stop. + +This option is a JSON list with items of type PoolSchedule. For documentation on PoolSchedule please see our API reference: https://docs.cloud.oracle.com/api/#/en/dataflow/20200129/datatypes/PoolSchedule.""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) +@cli_util.option('--idle-timeout-in-minutes', type=click.INT, help=u"""Optional timeout value in minutes used to auto stop Pools. A Pool will be auto stopped after inactivity for this amount of time period. If value not set, pool will not be auto stopped auto.""") +@cli_util.option('--freeform-tags', type=custom_types.CLI_COMPLEX_TYPE, help=u"""Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags]. Example: `{\"Department\": \"Finance\"}`""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) +@cli_util.option('--defined-tags', type=custom_types.CLI_COMPLEX_TYPE, help=u"""Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags]. Example: `{\"Operations\": {\"CostCenter\": \"42\"}}`""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) +@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "CANCELLED", "CANCELLING", "FAILED", "INPROGRESS", "SUCCEEDED"]), 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 SUCCEEDED --wait-for-state FAILED 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.""") +@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.""") +@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.""") +@json_skeleton_utils.get_cli_json_input_option({'configurations': {'module': 'data_flow', 'class': 'list[PoolConfig]'}, 'schedules': {'module': 'data_flow', 'class': 'list[PoolSchedule]'}, 'freeform-tags': {'module': 'data_flow', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'data_flow', 'class': 'dict(str, dict(str, object))'}}) +@cli_util.help_option +@click.pass_context +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'configurations': {'module': 'data_flow', 'class': 'list[PoolConfig]'}, 'schedules': {'module': 'data_flow', 'class': 'list[PoolSchedule]'}, 'freeform-tags': {'module': 'data_flow', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'data_flow', 'class': 'dict(str, dict(str, object))'}}, output_type={'module': 'data_flow', 'class': 'Pool'}) +@cli_util.wrap_exceptions +def create_pool(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, compartment_id, display_name, configurations, description, schedules, idle_timeout_in_minutes, freeform_tags, defined_tags): + + kwargs = {} + kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) + + _details = {} + _details['compartmentId'] = compartment_id + _details['displayName'] = display_name + _details['configurations'] = cli_util.parse_json_parameter("configurations", configurations) + + if description is not None: + _details['description'] = description + + if schedules is not None: + _details['schedules'] = cli_util.parse_json_parameter("schedules", schedules) + + if idle_timeout_in_minutes is not None: + _details['idleTimeoutInMinutes'] = idle_timeout_in_minutes + + if freeform_tags is not None: + _details['freeformTags'] = cli_util.parse_json_parameter("freeform_tags", freeform_tags) + + if defined_tags is not None: + _details['definedTags'] = cli_util.parse_json_parameter("defined_tags", defined_tags) + + client = cli_util.build_client('data_flow', 'data_flow', ctx) + result = client.create_pool( + create_pool_details=_details, + **kwargs + ) + if wait_for_state: + + if hasattr(client, 'get_work_request') and callable(getattr(client, 'get_work_request')): + try: + wait_period_kwargs = {} + if max_wait_seconds is not None: + wait_period_kwargs['max_wait_seconds'] = max_wait_seconds + if wait_interval_seconds is not None: + wait_period_kwargs['max_interval_seconds'] = wait_interval_seconds + + click.echo('Action completed. Waiting until the work request has entered state: {}'.format(wait_for_state), file=sys.stderr) + result = oci.wait_until(client, client.get_work_request(result.headers['opc-work-request-id']), 'status', wait_for_state, **wait_period_kwargs) + except oci.exceptions.MaximumWaitTimeExceeded as e: + # If we fail, we should show an error, but we should still provide the information to the customer + click.echo('Failed to wait until the work request entered the specified state. Outputting last known resource state', file=sys.stderr) + cli_util.render_response(result, ctx) + sys.exit(2) + except Exception: + click.echo('Encountered error while waiting for work request to enter the specified state. Outputting last known resource state', file=sys.stderr) + cli_util.render_response(result, ctx) + raise + else: + click.echo('Unable to wait for the work request to enter the specified state', file=sys.stderr) + cli_util.render_response(result, ctx) + + @private_endpoint_group.command(name=cli_util.override('data_flow.create_private_endpoint.command_name', 'create'), help=u"""Creates a private endpoint to be used by applications. \n[Command Reference](createPrivateEndpoint)""") @cli_util.option('--compartment-id', required=True, help=u"""The OCID of a compartment.""") @cli_util.option('--dns-zones', required=True, type=custom_types.CLI_COMPLEX_TYPE, help=u"""An array of DNS zone names. Example: `[ \"app.examplecorp.com\", \"app.examplecorp2.com\" ]`""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) @@ -453,6 +570,7 @@ def create_private_endpoint(ctx, from_json, wait_for_state, max_wait_seconds, wa @cli_util.option('--parameters', type=custom_types.CLI_COMPLEX_TYPE, help=u"""An array of name/value pairs used to fill placeholders found in properties like `Application.arguments`. The name must be a string of one or more word characters (a-z, A-Z, 0-9, _). The value can be a string of 0 or more characters of any kind. Example: [ { name: \"iterations\", value: \"10\"}, { name: \"input_file\", value: \"mydata.xml\" }, { name: \"variable_x\", value: \"${x}\"} ] This option is a JSON list with items of type ApplicationParameter. For documentation on ApplicationParameter please see our API reference: https://docs.cloud.oracle.com/api/#/en/dataflow/20200129/datatypes/ApplicationParameter.""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) +@cli_util.option('--pool-id', help=u"""The OCID of a pool. Unique Id to indentify a dataflow pool resource.""") @cli_util.option('--spark-version', help=u"""The Spark version utilized to run the application. This value may be set if applicationId is not since the Spark version will be taken from the associated application.""") @cli_util.option('--type', type=custom_types.CliCaseInsensitiveChoice(["BATCH", "STREAMING", "SESSION"]), help=u"""The Spark application processing type.""") @cli_util.option('--warehouse-bucket-uri', help=u"""An Oracle Cloud Infrastructure URI of the bucket to be used as default warehouse directory for BATCH SQL runs. See https://docs.cloud.oracle.com/iaas/Content/API/SDKDocs/hdfsconnector.htm#uriformat.""") @@ -466,7 +584,7 @@ def create_private_endpoint(ctx, from_json, wait_for_state, max_wait_seconds, wa @click.pass_context @json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'application-log-config': {'module': 'data_flow', 'class': 'ApplicationLogConfig'}, 'arguments': {'module': 'data_flow', 'class': 'list[string]'}, 'configuration': {'module': 'data_flow', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'data_flow', 'class': 'dict(str, dict(str, object))'}, 'driver-shape-config': {'module': 'data_flow', 'class': 'ShapeConfig'}, 'executor-shape-config': {'module': 'data_flow', 'class': 'ShapeConfig'}, 'freeform-tags': {'module': 'data_flow', 'class': 'dict(str, string)'}, 'parameters': {'module': 'data_flow', 'class': 'list[ApplicationParameter]'}}, output_type={'module': 'data_flow', 'class': 'Run'}) @cli_util.wrap_exceptions -def create_run(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, compartment_id, application_log_config, application_id, archive_uri, arguments, configuration, defined_tags, display_name, driver_shape, driver_shape_config, execute, executor_shape, executor_shape_config, freeform_tags, logs_bucket_uri, metastore_id, num_executors, parameters, spark_version, type, warehouse_bucket_uri, max_duration_in_minutes, idle_timeout_in_minutes): +def create_run(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, compartment_id, application_log_config, application_id, archive_uri, arguments, configuration, defined_tags, display_name, driver_shape, driver_shape_config, execute, executor_shape, executor_shape_config, freeform_tags, logs_bucket_uri, metastore_id, num_executors, parameters, pool_id, spark_version, type, warehouse_bucket_uri, max_duration_in_minutes, idle_timeout_in_minutes): kwargs = {} kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) @@ -525,6 +643,9 @@ def create_run(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_s if parameters is not None: _details['parameters'] = cli_util.parse_json_parameter("parameters", parameters) + if pool_id is not None: + _details['poolId'] = pool_id + if spark_version is not None: _details['sparkVersion'] = spark_version @@ -689,6 +810,70 @@ def delete_application(ctx, from_json, wait_for_state, max_wait_seconds, wait_in cli_util.render_response(result, ctx) +@pool_group.command(name=cli_util.override('data_flow.delete_pool.command_name', 'delete'), help=u"""Deletes a pool using a `poolId`. \n[Command Reference](deletePool)""") +@cli_util.option('--pool-id', required=True, help=u"""The unique ID for a pool.""") +@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.""") +@cli_util.confirm_delete_option +@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "SCHEDULED", "CREATING", "ACTIVE", "STOPPING", "STOPPED", "UPDATING", "DELETING", "DELETED", "FAILED"]), multiple=True, help="""This operation creates, modifies or deletes a resource that has a defined lifecycle state. Specify this option to perform the action and then wait until the resource reaches a given lifecycle state. Multiple states can be specified, returning on the first state. For example, --wait-for-state SUCCEEDED --wait-for-state FAILED 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.""") +@cli_util.option('--max-wait-seconds', type=click.INT, help="""The maximum time to wait for the resource to reach the lifecycle state defined by --wait-for-state. Defaults to 1200 seconds.""") +@cli_util.option('--wait-interval-seconds', type=click.INT, help="""Check every --wait-interval-seconds to see whether the resource has reached the lifecycle state defined by --wait-for-state. Defaults to 30 seconds.""") +@json_skeleton_utils.get_cli_json_input_option({}) +@cli_util.help_option +@click.pass_context +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}) +@cli_util.wrap_exceptions +def delete_pool(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, pool_id, if_match): + + if isinstance(pool_id, six.string_types) and len(pool_id.strip()) == 0: + raise click.UsageError('Parameter --pool-id cannot be whitespace or empty string') + + kwargs = {} + if if_match is not None: + kwargs['if_match'] = if_match + kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) + client = cli_util.build_client('data_flow', 'data_flow', ctx) + result = client.delete_pool( + pool_id=pool_id, + **kwargs + ) + if wait_for_state: + + if hasattr(client, 'get_pool') and callable(getattr(client, 'get_pool')): + try: + wait_period_kwargs = {} + if max_wait_seconds is not None: + wait_period_kwargs['max_wait_seconds'] = max_wait_seconds + if wait_interval_seconds is not None: + wait_period_kwargs['max_interval_seconds'] = wait_interval_seconds + + click.echo('Action completed. Waiting until the resource has entered state: {}'.format(wait_for_state), file=sys.stderr) + oci.wait_until(client, client.get_pool(pool_id), 'lifecycle_state', wait_for_state, succeed_on_not_found=True, **wait_period_kwargs) + except oci.exceptions.ServiceError as e: + # We make an initial service call so we can pass the result to oci.wait_until(), however if we are waiting on the + # outcome of a delete operation it is possible that the resource is already gone and so the initial service call + # will result in an exception that reflects a HTTP 404. In this case, we can exit with success (rather than raising + # the exception) since this would have been the behaviour in the waiter anyway (as for delete we provide the argument + # succeed_on_not_found=True to the waiter). + # + # Any non-404 should still result in the exception being thrown. + if e.status == 404: + pass + else: + raise + except oci.exceptions.MaximumWaitTimeExceeded as e: + # If we fail, we should show an error, but we should still provide the information to the customer + click.echo('Failed to wait until the resource entered the specified state. Please retrieve the resource to find its current state', file=sys.stderr) + cli_util.render_response(result, ctx) + sys.exit(2) + except Exception: + click.echo('Encountered error while waiting for resource to enter the specified state. Outputting last known resource state', file=sys.stderr) + cli_util.render_response(result, ctx) + raise + else: + click.echo('Unable to wait for the resource to enter the specified state', file=sys.stderr) + cli_util.render_response(result, ctx) + + @private_endpoint_group.command(name=cli_util.override('data_flow.delete_private_endpoint.command_name', 'delete'), help=u"""Deletes a private endpoint using a `privateEndpointId`. \n[Command Reference](deletePrivateEndpoint)""") @cli_util.option('--private-endpoint-id', required=True, help=u"""The unique ID for a private endpoint.""") @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.""") @@ -858,6 +1043,28 @@ def get_application(ctx, from_json, application_id): cli_util.render_response(result, ctx) +@pool_group.command(name=cli_util.override('data_flow.get_pool.command_name', 'get'), help=u"""Retrieves a pool using a `poolId`. \n[Command Reference](getPool)""") +@cli_util.option('--pool-id', required=True, help=u"""The unique ID for a pool.""") +@json_skeleton_utils.get_cli_json_input_option({}) +@cli_util.help_option +@click.pass_context +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}, output_type={'module': 'data_flow', 'class': 'Pool'}) +@cli_util.wrap_exceptions +def get_pool(ctx, from_json, pool_id): + + if isinstance(pool_id, six.string_types) and len(pool_id.strip()) == 0: + raise click.UsageError('Parameter --pool-id cannot be whitespace or empty string') + + kwargs = {} + kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) + client = cli_util.build_client('data_flow', 'data_flow', ctx) + result = client.get_pool( + pool_id=pool_id, + **kwargs + ) + cli_util.render_response(result, ctx) + + @private_endpoint_group.command(name=cli_util.override('data_flow.get_private_endpoint.command_name', 'get'), help=u"""Retrieves an private endpoint using a `privateEndpointId`. \n[Command Reference](getPrivateEndpoint)""") @cli_util.option('--private-endpoint-id', required=True, help=u"""The unique ID for a private endpoint.""") @json_skeleton_utils.get_cli_json_input_option({}) @@ -1067,6 +1274,72 @@ def list_applications(ctx, from_json, all_pages, page_size, compartment_id, limi cli_util.render_response(result, ctx) +@pool_group.command(name=cli_util.override('data_flow.list_pools.command_name', 'list'), help=u"""Lists all pools in the specified compartment. The query must include compartmentId. The query may also include one other parameter. If the query does not include compartmentId, or includes compartmentId, but with two or more other parameters, an error is returned. \n[Command Reference](listPools)""") +@cli_util.option('--compartment-id', required=True, help=u"""The OCID of the compartment.""") +@cli_util.option('--limit', type=click.INT, help=u"""The maximum number of results to return in a paginated `List` call.""") +@cli_util.option('--page', help=u"""The value of the `opc-next-page` or `opc-prev-page` response header from the last `List` call to sent back to server for getting the next page of results.""") +@cli_util.option('--lifecycle-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "SCHEDULED", "CREATING", "ACTIVE", "STOPPING", "STOPPED", "UPDATING", "DELETING", "DELETED", "FAILED"]), help=u"""The LifecycleState of the pool.""") +@cli_util.option('--sort-by', type=custom_types.CliCaseInsensitiveChoice(["timeCreated"]), help=u"""The field used to sort the results. Multiple fields are not supported.""") +@cli_util.option('--sort-order', type=custom_types.CliCaseInsensitiveChoice(["ASC", "DESC"]), help=u"""The ordering of results in ascending or descending order.""") +@cli_util.option('--display-name', help=u"""The query parameter for the Spark application name.""") +@cli_util.option('--owner-principal-id', help=u"""The OCID of the user who created the resource.""") +@cli_util.option('--display-name-starts-with', help=u"""The displayName prefix.""") +@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.""") +@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.""") +@json_skeleton_utils.get_cli_json_input_option({}) +@cli_util.help_option +@click.pass_context +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}, output_type={'module': 'data_flow', 'class': 'PoolCollection'}) +@cli_util.wrap_exceptions +def list_pools(ctx, from_json, all_pages, page_size, compartment_id, limit, page, lifecycle_state, sort_by, sort_order, display_name, owner_principal_id, display_name_starts_with): + + if all_pages and limit: + raise click.UsageError('If you provide the --all option you cannot provide the --limit option') + + kwargs = {} + if limit is not None: + kwargs['limit'] = limit + if page is not None: + kwargs['page'] = page + if lifecycle_state is not None: + kwargs['lifecycle_state'] = lifecycle_state + if sort_by is not None: + kwargs['sort_by'] = sort_by + if sort_order is not None: + kwargs['sort_order'] = sort_order + if display_name is not None: + kwargs['display_name'] = display_name + if owner_principal_id is not None: + kwargs['owner_principal_id'] = owner_principal_id + if display_name_starts_with is not None: + kwargs['display_name_starts_with'] = display_name_starts_with + kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) + client = cli_util.build_client('data_flow', 'data_flow', ctx) + if all_pages: + if page_size: + kwargs['limit'] = page_size + + result = cli_util.list_call_get_all_results( + client.list_pools, + compartment_id=compartment_id, + **kwargs + ) + elif limit is not None: + result = cli_util.list_call_get_up_to_limit( + client.list_pools, + limit, + page_size, + compartment_id=compartment_id, + **kwargs + ) + else: + result = client.list_pools( + compartment_id=compartment_id, + **kwargs + ) + cli_util.render_response(result, ctx) + + @private_endpoint_group.command(name=cli_util.override('data_flow.list_private_endpoints.command_name', 'list'), help=u"""Lists all private endpoints in the specified compartment. The query must include compartmentId. The query may also include one other parameter. If the query does not include compartmentId, or includes compartmentId, but with two or more other parameters, an error is returned. \n[Command Reference](listPrivateEndpoints)""") @cli_util.option('--compartment-id', required=True, help=u"""The OCID of the compartment.""") @cli_util.option('--limit', type=click.INT, help=u"""The maximum number of results to return in a paginated `List` call.""") @@ -1187,6 +1460,7 @@ def list_run_logs(ctx, from_json, all_pages, page_size, run_id, limit, page): @run_group.command(name=cli_util.override('data_flow.list_runs.command_name', 'list'), help=u"""Lists all runs of an application in the specified compartment. Only one parameter other than compartmentId may also be included in a query. The query must include compartmentId. If the query does not include compartmentId, or includes compartmentId but two or more other parameters an error is returned. \n[Command Reference](listRuns)""") @cli_util.option('--compartment-id', required=True, help=u"""The OCID of the compartment.""") @cli_util.option('--application-id', help=u"""The ID of the application.""") +@cli_util.option('--pool-id', help=u"""The ID of the pool.""") @cli_util.option('--owner-principal-id', help=u"""The OCID of the user who created the resource.""") @cli_util.option('--display-name-starts-with', help=u"""The displayName prefix.""") @cli_util.option('--lifecycle-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "CANCELING", "CANCELED", "FAILED", "SUCCEEDED", "STOPPING", "STOPPED"]), help=u"""The LifecycleState of the run.""") @@ -1203,7 +1477,7 @@ def list_run_logs(ctx, from_json, all_pages, page_size, run_id, limit, page): @click.pass_context @json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}, output_type={'module': 'data_flow', 'class': 'list[RunSummary]'}) @cli_util.wrap_exceptions -def list_runs(ctx, from_json, all_pages, page_size, compartment_id, application_id, owner_principal_id, display_name_starts_with, lifecycle_state, time_created_greater_than, limit, page, sort_by, sort_order, display_name): +def list_runs(ctx, from_json, all_pages, page_size, compartment_id, application_id, pool_id, owner_principal_id, display_name_starts_with, lifecycle_state, time_created_greater_than, limit, page, sort_by, sort_order, display_name): if all_pages and limit: raise click.UsageError('If you provide the --all option you cannot provide the --limit option') @@ -1211,6 +1485,8 @@ def list_runs(ctx, from_json, all_pages, page_size, compartment_id, application_ kwargs = {} if application_id is not None: kwargs['application_id'] = application_id + if pool_id is not None: + kwargs['pool_id'] = pool_id if owner_principal_id is not None: kwargs['owner_principal_id'] = owner_principal_id if display_name_starts_with is not None: @@ -1466,6 +1742,108 @@ def list_work_requests(ctx, from_json, all_pages, page_size, compartment_id, lim cli_util.render_response(result, ctx) +@pool_group.command(name=cli_util.override('data_flow.start_pool.command_name', 'start'), help=u"""Starts the dataflow pool for a given `poolId`. When provided, If-Match is checked against ETag values of the resource. \n[Command Reference](startPool)""") +@cli_util.option('--pool-id', required=True, help=u"""The unique ID for a pool.""") +@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.""") +@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "CANCELLED", "CANCELLING", "FAILED", "INPROGRESS", "SUCCEEDED"]), 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 SUCCEEDED --wait-for-state FAILED 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.""") +@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.""") +@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.""") +@json_skeleton_utils.get_cli_json_input_option({}) +@cli_util.help_option +@click.pass_context +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}) +@cli_util.wrap_exceptions +def start_pool(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, pool_id, if_match): + + if isinstance(pool_id, six.string_types) and len(pool_id.strip()) == 0: + raise click.UsageError('Parameter --pool-id cannot be whitespace or empty string') + + kwargs = {} + if if_match is not None: + kwargs['if_match'] = if_match + kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) + client = cli_util.build_client('data_flow', 'data_flow', ctx) + result = client.start_pool( + pool_id=pool_id, + **kwargs + ) + if wait_for_state: + + if hasattr(client, 'get_work_request') and callable(getattr(client, 'get_work_request')): + try: + wait_period_kwargs = {} + if max_wait_seconds is not None: + wait_period_kwargs['max_wait_seconds'] = max_wait_seconds + if wait_interval_seconds is not None: + wait_period_kwargs['max_interval_seconds'] = wait_interval_seconds + + click.echo('Action completed. Waiting until the work request has entered state: {}'.format(wait_for_state), file=sys.stderr) + result = oci.wait_until(client, client.get_work_request(result.headers['opc-work-request-id']), 'status', wait_for_state, **wait_period_kwargs) + except oci.exceptions.MaximumWaitTimeExceeded as e: + # If we fail, we should show an error, but we should still provide the information to the customer + click.echo('Failed to wait until the work request entered the specified state. Outputting last known resource state', file=sys.stderr) + cli_util.render_response(result, ctx) + sys.exit(2) + except Exception: + click.echo('Encountered error while waiting for work request to enter the specified state. Outputting last known resource state', file=sys.stderr) + cli_util.render_response(result, ctx) + raise + else: + click.echo('Unable to wait for the work request to enter the specified state', file=sys.stderr) + cli_util.render_response(result, ctx) + + +@pool_group.command(name=cli_util.override('data_flow.stop_pool.command_name', 'stop'), help=u"""Stops the dataflow pool for a given `poolId`. When provided, If-Match is checked against ETag values of the resource. \n[Command Reference](stopPool)""") +@cli_util.option('--pool-id', required=True, help=u"""The unique ID for a pool.""") +@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.""") +@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "CANCELLED", "CANCELLING", "FAILED", "INPROGRESS", "SUCCEEDED"]), 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 SUCCEEDED --wait-for-state FAILED 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.""") +@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.""") +@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.""") +@json_skeleton_utils.get_cli_json_input_option({}) +@cli_util.help_option +@click.pass_context +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}) +@cli_util.wrap_exceptions +def stop_pool(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, pool_id, if_match): + + if isinstance(pool_id, six.string_types) and len(pool_id.strip()) == 0: + raise click.UsageError('Parameter --pool-id cannot be whitespace or empty string') + + kwargs = {} + if if_match is not None: + kwargs['if_match'] = if_match + kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) + client = cli_util.build_client('data_flow', 'data_flow', ctx) + result = client.stop_pool( + pool_id=pool_id, + **kwargs + ) + if wait_for_state: + + if hasattr(client, 'get_work_request') and callable(getattr(client, 'get_work_request')): + try: + wait_period_kwargs = {} + if max_wait_seconds is not None: + wait_period_kwargs['max_wait_seconds'] = max_wait_seconds + if wait_interval_seconds is not None: + wait_period_kwargs['max_interval_seconds'] = wait_interval_seconds + + click.echo('Action completed. Waiting until the work request has entered state: {}'.format(wait_for_state), file=sys.stderr) + result = oci.wait_until(client, client.get_work_request(result.headers['opc-work-request-id']), 'status', wait_for_state, **wait_period_kwargs) + except oci.exceptions.MaximumWaitTimeExceeded as e: + # If we fail, we should show an error, but we should still provide the information to the customer + click.echo('Failed to wait until the work request entered the specified state. Outputting last known resource state', file=sys.stderr) + cli_util.render_response(result, ctx) + sys.exit(2) + except Exception: + click.echo('Encountered error while waiting for work request to enter the specified state. Outputting last known resource state', file=sys.stderr) + cli_util.render_response(result, ctx) + raise + else: + click.echo('Unable to wait for the work request to enter the specified state', file=sys.stderr) + cli_util.render_response(result, ctx) + + @application_group.command(name=cli_util.override('data_flow.update_application.command_name', 'update'), help=u"""Updates an application using an `applicationId`. \n[Command Reference](updateApplication)""") @cli_util.option('--application-id', required=True, help=u"""The unique ID for an application.""") @cli_util.option('--class-name', help=u"""The class for the application.""") @@ -1491,6 +1869,7 @@ def list_work_requests(ctx, from_json, all_pages, page_size, compartment_id, lim @cli_util.option('--parameters', type=custom_types.CLI_COMPLEX_TYPE, help=u"""An array of name/value pairs used to fill placeholders found in properties like `Application.arguments`. The name must be a string of one or more word characters (a-z, A-Z, 0-9, _). The value can be a string of 0 or more characters of any kind. Example: [ { name: \"iterations\", value: \"10\"}, { name: \"input_file\", value: \"mydata.xml\" }, { name: \"variable_x\", value: \"${x}\"} ] This option is a JSON list with items of type ApplicationParameter. For documentation on ApplicationParameter please see our API reference: https://docs.cloud.oracle.com/api/#/en/dataflow/20200129/datatypes/ApplicationParameter.""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) +@cli_util.option('--pool-id', help=u"""The OCID of a pool. Unique Id to indentify a dataflow pool resource.""") @cli_util.option('--private-endpoint-id', help=u"""The OCID of a private endpoint.""") @cli_util.option('--warehouse-bucket-uri', help=u"""An Oracle Cloud Infrastructure URI of the bucket to be used as default warehouse directory for BATCH SQL runs. See https://docs.cloud.oracle.com/iaas/Content/API/SDKDocs/hdfsconnector.htm#uriformat.""") @cli_util.option('--max-duration-in-minutes', type=click.INT, help=u"""The maximum duration in minutes for which an Application should run. Data Flow Run would be terminated once it reaches this duration from the time it transitions to `IN_PROGRESS` state.""") @@ -1505,7 +1884,7 @@ def list_work_requests(ctx, from_json, all_pages, page_size, compartment_id, lim @click.pass_context @json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'application-log-config': {'module': 'data_flow', 'class': 'ApplicationLogConfig'}, 'arguments': {'module': 'data_flow', 'class': 'list[string]'}, 'configuration': {'module': 'data_flow', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'data_flow', 'class': 'dict(str, dict(str, object))'}, 'driver-shape-config': {'module': 'data_flow', 'class': 'ShapeConfig'}, 'executor-shape-config': {'module': 'data_flow', 'class': 'ShapeConfig'}, 'freeform-tags': {'module': 'data_flow', 'class': 'dict(str, string)'}, 'parameters': {'module': 'data_flow', 'class': 'list[ApplicationParameter]'}}, output_type={'module': 'data_flow', 'class': 'Application'}) @cli_util.wrap_exceptions -def update_application(ctx, from_json, force, wait_for_state, max_wait_seconds, wait_interval_seconds, application_id, class_name, file_uri, spark_version, language, application_log_config, archive_uri, arguments, configuration, defined_tags, description, display_name, driver_shape, driver_shape_config, execute, executor_shape, executor_shape_config, freeform_tags, logs_bucket_uri, metastore_id, num_executors, parameters, private_endpoint_id, warehouse_bucket_uri, max_duration_in_minutes, idle_timeout_in_minutes, if_match): +def update_application(ctx, from_json, force, wait_for_state, max_wait_seconds, wait_interval_seconds, application_id, class_name, file_uri, spark_version, language, application_log_config, archive_uri, arguments, configuration, defined_tags, description, display_name, driver_shape, driver_shape_config, execute, executor_shape, executor_shape_config, freeform_tags, logs_bucket_uri, metastore_id, num_executors, parameters, pool_id, private_endpoint_id, warehouse_bucket_uri, max_duration_in_minutes, idle_timeout_in_minutes, if_match): if isinstance(application_id, six.string_types) and len(application_id.strip()) == 0: raise click.UsageError('Parameter --application-id cannot be whitespace or empty string') @@ -1584,6 +1963,9 @@ def update_application(ctx, from_json, force, wait_for_state, max_wait_seconds, if parameters is not None: _details['parameters'] = cli_util.parse_json_parameter("parameters", parameters) + if pool_id is not None: + _details['poolId'] = pool_id + if private_endpoint_id is not None: _details['privateEndpointId'] = private_endpoint_id @@ -1628,6 +2010,98 @@ def update_application(ctx, from_json, force, wait_for_state, max_wait_seconds, cli_util.render_response(result, ctx) +@pool_group.command(name=cli_util.override('data_flow.update_pool.command_name', 'update'), help=u"""Updates a pool using a `poolId`.If changes to a pool doesn't match a previously defined pool,then a 409 status code will be returned.This indicates that a conflict has been detected. \n[Command Reference](updatePool)""") +@cli_util.option('--pool-id', required=True, help=u"""The unique ID for a pool.""") +@cli_util.option('--display-name', help=u"""A user-friendly name. It does not have to be unique. Avoid entering confidential information.""") +@cli_util.option('--description', help=u"""A user-friendly description. Avoid entering confidential information.""") +@cli_util.option('--configurations', type=custom_types.CLI_COMPLEX_TYPE, help=u"""List of PoolConfig items. + +This option is a JSON list with items of type PoolConfig. For documentation on PoolConfig please see our API reference: https://docs.cloud.oracle.com/api/#/en/dataflow/20200129/datatypes/PoolConfig.""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) +@cli_util.option('--schedules', type=custom_types.CLI_COMPLEX_TYPE, help=u"""A list of schedules for pool to auto start and stop. + +This option is a JSON list with items of type PoolSchedule. For documentation on PoolSchedule please see our API reference: https://docs.cloud.oracle.com/api/#/en/dataflow/20200129/datatypes/PoolSchedule.""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) +@cli_util.option('--idle-timeout-in-minutes', type=click.INT, help=u"""Optional timeout value in minutes used to auto stop Pools. A Pool will be auto stopped after inactivity for this amount of time period. If value not set, pool will not be auto stopped auto.""") +@cli_util.option('--freeform-tags', type=custom_types.CLI_COMPLEX_TYPE, help=u"""Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags]. Example: `{\"Department\": \"Finance\"}`""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) +@cli_util.option('--defined-tags', type=custom_types.CLI_COMPLEX_TYPE, help=u"""Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags]. Example: `{\"Operations\": {\"CostCenter\": \"42\"}}`""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) +@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.""") +@cli_util.option('--force', help="""Perform update without prompting for confirmation.""", is_flag=True) +@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "CANCELLED", "CANCELLING", "FAILED", "INPROGRESS", "SUCCEEDED"]), 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 SUCCEEDED --wait-for-state FAILED 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.""") +@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.""") +@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.""") +@json_skeleton_utils.get_cli_json_input_option({'configurations': {'module': 'data_flow', 'class': 'list[PoolConfig]'}, 'schedules': {'module': 'data_flow', 'class': 'list[PoolSchedule]'}, 'freeform-tags': {'module': 'data_flow', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'data_flow', 'class': 'dict(str, dict(str, object))'}}) +@cli_util.help_option +@click.pass_context +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'configurations': {'module': 'data_flow', 'class': 'list[PoolConfig]'}, 'schedules': {'module': 'data_flow', 'class': 'list[PoolSchedule]'}, 'freeform-tags': {'module': 'data_flow', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'data_flow', 'class': 'dict(str, dict(str, object))'}}) +@cli_util.wrap_exceptions +def update_pool(ctx, from_json, force, wait_for_state, max_wait_seconds, wait_interval_seconds, pool_id, display_name, description, configurations, schedules, idle_timeout_in_minutes, freeform_tags, defined_tags, if_match): + + if isinstance(pool_id, six.string_types) and len(pool_id.strip()) == 0: + raise click.UsageError('Parameter --pool-id cannot be whitespace or empty string') + if not force: + if configurations or schedules or freeform_tags or defined_tags: + if not click.confirm("WARNING: Updates to configurations and schedules and freeform-tags and defined-tags will replace any existing values. Are you sure you want to continue?"): + ctx.abort() + + kwargs = {} + if if_match is not None: + kwargs['if_match'] = if_match + kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) + + _details = {} + + if display_name is not None: + _details['displayName'] = display_name + + if description is not None: + _details['description'] = description + + if configurations is not None: + _details['configurations'] = cli_util.parse_json_parameter("configurations", configurations) + + if schedules is not None: + _details['schedules'] = cli_util.parse_json_parameter("schedules", schedules) + + if idle_timeout_in_minutes is not None: + _details['idleTimeoutInMinutes'] = idle_timeout_in_minutes + + if freeform_tags is not None: + _details['freeformTags'] = cli_util.parse_json_parameter("freeform_tags", freeform_tags) + + if defined_tags is not None: + _details['definedTags'] = cli_util.parse_json_parameter("defined_tags", defined_tags) + + client = cli_util.build_client('data_flow', 'data_flow', ctx) + result = client.update_pool( + pool_id=pool_id, + update_pool_details=_details, + **kwargs + ) + if wait_for_state: + + if hasattr(client, 'get_work_request') and callable(getattr(client, 'get_work_request')): + try: + wait_period_kwargs = {} + if max_wait_seconds is not None: + wait_period_kwargs['max_wait_seconds'] = max_wait_seconds + if wait_interval_seconds is not None: + wait_period_kwargs['max_interval_seconds'] = wait_interval_seconds + + click.echo('Action completed. Waiting until the work request has entered state: {}'.format(wait_for_state), file=sys.stderr) + result = oci.wait_until(client, client.get_work_request(result.headers['opc-work-request-id']), 'status', wait_for_state, **wait_period_kwargs) + except oci.exceptions.MaximumWaitTimeExceeded as e: + # If we fail, we should show an error, but we should still provide the information to the customer + click.echo('Failed to wait until the work request entered the specified state. Outputting last known resource state', file=sys.stderr) + cli_util.render_response(result, ctx) + sys.exit(2) + except Exception: + click.echo('Encountered error while waiting for work request to enter the specified state. Outputting last known resource state', file=sys.stderr) + cli_util.render_response(result, ctx) + raise + else: + click.echo('Unable to wait for the work request to enter the specified state', file=sys.stderr) + cli_util.render_response(result, ctx) + + @private_endpoint_group.command(name=cli_util.override('data_flow.update_private_endpoint.command_name', 'update'), help=u"""Updates a private endpoint using a `privateEndpointId`. If changes to a private endpoint match a previously defined private endpoint, then a 409 status code will be returned. This indicates that a conflict has been detected. \n[Command Reference](updatePrivateEndpoint)""") @cli_util.option('--private-endpoint-id', required=True, help=u"""The unique ID for a private endpoint.""") @cli_util.option('--defined-tags', type=custom_types.CLI_COMPLEX_TYPE, help=u"""Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags]. Example: `{\"Operations\": {\"CostCenter\": \"42\"}}`""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) diff --git a/services/data_labeling_service/src/oci_cli_data_labeling_management/generated/datalabelingmanagement_cli.py b/services/data_labeling_service/src/oci_cli_data_labeling_management/generated/datalabelingmanagement_cli.py index cda9bc68a..958e0d50d 100644 --- a/services/data_labeling_service/src/oci_cli_data_labeling_management/generated/datalabelingmanagement_cli.py +++ b/services/data_labeling_service/src/oci_cli_data_labeling_management/generated/datalabelingmanagement_cli.py @@ -177,18 +177,19 @@ def change_dataset_compartment(ctx, from_json, wait_for_state, max_wait_seconds, @cli_util.option('--display-name', help=u"""A user-friendly display name for the resource.""") @cli_util.option('--description', help=u"""A user provided description of the dataset""") @cli_util.option('--initial-record-generation-configuration', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) +@cli_util.option('--initial-import-dataset-configuration', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) @cli_util.option('--labeling-instructions', help=u"""The labeling instructions for human labelers in rich text format""") @cli_util.option('--freeform-tags', type=custom_types.CLI_COMPLEX_TYPE, help=u"""A simple key-value pair that is applied without any predefined name, type, or scope. It exists for cross-compatibility only. For example: `{\"bar-key\": \"value\"}`""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) @cli_util.option('--defined-tags', type=custom_types.CLI_COMPLEX_TYPE, help=u"""The defined tags for this resource. Each key is predefined and scoped to a namespace. For example: `{\"foo-namespace\": {\"bar-key\": \"value\"}}`""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) @cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "SUCCEEDED", "CANCELING", "CANCELED", "FAILED"]), 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 SUCCEEDED --wait-for-state FAILED 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.""") @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.""") @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.""") -@json_skeleton_utils.get_cli_json_input_option({'dataset-source-details': {'module': 'data_labeling_service', 'class': 'DatasetSourceDetails'}, 'dataset-format-details': {'module': 'data_labeling_service', 'class': 'DatasetFormatDetails'}, 'initial-record-generation-configuration': {'module': 'data_labeling_service', 'class': 'InitialRecordGenerationConfiguration'}, 'label-set': {'module': 'data_labeling_service', 'class': 'LabelSet'}, 'freeform-tags': {'module': 'data_labeling_service', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'data_labeling_service', 'class': 'dict(str, dict(str, object))'}}) +@json_skeleton_utils.get_cli_json_input_option({'dataset-source-details': {'module': 'data_labeling_service', 'class': 'DatasetSourceDetails'}, 'dataset-format-details': {'module': 'data_labeling_service', 'class': 'DatasetFormatDetails'}, 'initial-record-generation-configuration': {'module': 'data_labeling_service', 'class': 'InitialRecordGenerationConfiguration'}, 'initial-import-dataset-configuration': {'module': 'data_labeling_service', 'class': 'InitialImportDatasetConfiguration'}, 'label-set': {'module': 'data_labeling_service', 'class': 'LabelSet'}, 'freeform-tags': {'module': 'data_labeling_service', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'data_labeling_service', 'class': 'dict(str, dict(str, object))'}}) @cli_util.help_option @click.pass_context -@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'dataset-source-details': {'module': 'data_labeling_service', 'class': 'DatasetSourceDetails'}, 'dataset-format-details': {'module': 'data_labeling_service', 'class': 'DatasetFormatDetails'}, 'initial-record-generation-configuration': {'module': 'data_labeling_service', 'class': 'InitialRecordGenerationConfiguration'}, 'label-set': {'module': 'data_labeling_service', 'class': 'LabelSet'}, 'freeform-tags': {'module': 'data_labeling_service', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'data_labeling_service', 'class': 'dict(str, dict(str, object))'}}, output_type={'module': 'data_labeling_service', 'class': 'Dataset'}) +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'dataset-source-details': {'module': 'data_labeling_service', 'class': 'DatasetSourceDetails'}, 'dataset-format-details': {'module': 'data_labeling_service', 'class': 'DatasetFormatDetails'}, 'initial-record-generation-configuration': {'module': 'data_labeling_service', 'class': 'InitialRecordGenerationConfiguration'}, 'initial-import-dataset-configuration': {'module': 'data_labeling_service', 'class': 'InitialImportDatasetConfiguration'}, 'label-set': {'module': 'data_labeling_service', 'class': 'LabelSet'}, 'freeform-tags': {'module': 'data_labeling_service', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'data_labeling_service', 'class': 'dict(str, dict(str, object))'}}, output_type={'module': 'data_labeling_service', 'class': 'Dataset'}) @cli_util.wrap_exceptions -def create_dataset(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, compartment_id, annotation_format, dataset_source_details, dataset_format_details, label_set, display_name, description, initial_record_generation_configuration, labeling_instructions, freeform_tags, defined_tags): +def create_dataset(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, compartment_id, annotation_format, dataset_source_details, dataset_format_details, label_set, display_name, description, initial_record_generation_configuration, initial_import_dataset_configuration, labeling_instructions, freeform_tags, defined_tags): kwargs = {} kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) @@ -209,6 +210,9 @@ def create_dataset(ctx, from_json, wait_for_state, max_wait_seconds, wait_interv if initial_record_generation_configuration is not None: _details['initialRecordGenerationConfiguration'] = cli_util.parse_json_parameter("initial_record_generation_configuration", initial_record_generation_configuration) + if initial_import_dataset_configuration is not None: + _details['initialImportDatasetConfiguration'] = cli_util.parse_json_parameter("initial_import_dataset_configuration", initial_import_dataset_configuration) + if labeling_instructions is not None: _details['labelingInstructions'] = labeling_instructions @@ -259,6 +263,7 @@ def create_dataset(ctx, from_json, wait_for_state, max_wait_seconds, wait_interv @cli_util.option('--display-name', help=u"""A user-friendly display name for the resource.""") @cli_util.option('--description', help=u"""A user provided description of the dataset""") @cli_util.option('--initial-record-generation-configuration', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) +@cli_util.option('--initial-import-dataset-configuration', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) @cli_util.option('--labeling-instructions', help=u"""The labeling instructions for human labelers in rich text format""") @cli_util.option('--freeform-tags', type=custom_types.CLI_COMPLEX_TYPE, help=u"""A simple key-value pair that is applied without any predefined name, type, or scope. It exists for cross-compatibility only. For example: `{\"bar-key\": \"value\"}`""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) @cli_util.option('--defined-tags', type=custom_types.CLI_COMPLEX_TYPE, help=u"""The defined tags for this resource. Each key is predefined and scoped to a namespace. For example: `{\"foo-namespace\": {\"bar-key\": \"value\"}}`""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) @@ -266,12 +271,12 @@ def create_dataset(ctx, from_json, wait_for_state, max_wait_seconds, wait_interv @cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "SUCCEEDED", "CANCELING", "CANCELED", "FAILED"]), 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 SUCCEEDED --wait-for-state FAILED 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.""") @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.""") @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.""") -@json_skeleton_utils.get_cli_json_input_option({'dataset-format-details': {'module': 'data_labeling_service', 'class': 'DatasetFormatDetails'}, 'initial-record-generation-configuration': {'module': 'data_labeling_service', 'class': 'InitialRecordGenerationConfiguration'}, 'label-set': {'module': 'data_labeling_service', 'class': 'LabelSet'}, 'freeform-tags': {'module': 'data_labeling_service', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'data_labeling_service', 'class': 'dict(str, dict(str, object))'}}) +@json_skeleton_utils.get_cli_json_input_option({'dataset-format-details': {'module': 'data_labeling_service', 'class': 'DatasetFormatDetails'}, 'initial-record-generation-configuration': {'module': 'data_labeling_service', 'class': 'InitialRecordGenerationConfiguration'}, 'initial-import-dataset-configuration': {'module': 'data_labeling_service', 'class': 'InitialImportDatasetConfiguration'}, 'label-set': {'module': 'data_labeling_service', 'class': 'LabelSet'}, 'freeform-tags': {'module': 'data_labeling_service', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'data_labeling_service', 'class': 'dict(str, dict(str, object))'}}) @cli_util.help_option @click.pass_context -@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'dataset-format-details': {'module': 'data_labeling_service', 'class': 'DatasetFormatDetails'}, 'initial-record-generation-configuration': {'module': 'data_labeling_service', 'class': 'InitialRecordGenerationConfiguration'}, 'label-set': {'module': 'data_labeling_service', 'class': 'LabelSet'}, 'freeform-tags': {'module': 'data_labeling_service', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'data_labeling_service', 'class': 'dict(str, dict(str, object))'}}, output_type={'module': 'data_labeling_service', 'class': 'Dataset'}) +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'dataset-format-details': {'module': 'data_labeling_service', 'class': 'DatasetFormatDetails'}, 'initial-record-generation-configuration': {'module': 'data_labeling_service', 'class': 'InitialRecordGenerationConfiguration'}, 'initial-import-dataset-configuration': {'module': 'data_labeling_service', 'class': 'InitialImportDatasetConfiguration'}, 'label-set': {'module': 'data_labeling_service', 'class': 'LabelSet'}, 'freeform-tags': {'module': 'data_labeling_service', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'data_labeling_service', 'class': 'dict(str, dict(str, object))'}}, output_type={'module': 'data_labeling_service', 'class': 'Dataset'}) @cli_util.wrap_exceptions -def create_dataset_object_storage_source_details(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, compartment_id, annotation_format, dataset_format_details, label_set, dataset_source_details_namespace, dataset_source_details_bucket, display_name, description, initial_record_generation_configuration, labeling_instructions, freeform_tags, defined_tags, dataset_source_details_prefix): +def create_dataset_object_storage_source_details(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, compartment_id, annotation_format, dataset_format_details, label_set, dataset_source_details_namespace, dataset_source_details_bucket, display_name, description, initial_record_generation_configuration, initial_import_dataset_configuration, labeling_instructions, freeform_tags, defined_tags, dataset_source_details_prefix): kwargs = {} kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) @@ -294,6 +299,9 @@ def create_dataset_object_storage_source_details(ctx, from_json, wait_for_state, if initial_record_generation_configuration is not None: _details['initialRecordGenerationConfiguration'] = cli_util.parse_json_parameter("initial_record_generation_configuration", initial_record_generation_configuration) + if initial_import_dataset_configuration is not None: + _details['initialImportDatasetConfiguration'] = cli_util.parse_json_parameter("initial_import_dataset_configuration", initial_import_dataset_configuration) + if labeling_instructions is not None: _details['labelingInstructions'] = labeling_instructions @@ -347,18 +355,19 @@ def create_dataset_object_storage_source_details(ctx, from_json, wait_for_state, @cli_util.option('--display-name', help=u"""A user-friendly display name for the resource.""") @cli_util.option('--description', help=u"""A user provided description of the dataset""") @cli_util.option('--initial-record-generation-configuration', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) +@cli_util.option('--initial-import-dataset-configuration', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) @cli_util.option('--labeling-instructions', help=u"""The labeling instructions for human labelers in rich text format""") @cli_util.option('--freeform-tags', type=custom_types.CLI_COMPLEX_TYPE, help=u"""A simple key-value pair that is applied without any predefined name, type, or scope. It exists for cross-compatibility only. For example: `{\"bar-key\": \"value\"}`""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) @cli_util.option('--defined-tags', type=custom_types.CLI_COMPLEX_TYPE, help=u"""The defined tags for this resource. Each key is predefined and scoped to a namespace. For example: `{\"foo-namespace\": {\"bar-key\": \"value\"}}`""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) @cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "SUCCEEDED", "CANCELING", "CANCELED", "FAILED"]), 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 SUCCEEDED --wait-for-state FAILED 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.""") @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.""") @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.""") -@json_skeleton_utils.get_cli_json_input_option({'dataset-source-details': {'module': 'data_labeling_service', 'class': 'DatasetSourceDetails'}, 'initial-record-generation-configuration': {'module': 'data_labeling_service', 'class': 'InitialRecordGenerationConfiguration'}, 'label-set': {'module': 'data_labeling_service', 'class': 'LabelSet'}, 'freeform-tags': {'module': 'data_labeling_service', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'data_labeling_service', 'class': 'dict(str, dict(str, object))'}}) +@json_skeleton_utils.get_cli_json_input_option({'dataset-source-details': {'module': 'data_labeling_service', 'class': 'DatasetSourceDetails'}, 'initial-record-generation-configuration': {'module': 'data_labeling_service', 'class': 'InitialRecordGenerationConfiguration'}, 'initial-import-dataset-configuration': {'module': 'data_labeling_service', 'class': 'InitialImportDatasetConfiguration'}, 'label-set': {'module': 'data_labeling_service', 'class': 'LabelSet'}, 'freeform-tags': {'module': 'data_labeling_service', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'data_labeling_service', 'class': 'dict(str, dict(str, object))'}}) @cli_util.help_option @click.pass_context -@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'dataset-source-details': {'module': 'data_labeling_service', 'class': 'DatasetSourceDetails'}, 'initial-record-generation-configuration': {'module': 'data_labeling_service', 'class': 'InitialRecordGenerationConfiguration'}, 'label-set': {'module': 'data_labeling_service', 'class': 'LabelSet'}, 'freeform-tags': {'module': 'data_labeling_service', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'data_labeling_service', 'class': 'dict(str, dict(str, object))'}}, output_type={'module': 'data_labeling_service', 'class': 'Dataset'}) +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'dataset-source-details': {'module': 'data_labeling_service', 'class': 'DatasetSourceDetails'}, 'initial-record-generation-configuration': {'module': 'data_labeling_service', 'class': 'InitialRecordGenerationConfiguration'}, 'initial-import-dataset-configuration': {'module': 'data_labeling_service', 'class': 'InitialImportDatasetConfiguration'}, 'label-set': {'module': 'data_labeling_service', 'class': 'LabelSet'}, 'freeform-tags': {'module': 'data_labeling_service', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'data_labeling_service', 'class': 'dict(str, dict(str, object))'}}, output_type={'module': 'data_labeling_service', 'class': 'Dataset'}) @cli_util.wrap_exceptions -def create_dataset_image_dataset_format_details(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, compartment_id, annotation_format, dataset_source_details, label_set, display_name, description, initial_record_generation_configuration, labeling_instructions, freeform_tags, defined_tags): +def create_dataset_image_dataset_format_details(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, compartment_id, annotation_format, dataset_source_details, label_set, display_name, description, initial_record_generation_configuration, initial_import_dataset_configuration, labeling_instructions, freeform_tags, defined_tags): kwargs = {} kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) @@ -379,6 +388,9 @@ def create_dataset_image_dataset_format_details(ctx, from_json, wait_for_state, if initial_record_generation_configuration is not None: _details['initialRecordGenerationConfiguration'] = cli_util.parse_json_parameter("initial_record_generation_configuration", initial_record_generation_configuration) + if initial_import_dataset_configuration is not None: + _details['initialImportDatasetConfiguration'] = cli_util.parse_json_parameter("initial_import_dataset_configuration", initial_import_dataset_configuration) + if labeling_instructions is not None: _details['labelingInstructions'] = labeling_instructions @@ -429,18 +441,19 @@ def create_dataset_image_dataset_format_details(ctx, from_json, wait_for_state, @cli_util.option('--display-name', help=u"""A user-friendly display name for the resource.""") @cli_util.option('--description', help=u"""A user provided description of the dataset""") @cli_util.option('--initial-record-generation-configuration', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) +@cli_util.option('--initial-import-dataset-configuration', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) @cli_util.option('--labeling-instructions', help=u"""The labeling instructions for human labelers in rich text format""") @cli_util.option('--freeform-tags', type=custom_types.CLI_COMPLEX_TYPE, help=u"""A simple key-value pair that is applied without any predefined name, type, or scope. It exists for cross-compatibility only. For example: `{\"bar-key\": \"value\"}`""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) @cli_util.option('--defined-tags', type=custom_types.CLI_COMPLEX_TYPE, help=u"""The defined tags for this resource. Each key is predefined and scoped to a namespace. For example: `{\"foo-namespace\": {\"bar-key\": \"value\"}}`""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) @cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "SUCCEEDED", "CANCELING", "CANCELED", "FAILED"]), 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 SUCCEEDED --wait-for-state FAILED 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.""") @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.""") @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.""") -@json_skeleton_utils.get_cli_json_input_option({'dataset-source-details': {'module': 'data_labeling_service', 'class': 'DatasetSourceDetails'}, 'initial-record-generation-configuration': {'module': 'data_labeling_service', 'class': 'InitialRecordGenerationConfiguration'}, 'label-set': {'module': 'data_labeling_service', 'class': 'LabelSet'}, 'freeform-tags': {'module': 'data_labeling_service', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'data_labeling_service', 'class': 'dict(str, dict(str, object))'}}) +@json_skeleton_utils.get_cli_json_input_option({'dataset-source-details': {'module': 'data_labeling_service', 'class': 'DatasetSourceDetails'}, 'initial-record-generation-configuration': {'module': 'data_labeling_service', 'class': 'InitialRecordGenerationConfiguration'}, 'initial-import-dataset-configuration': {'module': 'data_labeling_service', 'class': 'InitialImportDatasetConfiguration'}, 'label-set': {'module': 'data_labeling_service', 'class': 'LabelSet'}, 'freeform-tags': {'module': 'data_labeling_service', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'data_labeling_service', 'class': 'dict(str, dict(str, object))'}}) @cli_util.help_option @click.pass_context -@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'dataset-source-details': {'module': 'data_labeling_service', 'class': 'DatasetSourceDetails'}, 'initial-record-generation-configuration': {'module': 'data_labeling_service', 'class': 'InitialRecordGenerationConfiguration'}, 'label-set': {'module': 'data_labeling_service', 'class': 'LabelSet'}, 'freeform-tags': {'module': 'data_labeling_service', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'data_labeling_service', 'class': 'dict(str, dict(str, object))'}}, output_type={'module': 'data_labeling_service', 'class': 'Dataset'}) +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'dataset-source-details': {'module': 'data_labeling_service', 'class': 'DatasetSourceDetails'}, 'initial-record-generation-configuration': {'module': 'data_labeling_service', 'class': 'InitialRecordGenerationConfiguration'}, 'initial-import-dataset-configuration': {'module': 'data_labeling_service', 'class': 'InitialImportDatasetConfiguration'}, 'label-set': {'module': 'data_labeling_service', 'class': 'LabelSet'}, 'freeform-tags': {'module': 'data_labeling_service', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'data_labeling_service', 'class': 'dict(str, dict(str, object))'}}, output_type={'module': 'data_labeling_service', 'class': 'Dataset'}) @cli_util.wrap_exceptions -def create_dataset_document_dataset_format_details(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, compartment_id, annotation_format, dataset_source_details, label_set, display_name, description, initial_record_generation_configuration, labeling_instructions, freeform_tags, defined_tags): +def create_dataset_document_dataset_format_details(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, compartment_id, annotation_format, dataset_source_details, label_set, display_name, description, initial_record_generation_configuration, initial_import_dataset_configuration, labeling_instructions, freeform_tags, defined_tags): kwargs = {} kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) @@ -461,6 +474,9 @@ def create_dataset_document_dataset_format_details(ctx, from_json, wait_for_stat if initial_record_generation_configuration is not None: _details['initialRecordGenerationConfiguration'] = cli_util.parse_json_parameter("initial_record_generation_configuration", initial_record_generation_configuration) + if initial_import_dataset_configuration is not None: + _details['initialImportDatasetConfiguration'] = cli_util.parse_json_parameter("initial_import_dataset_configuration", initial_import_dataset_configuration) + if labeling_instructions is not None: _details['labelingInstructions'] = labeling_instructions @@ -511,6 +527,7 @@ def create_dataset_document_dataset_format_details(ctx, from_json, wait_for_stat @cli_util.option('--display-name', help=u"""A user-friendly display name for the resource.""") @cli_util.option('--description', help=u"""A user provided description of the dataset""") @cli_util.option('--initial-record-generation-configuration', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) +@cli_util.option('--initial-import-dataset-configuration', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) @cli_util.option('--labeling-instructions', help=u"""The labeling instructions for human labelers in rich text format""") @cli_util.option('--freeform-tags', type=custom_types.CLI_COMPLEX_TYPE, help=u"""A simple key-value pair that is applied without any predefined name, type, or scope. It exists for cross-compatibility only. For example: `{\"bar-key\": \"value\"}`""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) @cli_util.option('--defined-tags', type=custom_types.CLI_COMPLEX_TYPE, help=u"""The defined tags for this resource. Each key is predefined and scoped to a namespace. For example: `{\"foo-namespace\": {\"bar-key\": \"value\"}}`""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) @@ -518,12 +535,12 @@ def create_dataset_document_dataset_format_details(ctx, from_json, wait_for_stat @cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "SUCCEEDED", "CANCELING", "CANCELED", "FAILED"]), 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 SUCCEEDED --wait-for-state FAILED 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.""") @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.""") @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.""") -@json_skeleton_utils.get_cli_json_input_option({'dataset-source-details': {'module': 'data_labeling_service', 'class': 'DatasetSourceDetails'}, 'initial-record-generation-configuration': {'module': 'data_labeling_service', 'class': 'InitialRecordGenerationConfiguration'}, 'label-set': {'module': 'data_labeling_service', 'class': 'LabelSet'}, 'freeform-tags': {'module': 'data_labeling_service', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'data_labeling_service', 'class': 'dict(str, dict(str, object))'}, 'dataset-format-details-text-file-type-metadata': {'module': 'data_labeling_service', 'class': 'TextFileTypeMetadata'}}) +@json_skeleton_utils.get_cli_json_input_option({'dataset-source-details': {'module': 'data_labeling_service', 'class': 'DatasetSourceDetails'}, 'initial-record-generation-configuration': {'module': 'data_labeling_service', 'class': 'InitialRecordGenerationConfiguration'}, 'initial-import-dataset-configuration': {'module': 'data_labeling_service', 'class': 'InitialImportDatasetConfiguration'}, 'label-set': {'module': 'data_labeling_service', 'class': 'LabelSet'}, 'freeform-tags': {'module': 'data_labeling_service', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'data_labeling_service', 'class': 'dict(str, dict(str, object))'}, 'dataset-format-details-text-file-type-metadata': {'module': 'data_labeling_service', 'class': 'TextFileTypeMetadata'}}) @cli_util.help_option @click.pass_context -@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'dataset-source-details': {'module': 'data_labeling_service', 'class': 'DatasetSourceDetails'}, 'initial-record-generation-configuration': {'module': 'data_labeling_service', 'class': 'InitialRecordGenerationConfiguration'}, 'label-set': {'module': 'data_labeling_service', 'class': 'LabelSet'}, 'freeform-tags': {'module': 'data_labeling_service', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'data_labeling_service', 'class': 'dict(str, dict(str, object))'}, 'dataset-format-details-text-file-type-metadata': {'module': 'data_labeling_service', 'class': 'TextFileTypeMetadata'}}, output_type={'module': 'data_labeling_service', 'class': 'Dataset'}) +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'dataset-source-details': {'module': 'data_labeling_service', 'class': 'DatasetSourceDetails'}, 'initial-record-generation-configuration': {'module': 'data_labeling_service', 'class': 'InitialRecordGenerationConfiguration'}, 'initial-import-dataset-configuration': {'module': 'data_labeling_service', 'class': 'InitialImportDatasetConfiguration'}, 'label-set': {'module': 'data_labeling_service', 'class': 'LabelSet'}, 'freeform-tags': {'module': 'data_labeling_service', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'data_labeling_service', 'class': 'dict(str, dict(str, object))'}, 'dataset-format-details-text-file-type-metadata': {'module': 'data_labeling_service', 'class': 'TextFileTypeMetadata'}}, output_type={'module': 'data_labeling_service', 'class': 'Dataset'}) @cli_util.wrap_exceptions -def create_dataset_text_dataset_format_details(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, compartment_id, annotation_format, dataset_source_details, label_set, display_name, description, initial_record_generation_configuration, labeling_instructions, freeform_tags, defined_tags, dataset_format_details_text_file_type_metadata): +def create_dataset_text_dataset_format_details(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, compartment_id, annotation_format, dataset_source_details, label_set, display_name, description, initial_record_generation_configuration, initial_import_dataset_configuration, labeling_instructions, freeform_tags, defined_tags, dataset_format_details_text_file_type_metadata): kwargs = {} kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) @@ -544,6 +561,9 @@ def create_dataset_text_dataset_format_details(ctx, from_json, wait_for_state, m if initial_record_generation_configuration is not None: _details['initialRecordGenerationConfiguration'] = cli_util.parse_json_parameter("initial_record_generation_configuration", initial_record_generation_configuration) + if initial_import_dataset_configuration is not None: + _details['initialImportDatasetConfiguration'] = cli_util.parse_json_parameter("initial_import_dataset_configuration", initial_import_dataset_configuration) + if labeling_instructions is not None: _details['labelingInstructions'] = labeling_instructions @@ -744,6 +764,137 @@ def get_work_request(ctx, from_json, work_request_id): cli_util.render_response(result, ctx) +@dataset_group.command(name=cli_util.override('data_labeling_service.import_pre_annotated_data.command_name', 'import-pre-annotated-data'), help=u"""Imports records and annotations from dataset files into existing Dataset. \n[Command Reference](importPreAnnotatedData)""") +@cli_util.option('--dataset-id', required=True, help=u"""Unique Dataset OCID""") +@cli_util.option('--import-format', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) +@cli_util.option('--import-metadata-path', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) +@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.""") +@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "SUCCEEDED", "CANCELING", "CANCELED", "FAILED"]), 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 SUCCEEDED --wait-for-state FAILED 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.""") +@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.""") +@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.""") +@json_skeleton_utils.get_cli_json_input_option({'import-format': {'module': 'data_labeling_service', 'class': 'ImportFormat'}, 'import-metadata-path': {'module': 'data_labeling_service', 'class': 'ImportMetadataPath'}}) +@cli_util.help_option +@click.pass_context +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'import-format': {'module': 'data_labeling_service', 'class': 'ImportFormat'}, 'import-metadata-path': {'module': 'data_labeling_service', 'class': 'ImportMetadataPath'}}) +@cli_util.wrap_exceptions +def import_pre_annotated_data(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, dataset_id, import_format, import_metadata_path, if_match): + + if isinstance(dataset_id, six.string_types) and len(dataset_id.strip()) == 0: + raise click.UsageError('Parameter --dataset-id cannot be whitespace or empty string') + + kwargs = {} + if if_match is not None: + kwargs['if_match'] = if_match + kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) + + _details = {} + + if import_format is not None: + _details['importFormat'] = cli_util.parse_json_parameter("import_format", import_format) + + if import_metadata_path is not None: + _details['importMetadataPath'] = cli_util.parse_json_parameter("import_metadata_path", import_metadata_path) + + client = cli_util.build_client('data_labeling_service', 'data_labeling_management', ctx) + result = client.import_pre_annotated_data( + dataset_id=dataset_id, + import_pre_annotated_data_details=_details, + **kwargs + ) + if wait_for_state: + + if hasattr(client, 'get_work_request') and callable(getattr(client, 'get_work_request')): + try: + wait_period_kwargs = {} + if max_wait_seconds is not None: + wait_period_kwargs['max_wait_seconds'] = max_wait_seconds + if wait_interval_seconds is not None: + wait_period_kwargs['max_interval_seconds'] = wait_interval_seconds + + click.echo('Action completed. Waiting until the work request has entered state: {}'.format(wait_for_state), file=sys.stderr) + result = oci.wait_until(client, client.get_work_request(result.headers['opc-work-request-id']), 'status', wait_for_state, **wait_period_kwargs) + except oci.exceptions.MaximumWaitTimeExceeded as e: + # If we fail, we should show an error, but we should still provide the information to the customer + click.echo('Failed to wait until the work request entered the specified state. Outputting last known resource state', file=sys.stderr) + cli_util.render_response(result, ctx) + sys.exit(2) + except Exception: + click.echo('Encountered error while waiting for work request to enter the specified state. Outputting last known resource state', file=sys.stderr) + cli_util.render_response(result, ctx) + raise + else: + click.echo('Unable to wait for the work request to enter the specified state', file=sys.stderr) + cli_util.render_response(result, ctx) + + +@dataset_group.command(name=cli_util.override('data_labeling_service.import_pre_annotated_data_object_storage_import_metadata_path.command_name', 'import-pre-annotated-data-object-storage-import-metadata-path'), help=u"""Imports records and annotations from dataset files into existing Dataset. \n[Command Reference](importPreAnnotatedData)""") +@cli_util.option('--dataset-id', required=True, help=u"""Unique Dataset OCID""") +@cli_util.option('--import-metadata-path-namespace', required=True, help=u"""Bucket namespace name""") +@cli_util.option('--import-metadata-path-bucket', required=True, help=u"""Bucket name""") +@cli_util.option('--import-metadata-path-path', required=True, help=u"""Path for the metadata file.""") +@cli_util.option('--import-format', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) +@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.""") +@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "SUCCEEDED", "CANCELING", "CANCELED", "FAILED"]), 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 SUCCEEDED --wait-for-state FAILED 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.""") +@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.""") +@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.""") +@json_skeleton_utils.get_cli_json_input_option({'import-format': {'module': 'data_labeling_service', 'class': 'ImportFormat'}}) +@cli_util.help_option +@click.pass_context +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'import-format': {'module': 'data_labeling_service', 'class': 'ImportFormat'}}) +@cli_util.wrap_exceptions +def import_pre_annotated_data_object_storage_import_metadata_path(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, dataset_id, import_metadata_path_namespace, import_metadata_path_bucket, import_metadata_path_path, import_format, if_match): + + if isinstance(dataset_id, six.string_types) and len(dataset_id.strip()) == 0: + raise click.UsageError('Parameter --dataset-id cannot be whitespace or empty string') + + kwargs = {} + if if_match is not None: + kwargs['if_match'] = if_match + kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) + + _details = {} + _details['importMetadataPath'] = {} + _details['importMetadataPath']['namespace'] = import_metadata_path_namespace + _details['importMetadataPath']['bucket'] = import_metadata_path_bucket + _details['importMetadataPath']['path'] = import_metadata_path_path + + if import_format is not None: + _details['importFormat'] = cli_util.parse_json_parameter("import_format", import_format) + + _details['importMetadataPath']['sourceType'] = 'OBJECT_STORAGE' + + client = cli_util.build_client('data_labeling_service', 'data_labeling_management', ctx) + result = client.import_pre_annotated_data( + dataset_id=dataset_id, + import_pre_annotated_data_details=_details, + **kwargs + ) + if wait_for_state: + + if hasattr(client, 'get_work_request') and callable(getattr(client, 'get_work_request')): + try: + wait_period_kwargs = {} + if max_wait_seconds is not None: + wait_period_kwargs['max_wait_seconds'] = max_wait_seconds + if wait_interval_seconds is not None: + wait_period_kwargs['max_interval_seconds'] = wait_interval_seconds + + click.echo('Action completed. Waiting until the work request has entered state: {}'.format(wait_for_state), file=sys.stderr) + result = oci.wait_until(client, client.get_work_request(result.headers['opc-work-request-id']), 'status', wait_for_state, **wait_period_kwargs) + except oci.exceptions.MaximumWaitTimeExceeded as e: + # If we fail, we should show an error, but we should still provide the information to the customer + click.echo('Failed to wait until the work request entered the specified state. Outputting last known resource state', file=sys.stderr) + cli_util.render_response(result, ctx) + sys.exit(2) + except Exception: + click.echo('Encountered error while waiting for work request to enter the specified state. Outputting last known resource state', file=sys.stderr) + cli_util.render_response(result, ctx) + raise + else: + click.echo('Unable to wait for the work request to enter the specified state', file=sys.stderr) + cli_util.render_response(result, ctx) + + @annotation_format_group.command(name=cli_util.override('data_labeling_service.list_annotation_formats.command_name', 'list'), help=u"""These are a static list in a given region. \n[Command Reference](listAnnotationFormats)""") @cli_util.option('--compartment-id', required=True, help=u"""The ID of the compartment in which to list resources.""") @cli_util.option('--limit', type=click.INT, help=u"""The maximum number of items to return.""") diff --git a/services/database/src/oci_cli_database/generated/database_cli.py b/services/database/src/oci_cli_database/generated/database_cli.py index e604fddad..714791c6d 100644 --- a/services/database/src/oci_cli_database/generated/database_cli.py +++ b/services/database/src/oci_cli_database/generated/database_cli.py @@ -2674,7 +2674,7 @@ def create_autonomous_container_database(ctx, from_json, wait_for_state, max_wai - OLTP - indicates an Autonomous Transaction Processing database - DW - indicates an Autonomous Data Warehouse database - AJD - indicates an Autonomous JSON Database - APEX - indicates an Autonomous Database with the Oracle APEX Application Development workload type. This cannot be updated in parallel with any of the following: licenseModel, dbEdition, cpuCoreCount, computeCount, computeModel, adminPassword, whitelistedIps, isMTLSConnectionRequired, privateEndpointLabel, nsgIds, dbVersion, isRefreshable, dbName, scheduledOperations, dbToolsDetails, isLocalDataGuardEnabled, or isFreeTier.""") -@cli_util.option('--data-storage-size-in-tbs', type=click.INT, help=u"""The size, in terabytes, of the data volume that will be created and attached to the database. This storage can later be scaled up if needed. For Autonomous Databases on dedicated Exadata infrastructure, the maximum storage value is determined by the infrastructure shape. See [Characteristics of Infrastructure Shapes] for shape details. +@cli_util.option('--data-storage-size-in-tbs', type=click.INT, help=u"""The size, in terabytes, of the data volume that will be created and attached to the database. This storage can later be scaled up if needed. For Autonomous Databases on dedicated Exadata infrastructure, the maximum storage value is determined by the infrastructure shape. See [Characteristics of Infrastructure Shapes] for shape details. A full Exadata service is allocated when the Autonomous Database size is set to the upper limit (384 TB). **Note:** This parameter cannot be used with the `dataStorageSizeInGBs` parameter.""") @cli_util.option('--data-storage-size-in-gbs', type=click.INT, help=u"""The size, in gigabytes, of the data volume that will be created and attached to the database. This storage can later be scaled up if needed. The maximum storage value is determined by the infrastructure shape. See [Characteristics of Infrastructure Shapes] for shape details. @@ -2963,7 +2963,7 @@ def create_autonomous_database(ctx, from_json, wait_for_state, max_wait_seconds, - OLTP - indicates an Autonomous Transaction Processing database - DW - indicates an Autonomous Data Warehouse database - AJD - indicates an Autonomous JSON Database - APEX - indicates an Autonomous Database with the Oracle APEX Application Development workload type. This cannot be updated in parallel with any of the following: licenseModel, dbEdition, cpuCoreCount, computeCount, computeModel, adminPassword, whitelistedIps, isMTLSConnectionRequired, privateEndpointLabel, nsgIds, dbVersion, isRefreshable, dbName, scheduledOperations, dbToolsDetails, isLocalDataGuardEnabled, or isFreeTier.""") -@cli_util.option('--data-storage-size-in-tbs', type=click.INT, help=u"""The size, in terabytes, of the data volume that will be created and attached to the database. This storage can later be scaled up if needed. For Autonomous Databases on dedicated Exadata infrastructure, the maximum storage value is determined by the infrastructure shape. See [Characteristics of Infrastructure Shapes] for shape details. +@cli_util.option('--data-storage-size-in-tbs', type=click.INT, help=u"""The size, in terabytes, of the data volume that will be created and attached to the database. This storage can later be scaled up if needed. For Autonomous Databases on dedicated Exadata infrastructure, the maximum storage value is determined by the infrastructure shape. See [Characteristics of Infrastructure Shapes] for shape details. A full Exadata service is allocated when the Autonomous Database size is set to the upper limit (384 TB). **Note:** This parameter cannot be used with the `dataStorageSizeInGBs` parameter.""") @cli_util.option('--data-storage-size-in-gbs', type=click.INT, help=u"""The size, in gigabytes, of the data volume that will be created and attached to the database. This storage can later be scaled up if needed. The maximum storage value is determined by the infrastructure shape. See [Characteristics of Infrastructure Shapes] for shape details. @@ -3249,7 +3249,7 @@ def create_autonomous_database_create_autonomous_database_clone_details(ctx, fro - OLTP - indicates an Autonomous Transaction Processing database - DW - indicates an Autonomous Data Warehouse database - AJD - indicates an Autonomous JSON Database - APEX - indicates an Autonomous Database with the Oracle APEX Application Development workload type. This cannot be updated in parallel with any of the following: licenseModel, dbEdition, cpuCoreCount, computeCount, computeModel, adminPassword, whitelistedIps, isMTLSConnectionRequired, privateEndpointLabel, nsgIds, dbVersion, isRefreshable, dbName, scheduledOperations, dbToolsDetails, isLocalDataGuardEnabled, or isFreeTier.""") -@cli_util.option('--data-storage-size-in-tbs', type=click.INT, help=u"""The size, in terabytes, of the data volume that will be created and attached to the database. This storage can later be scaled up if needed. For Autonomous Databases on dedicated Exadata infrastructure, the maximum storage value is determined by the infrastructure shape. See [Characteristics of Infrastructure Shapes] for shape details. +@cli_util.option('--data-storage-size-in-tbs', type=click.INT, help=u"""The size, in terabytes, of the data volume that will be created and attached to the database. This storage can later be scaled up if needed. For Autonomous Databases on dedicated Exadata infrastructure, the maximum storage value is determined by the infrastructure shape. See [Characteristics of Infrastructure Shapes] for shape details. A full Exadata service is allocated when the Autonomous Database size is set to the upper limit (384 TB). **Note:** This parameter cannot be used with the `dataStorageSizeInGBs` parameter.""") @cli_util.option('--data-storage-size-in-gbs', type=click.INT, help=u"""The size, in gigabytes, of the data volume that will be created and attached to the database. This storage can later be scaled up if needed. The maximum storage value is determined by the infrastructure shape. See [Characteristics of Infrastructure Shapes] for shape details. @@ -3539,7 +3539,7 @@ def create_autonomous_database_create_refreshable_autonomous_database_clone_deta - OLTP - indicates an Autonomous Transaction Processing database - DW - indicates an Autonomous Data Warehouse database - AJD - indicates an Autonomous JSON Database - APEX - indicates an Autonomous Database with the Oracle APEX Application Development workload type. This cannot be updated in parallel with any of the following: licenseModel, dbEdition, cpuCoreCount, computeCount, computeModel, adminPassword, whitelistedIps, isMTLSConnectionRequired, privateEndpointLabel, nsgIds, dbVersion, isRefreshable, dbName, scheduledOperations, dbToolsDetails, isLocalDataGuardEnabled, or isFreeTier.""") -@cli_util.option('--data-storage-size-in-tbs', type=click.INT, help=u"""The size, in terabytes, of the data volume that will be created and attached to the database. This storage can later be scaled up if needed. For Autonomous Databases on dedicated Exadata infrastructure, the maximum storage value is determined by the infrastructure shape. See [Characteristics of Infrastructure Shapes] for shape details. +@cli_util.option('--data-storage-size-in-tbs', type=click.INT, help=u"""The size, in terabytes, of the data volume that will be created and attached to the database. This storage can later be scaled up if needed. For Autonomous Databases on dedicated Exadata infrastructure, the maximum storage value is determined by the infrastructure shape. See [Characteristics of Infrastructure Shapes] for shape details. A full Exadata service is allocated when the Autonomous Database size is set to the upper limit (384 TB). **Note:** This parameter cannot be used with the `dataStorageSizeInGBs` parameter.""") @cli_util.option('--data-storage-size-in-gbs', type=click.INT, help=u"""The size, in gigabytes, of the data volume that will be created and attached to the database. This storage can later be scaled up if needed. The maximum storage value is determined by the infrastructure shape. See [Characteristics of Infrastructure Shapes] for shape details. @@ -3826,7 +3826,7 @@ def create_autonomous_database_create_autonomous_database_from_backup_details(ct - OLTP - indicates an Autonomous Transaction Processing database - DW - indicates an Autonomous Data Warehouse database - AJD - indicates an Autonomous JSON Database - APEX - indicates an Autonomous Database with the Oracle APEX Application Development workload type. This cannot be updated in parallel with any of the following: licenseModel, dbEdition, cpuCoreCount, computeCount, computeModel, adminPassword, whitelistedIps, isMTLSConnectionRequired, privateEndpointLabel, nsgIds, dbVersion, isRefreshable, dbName, scheduledOperations, dbToolsDetails, isLocalDataGuardEnabled, or isFreeTier.""") -@cli_util.option('--data-storage-size-in-tbs', type=click.INT, help=u"""The size, in terabytes, of the data volume that will be created and attached to the database. This storage can later be scaled up if needed. For Autonomous Databases on dedicated Exadata infrastructure, the maximum storage value is determined by the infrastructure shape. See [Characteristics of Infrastructure Shapes] for shape details. +@cli_util.option('--data-storage-size-in-tbs', type=click.INT, help=u"""The size, in terabytes, of the data volume that will be created and attached to the database. This storage can later be scaled up if needed. For Autonomous Databases on dedicated Exadata infrastructure, the maximum storage value is determined by the infrastructure shape. See [Characteristics of Infrastructure Shapes] for shape details. A full Exadata service is allocated when the Autonomous Database size is set to the upper limit (384 TB). **Note:** This parameter cannot be used with the `dataStorageSizeInGBs` parameter.""") @cli_util.option('--data-storage-size-in-gbs', type=click.INT, help=u"""The size, in gigabytes, of the data volume that will be created and attached to the database. This storage can later be scaled up if needed. The maximum storage value is determined by the infrastructure shape. See [Characteristics of Infrastructure Shapes] for shape details. @@ -4113,7 +4113,7 @@ def create_autonomous_database_create_cross_region_disaster_recovery_details(ctx - OLTP - indicates an Autonomous Transaction Processing database - DW - indicates an Autonomous Data Warehouse database - AJD - indicates an Autonomous JSON Database - APEX - indicates an Autonomous Database with the Oracle APEX Application Development workload type. This cannot be updated in parallel with any of the following: licenseModel, dbEdition, cpuCoreCount, computeCount, computeModel, adminPassword, whitelistedIps, isMTLSConnectionRequired, privateEndpointLabel, nsgIds, dbVersion, isRefreshable, dbName, scheduledOperations, dbToolsDetails, isLocalDataGuardEnabled, or isFreeTier.""") -@cli_util.option('--data-storage-size-in-tbs', type=click.INT, help=u"""The size, in terabytes, of the data volume that will be created and attached to the database. This storage can later be scaled up if needed. For Autonomous Databases on dedicated Exadata infrastructure, the maximum storage value is determined by the infrastructure shape. See [Characteristics of Infrastructure Shapes] for shape details. +@cli_util.option('--data-storage-size-in-tbs', type=click.INT, help=u"""The size, in terabytes, of the data volume that will be created and attached to the database. This storage can later be scaled up if needed. For Autonomous Databases on dedicated Exadata infrastructure, the maximum storage value is determined by the infrastructure shape. See [Characteristics of Infrastructure Shapes] for shape details. A full Exadata service is allocated when the Autonomous Database size is set to the upper limit (384 TB). **Note:** This parameter cannot be used with the `dataStorageSizeInGBs` parameter.""") @cli_util.option('--data-storage-size-in-gbs', type=click.INT, help=u"""The size, in gigabytes, of the data volume that will be created and attached to the database. This storage can later be scaled up if needed. The maximum storage value is determined by the infrastructure shape. See [Characteristics of Infrastructure Shapes] for shape details. @@ -4407,7 +4407,7 @@ def create_autonomous_database_create_autonomous_database_from_backup_timestamp_ - OLTP - indicates an Autonomous Transaction Processing database - DW - indicates an Autonomous Data Warehouse database - AJD - indicates an Autonomous JSON Database - APEX - indicates an Autonomous Database with the Oracle APEX Application Development workload type. This cannot be updated in parallel with any of the following: licenseModel, dbEdition, cpuCoreCount, computeCount, computeModel, adminPassword, whitelistedIps, isMTLSConnectionRequired, privateEndpointLabel, nsgIds, dbVersion, isRefreshable, dbName, scheduledOperations, dbToolsDetails, isLocalDataGuardEnabled, or isFreeTier.""") -@cli_util.option('--data-storage-size-in-tbs', type=click.INT, help=u"""The size, in terabytes, of the data volume that will be created and attached to the database. This storage can later be scaled up if needed. For Autonomous Databases on dedicated Exadata infrastructure, the maximum storage value is determined by the infrastructure shape. See [Characteristics of Infrastructure Shapes] for shape details. +@cli_util.option('--data-storage-size-in-tbs', type=click.INT, help=u"""The size, in terabytes, of the data volume that will be created and attached to the database. This storage can later be scaled up if needed. For Autonomous Databases on dedicated Exadata infrastructure, the maximum storage value is determined by the infrastructure shape. See [Characteristics of Infrastructure Shapes] for shape details. A full Exadata service is allocated when the Autonomous Database size is set to the upper limit (384 TB). **Note:** This parameter cannot be used with the `dataStorageSizeInGBs` parameter.""") @cli_util.option('--data-storage-size-in-gbs', type=click.INT, help=u"""The size, in gigabytes, of the data volume that will be created and attached to the database. This storage can later be scaled up if needed. The maximum storage value is determined by the infrastructure shape. See [Characteristics of Infrastructure Shapes] for shape details. @@ -4691,7 +4691,7 @@ def create_autonomous_database_create_cross_region_autonomous_database_data_guar - OLTP - indicates an Autonomous Transaction Processing database - DW - indicates an Autonomous Data Warehouse database - AJD - indicates an Autonomous JSON Database - APEX - indicates an Autonomous Database with the Oracle APEX Application Development workload type. This cannot be updated in parallel with any of the following: licenseModel, dbEdition, cpuCoreCount, computeCount, computeModel, adminPassword, whitelistedIps, isMTLSConnectionRequired, privateEndpointLabel, nsgIds, dbVersion, isRefreshable, dbName, scheduledOperations, dbToolsDetails, isLocalDataGuardEnabled, or isFreeTier.""") -@cli_util.option('--data-storage-size-in-tbs', type=click.INT, help=u"""The size, in terabytes, of the data volume that will be created and attached to the database. This storage can later be scaled up if needed. For Autonomous Databases on dedicated Exadata infrastructure, the maximum storage value is determined by the infrastructure shape. See [Characteristics of Infrastructure Shapes] for shape details. +@cli_util.option('--data-storage-size-in-tbs', type=click.INT, help=u"""The size, in terabytes, of the data volume that will be created and attached to the database. This storage can later be scaled up if needed. For Autonomous Databases on dedicated Exadata infrastructure, the maximum storage value is determined by the infrastructure shape. See [Characteristics of Infrastructure Shapes] for shape details. A full Exadata service is allocated when the Autonomous Database size is set to the upper limit (384 TB). **Note:** This parameter cannot be used with the `dataStorageSizeInGBs` parameter.""") @cli_util.option('--data-storage-size-in-gbs', type=click.INT, help=u"""The size, in gigabytes, of the data volume that will be created and attached to the database. This storage can later be scaled up if needed. The maximum storage value is determined by the infrastructure shape. See [Characteristics of Infrastructure Shapes] for shape details. @@ -5743,15 +5743,19 @@ def create_cloud_vm_cluster(ctx, from_json, wait_for_state, max_wait_seconds, wa @console_connection_group.command(name=cli_util.override('db.create_console_connection.command_name', 'create'), help=u"""Creates a new console connection to the specified database node. After the console connection has been created and is available, you connect to the console using SSH. \n[Command Reference](createConsoleConnection)""") @cli_util.option('--public-key', required=True, help=u"""The SSH public key used to authenticate the console connection.""") @cli_util.option('--db-node-id', required=True, help=u"""The database node [OCID].""") +@cli_util.option('--freeform-tags', type=custom_types.CLI_COMPLEX_TYPE, help=u"""Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags]. + +Example: `{\"Department\": \"Finance\"}`""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) +@cli_util.option('--defined-tags', type=custom_types.CLI_COMPLEX_TYPE, help=u"""Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags].""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) @cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACTIVE", "CREATING", "DELETED", "DELETING", "FAILED"]), multiple=True, help="""This operation creates, modifies or deletes a resource that has a defined lifecycle state. Specify this option to perform the action and then wait until the resource reaches a given lifecycle state. Multiple states can be specified, returning on the first state. For example, --wait-for-state SUCCEEDED --wait-for-state FAILED 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.""") @cli_util.option('--max-wait-seconds', type=click.INT, help="""The maximum time to wait for the resource to reach the lifecycle state defined by --wait-for-state. Defaults to 1200 seconds.""") @cli_util.option('--wait-interval-seconds', type=click.INT, help="""Check every --wait-interval-seconds to see whether the resource has reached the lifecycle state defined by --wait-for-state. Defaults to 30 seconds.""") -@json_skeleton_utils.get_cli_json_input_option({}) +@json_skeleton_utils.get_cli_json_input_option({'freeform-tags': {'module': 'database', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'database', 'class': 'dict(str, dict(str, object))'}}) @cli_util.help_option @click.pass_context -@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}, output_type={'module': 'database', 'class': 'ConsoleConnection'}) +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'freeform-tags': {'module': 'database', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'database', 'class': 'dict(str, dict(str, object))'}}, output_type={'module': 'database', 'class': 'ConsoleConnection'}) @cli_util.wrap_exceptions -def create_console_connection(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, public_key, db_node_id): +def create_console_connection(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, public_key, db_node_id, freeform_tags, defined_tags): if isinstance(db_node_id, six.string_types) and len(db_node_id.strip()) == 0: raise click.UsageError('Parameter --db-node-id cannot be whitespace or empty string') @@ -5761,6 +5765,12 @@ def create_console_connection(ctx, from_json, wait_for_state, max_wait_seconds, _details = {} _details['publicKey'] = public_key + if freeform_tags is not None: + _details['freeformTags'] = cli_util.parse_json_parameter("freeform_tags", freeform_tags) + + if defined_tags is not None: + _details['definedTags'] = cli_util.parse_json_parameter("defined_tags", defined_tags) + client = cli_util.build_client('database', 'database', ctx) result = client.create_console_connection( db_node_id=db_node_id, @@ -8601,12 +8611,15 @@ def delete_cloud_vm_cluster(ctx, from_json, wait_for_state, max_wait_seconds, wa @cli_util.option('--console-connection-id', required=True, help=u"""The OCID of the console connection.""") @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.""") @cli_util.confirm_delete_option +@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "FAILED", "SUCCEEDED"]), 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 SUCCEEDED --wait-for-state FAILED 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.""") +@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.""") +@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.""") @json_skeleton_utils.get_cli_json_input_option({}) @cli_util.help_option @click.pass_context @json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}) @cli_util.wrap_exceptions -def delete_console_connection(ctx, from_json, db_node_id, console_connection_id, if_match): +def delete_console_connection(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, db_node_id, console_connection_id, if_match): if isinstance(db_node_id, six.string_types) and len(db_node_id.strip()) == 0: raise click.UsageError('Parameter --db-node-id cannot be whitespace or empty string') @@ -8623,6 +8636,30 @@ def delete_console_connection(ctx, from_json, db_node_id, console_connection_id, console_connection_id=console_connection_id, **kwargs ) + work_request_client = cli_util.build_client('work_requests', 'work_request', ctx) + if wait_for_state: + + if hasattr(work_request_client, 'get_work_request') and callable(getattr(work_request_client, 'get_work_request')): + try: + wait_period_kwargs = {} + if max_wait_seconds is not None: + wait_period_kwargs['max_wait_seconds'] = max_wait_seconds + if wait_interval_seconds is not None: + wait_period_kwargs['max_interval_seconds'] = wait_interval_seconds + + click.echo('Action completed. Waiting until the work request has entered state: {}'.format(wait_for_state), file=sys.stderr) + result = oci.wait_until(work_request_client, work_request_client.get_work_request(result.headers['opc-work-request-id']), 'status', wait_for_state, **wait_period_kwargs) + except oci.exceptions.MaximumWaitTimeExceeded as e: + # If we fail, we should show an error, but we should still provide the information to the customer + click.echo('Failed to wait until the work request entered the specified state. Please retrieve the work request to find its current state', file=sys.stderr) + cli_util.render_response(result, ctx) + sys.exit(2) + except Exception: + click.echo('Encountered error while waiting for work request to enter the specified state. Outputting last known resource state', file=sys.stderr) + cli_util.render_response(result, ctx) + raise + else: + click.echo('Unable to wait for the work request to enter the specified state', file=sys.stderr) cli_util.render_response(result, ctx) @@ -19621,7 +19658,7 @@ def update_autonomous_container_database_dataguard_association(ctx, from_json, w To provision less than 1 core, enter a fractional value in an increment of 0.1. To provision 1 or more cores, you must enter an integer between 1 and the maximum number of cores available to the infrastructure shape. For example, you can provision 0.3 or 0.4 cores, but not 0.35 cores. Likewise, you can provision 2 cores or 3 cores, but not 2.5 cores. The maximum number of cores is determined by the infrastructure shape. See [Characteristics of Infrastructure Shapes] for shape details. **Note:** This parameter cannot be used with the `cpuCoreCount` parameter.""") -@cli_util.option('--data-storage-size-in-tbs', type=click.INT, help=u"""The size, in terabytes, of the data volume that will be created and attached to the database. For Autonomous Databases on dedicated Exadata infrastructure, the maximum storage value is determined by the infrastructure shape. See [Characteristics of Infrastructure Shapes] for shape details. +@cli_util.option('--data-storage-size-in-tbs', type=click.INT, help=u"""The size, in terabytes, of the data volume that will be created and attached to the database. For Autonomous Databases on dedicated Exadata infrastructure, the maximum storage value is determined by the infrastructure shape. See [Characteristics of Infrastructure Shapes] for shape details. A full Exadata service is allocated when the Autonomous Database size is set to the upper limit (384 TB). **Note:** This parameter cannot be used with the `dataStorageSizeInGBs` parameter. @@ -20712,6 +20749,81 @@ def update_cloud_vm_cluster_iorm_config(ctx, from_json, force, cloud_vm_cluster_ cli_util.render_response(result, ctx) +@console_connection_group.command(name=cli_util.override('db.update_console_connection.command_name', 'update'), help=u"""Updates the specified database node console connection. \n[Command Reference](updateConsoleConnection)""") +@cli_util.option('--db-node-id', required=True, help=u"""The database node [OCID].""") +@cli_util.option('--console-connection-id', required=True, help=u"""The OCID of the console connection.""") +@cli_util.option('--freeform-tags', type=custom_types.CLI_COMPLEX_TYPE, help=u"""Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags]. + +Example: `{\"Department\": \"Finance\"}`""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) +@cli_util.option('--defined-tags', type=custom_types.CLI_COMPLEX_TYPE, help=u"""Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags].""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) +@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.""") +@cli_util.option('--force', help="""Perform update without prompting for confirmation.""", is_flag=True) +@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACTIVE", "CREATING", "DELETED", "DELETING", "FAILED"]), multiple=True, help="""This operation creates, modifies or deletes a resource that has a defined lifecycle state. Specify this option to perform the action and then wait until the resource reaches a given lifecycle state. Multiple states can be specified, returning on the first state. For example, --wait-for-state SUCCEEDED --wait-for-state FAILED 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.""") +@cli_util.option('--max-wait-seconds', type=click.INT, help="""The maximum time to wait for the resource to reach the lifecycle state defined by --wait-for-state. Defaults to 1200 seconds.""") +@cli_util.option('--wait-interval-seconds', type=click.INT, help="""Check every --wait-interval-seconds to see whether the resource has reached the lifecycle state defined by --wait-for-state. Defaults to 30 seconds.""") +@json_skeleton_utils.get_cli_json_input_option({'freeform-tags': {'module': 'database', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'database', 'class': 'dict(str, dict(str, object))'}}) +@cli_util.help_option +@click.pass_context +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'freeform-tags': {'module': 'database', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'database', 'class': 'dict(str, dict(str, object))'}}, output_type={'module': 'database', 'class': 'ConsoleConnection'}) +@cli_util.wrap_exceptions +def update_console_connection(ctx, from_json, force, wait_for_state, max_wait_seconds, wait_interval_seconds, db_node_id, console_connection_id, freeform_tags, defined_tags, if_match): + + if isinstance(db_node_id, six.string_types) and len(db_node_id.strip()) == 0: + raise click.UsageError('Parameter --db-node-id cannot be whitespace or empty string') + + if isinstance(console_connection_id, six.string_types) and len(console_connection_id.strip()) == 0: + raise click.UsageError('Parameter --console-connection-id cannot be whitespace or empty string') + if not force: + if freeform_tags or defined_tags: + if not click.confirm("WARNING: Updates to freeform-tags and defined-tags will replace any existing values. Are you sure you want to continue?"): + ctx.abort() + + kwargs = {} + if if_match is not None: + kwargs['if_match'] = if_match + kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) + + _details = {} + + if freeform_tags is not None: + _details['freeformTags'] = cli_util.parse_json_parameter("freeform_tags", freeform_tags) + + if defined_tags is not None: + _details['definedTags'] = cli_util.parse_json_parameter("defined_tags", defined_tags) + + client = cli_util.build_client('database', 'database', ctx) + result = client.update_console_connection( + db_node_id=db_node_id, + console_connection_id=console_connection_id, + update_console_connection_details=_details, + **kwargs + ) + if wait_for_state: + + if hasattr(client, 'get_console_connection') and callable(getattr(client, 'get_console_connection')): + try: + wait_period_kwargs = {} + if max_wait_seconds is not None: + wait_period_kwargs['max_wait_seconds'] = max_wait_seconds + if wait_interval_seconds is not None: + wait_period_kwargs['max_interval_seconds'] = wait_interval_seconds + + click.echo('Action completed. Waiting until the resource has entered state: {}'.format(wait_for_state), file=sys.stderr) + result = oci.wait_until(client, client.get_console_connection(result.data.id), 'lifecycle_state', wait_for_state, **wait_period_kwargs) + except oci.exceptions.MaximumWaitTimeExceeded as e: + # If we fail, we should show an error, but we should still provide the information to the customer + click.echo('Failed to wait until the resource entered the specified state. Outputting last known resource state', file=sys.stderr) + cli_util.render_response(result, ctx) + sys.exit(2) + except Exception: + click.echo('Encountered error while waiting for resource to enter the specified state. Outputting last known resource state', file=sys.stderr) + cli_util.render_response(result, ctx) + raise + else: + click.echo('Unable to wait for the resource to enter the specified state', file=sys.stderr) + cli_util.render_response(result, ctx) + + @data_guard_association_group.command(name=cli_util.override('db.update_data_guard_association.command_name', 'update'), help=u"""Updates the Data Guard association the specified database. This API can be used to change the `protectionMode` and `transportType` of the Data Guard association. \n[Command Reference](updateDataGuardAssociation)""") @cli_util.option('--database-id', required=True, help=u"""The database [OCID].""") @cli_util.option('--data-guard-association-id', required=True, help=u"""The Data Guard association's [OCID].""") @@ -21041,6 +21153,76 @@ def update_db_home(ctx, from_json, force, wait_for_state, max_wait_seconds, wait cli_util.render_response(result, ctx) +@db_node_group.command(name=cli_util.override('db.update_db_node.command_name', 'update'), help=u"""Updates the specified database node. \n[Command Reference](updateDbNode)""") +@cli_util.option('--db-node-id', required=True, help=u"""The database node [OCID].""") +@cli_util.option('--freeform-tags', type=custom_types.CLI_COMPLEX_TYPE, help=u"""Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags]. + +Example: `{\"Department\": \"Finance\"}`""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) +@cli_util.option('--defined-tags', type=custom_types.CLI_COMPLEX_TYPE, help=u"""Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags].""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) +@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.""") +@cli_util.option('--force', help="""Perform update without prompting for confirmation.""", is_flag=True) +@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["PROVISIONING", "AVAILABLE", "UPDATING", "STOPPING", "STOPPED", "STARTING", "TERMINATING", "TERMINATED", "FAILED"]), multiple=True, help="""This operation creates, modifies or deletes a resource that has a defined lifecycle state. Specify this option to perform the action and then wait until the resource reaches a given lifecycle state. Multiple states can be specified, returning on the first state. For example, --wait-for-state SUCCEEDED --wait-for-state FAILED 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.""") +@cli_util.option('--max-wait-seconds', type=click.INT, help="""The maximum time to wait for the resource to reach the lifecycle state defined by --wait-for-state. Defaults to 1200 seconds.""") +@cli_util.option('--wait-interval-seconds', type=click.INT, help="""Check every --wait-interval-seconds to see whether the resource has reached the lifecycle state defined by --wait-for-state. Defaults to 30 seconds.""") +@json_skeleton_utils.get_cli_json_input_option({'freeform-tags': {'module': 'database', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'database', 'class': 'dict(str, dict(str, object))'}}) +@cli_util.help_option +@click.pass_context +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'freeform-tags': {'module': 'database', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'database', 'class': 'dict(str, dict(str, object))'}}, output_type={'module': 'database', 'class': 'DbNode'}) +@cli_util.wrap_exceptions +def update_db_node(ctx, from_json, force, wait_for_state, max_wait_seconds, wait_interval_seconds, db_node_id, freeform_tags, defined_tags, if_match): + + if isinstance(db_node_id, six.string_types) and len(db_node_id.strip()) == 0: + raise click.UsageError('Parameter --db-node-id cannot be whitespace or empty string') + if not force: + if freeform_tags or defined_tags: + if not click.confirm("WARNING: Updates to freeform-tags and defined-tags will replace any existing values. Are you sure you want to continue?"): + ctx.abort() + + kwargs = {} + if if_match is not None: + kwargs['if_match'] = if_match + kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) + + _details = {} + + if freeform_tags is not None: + _details['freeformTags'] = cli_util.parse_json_parameter("freeform_tags", freeform_tags) + + if defined_tags is not None: + _details['definedTags'] = cli_util.parse_json_parameter("defined_tags", defined_tags) + + client = cli_util.build_client('database', 'database', ctx) + result = client.update_db_node( + db_node_id=db_node_id, + update_db_node_details=_details, + **kwargs + ) + if wait_for_state: + + if hasattr(client, 'get_db_node') and callable(getattr(client, 'get_db_node')): + try: + wait_period_kwargs = {} + if max_wait_seconds is not None: + wait_period_kwargs['max_wait_seconds'] = max_wait_seconds + if wait_interval_seconds is not None: + wait_period_kwargs['max_interval_seconds'] = wait_interval_seconds + + click.echo('Action completed. Waiting until the resource has entered state: {}'.format(wait_for_state), file=sys.stderr) + result = oci.wait_until(client, client.get_db_node(result.data.id), 'lifecycle_state', wait_for_state, **wait_period_kwargs) + except oci.exceptions.MaximumWaitTimeExceeded as e: + # If we fail, we should show an error, but we should still provide the information to the customer + click.echo('Failed to wait until the resource entered the specified state. Outputting last known resource state', file=sys.stderr) + cli_util.render_response(result, ctx) + sys.exit(2) + except Exception: + click.echo('Encountered error while waiting for resource to enter the specified state. Outputting last known resource state', file=sys.stderr) + cli_util.render_response(result, ctx) + raise + else: + click.echo('Unable to wait for the resource to enter the specified state', file=sys.stderr) + cli_util.render_response(result, ctx) + + @db_system_group.command(name=cli_util.override('db.update_db_system.command_name', 'update'), help=u"""Updates the properties of the specified DB system. **Note:** Deprecated for Exadata Cloud Service systems. Use the [new resource model APIs] instead. diff --git a/services/functions/src/oci_cli_functions_management/generated/functionsmanagement_cli.py b/services/functions/src/oci_cli_functions_management/generated/functionsmanagement_cli.py index b63a6da2f..c1f321ed5 100644 --- a/services/functions/src/oci_cli_functions_management/generated/functionsmanagement_cli.py +++ b/services/functions/src/oci_cli_functions_management/generated/functionsmanagement_cli.py @@ -100,6 +100,7 @@ def change_application_compartment(ctx, from_json, application_id, compartment_i Example: `{\"MY_FUNCTION_CONFIG\": \"ConfVal\"}` The maximum size for all configuration keys and values is limited to 4KB. This is measured as the sum of octets necessary to represent each key and value in UTF-8.""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) +@cli_util.option('--shape', type=custom_types.CliCaseInsensitiveChoice(["GENERIC_X86", "GENERIC_ARM", "GENERIC_X86_ARM"]), help=u"""Valid values are `GENERIC_X86`, `GENERIC_ARM` and `GENERIC_X86_ARM`. Default is `GENERIC_X86`. Setting this to `GENERIC_X86`, will run the functions in the application on X86 processor architecture. Setting this to `GENERIC_ARM`, will run the functions in the application on ARM processor architecture. When set to `GENERIC_X86_ARM`, functions in the application are run on either X86 or ARM processor architecture. Accepted values are: `GENERIC_X86`, `GENERIC_ARM`, `GENERIC_X86_ARM`""") @cli_util.option('--network-security-group-ids', type=custom_types.CLI_COMPLEX_TYPE, help=u"""The [OCID]s of the Network Security Groups to add the application to.""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) @cli_util.option('--syslog-url', help=u"""A syslog URL to which to send all function logs. Supports tcp, udp, and tcp+tls. The syslog URL must be reachable from all of the subnets configured for the application. Note: If you enable the OCI Logging service for this application, the syslogUrl value is ignored. Function logs are sent to the OCI Logging service, and not to the syslog URL. @@ -120,7 +121,7 @@ def change_application_compartment(ctx, from_json, application_id, compartment_i @click.pass_context @json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'config': {'module': 'functions', 'class': 'dict(str, string)'}, 'subnet-ids': {'module': 'functions', 'class': 'list[string]'}, 'network-security-group-ids': {'module': 'functions', 'class': 'list[string]'}, 'trace-config': {'module': 'functions', 'class': 'ApplicationTraceConfig'}, 'freeform-tags': {'module': 'functions', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'functions', 'class': 'dict(str, dict(str, object))'}, 'image-policy-config': {'module': 'functions', 'class': 'ImagePolicyConfig'}}, output_type={'module': 'functions', 'class': 'Application'}) @cli_util.wrap_exceptions -def create_application(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, compartment_id, display_name, subnet_ids, config, network_security_group_ids, syslog_url, trace_config, freeform_tags, defined_tags, image_policy_config): +def create_application(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, compartment_id, display_name, subnet_ids, config, shape, network_security_group_ids, syslog_url, trace_config, freeform_tags, defined_tags, image_policy_config): kwargs = {} kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) @@ -133,6 +134,9 @@ def create_application(ctx, from_json, wait_for_state, max_wait_seconds, wait_in if config is not None: _details['config'] = cli_util.parse_json_parameter("config", config) + if shape is not None: + _details['shape'] = shape + if network_security_group_ids is not None: _details['networkSecurityGroupIds'] = cli_util.parse_json_parameter("network_security_group_ids", network_security_group_ids) @@ -477,7 +481,7 @@ def create_function_none_provisioned_concurrency_config(ctx, from_json, wait_for @cli_util.option('--display-name', required=True, help=u"""The display name of the function. The display name must be unique within the application containing the function. Avoid entering confidential information.""") @cli_util.option('--application-id', required=True, help=u"""The OCID of the application this function belongs to.""") @cli_util.option('--memory-in-mbs', required=True, type=click.INT, help=u"""Maximum usable memory for the function (MiB).""") -@cli_util.option('--provisioned-concurrency-config-count', required=True, type=click.INT, help=u"""""") +@cli_util.option('--provisioned-concurrency-config-count', required=True, type=click.INT, help=u"""Configuration specifying a constant amount of provisioned concurrency.""") @cli_util.option('--image', help=u"""The qualified name of the Docker image to use in the function, including the image tag. The image should be in the OCI Registry that is in the same region as the function itself. Example: `phx.ocir.io/ten/functions/function:0.0.1`""") @cli_util.option('--image-digest', help=u"""The image digest for the version of the image that will be pulled when invoking this function. If no value is specified, the digest currently associated with the image in the OCI Registry will be used. Example: `sha256:ca0eeb6fb05351dfc8759c20733c91def84cb8007aa89a5bf606bc8b315b9fc7`""") @cli_util.option('--source-details', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) @@ -1430,7 +1434,7 @@ def update_function_none_provisioned_concurrency_config(ctx, from_json, force, w @function_group.command(name=cli_util.override('functions_management.update_function_constant_provisioned_concurrency_config.command_name', 'update-function-constant-provisioned-concurrency-config'), help=u"""Modifies a function \n[Command Reference](updateFunction)""") @cli_util.option('--function-id', required=True, help=u"""The [OCID] of this function.""") -@cli_util.option('--provisioned-concurrency-config-count', required=True, type=click.INT, help=u"""""") +@cli_util.option('--provisioned-concurrency-config-count', required=True, type=click.INT, help=u"""Configuration specifying a constant amount of provisioned concurrency.""") @cli_util.option('--image', help=u"""The qualified name of the Docker image to use in the function, including the image tag. The image should be in the OCI Registry that is in the same region as the function itself. If an image is specified but no value for imageDigest is provided, the digest currently associated with the image tag in the OCI Registry will be used. Example: `phx.ocir.io/ten/functions/function:0.0.1`""") @cli_util.option('--image-digest', help=u"""The image digest for the version of the image that will be pulled when invoking this function. Example: `sha256:ca0eeb6fb05351dfc8759c20733c91def84cb8007aa89a5bf606bc8b315b9fc7`""") @cli_util.option('--memory-in-mbs', type=click.INT, help=u"""Maximum usable memory for the function (MiB).""") diff --git a/services/identity/src/oci_cli_identity/generated/identity_cli.py b/services/identity/src/oci_cli_identity/generated/identity_cli.py index f3ef82ccd..36b0472a0 100644 --- a/services/identity/src/oci_cli_identity/generated/identity_cli.py +++ b/services/identity/src/oci_cli_identity/generated/identity_cli.py @@ -16,7 +16,7 @@ from oci_cli.aliasing import CommandGroupWithAlias -@cli.command(cli_util.override('iam.iam_root_group.command_name', 'iam'), cls=CommandGroupWithAlias, help=cli_util.override('iam.iam_root_group.help', """APIs for managing users, groups, compartments, policies, and identity domains."""), short_help=cli_util.override('iam.iam_root_group.short_help', """Identity and Access Management Service API""")) +@cli.command(cli_util.override('iam.iam_root_group.command_name', 'iam'), cls=CommandGroupWithAlias, help=cli_util.override('iam.iam_root_group.help', """Use the Identity and Access Management Service API to manage users, groups, identity domains, compartments, policies, tagging, and limits. For information about managing users, groups, compartments, and policies, see [Identity and Access Management (without identity domains)]. For information about tagging and service limits, see [Tagging] and [Service Limits]. For information about creating, modifying, and deleting identity domains, see [Identity and Access Management (with identity domains)]."""), short_help=cli_util.override('iam.iam_root_group.short_help', """Identity and Access Management Service API""")) @cli_util.help_option_group def iam_root_group(): pass @@ -723,7 +723,9 @@ def bulk_delete_resources(ctx, from_json, wait_for_state, max_wait_seconds, wait @tag_group.command(name=cli_util.override('iam.bulk_delete_tags.command_name', 'bulk-delete'), help=u"""Deletes the specified tag key definitions. This operation triggers a process that removes the tags from all resources in your tenancy. The tag key definitions must be within the same tag namespace. -The following actions happen immediately: \u00A0 * If the tag is a cost-tracking tag, the tag no longer counts against your 10 cost-tracking tags limit, even if you do not disable the tag before running this operation. * If the tag is used with dynamic groups, the rules that contain the tag are no longer evaluated against the tag. +The following actions happen immediately: + + * If the tag is a cost-tracking tag, the tag no longer counts against your 10 cost-tracking tags limit, even if you do not disable the tag before running this operation. * If the tag is used with dynamic groups, the rules that contain the tag are no longer evaluated against the tag. After you start this operation, the state of the tag changes to DELETING, and tag removal from resources begins. This process can take up to 48 hours depending on the number of resources that are tagged and the regions in which those resources reside. @@ -3677,7 +3679,7 @@ def generate_totp_seed(ctx, from_json, wait_for_state, max_wait_seconds, wait_in cli_util.render_response(result, ctx) -@authentication_policy_group.command(name=cli_util.override('iam.get_authentication_policy.command_name', 'get'), help=u"""Gets the authentication policy for the given tenancy. You must specify your tenant\u2019s OCID as the value for the compartment ID (remember that the tenancy is simply the root compartment). \n[Command Reference](getAuthenticationPolicy)""") +@authentication_policy_group.command(name=cli_util.override('iam.get_authentication_policy.command_name', 'get'), help=u"""Gets the authentication policy for the given tenancy. You must specify your tenant's OCID as the value for the compartment ID (remember that the tenancy is simply the root compartment). \n[Command Reference](getAuthenticationPolicy)""") @cli_util.option('--compartment-id', required=True, help=u"""The OCID of the compartment.""") @json_skeleton_utils.get_cli_json_input_option({}) @cli_util.help_option diff --git a/services/oci_control_center/tests/util/generated/command_to_api.py b/services/oci_control_center/tests/util/generated/command_to_api.py deleted file mode 100644 index e0378cdb4..000000000 --- a/services/oci_control_center/tests/util/generated/command_to_api.py +++ /dev/null @@ -1,8 +0,0 @@ -# coding: utf-8 -# Copyright (c) 2016, 2023, Oracle and/or its affiliates. All rights reserved. - -SDK_client_map = { - "occ.list_metric_properties": "oci.oci_control_center.OccMetricsClient.list_metric_properties", - "occ.list_namespaces": "oci.oci_control_center.OccMetricsClient.list_namespaces", - "occ.request_summarized_metric_data": "oci.oci_control_center.OccMetricsClient.request_summarized_metric_data", -} diff --git a/services/rover/src/oci_cli_rover/generated/rover_service_cli.py b/services/rover/src/oci_cli_rover/generated/rover_service_cli.py index fd1264b5f..cdf99147a 100644 --- a/services/rover/src/oci_cli_rover/generated/rover_service_cli.py +++ b/services/rover/src/oci_cli_rover/generated/rover_service_cli.py @@ -8,7 +8,7 @@ from oci_cli.aliasing import CommandGroupWithAlias -@cli.command(cli_util.override('shape.rover_service_group.command_name', 'rover'), cls=CommandGroupWithAlias, help=cli_util.override('shape.rover_service_group.help', """A description of the RoverCloudService API."""), short_help=cli_util.override('shape.rover_service_group.short_help', """RoverCloudService API""")) +@cli.command(cli_util.override('work_requests.rover_service_group.command_name', 'rover'), cls=CommandGroupWithAlias, help=cli_util.override('work_requests.rover_service_group.help', """A description of the RoverCloudService API."""), short_help=cli_util.override('work_requests.rover_service_group.short_help', """RoverCloudService API""")) @cli_util.help_option_group def rover_service_group(): pass diff --git a/services/rover/src/oci_cli_rover_bundle/__init__.py b/services/rover/src/oci_cli_rover_bundle/__init__.py new file mode 100644 index 000000000..81ff5973e --- /dev/null +++ b/services/rover/src/oci_cli_rover_bundle/__init__.py @@ -0,0 +1,4 @@ +# coding: utf-8 +# Copyright (c) 2016, 2023, 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. +# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20201210 diff --git a/services/rover/src/oci_cli_rover_bundle/generated/__init__.py b/services/rover/src/oci_cli_rover_bundle/generated/__init__.py new file mode 100644 index 000000000..81ff5973e --- /dev/null +++ b/services/rover/src/oci_cli_rover_bundle/generated/__init__.py @@ -0,0 +1,4 @@ +# coding: utf-8 +# Copyright (c) 2016, 2023, 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. +# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20201210 diff --git a/services/rover/src/oci_cli_rover_bundle/generated/client_mappings.py b/services/rover/src/oci_cli_rover_bundle/generated/client_mappings.py new file mode 100644 index 000000000..bd43e7dc1 --- /dev/null +++ b/services/rover/src/oci_cli_rover_bundle/generated/client_mappings.py @@ -0,0 +1,14 @@ +# coding: utf-8 +# Copyright (c) 2016, 2023, 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. +# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20201210 + +import oci +from oci_cli.cli_clients import CLIENT_MAP +from oci_cli.cli_clients import MODULE_TO_TYPE_MAPPINGS +from oci.rover import RoverBundleClient + +MODULE_TO_TYPE_MAPPINGS["rover"] = oci.rover.models.rover_type_mapping +if CLIENT_MAP.get("rover") is None: + CLIENT_MAP["rover"] = {} +CLIENT_MAP["rover"]["rover_bundle"] = RoverBundleClient diff --git a/services/rover/src/oci_cli_rover_bundle/generated/roverbundle_cli.py b/services/rover/src/oci_cli_rover_bundle/generated/roverbundle_cli.py new file mode 100644 index 000000000..a81533615 --- /dev/null +++ b/services/rover/src/oci_cli_rover_bundle/generated/roverbundle_cli.py @@ -0,0 +1,385 @@ +# coding: utf-8 +# Copyright (c) 2016, 2023, 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. +# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20201210 + +from __future__ import print_function +import click +import oci # noqa: F401 +import six # noqa: F401 +import sys # noqa: F401 +from oci_cli import cli_constants # noqa: F401 +from oci_cli import cli_util +from oci_cli import json_skeleton_utils +from oci_cli import custom_types # noqa: F401 +from oci_cli.aliasing import CommandGroupWithAlias +from services.rover.src.oci_cli_rover.generated import rover_service_cli + + +@click.command(cli_util.override('rover_bundle.rover_bundle_root_group.command_name', 'rover-bundle'), cls=CommandGroupWithAlias, help=cli_util.override('rover_bundle.rover_bundle_root_group.help', """A description of the RoverCloudService API."""), short_help=cli_util.override('rover_bundle.rover_bundle_root_group.short_help', """RoverCloudService API""")) +@cli_util.help_option_group +def rover_bundle_root_group(): + pass + + +@click.command(cli_util.override('rover_bundle.rover_cluster_group.command_name', 'rover-cluster'), cls=CommandGroupWithAlias, help="""Description of RoverCluster.""") +@cli_util.help_option_group +def rover_cluster_group(): + pass + + +@click.command(cli_util.override('rover_bundle.rover_node_group.command_name', 'rover-node'), cls=CommandGroupWithAlias, help="""Information about a RoverNode.""") +@cli_util.help_option_group +def rover_node_group(): + pass + + +rover_service_cli.rover_service_group.add_command(rover_bundle_root_group) +rover_bundle_root_group.add_command(rover_cluster_group) +rover_bundle_root_group.add_command(rover_node_group) + + +@rover_cluster_group.command(name=cli_util.override('rover_bundle.list_rover_cluster_rover_bundle_requests.command_name', 'list-rover-cluster-rover-bundle-requests'), help=u"""List all the roverBundleRequests for a given roverClusterId. \n[Command Reference](listRoverClusterRoverBundleRequests)""") +@cli_util.option('--rover-cluster-id', required=True, help=u"""Unique RoverCluster identifier""") +@cli_util.option('--limit', type=click.INT, help=u"""The maximum number of items to return.""") +@cli_util.option('--page', help=u"""The page token representing the page at which to start retrieving results. This is usually retrieved from a previous list call.""") +@cli_util.option('--sort-order', type=custom_types.CliCaseInsensitiveChoice(["ASC", "DESC"]), help=u"""The sort order to use, either 'asc' or 'desc'.""") +@cli_util.option('--sort-by', type=custom_types.CliCaseInsensitiveChoice(["timeTaskCreated"]), help=u"""The field to sort by. Only one sort order may be provided. Default order for timeTaskCreated is descending. If no value is specified timeTaskCreated is default.""") +@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.""") +@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.""") +@json_skeleton_utils.get_cli_json_input_option({}) +@cli_util.help_option +@click.pass_context +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}, output_type={'module': 'rover', 'class': 'RoverBundleRequestCollection'}) +@cli_util.wrap_exceptions +def list_rover_cluster_rover_bundle_requests(ctx, from_json, all_pages, page_size, rover_cluster_id, limit, page, sort_order, sort_by): + + if all_pages and limit: + raise click.UsageError('If you provide the --all option you cannot provide the --limit option') + + if isinstance(rover_cluster_id, six.string_types) and len(rover_cluster_id.strip()) == 0: + raise click.UsageError('Parameter --rover-cluster-id cannot be whitespace or empty string') + + kwargs = {} + if limit is not None: + kwargs['limit'] = limit + if page is not None: + kwargs['page'] = page + if sort_order is not None: + kwargs['sort_order'] = sort_order + if sort_by is not None: + kwargs['sort_by'] = sort_by + kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) + client = cli_util.build_client('rover', 'rover_bundle', ctx) + if all_pages: + if page_size: + kwargs['limit'] = page_size + + result = cli_util.list_call_get_all_results( + client.list_rover_cluster_rover_bundle_requests, + rover_cluster_id=rover_cluster_id, + **kwargs + ) + elif limit is not None: + result = cli_util.list_call_get_up_to_limit( + client.list_rover_cluster_rover_bundle_requests, + limit, + page_size, + rover_cluster_id=rover_cluster_id, + **kwargs + ) + else: + result = client.list_rover_cluster_rover_bundle_requests( + rover_cluster_id=rover_cluster_id, + **kwargs + ) + cli_util.render_response(result, ctx) + + +@rover_node_group.command(name=cli_util.override('rover_bundle.list_rover_node_rover_bundle_requests.command_name', 'list-rover-node-rover-bundle-requests'), help=u"""List all the roverBundleRequests for a given roverNodeId. \n[Command Reference](listRoverNodeRoverBundleRequests)""") +@cli_util.option('--rover-node-id', required=True, help=u"""Unique RoverNode identifier""") +@cli_util.option('--limit', type=click.INT, help=u"""The maximum number of items to return.""") +@cli_util.option('--page', help=u"""The page token representing the page at which to start retrieving results. This is usually retrieved from a previous list call.""") +@cli_util.option('--sort-order', type=custom_types.CliCaseInsensitiveChoice(["ASC", "DESC"]), help=u"""The sort order to use, either 'asc' or 'desc'.""") +@cli_util.option('--sort-by', type=custom_types.CliCaseInsensitiveChoice(["timeTaskCreated"]), help=u"""The field to sort by. Only one sort order may be provided. Default order for timeTaskCreated is descending. If no value is specified timeTaskCreated is default.""") +@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.""") +@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.""") +@json_skeleton_utils.get_cli_json_input_option({}) +@cli_util.help_option +@click.pass_context +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}, output_type={'module': 'rover', 'class': 'RoverBundleRequestCollection'}) +@cli_util.wrap_exceptions +def list_rover_node_rover_bundle_requests(ctx, from_json, all_pages, page_size, rover_node_id, limit, page, sort_order, sort_by): + + if all_pages and limit: + raise click.UsageError('If you provide the --all option you cannot provide the --limit option') + + if isinstance(rover_node_id, six.string_types) and len(rover_node_id.strip()) == 0: + raise click.UsageError('Parameter --rover-node-id cannot be whitespace or empty string') + + kwargs = {} + if limit is not None: + kwargs['limit'] = limit + if page is not None: + kwargs['page'] = page + if sort_order is not None: + kwargs['sort_order'] = sort_order + if sort_by is not None: + kwargs['sort_by'] = sort_by + kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) + client = cli_util.build_client('rover', 'rover_bundle', ctx) + if all_pages: + if page_size: + kwargs['limit'] = page_size + + result = cli_util.list_call_get_all_results( + client.list_rover_node_rover_bundle_requests, + rover_node_id=rover_node_id, + **kwargs + ) + elif limit is not None: + result = cli_util.list_call_get_up_to_limit( + client.list_rover_node_rover_bundle_requests, + limit, + page_size, + rover_node_id=rover_node_id, + **kwargs + ) + else: + result = client.list_rover_node_rover_bundle_requests( + rover_node_id=rover_node_id, + **kwargs + ) + cli_util.render_response(result, ctx) + + +@rover_cluster_group.command(name=cli_util.override('rover_bundle.request_bundle_rover_cluster.command_name', 'request-bundle'), help=u"""Request to get rover bundle to the bucket in customer's tenancy. \n[Command Reference](requestBundleRoverCluster)""") +@cli_util.option('--destination-compartment-id', required=True, help=u"""The compartment OCID of destination compartment that the bundle will be copied to.""") +@cli_util.option('--destination-bucket-name', required=True, help=u"""The destination bucket name the bundle will be copied to.""") +@cli_util.option('--bundle-version', required=True, help=u"""The bundle version that customer wants to upgrade to.""") +@cli_util.option('--rover-cluster-id', required=True, help=u"""Unique RoverCluster identifier""") +@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "NEEDS_ATTENTION", "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 SUCCEEDED --wait-for-state FAILED 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.""") +@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.""") +@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.""") +@json_skeleton_utils.get_cli_json_input_option({}) +@cli_util.help_option +@click.pass_context +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}) +@cli_util.wrap_exceptions +def request_bundle_rover_cluster(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, destination_compartment_id, destination_bucket_name, bundle_version, rover_cluster_id): + + if isinstance(rover_cluster_id, six.string_types) and len(rover_cluster_id.strip()) == 0: + raise click.UsageError('Parameter --rover-cluster-id cannot be whitespace or empty string') + + kwargs = {} + kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) + + _details = {} + _details['destinationCompartmentId'] = destination_compartment_id + _details['destinationBucketName'] = destination_bucket_name + _details['bundleVersion'] = bundle_version + + client = cli_util.build_client('rover', 'rover_bundle', ctx) + result = client.request_bundle_rover_cluster( + rover_cluster_id=rover_cluster_id, + request_rover_bundle_details=_details, + **kwargs + ) + if wait_for_state: + + client = cli_util.build_client('rover', 'work_requests', ctx) + + if hasattr(client, 'get_work_request') and callable(getattr(client, 'get_work_request')): + try: + wait_period_kwargs = {} + if max_wait_seconds is not None: + wait_period_kwargs['max_wait_seconds'] = max_wait_seconds + if wait_interval_seconds is not None: + wait_period_kwargs['max_interval_seconds'] = wait_interval_seconds + + click.echo('Action completed. Waiting until the work request has entered state: {}'.format(wait_for_state), file=sys.stderr) + result = oci.wait_until(client, client.get_work_request(result.headers['opc-work-request-id']), 'status', wait_for_state, **wait_period_kwargs) + except oci.exceptions.MaximumWaitTimeExceeded as e: + # If we fail, we should show an error, but we should still provide the information to the customer + click.echo('Failed to wait until the work request entered the specified state. Outputting last known resource state', file=sys.stderr) + cli_util.render_response(result, ctx) + sys.exit(2) + except Exception: + click.echo('Encountered error while waiting for work request to enter the specified state. Outputting last known resource state', file=sys.stderr) + cli_util.render_response(result, ctx) + raise + else: + click.echo('Unable to wait for the work request to enter the specified state', file=sys.stderr) + cli_util.render_response(result, ctx) + + +@rover_node_group.command(name=cli_util.override('rover_bundle.request_bundle_rover_node.command_name', 'request-bundle'), help=u"""Request to get rover bundle to the bucket in customer's tenancy. \n[Command Reference](requestBundleRoverNode)""") +@cli_util.option('--destination-compartment-id', required=True, help=u"""The compartment OCID of destination compartment that the bundle will be copied to.""") +@cli_util.option('--destination-bucket-name', required=True, help=u"""The destination bucket name the bundle will be copied to.""") +@cli_util.option('--bundle-version', required=True, help=u"""The bundle version that customer wants to upgrade to.""") +@cli_util.option('--rover-node-id', required=True, help=u"""Unique RoverNode identifier""") +@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "NEEDS_ATTENTION", "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 SUCCEEDED --wait-for-state FAILED 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.""") +@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.""") +@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.""") +@json_skeleton_utils.get_cli_json_input_option({}) +@cli_util.help_option +@click.pass_context +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}) +@cli_util.wrap_exceptions +def request_bundle_rover_node(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, destination_compartment_id, destination_bucket_name, bundle_version, rover_node_id): + + if isinstance(rover_node_id, six.string_types) and len(rover_node_id.strip()) == 0: + raise click.UsageError('Parameter --rover-node-id cannot be whitespace or empty string') + + kwargs = {} + kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) + + _details = {} + _details['destinationCompartmentId'] = destination_compartment_id + _details['destinationBucketName'] = destination_bucket_name + _details['bundleVersion'] = bundle_version + + client = cli_util.build_client('rover', 'rover_bundle', ctx) + result = client.request_bundle_rover_node( + rover_node_id=rover_node_id, + request_rover_bundle_details=_details, + **kwargs + ) + if wait_for_state: + + client = cli_util.build_client('rover', 'work_requests', ctx) + + if hasattr(client, 'get_work_request') and callable(getattr(client, 'get_work_request')): + try: + wait_period_kwargs = {} + if max_wait_seconds is not None: + wait_period_kwargs['max_wait_seconds'] = max_wait_seconds + if wait_interval_seconds is not None: + wait_period_kwargs['max_interval_seconds'] = wait_interval_seconds + + click.echo('Action completed. Waiting until the work request has entered state: {}'.format(wait_for_state), file=sys.stderr) + result = oci.wait_until(client, client.get_work_request(result.headers['opc-work-request-id']), 'status', wait_for_state, **wait_period_kwargs) + except oci.exceptions.MaximumWaitTimeExceeded as e: + # If we fail, we should show an error, but we should still provide the information to the customer + click.echo('Failed to wait until the work request entered the specified state. Outputting last known resource state', file=sys.stderr) + cli_util.render_response(result, ctx) + sys.exit(2) + except Exception: + click.echo('Encountered error while waiting for work request to enter the specified state. Outputting last known resource state', file=sys.stderr) + cli_util.render_response(result, ctx) + raise + else: + click.echo('Unable to wait for the work request to enter the specified state', file=sys.stderr) + cli_util.render_response(result, ctx) + + +@rover_cluster_group.command(name=cli_util.override('rover_bundle.retrieve_available_bundle_versions_rover_cluster.command_name', 'retrieve-available-bundle-versions'), help=u"""Retrieve the latest available rover bundle version that can be upgraded to based on current bundle version. \n[Command Reference](retrieveAvailableBundleVersionsRoverCluster)""") +@cli_util.option('--current-rover-bundle-version', required=True, help=u"""The version of current rover bundle on customer's roverNode or roverCluster device.""") +@cli_util.option('--rover-cluster-id', required=True, help=u"""Unique RoverCluster identifier""") +@json_skeleton_utils.get_cli_json_input_option({}) +@cli_util.help_option +@click.pass_context +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}, output_type={'module': 'rover', 'class': 'RoverBundleVersion'}) +@cli_util.wrap_exceptions +def retrieve_available_bundle_versions_rover_cluster(ctx, from_json, current_rover_bundle_version, rover_cluster_id): + + if isinstance(rover_cluster_id, six.string_types) and len(rover_cluster_id.strip()) == 0: + raise click.UsageError('Parameter --rover-cluster-id cannot be whitespace or empty string') + + kwargs = {} + kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) + + _details = {} + _details['currentRoverBundleVersion'] = current_rover_bundle_version + + client = cli_util.build_client('rover', 'rover_bundle', ctx) + result = client.retrieve_available_bundle_versions_rover_cluster( + rover_cluster_id=rover_cluster_id, + current_rover_bundle_details=_details, + **kwargs + ) + cli_util.render_response(result, ctx) + + +@rover_node_group.command(name=cli_util.override('rover_bundle.retrieve_available_bundle_versions_rover_node.command_name', 'retrieve-available-bundle-versions'), help=u"""Retrieve the latest available rover bundle version that can be upgraded to based on current bundle version. \n[Command Reference](retrieveAvailableBundleVersionsRoverNode)""") +@cli_util.option('--current-rover-bundle-version', required=True, help=u"""The version of current rover bundle on customer's roverNode or roverCluster device.""") +@cli_util.option('--rover-node-id', required=True, help=u"""Unique RoverNode identifier""") +@json_skeleton_utils.get_cli_json_input_option({}) +@cli_util.help_option +@click.pass_context +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}, output_type={'module': 'rover', 'class': 'RoverBundleVersion'}) +@cli_util.wrap_exceptions +def retrieve_available_bundle_versions_rover_node(ctx, from_json, current_rover_bundle_version, rover_node_id): + + if isinstance(rover_node_id, six.string_types) and len(rover_node_id.strip()) == 0: + raise click.UsageError('Parameter --rover-node-id cannot be whitespace or empty string') + + kwargs = {} + kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) + + _details = {} + _details['currentRoverBundleVersion'] = current_rover_bundle_version + + client = cli_util.build_client('rover', 'rover_bundle', ctx) + result = client.retrieve_available_bundle_versions_rover_node( + rover_node_id=rover_node_id, + current_rover_bundle_details=_details, + **kwargs + ) + cli_util.render_response(result, ctx) + + +@rover_cluster_group.command(name=cli_util.override('rover_bundle.retrieve_bundle_status_rover_cluster.command_name', 'retrieve-bundle-status'), help=u"""Retrieve the status and progress of a rover bundle copy request. \n[Command Reference](retrieveBundleStatusRoverCluster)""") +@cli_util.option('--work-request-id', required=True, help=u"""The workRequestId for an async copyObject operation.""") +@cli_util.option('--rover-cluster-id', required=True, help=u"""Unique RoverCluster identifier""") +@json_skeleton_utils.get_cli_json_input_option({}) +@cli_util.help_option +@click.pass_context +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}, output_type={'module': 'rover', 'class': 'RoverBundleStatus'}) +@cli_util.wrap_exceptions +def retrieve_bundle_status_rover_cluster(ctx, from_json, work_request_id, rover_cluster_id): + + if isinstance(rover_cluster_id, six.string_types) and len(rover_cluster_id.strip()) == 0: + raise click.UsageError('Parameter --rover-cluster-id cannot be whitespace or empty string') + + kwargs = {} + kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) + + _details = {} + _details['workRequestId'] = work_request_id + + client = cli_util.build_client('rover', 'rover_bundle', ctx) + result = client.retrieve_bundle_status_rover_cluster( + rover_cluster_id=rover_cluster_id, + rover_bundle_status_details=_details, + **kwargs + ) + cli_util.render_response(result, ctx) + + +@rover_node_group.command(name=cli_util.override('rover_bundle.retrieve_bundle_status_rover_node.command_name', 'retrieve-bundle-status'), help=u"""Retrieve the status and progress of a rover bundle copy request. \n[Command Reference](retrieveBundleStatusRoverNode)""") +@cli_util.option('--work-request-id', required=True, help=u"""The workRequestId for an async copyObject operation.""") +@cli_util.option('--rover-node-id', required=True, help=u"""Unique RoverNode identifier""") +@json_skeleton_utils.get_cli_json_input_option({}) +@cli_util.help_option +@click.pass_context +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}, output_type={'module': 'rover', 'class': 'RoverBundleStatus'}) +@cli_util.wrap_exceptions +def retrieve_bundle_status_rover_node(ctx, from_json, work_request_id, rover_node_id): + + if isinstance(rover_node_id, six.string_types) and len(rover_node_id.strip()) == 0: + raise click.UsageError('Parameter --rover-node-id cannot be whitespace or empty string') + + kwargs = {} + kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) + + _details = {} + _details['workRequestId'] = work_request_id + + client = cli_util.build_client('rover', 'rover_bundle', ctx) + result = client.retrieve_bundle_status_rover_node( + rover_node_id=rover_node_id, + rover_bundle_status_details=_details, + **kwargs + ) + cli_util.render_response(result, ctx) diff --git a/services/rover/src/oci_cli_rover_bundle/roverbundle_cli_extended.py b/services/rover/src/oci_cli_rover_bundle/roverbundle_cli_extended.py new file mode 100644 index 000000000..813fd7073 --- /dev/null +++ b/services/rover/src/oci_cli_rover_bundle/roverbundle_cli_extended.py @@ -0,0 +1,17 @@ +# coding: utf-8 +# Copyright (c) 2016, 2020, 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. + +import click # noqa: F401 +import json # noqa: F401 + +from services.rover.src.oci_cli_rover.generated import rover_service_cli +from services.rover.src.oci_cli_rover_bundle.generated import roverbundle_cli +from oci_cli import cli_util # noqa: F401 +from oci_cli import custom_types # noqa: F401 +from oci_cli import json_skeleton_utils # noqa: F401 + + +roverbundle_cli.rover_bundle_root_group.commands.pop(roverbundle_cli.rover_cluster_group.name) +roverbundle_cli.rover_bundle_root_group.commands.pop(roverbundle_cli.rover_node_group.name) +rover_service_cli.rover_service_group.commands.pop(roverbundle_cli.rover_bundle_root_group.name) diff --git a/services/rover/src/oci_cli_rover_cluster/generated/rovercluster_cli.py b/services/rover/src/oci_cli_rover_cluster/generated/rovercluster_cli.py index 0ae605114..4fa769181 100644 --- a/services/rover/src/oci_cli_rover_cluster/generated/rovercluster_cli.py +++ b/services/rover/src/oci_cli_rover_cluster/generated/rovercluster_cli.py @@ -388,6 +388,65 @@ def list_rover_clusters(ctx, from_json, all_pages, page_size, compartment_id, di cli_util.render_response(result, ctx) +@rover_cluster_group.command(name=cli_util.override('rover_cluster.request_additional_nodes.command_name', 'request-additional-nodes'), help=u"""Submit additional nodes request for a roverCluster. \n[Command Reference](requestAdditionalNodes)""") +@cli_util.option('--rover-cluster-id', required=True, help=u"""Unique RoverCluster identifier""") +@cli_util.option('--number-of-additional-nodes', required=True, type=click.INT, help=u"""Number of additional nodes to be requested for a roverCluster.""") +@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.""") +@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "NEEDS_ATTENTION", "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 SUCCEEDED --wait-for-state FAILED 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.""") +@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.""") +@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.""") +@json_skeleton_utils.get_cli_json_input_option({}) +@cli_util.help_option +@click.pass_context +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}) +@cli_util.wrap_exceptions +def request_additional_nodes(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, rover_cluster_id, number_of_additional_nodes, if_match): + + if isinstance(rover_cluster_id, six.string_types) and len(rover_cluster_id.strip()) == 0: + raise click.UsageError('Parameter --rover-cluster-id cannot be whitespace or empty string') + + kwargs = {} + if if_match is not None: + kwargs['if_match'] = if_match + kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) + + _details = {} + _details['numberOfAdditionalNodes'] = number_of_additional_nodes + + client = cli_util.build_client('rover', 'rover_cluster', ctx) + result = client.request_additional_nodes( + rover_cluster_id=rover_cluster_id, + request_additional_nodes_details=_details, + **kwargs + ) + if wait_for_state: + + client = cli_util.build_client('rover', 'work_requests', ctx) + + if hasattr(client, 'get_work_request') and callable(getattr(client, 'get_work_request')): + try: + wait_period_kwargs = {} + if max_wait_seconds is not None: + wait_period_kwargs['max_wait_seconds'] = max_wait_seconds + if wait_interval_seconds is not None: + wait_period_kwargs['max_interval_seconds'] = wait_interval_seconds + + click.echo('Action completed. Waiting until the work request has entered state: {}'.format(wait_for_state), file=sys.stderr) + result = oci.wait_until(client, client.get_work_request(result.headers['opc-work-request-id']), 'status', wait_for_state, **wait_period_kwargs) + except oci.exceptions.MaximumWaitTimeExceeded as e: + # If we fail, we should show an error, but we should still provide the information to the customer + click.echo('Failed to wait until the work request entered the specified state. Outputting last known resource state', file=sys.stderr) + cli_util.render_response(result, ctx) + sys.exit(2) + except Exception: + click.echo('Encountered error while waiting for work request to enter the specified state. Outputting last known resource state', file=sys.stderr) + cli_util.render_response(result, ctx) + raise + else: + click.echo('Unable to wait for the work request to enter the specified state', file=sys.stderr) + cli_util.render_response(result, ctx) + + @rover_cluster_group.command(name=cli_util.override('rover_cluster.update_rover_cluster.command_name', 'update'), help=u"""Updates the RoverCluster \n[Command Reference](updateRoverCluster)""") @cli_util.option('--rover-cluster-id', required=True, help=u"""Unique RoverCluster identifier""") @cli_util.option('--display-name', help=u"""A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information.""") diff --git a/services/rover/src/oci_cli_rover_cluster/rovercluster_cli_extended.py b/services/rover/src/oci_cli_rover_cluster/rovercluster_cli_extended.py index 513cef18a..5de98158d 100644 --- a/services/rover/src/oci_cli_rover_cluster/rovercluster_cli_extended.py +++ b/services/rover/src/oci_cli_rover_cluster/rovercluster_cli_extended.py @@ -13,6 +13,7 @@ from services.rover.src.oci_cli_rover.generated import rover_service_cli from services.rover.src.constants import ROVER_CLUSTER_STANDALONE_TYPE, \ ROVER_CLUSTER_STATION_TYPE +from services.rover.src.oci_cli_rover_bundle.generated import roverbundle_cli from services.rover.src.oci_cli_rover_cluster.generated import rovercluster_cli from services.rover.src.oci_cli_rover_cluster.rovercluster_utils import delete_workload_common, \ add_workload_common, change_cluster_compartment_common, set_secrets_cluster_common, delete_cluster_common, \ @@ -31,7 +32,51 @@ def rover_station_group(): pass +@click.command('rover-bundle-request', cls=CommandGroupWithAlias, help="""Rover Bundle Requests for Cluster.""") +@cli_util.help_option_group +def rover_bundle_request_group(): + pass + + +@click.command('rover-bundle', cls=CommandGroupWithAlias, help="""Rover Bundle for Cluster.""") +@cli_util.help_option_group +def rover_bundle_group(): + pass + + +@click.command('rover-bundle-version', cls=CommandGroupWithAlias, help="""Rover Bundle Version for Cluster.""") +@cli_util.help_option_group +def rover_bundle_version_group(): + pass + + rover_service_cli.rover_service_group.add_command(rover_station_group) +rovercluster_cli.rover_cluster_group.add_command(rover_bundle_request_group) +rovercluster_cli.rover_cluster_group.add_command(rover_bundle_group) +rovercluster_cli.rover_cluster_group.add_command(rover_bundle_version_group) + +# oci rover rover-bundle rover-cluster list-rover-cluster-rover-bundle-requests -> oci rover standalone-cluster rover-bundle-request list +roverbundle_cli.rover_cluster_group.commands.pop(roverbundle_cli.list_rover_cluster_rover_bundle_requests.name) +rover_bundle_request_group.add_command(roverbundle_cli.list_rover_cluster_rover_bundle_requests) +cli_util.rename_command(roverbundle_cli, rover_bundle_request_group, roverbundle_cli.list_rover_cluster_rover_bundle_requests, "list") + +# oci rover rover-bundle rover-cluster request-bundle -> oci rover standalone-cluster rover-bundle copy-to-customer +roverbundle_cli.rover_cluster_group.commands.pop(roverbundle_cli.request_bundle_rover_cluster.name) +rover_bundle_group.add_command(roverbundle_cli.request_bundle_rover_cluster) +cli_util.rename_command(roverbundle_cli, rover_bundle_group, roverbundle_cli.request_bundle_rover_cluster, "copy-to-customer") + +# oci rover rover-bundle rover-cluster retrieve-bundle-status -> oci rover standalone-cluster rover-bundle get-status +roverbundle_cli.rover_cluster_group.commands.pop(roverbundle_cli.retrieve_bundle_status_rover_cluster.name) +rover_bundle_group.add_command(roverbundle_cli.retrieve_bundle_status_rover_cluster) +cli_util.rename_command(roverbundle_cli, rover_bundle_group, roverbundle_cli.retrieve_bundle_status_rover_cluster, "get-status") + +# oci rover rover-bundle rover-cluster retrieve-available-bundle-versions -> oci rover standalone-cluster rover-bundle-version get +roverbundle_cli.rover_cluster_group.commands.pop(roverbundle_cli.retrieve_available_bundle_versions_rover_cluster.name) +rover_bundle_version_group.add_command(roverbundle_cli.retrieve_available_bundle_versions_rover_cluster) +cli_util.rename_command(roverbundle_cli, rover_bundle_version_group, roverbundle_cli.retrieve_available_bundle_versions_rover_cluster, "get") + +# Remove request_additional_nodes +rovercluster_cli.rover_cluster_group.commands.pop(rovercluster_cli.request_additional_nodes.name) def complex_shipping_address_param(**kwargs): diff --git a/services/rover/src/oci_cli_rover_node/generated/rovernode_cli.py b/services/rover/src/oci_cli_rover_node/generated/rovernode_cli.py index 513eb0dfa..f9c307ec2 100644 --- a/services/rover/src/oci_cli_rover_node/generated/rovernode_cli.py +++ b/services/rover/src/oci_cli_rover_node/generated/rovernode_cli.py @@ -119,6 +119,12 @@ def change_rover_node_compartment(ctx, from_json, rover_node_id, compartment_id, @cli_util.option('--import-file-bucket', help=u"""Name of a bucket where files from NFS share will be imported to upon Rover node return.""") @cli_util.option('--data-validation-code', help=u"""Validation code returned by data validation tool. Required for return shipping label generation if data import was requested.""") @cli_util.option('--master-key-id', help=u"""Customer provided master key ID to encrypt secret information. If not provided, Rover's master key will be used for encryption.""") +@cli_util.option('--certificate-authority-id', help=u"""The certificateAuthorityId of subordinate/intermediate certificate authority.""") +@cli_util.option('--time-cert-validity-end', type=custom_types.CLI_DATETIME, help=u"""The time after which leaf certificate will invalid.""" + custom_types.CLI_DATETIME.VALID_DATETIME_CLI_HELP_MESSAGE) +@cli_util.option('--common-name', help=u"""The common name for the leaf certificate.""") +@cli_util.option('--cert-compartment-id', help=u"""The compartmentId of the leaf certificate.""") +@cli_util.option('--cert-key-algorithm', type=custom_types.CliCaseInsensitiveChoice(["RSA2048", "RSA4096", "ECDSA_P256", "ECDSA_P384"]), help=u"""key algorithm for issuing leaf certificate.""") +@cli_util.option('--cert-signature-algorithm', type=custom_types.CliCaseInsensitiveChoice(["SHA256_WITH_RSA", "SHA384_WITH_RSA", "SHA512_WITH_RSA", "SHA256_WITH_ECDSA", "SHA384_WITH_ECDSA", "SHA512_WITH_ECDSA"]), help=u"""signature algorithm for issuing leaf certificate.""") @cli_util.option('--freeform-tags', type=custom_types.CLI_COMPLEX_TYPE, help=u"""The freeform tags associated with this resource, if any. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags]. Example: `{\"Department\": \"Finance\"}`""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) @cli_util.option('--defined-tags', type=custom_types.CLI_COMPLEX_TYPE, help=u"""The defined tags associated with this resource, if any. Each key is predefined and scoped to namespaces. For more information, see [Resource Tags]. Example: `{\"Operations\": {\"CostCenter\": \"42\"}}`""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) @cli_util.option('--system-tags', type=custom_types.CLI_COMPLEX_TYPE, help=u"""The system tags associated with this resource, if any. The system tags are set by Oracle cloud infrastructure services. Each key is predefined and scoped to namespaces. For more information, see [Resource Tags]. Example: `{orcl-cloud: {free-tier-retain: true}}`""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) @@ -130,7 +136,7 @@ def change_rover_node_compartment(ctx, from_json, rover_node_id, compartment_id, @click.pass_context @json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'customer-shipping-address': {'module': 'rover', 'class': 'ShippingAddress'}, 'node-workloads': {'module': 'rover', 'class': 'list[RoverWorkload]'}, 'freeform-tags': {'module': 'rover', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'rover', 'class': 'dict(str, dict(str, object))'}, 'system-tags': {'module': 'rover', 'class': 'dict(str, dict(str, object))'}}, output_type={'module': 'rover', 'class': 'RoverNode'}) @cli_util.wrap_exceptions -def create_rover_node(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, display_name, compartment_id, shape, customer_shipping_address, node_workloads, super_user_password, unlock_passphrase, point_of_contact, point_of_contact_phone_number, shipping_preference, shipping_vendor, time_pickup_expected, public_key, time_return_window_starts, time_return_window_ends, lifecycle_state, enclosure_type, lifecycle_state_details, serial_number, oracle_shipping_tracking_url, is_import_requested, import_compartment_id, import_file_bucket, data_validation_code, master_key_id, freeform_tags, defined_tags, system_tags): +def create_rover_node(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, display_name, compartment_id, shape, customer_shipping_address, node_workloads, super_user_password, unlock_passphrase, point_of_contact, point_of_contact_phone_number, shipping_preference, shipping_vendor, time_pickup_expected, public_key, time_return_window_starts, time_return_window_ends, lifecycle_state, enclosure_type, lifecycle_state_details, serial_number, oracle_shipping_tracking_url, is_import_requested, import_compartment_id, import_file_bucket, data_validation_code, master_key_id, certificate_authority_id, time_cert_validity_end, common_name, cert_compartment_id, cert_key_algorithm, cert_signature_algorithm, freeform_tags, defined_tags, system_tags): kwargs = {} kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) @@ -208,6 +214,24 @@ def create_rover_node(ctx, from_json, wait_for_state, max_wait_seconds, wait_int if master_key_id is not None: _details['masterKeyId'] = master_key_id + if certificate_authority_id is not None: + _details['certificateAuthorityId'] = certificate_authority_id + + if time_cert_validity_end is not None: + _details['timeCertValidityEnd'] = time_cert_validity_end + + if common_name is not None: + _details['commonName'] = common_name + + if cert_compartment_id is not None: + _details['certCompartmentId'] = cert_compartment_id + + if cert_key_algorithm is not None: + _details['certKeyAlgorithm'] = cert_key_algorithm + + if cert_signature_algorithm is not None: + _details['certSignatureAlgorithm'] = cert_signature_algorithm + if freeform_tags is not None: _details['freeformTags'] = cli_util.parse_json_parameter("freeform_tags", freeform_tags) @@ -468,6 +492,31 @@ def list_rover_nodes(ctx, from_json, all_pages, page_size, compartment_id, displ cli_util.render_response(result, ctx) +@rover_node_group.command(name=cli_util.override('rover_node.rover_node_action_retrieve_ca_bundle.command_name', 'rover-node-action-retrieve-ca-bundle'), help=u"""Retrieve Ca Bundle for a rover node \n[Command Reference](roverNodeActionRetrieveCaBundle)""") +@cli_util.option('--rover-node-id', required=True, help=u"""Unique RoverNode identifier""") +@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.""") +@json_skeleton_utils.get_cli_json_input_option({}) +@cli_util.help_option +@click.pass_context +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}, output_type={'module': 'rover', 'class': 'CaBundleResponse'}) +@cli_util.wrap_exceptions +def rover_node_action_retrieve_ca_bundle(ctx, from_json, rover_node_id, if_match): + + if isinstance(rover_node_id, six.string_types) and len(rover_node_id.strip()) == 0: + raise click.UsageError('Parameter --rover-node-id cannot be whitespace or empty string') + + kwargs = {} + if if_match is not None: + kwargs['if_match'] = if_match + kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) + client = cli_util.build_client('rover', 'rover_node', ctx) + result = client.rover_node_action_retrieve_ca_bundle( + rover_node_id=rover_node_id, + **kwargs + ) + cli_util.render_response(result, ctx) + + @rover_node_set_key_group.command(name=cli_util.override('rover_node.rover_node_action_set_key.command_name', 'rover-node-action-set-key'), help=u"""Get the resource principal public key for a rover node \n[Command Reference](roverNodeActionSetKey)""") @cli_util.option('--rover-node-id', required=True, help=u"""Unique RoverNode identifier""") @cli_util.option('--jwt', required=True, help=u"""The Java Web Token which is a signature of the request that is signed with the resource's private key This is meant solely in the context of getRpt""") @@ -503,6 +552,136 @@ def rover_node_action_set_key(ctx, from_json, rover_node_id, jwt, public_key, if cli_util.render_response(result, ctx) +@rover_node_group.command(name=cli_util.override('rover_node.rover_node_generate_certificate.command_name', 'rover-node-generate-certificate'), help=u"""Request to generate certificate for a roverNode. \n[Command Reference](roverNodeGenerateCertificate)""") +@cli_util.option('--csr', required=True, help=u"""The certificate signing request (in PEM format), max size 10240.""") +@cli_util.option('--time-cert-validity-end', required=True, type=custom_types.CLI_DATETIME, help=u"""Time when the generated certificate's validity will end.""" + custom_types.CLI_DATETIME.VALID_DATETIME_CLI_HELP_MESSAGE) +@cli_util.option('--rover-node-id', required=True, help=u"""Unique RoverNode identifier""") +@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.""") +@json_skeleton_utils.get_cli_json_input_option({}) +@cli_util.help_option +@click.pass_context +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}, output_type={'module': 'rover', 'class': 'GenerateCertificateResponse'}) +@cli_util.wrap_exceptions +def rover_node_generate_certificate(ctx, from_json, csr, time_cert_validity_end, rover_node_id, if_match): + + if isinstance(rover_node_id, six.string_types) and len(rover_node_id.strip()) == 0: + raise click.UsageError('Parameter --rover-node-id cannot be whitespace or empty string') + + kwargs = {} + if if_match is not None: + kwargs['if_match'] = if_match + kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) + + _details = {} + _details['csr'] = csr + _details['timeCertValidityEnd'] = time_cert_validity_end + + client = cli_util.build_client('rover', 'rover_node', ctx) + result = client.rover_node_generate_certificate( + rover_node_id=rover_node_id, + rover_node_generate_certificate_details=_details, + **kwargs + ) + cli_util.render_response(result, ctx) + + +@rover_node_group.command(name=cli_util.override('rover_node.rover_node_renew_certificate.command_name', 'rover-node-renew-certificate'), help=u"""Request to renew certificate for a roverNode. \n[Command Reference](roverNodeRenewCertificate)""") +@cli_util.option('--csr', required=True, help=u"""The certificate signing request (in PEM format), max size 10240.""") +@cli_util.option('--time-cert-validity-end', required=True, type=custom_types.CLI_DATETIME, help=u"""Time when the renewed certificate's validity will end.""" + custom_types.CLI_DATETIME.VALID_DATETIME_CLI_HELP_MESSAGE) +@cli_util.option('--rover-node-id', required=True, help=u"""Unique RoverNode identifier""") +@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.""") +@json_skeleton_utils.get_cli_json_input_option({}) +@cli_util.help_option +@click.pass_context +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}, output_type={'module': 'rover', 'class': 'RenewCertificateResponse'}) +@cli_util.wrap_exceptions +def rover_node_renew_certificate(ctx, from_json, csr, time_cert_validity_end, rover_node_id, if_match): + + if isinstance(rover_node_id, six.string_types) and len(rover_node_id.strip()) == 0: + raise click.UsageError('Parameter --rover-node-id cannot be whitespace or empty string') + + kwargs = {} + if if_match is not None: + kwargs['if_match'] = if_match + kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) + + _details = {} + _details['csr'] = csr + _details['timeCertValidityEnd'] = time_cert_validity_end + + client = cli_util.build_client('rover', 'rover_node', ctx) + result = client.rover_node_renew_certificate( + rover_node_id=rover_node_id, + rover_node_renew_certificate_details=_details, + **kwargs + ) + cli_util.render_response(result, ctx) + + +@rover_node_group.command(name=cli_util.override('rover_node.rover_node_replace_certificate_authority.command_name', 'rover-node-replace-certificate-authority'), help=u"""Request to replace certificate authority for a roverNode. \n[Command Reference](roverNodeReplaceCertificateAuthority)""") +@cli_util.option('--certificate-authority-id', required=True, help=u"""The certificate authority id.""") +@cli_util.option('--rover-node-id', required=True, help=u"""Unique RoverNode identifier""") +@cli_util.option('--cert-key-algorithm', type=custom_types.CliCaseInsensitiveChoice(["RSA2048", "RSA4096", "ECDSA_P256", "ECDSA_P384"]), help=u"""key algorithm for issuing leaf certificate.""") +@cli_util.option('--cert-signature-algorithm', type=custom_types.CliCaseInsensitiveChoice(["SHA256_WITH_RSA", "SHA384_WITH_RSA", "SHA512_WITH_RSA", "SHA256_WITH_ECDSA", "SHA384_WITH_ECDSA", "SHA512_WITH_ECDSA"]), help=u"""signature algorithm for issuing leaf certificate.""") +@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.""") +@json_skeleton_utils.get_cli_json_input_option({}) +@cli_util.help_option +@click.pass_context +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}, output_type={'module': 'rover', 'class': 'ReplaceCertificateAuthorityResponse'}) +@cli_util.wrap_exceptions +def rover_node_replace_certificate_authority(ctx, from_json, certificate_authority_id, rover_node_id, cert_key_algorithm, cert_signature_algorithm, if_match): + + if isinstance(rover_node_id, six.string_types) and len(rover_node_id.strip()) == 0: + raise click.UsageError('Parameter --rover-node-id cannot be whitespace or empty string') + + kwargs = {} + if if_match is not None: + kwargs['if_match'] = if_match + kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) + + _details = {} + _details['certificateAuthorityId'] = certificate_authority_id + + if cert_key_algorithm is not None: + _details['certKeyAlgorithm'] = cert_key_algorithm + + if cert_signature_algorithm is not None: + _details['certSignatureAlgorithm'] = cert_signature_algorithm + + client = cli_util.build_client('rover', 'rover_node', ctx) + result = client.rover_node_replace_certificate_authority( + rover_node_id=rover_node_id, + rover_node_replace_certificate_authority_details=_details, + **kwargs + ) + cli_util.render_response(result, ctx) + + +@rover_node_group.command(name=cli_util.override('rover_node.rover_node_retrieve_leaf_certificate.command_name', 'rover-node-retrieve-leaf-certificate'), help=u"""Retrieve the leaf certificate info for a rover node \n[Command Reference](roverNodeRetrieveLeafCertificate)""") +@cli_util.option('--rover-node-id', required=True, help=u"""Unique RoverNode identifier""") +@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.""") +@json_skeleton_utils.get_cli_json_input_option({}) +@cli_util.help_option +@click.pass_context +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}, output_type={'module': 'rover', 'class': 'LeafCertificateResponse'}) +@cli_util.wrap_exceptions +def rover_node_retrieve_leaf_certificate(ctx, from_json, rover_node_id, if_match): + + if isinstance(rover_node_id, six.string_types) and len(rover_node_id.strip()) == 0: + raise click.UsageError('Parameter --rover-node-id cannot be whitespace or empty string') + + kwargs = {} + if if_match is not None: + kwargs['if_match'] = if_match + kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) + client = cli_util.build_client('rover', 'rover_node', ctx) + result = client.rover_node_retrieve_leaf_certificate( + rover_node_id=rover_node_id, + **kwargs + ) + cli_util.render_response(result, ctx) + + @rover_node_group.command(name=cli_util.override('rover_node.update_rover_node.command_name', 'update'), help=u"""Updates the RoverNode \n[Command Reference](updateRoverNode)""") @cli_util.option('--rover-node-id', required=True, help=u"""Unique RoverNode identifier""") @cli_util.option('--display-name', help=u"""A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information.""") @@ -530,6 +709,12 @@ def rover_node_action_set_key(ctx, from_json, rover_node_id, jwt, public_key, if @cli_util.option('--import-file-bucket', help=u"""Name of a bucket where files from NFS share will be imported to upon Rover node return.""") @cli_util.option('--data-validation-code', help=u"""Validation code returned by data validation tool. Required for return shipping label generation if data import was requested.""") @cli_util.option('--public-key', help=u"""The public key of the resource principal""") +@cli_util.option('--certificate-authority-id', help=u"""The certificateAuthorityId of subordinate/intermediate certificate authority.""") +@cli_util.option('--time-cert-validity-end', type=custom_types.CLI_DATETIME, help=u"""The time after which leaf certificate will invalid.""" + custom_types.CLI_DATETIME.VALID_DATETIME_CLI_HELP_MESSAGE) +@cli_util.option('--common-name', help=u"""The common name for the leaf certificate.""") +@cli_util.option('--cert-compartment-id', help=u"""The compartmentId of the leaf certificate.""") +@cli_util.option('--cert-key-algorithm', type=custom_types.CliCaseInsensitiveChoice(["RSA2048", "RSA4096", "ECDSA_P256", "ECDSA_P384"]), help=u"""key algorithm for issuing leaf certificate.""") +@cli_util.option('--cert-signature-algorithm', type=custom_types.CliCaseInsensitiveChoice(["SHA256_WITH_RSA", "SHA384_WITH_RSA", "SHA512_WITH_RSA", "SHA256_WITH_ECDSA", "SHA384_WITH_ECDSA", "SHA512_WITH_ECDSA"]), help=u"""signature algorithm for issuing leaf certificate.""") @cli_util.option('--freeform-tags', type=custom_types.CLI_COMPLEX_TYPE, help=u"""The freeform tags associated with this resource, if any. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags]. Example: `{\"Department\": \"Finance\"}`""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) @cli_util.option('--defined-tags', type=custom_types.CLI_COMPLEX_TYPE, help=u"""The defined tags associated with this resource, if any. Each key is predefined and scoped to namespaces. For more information, see [Resource Tags]. Example: `{\"Operations\": {\"CostCenter\": \"42\"}}`""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) @cli_util.option('--system-tags', type=custom_types.CLI_COMPLEX_TYPE, help=u"""The system tags associated with this resource, if any. The system tags are set by Oracle cloud infrastructure services. Each key is predefined and scoped to namespaces. For more information, see [Resource Tags]. Example: `{orcl-cloud: {free-tier-retain: true}}`""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP) @@ -543,7 +728,7 @@ def rover_node_action_set_key(ctx, from_json, rover_node_id, jwt, public_key, if @click.pass_context @json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'customer-shipping-address': {'module': 'rover', 'class': 'ShippingAddress'}, 'node-workloads': {'module': 'rover', 'class': 'list[RoverWorkload]'}, 'freeform-tags': {'module': 'rover', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'rover', 'class': 'dict(str, dict(str, object))'}, 'system-tags': {'module': 'rover', 'class': 'dict(str, dict(str, object))'}}, output_type={'module': 'rover', 'class': 'RoverNode'}) @cli_util.wrap_exceptions -def update_rover_node(ctx, from_json, force, wait_for_state, max_wait_seconds, wait_interval_seconds, rover_node_id, display_name, shape, serial_number, customer_shipping_address, node_workloads, super_user_password, unlock_passphrase, point_of_contact, point_of_contact_phone_number, oracle_shipping_tracking_url, shipping_preference, shipping_vendor, time_pickup_expected, lifecycle_state, enclosure_type, lifecycle_state_details, time_return_window_starts, time_return_window_ends, is_import_requested, import_compartment_id, import_file_bucket, data_validation_code, public_key, freeform_tags, defined_tags, system_tags, if_match): +def update_rover_node(ctx, from_json, force, wait_for_state, max_wait_seconds, wait_interval_seconds, rover_node_id, display_name, shape, serial_number, customer_shipping_address, node_workloads, super_user_password, unlock_passphrase, point_of_contact, point_of_contact_phone_number, oracle_shipping_tracking_url, shipping_preference, shipping_vendor, time_pickup_expected, lifecycle_state, enclosure_type, lifecycle_state_details, time_return_window_starts, time_return_window_ends, is_import_requested, import_compartment_id, import_file_bucket, data_validation_code, public_key, certificate_authority_id, time_cert_validity_end, common_name, cert_compartment_id, cert_key_algorithm, cert_signature_algorithm, freeform_tags, defined_tags, system_tags, if_match): if isinstance(rover_node_id, six.string_types) and len(rover_node_id.strip()) == 0: raise click.UsageError('Parameter --rover-node-id cannot be whitespace or empty string') @@ -628,6 +813,24 @@ def update_rover_node(ctx, from_json, force, wait_for_state, max_wait_seconds, w if public_key is not None: _details['publicKey'] = public_key + if certificate_authority_id is not None: + _details['certificateAuthorityId'] = certificate_authority_id + + if time_cert_validity_end is not None: + _details['timeCertValidityEnd'] = time_cert_validity_end + + if common_name is not None: + _details['commonName'] = common_name + + if cert_compartment_id is not None: + _details['certCompartmentId'] = cert_compartment_id + + if cert_key_algorithm is not None: + _details['certKeyAlgorithm'] = cert_key_algorithm + + if cert_signature_algorithm is not None: + _details['certSignatureAlgorithm'] = cert_signature_algorithm + if freeform_tags is not None: _details['freeformTags'] = cli_util.parse_json_parameter("freeform_tags", freeform_tags) diff --git a/services/rover/src/oci_cli_rover_node/rovernode_cli_extended.py b/services/rover/src/oci_cli_rover_node/rovernode_cli_extended.py index f358c4971..f3c8e2efb 100644 --- a/services/rover/src/oci_cli_rover_node/rovernode_cli_extended.py +++ b/services/rover/src/oci_cli_rover_node/rovernode_cli_extended.py @@ -11,15 +11,61 @@ from oci_cli import cli_util from oci_cli import json_skeleton_utils from oci_cli import custom_types # noqa: F401 +from oci_cli.aliasing import CommandGroupWithAlias from services.rover.src.constants import ROVER_WORKLOAD_TYPE_IMAGE from services.rover.src.oci_cli_rover.generated import rover_service_cli from services.rover.src.oci_cli_rover.rover_utils import export_compute_image_helper, \ prompt_for_secrets, prompt_for_workload_delete, export_compute_image_status_helper, \ validate_bucket, validate_get_image, prepare_image_workload_data, prepare_bucket_workload_data, \ create_master_key_policy_rover_resource, remove_additional_params_after_policy +from services.rover.src.oci_cli_rover_bundle.generated import roverbundle_cli from services.rover.src.oci_cli_rover_node.generated import rovernode_cli from oci.util import formatted_flat_dict + +@click.command('ca-bundle', cls=CommandGroupWithAlias, help="""Rover Node Certificate Bundle.""") +@cli_util.help_option_group +def rover_ca_bundle_group(): + pass + + +@click.command('certificate', cls=CommandGroupWithAlias, help="""Rover Node Certificate.""") +@cli_util.help_option_group +def rover_certificate_group(): + pass + + +@click.command('certificate-authority', cls=CommandGroupWithAlias, help="""Rover Node Certificate Authority.""") +@cli_util.help_option_group +def rover_certificate_authority_group(): + pass + + +@click.command('rover-bundle-request', cls=CommandGroupWithAlias, help="""Rover Bundle Requests for Node.""") +@cli_util.help_option_group +def rover_bundle_request_group(): + pass + + +@click.command('rover-bundle', cls=CommandGroupWithAlias, help="""Rover Bundle for Node.""") +@cli_util.help_option_group +def rover_bundle_group(): + pass + + +@click.command('rover-bundle-version', cls=CommandGroupWithAlias, help="""Rover Bundle Version for Cluster.""") +@cli_util.help_option_group +def rover_bundle_version_group(): + pass + + +rovernode_cli.rover_node_group.add_command(rover_ca_bundle_group) +rovernode_cli.rover_node_group.add_command(rover_certificate_group) +rovernode_cli.rover_node_group.add_command(rover_certificate_authority_group) +rovernode_cli.rover_node_group.add_command(rover_bundle_request_group) +rovernode_cli.rover_node_group.add_command(rover_bundle_group) +rovernode_cli.rover_node_group.add_command(rover_bundle_version_group) + cli_util.rename_command(rover_service_cli, rover_service_cli.rover_service_group, rovernode_cli.rover_node_group, 'node') cli_util.rename_command(rover_service_cli, rovernode_cli.rover_node_group, rovernode_cli.get_rover_node, 'show') cli_util.rename_command(rover_service_cli, rovernode_cli.rover_node_group, rovernode_cli.list_rover_nodes, 'list') @@ -27,6 +73,52 @@ cli_util.rename_command(rover_service_cli, rovernode_cli.rover_node_group, rovernode_cli.get_rover_node_certificate, 'get-certificate') +# oci rover node rover-node-action-retrieve-ca-bundle -> oci rover node ca-bundle get +rovernode_cli.rover_node_group.commands.pop(rovernode_cli.rover_node_action_retrieve_ca_bundle.name) +rover_ca_bundle_group.add_command(rovernode_cli.rover_node_action_retrieve_ca_bundle) +cli_util.rename_command(rovernode_cli, rover_ca_bundle_group, rovernode_cli.rover_node_action_retrieve_ca_bundle, "get") + +# # oci rover node rover-node-generate-certificate -> oci rover node certificate create +rovernode_cli.rover_node_group.commands.pop(rovernode_cli.rover_node_generate_certificate.name) +rover_certificate_group.add_command(rovernode_cli.rover_node_generate_certificate) +cli_util.rename_command(rovernode_cli, rover_certificate_group, rovernode_cli.rover_node_generate_certificate, "create") + +# oci rover node rover-node-renew-certificate -> oci rover node certificate update +rovernode_cli.rover_node_group.commands.pop(rovernode_cli.rover_node_renew_certificate.name) +rover_certificate_group.add_command(rovernode_cli.rover_node_renew_certificate) +cli_util.rename_command(rovernode_cli, rover_certificate_group, rovernode_cli.rover_node_renew_certificate, "update") + +# oci rover node rover-node-retrieve-leaf-certificate -> oci rover node certificate get-leaf-certificate +rovernode_cli.rover_node_group.commands.pop(rovernode_cli.rover_node_retrieve_leaf_certificate.name) +rover_certificate_group.add_command(rovernode_cli.rover_node_retrieve_leaf_certificate) +cli_util.rename_command(rovernode_cli, rover_certificate_group, rovernode_cli.rover_node_retrieve_leaf_certificate, "get-leaf-certificate") + +# oci rover node rover-node-replace-certificate-authority -> oci rover node certificate-authority update-root-ca +rovernode_cli.rover_node_group.commands.pop(rovernode_cli.rover_node_replace_certificate_authority.name) +rover_certificate_authority_group.add_command(rovernode_cli.rover_node_replace_certificate_authority) +cli_util.rename_command(rovernode_cli, rover_certificate_authority_group, rovernode_cli.rover_node_replace_certificate_authority, "update-root-ca") + +# oci rover rover-bundle rover-node list-rover-node-rover-bundle-requests -> oci rover node rover-bundle-request list +roverbundle_cli.rover_node_group.commands.pop(roverbundle_cli.list_rover_node_rover_bundle_requests.name) +rover_bundle_request_group.add_command(roverbundle_cli.list_rover_node_rover_bundle_requests) +cli_util.rename_command(roverbundle_cli, rover_bundle_request_group, roverbundle_cli.list_rover_node_rover_bundle_requests, "list") + +# oci rover rover-bundle rover-node request-bundle -> oci rover node rover-bundle copy-to-customer +roverbundle_cli.rover_node_group.commands.pop(roverbundle_cli.request_bundle_rover_node.name) +rover_bundle_group.add_command(roverbundle_cli.request_bundle_rover_node) +cli_util.rename_command(roverbundle_cli, rover_bundle_group, roverbundle_cli.request_bundle_rover_node, "copy-to-customer") + +# oci rover rover-bundle rover-node retrieve-bundle-status -> oci rover node rover-bundle get-status +roverbundle_cli.rover_node_group.commands.pop(roverbundle_cli.retrieve_bundle_status_rover_node.name) +rover_bundle_group.add_command(roverbundle_cli.retrieve_bundle_status_rover_node) +cli_util.rename_command(roverbundle_cli, rover_bundle_group, roverbundle_cli.retrieve_bundle_status_rover_node, "get-status") + +# oci rover rover-bundle rover-node retrieve-available-bundle-versions -> oci rover node rover-bundle-version get +roverbundle_cli.rover_node_group.commands.pop(roverbundle_cli.retrieve_available_bundle_versions_rover_node.name) +rover_bundle_version_group.add_command(roverbundle_cli.retrieve_available_bundle_versions_rover_node) +cli_util.rename_command(roverbundle_cli, rover_bundle_version_group, roverbundle_cli.retrieve_available_bundle_versions_rover_node, "get") + + def complex_shipping_address_param(**kwargs): kwargs['customer_shipping_address'] = {} @@ -131,8 +223,9 @@ def setup_identity_helper(ctx, **kwargs): return create_policies_result -@cli_util.copy_params_from_generated_command(rovernode_cli.create_rover_node, params_to_exclude=['customer_shipping_address', 'data_validation_code', 'import_compartment_id', 'import_file_bucket', 'is_import_requested', 'node_workloads', 'public_key', 'serial_number', 'super_user_password', 'unlock_passphrase', 'oracle_shipping_tracking_url', 'shipping_vendor', 'time_pickup_expected']) +@cli_util.copy_params_from_generated_command(rovernode_cli.create_rover_node, params_to_exclude=['customer_shipping_address', 'data_validation_code', 'import_compartment_id', 'import_file_bucket', 'is_import_requested', 'node_workloads', 'public_key', 'serial_number', 'super_user_password', 'unlock_passphrase', 'oracle_shipping_tracking_url', 'shipping_vendor', 'time_pickup_expected', 'certificate_authority_id']) @rovernode_cli.rover_node_group.command(name=rovernode_cli.create_rover_node.name, help=rovernode_cli.create_rover_node.help) +@cli_util.option('--issuer-certificate-authority-id', help="""The certificateAuthorityId of subordinate/intermediate certificate authority.""") @cli_util.option('--shape', required=True, help=u"""Shape of the node on Rover device""") @cli_util.option('--addressee', help=u"""Company or person to send the appliance to""") @cli_util.option('--care-of', help=u"""Place/person to direct the package to.""") @@ -199,6 +292,25 @@ def create_rover_node_extended(ctx, **kwargs): if kwargs['system_tags'] is not None: _details['systemTags'] = cli_util.parse_json_parameter("system_tags", kwargs['system_tags']) + if 'issuer_certificate_authority_id' in kwargs: + _details['certificateAuthorityId'] = kwargs['issuer_certificate_authority_id'] + kwargs.pop('issuer_certificate_authority_id') + + if 'cert_compartment_id' in kwargs: + _details['certCompartmentId'] = kwargs['cert_compartment_id'] + + if 'cert_key_algorithm' in kwargs: + _details['certKeyAlgorithm'] = kwargs['cert_key_algorithm'] + + if 'cert_signature_algorithm' in kwargs: + _details['certSignatureAlgorithm'] = kwargs['cert_signature_algorithm'] + + if 'common_name' in kwargs: + _details['commonName'] = kwargs['common_name'] + + if 'time_cert_validity_end' in kwargs: + _details['timeCertValidityEnd'] = kwargs['time_cert_validity_end'] + # set up policy for master key if provided if kwargs['master_key_id']: create_master_key_policy_rover_resource("node", ctx, **kwargs) diff --git a/services/rover/src/oci_cli_work_requests/__init__.py b/services/rover/src/oci_cli_work_requests/__init__.py new file mode 100644 index 000000000..81ff5973e --- /dev/null +++ b/services/rover/src/oci_cli_work_requests/__init__.py @@ -0,0 +1,4 @@ +# coding: utf-8 +# Copyright (c) 2016, 2023, 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. +# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20201210 diff --git a/services/rover/src/oci_cli_work_requests/generated/__init__.py b/services/rover/src/oci_cli_work_requests/generated/__init__.py new file mode 100644 index 000000000..81ff5973e --- /dev/null +++ b/services/rover/src/oci_cli_work_requests/generated/__init__.py @@ -0,0 +1,4 @@ +# coding: utf-8 +# Copyright (c) 2016, 2023, 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. +# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20201210 diff --git a/services/rover/src/oci_cli_work_requests/generated/client_mappings.py b/services/rover/src/oci_cli_work_requests/generated/client_mappings.py new file mode 100644 index 000000000..16755a660 --- /dev/null +++ b/services/rover/src/oci_cli_work_requests/generated/client_mappings.py @@ -0,0 +1,14 @@ +# coding: utf-8 +# Copyright (c) 2016, 2023, 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. +# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20201210 + +import oci +from oci_cli.cli_clients import CLIENT_MAP +from oci_cli.cli_clients import MODULE_TO_TYPE_MAPPINGS +from oci.rover import WorkRequestsClient + +MODULE_TO_TYPE_MAPPINGS["rover"] = oci.rover.models.rover_type_mapping +if CLIENT_MAP.get("rover") is None: + CLIENT_MAP["rover"] = {} +CLIENT_MAP["rover"]["work_requests"] = WorkRequestsClient diff --git a/services/rover/src/oci_cli_work_requests/generated/workrequests_cli.py b/services/rover/src/oci_cli_work_requests/generated/workrequests_cli.py new file mode 100644 index 000000000..1490da5e6 --- /dev/null +++ b/services/rover/src/oci_cli_work_requests/generated/workrequests_cli.py @@ -0,0 +1,257 @@ +# coding: utf-8 +# Copyright (c) 2016, 2023, 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. +# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20201210 + +from __future__ import print_function +import click +import oci # noqa: F401 +import six # noqa: F401 +import sys # noqa: F401 +from oci_cli import cli_constants # noqa: F401 +from oci_cli import cli_util +from oci_cli import json_skeleton_utils +from oci_cli import custom_types # noqa: F401 +from oci_cli.aliasing import CommandGroupWithAlias +from services.rover.src.oci_cli_rover.generated import rover_service_cli + + +@click.command(cli_util.override('work_requests.work_requests_root_group.command_name', 'work-requests'), cls=CommandGroupWithAlias, help=cli_util.override('work_requests.work_requests_root_group.help', """A description of the RoverCloudService API."""), short_help=cli_util.override('work_requests.work_requests_root_group.short_help', """RoverCloudService API""")) +@cli_util.help_option_group +def work_requests_root_group(): + pass + + +@click.command(cli_util.override('work_requests.work_request_group.command_name', 'work-request'), cls=CommandGroupWithAlias, help="""A description of workRequest status.""") +@cli_util.help_option_group +def work_request_group(): + pass + + +rover_service_cli.rover_service_group.add_command(work_requests_root_group) +work_requests_root_group.add_command(work_request_group) + + +@work_request_group.command(name=cli_util.override('work_requests.cancel_work_request.command_name', 'cancel'), help=u"""Cancel the work request. \n[Command Reference](cancelWorkRequest)""") +@cli_util.option('--work-request-id', required=True, help=u"""The ocid of the work request.""") +@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.""") +@cli_util.confirm_delete_option +@json_skeleton_utils.get_cli_json_input_option({}) +@cli_util.help_option +@click.pass_context +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}) +@cli_util.wrap_exceptions +def cancel_work_request(ctx, from_json, work_request_id, if_match): + + if isinstance(work_request_id, six.string_types) and len(work_request_id.strip()) == 0: + raise click.UsageError('Parameter --work-request-id cannot be whitespace or empty string') + + kwargs = {} + if if_match is not None: + kwargs['if_match'] = if_match + kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) + client = cli_util.build_client('rover', 'work_requests', ctx) + result = client.cancel_work_request( + work_request_id=work_request_id, + **kwargs + ) + cli_util.render_response(result, ctx) + + +@work_request_group.command(name=cli_util.override('work_requests.get_work_request.command_name', 'get'), help=u"""Gets the status of the work request with the given ID. \n[Command Reference](getWorkRequest)""") +@cli_util.option('--work-request-id', required=True, help=u"""The ocid of the work request.""") +@json_skeleton_utils.get_cli_json_input_option({}) +@cli_util.help_option +@click.pass_context +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}, output_type={'module': 'rover', 'class': 'WorkRequest'}) +@cli_util.wrap_exceptions +def get_work_request(ctx, from_json, work_request_id): + + if isinstance(work_request_id, six.string_types) and len(work_request_id.strip()) == 0: + raise click.UsageError('Parameter --work-request-id cannot be whitespace or empty string') + + kwargs = {} + kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) + client = cli_util.build_client('rover', 'work_requests', ctx) + result = client.get_work_request( + work_request_id=work_request_id, + **kwargs + ) + cli_util.render_response(result, ctx) + + +@work_request_group.command(name=cli_util.override('work_requests.list_work_request_errors.command_name', 'list-work-request-errors'), help=u"""Return a (paginated) list of errors for a given work request. \n[Command Reference](listWorkRequestErrors)""") +@cli_util.option('--work-request-id', required=True, help=u"""The ocid of the work request.""") +@cli_util.option('--page', help=u"""The page token representing the page at which to start retrieving results. This is usually retrieved from a previous list call.""") +@cli_util.option('--limit', type=click.INT, help=u"""The maximum number of items to return.""") +@cli_util.option('--sort-order', type=custom_types.CliCaseInsensitiveChoice(["ASC", "DESC"]), help=u"""The sort order to use, either 'asc' or 'desc'.""") +@cli_util.option('--sort-by', type=custom_types.CliCaseInsensitiveChoice(["timestamp", "message"]), help=u"""Specifies the field to sort by. Accepts only one field. By default, when you sort by time fields, the results are shown in descending order. All other fields default to ascending order.""") +@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.""") +@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.""") +@json_skeleton_utils.get_cli_json_input_option({}) +@cli_util.help_option +@click.pass_context +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}, output_type={'module': 'rover', 'class': 'WorkRequestErrorCollection'}) +@cli_util.wrap_exceptions +def list_work_request_errors(ctx, from_json, all_pages, page_size, work_request_id, page, limit, sort_order, sort_by): + + if all_pages and limit: + raise click.UsageError('If you provide the --all option you cannot provide the --limit option') + + if isinstance(work_request_id, six.string_types) and len(work_request_id.strip()) == 0: + raise click.UsageError('Parameter --work-request-id cannot be whitespace or empty string') + + kwargs = {} + if page is not None: + kwargs['page'] = page + if limit is not None: + kwargs['limit'] = limit + if sort_order is not None: + kwargs['sort_order'] = sort_order + if sort_by is not None: + kwargs['sort_by'] = sort_by + kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) + client = cli_util.build_client('rover', 'work_requests', ctx) + if all_pages: + if page_size: + kwargs['limit'] = page_size + + result = cli_util.list_call_get_all_results( + client.list_work_request_errors, + work_request_id=work_request_id, + **kwargs + ) + elif limit is not None: + result = cli_util.list_call_get_up_to_limit( + client.list_work_request_errors, + limit, + page_size, + work_request_id=work_request_id, + **kwargs + ) + else: + result = client.list_work_request_errors( + work_request_id=work_request_id, + **kwargs + ) + cli_util.render_response(result, ctx) + + +@work_request_group.command(name=cli_util.override('work_requests.list_work_request_logs.command_name', 'list-work-request-logs'), help=u"""Return a (paginated) list of logs for a given work request. \n[Command Reference](listWorkRequestLogs)""") +@cli_util.option('--work-request-id', required=True, help=u"""The ocid of the work request.""") +@cli_util.option('--page', help=u"""The page token representing the page at which to start retrieving results. This is usually retrieved from a previous list call.""") +@cli_util.option('--limit', type=click.INT, help=u"""The maximum number of items to return.""") +@cli_util.option('--sort-order', type=custom_types.CliCaseInsensitiveChoice(["ASC", "DESC"]), help=u"""The sort order to use, either 'asc' or 'desc'.""") +@cli_util.option('--sort-by', type=custom_types.CliCaseInsensitiveChoice(["timestamp", "message"]), help=u"""Specifies the field to sort by. Accepts only one field. By default, when you sort by time fields, the results are shown in descending order. All other fields default to ascending order.""") +@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.""") +@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.""") +@json_skeleton_utils.get_cli_json_input_option({}) +@cli_util.help_option +@click.pass_context +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}, output_type={'module': 'rover', 'class': 'WorkRequestLogCollection'}) +@cli_util.wrap_exceptions +def list_work_request_logs(ctx, from_json, all_pages, page_size, work_request_id, page, limit, sort_order, sort_by): + + if all_pages and limit: + raise click.UsageError('If you provide the --all option you cannot provide the --limit option') + + if isinstance(work_request_id, six.string_types) and len(work_request_id.strip()) == 0: + raise click.UsageError('Parameter --work-request-id cannot be whitespace or empty string') + + kwargs = {} + if page is not None: + kwargs['page'] = page + if limit is not None: + kwargs['limit'] = limit + if sort_order is not None: + kwargs['sort_order'] = sort_order + if sort_by is not None: + kwargs['sort_by'] = sort_by + kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) + client = cli_util.build_client('rover', 'work_requests', ctx) + if all_pages: + if page_size: + kwargs['limit'] = page_size + + result = cli_util.list_call_get_all_results( + client.list_work_request_logs, + work_request_id=work_request_id, + **kwargs + ) + elif limit is not None: + result = cli_util.list_call_get_up_to_limit( + client.list_work_request_logs, + limit, + page_size, + work_request_id=work_request_id, + **kwargs + ) + else: + result = client.list_work_request_logs( + work_request_id=work_request_id, + **kwargs + ) + cli_util.render_response(result, ctx) + + +@work_request_group.command(name=cli_util.override('work_requests.list_work_requests.command_name', 'list'), help=u"""Lists the work requests in a compartment. \n[Command Reference](listWorkRequests)""") +@cli_util.option('--compartment-id', required=True, help=u"""The OCID of the compartment in which to list resources.""") +@cli_util.option('--operation-type', type=custom_types.CliCaseInsensitiveChoice(["ADD_NODES"]), help=u"""Filter results by the type of the operation associated with the work request.""") +@cli_util.option('--status', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "NEEDS_ATTENTION", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), help=u"""Filter results by work request status.""") +@cli_util.option('--resource-id', help=u"""Filter work requests by the resource ocid.""") +@cli_util.option('--page', help=u"""The page token representing the page at which to start retrieving results. This is usually retrieved from a previous list call.""") +@cli_util.option('--limit', type=click.INT, help=u"""The maximum number of items to return.""") +@cli_util.option('--sort-order', type=custom_types.CliCaseInsensitiveChoice(["ASC", "DESC"]), help=u"""The sort order to use, either 'asc' or 'desc'.""") +@cli_util.option('--sort-by', type=custom_types.CliCaseInsensitiveChoice(["operationType", "status", "timeAccepted"]), help=u"""Specifies the field to sort by. Accepts only one field. By default, when you sort by time fields, the results are shown in descending order. All other fields default to ascending order.""") +@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.""") +@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.""") +@json_skeleton_utils.get_cli_json_input_option({}) +@cli_util.help_option +@click.pass_context +@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}, output_type={'module': 'rover', 'class': 'WorkRequestCollection'}) +@cli_util.wrap_exceptions +def list_work_requests(ctx, from_json, all_pages, page_size, compartment_id, operation_type, status, resource_id, page, limit, sort_order, sort_by): + + if all_pages and limit: + raise click.UsageError('If you provide the --all option you cannot provide the --limit option') + + kwargs = {} + if operation_type is not None: + kwargs['operation_type'] = operation_type + if status is not None: + kwargs['status'] = status + if resource_id is not None: + kwargs['resource_id'] = resource_id + if page is not None: + kwargs['page'] = page + if limit is not None: + kwargs['limit'] = limit + if sort_order is not None: + kwargs['sort_order'] = sort_order + if sort_by is not None: + kwargs['sort_by'] = sort_by + kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id']) + client = cli_util.build_client('rover', 'work_requests', ctx) + if all_pages: + if page_size: + kwargs['limit'] = page_size + + result = cli_util.list_call_get_all_results( + client.list_work_requests, + compartment_id=compartment_id, + **kwargs + ) + elif limit is not None: + result = cli_util.list_call_get_up_to_limit( + client.list_work_requests, + limit, + page_size, + compartment_id=compartment_id, + **kwargs + ) + else: + result = client.list_work_requests( + compartment_id=compartment_id, + **kwargs + ) + cli_util.render_response(result, ctx) diff --git a/services/rover/src/oci_cli_work_requests/workrequests_cli_extended.py b/services/rover/src/oci_cli_work_requests/workrequests_cli_extended.py new file mode 100644 index 000000000..867136585 --- /dev/null +++ b/services/rover/src/oci_cli_work_requests/workrequests_cli_extended.py @@ -0,0 +1,7 @@ +# coding: utf-8 +# Copyright (c) 2016, 2023, Oracle and/or its affiliates. All rights reserved. + +from services.rover.src.oci_cli_rover.generated import rover_service_cli +from services.rover.src.oci_cli_work_requests.generated import workrequests_cli + +rover_service_cli.rover_service_group.commands.pop(workrequests_cli.work_requests_root_group.name) diff --git a/setup.py b/setup.py index 3b7fa18f0..a03ba2858 100644 --- a/setup.py +++ b/setup.py @@ -30,7 +30,7 @@ def open_relative(*path): readme = f.read() requires = [ - 'oci==2.104.2', + 'oci==2.104.3', 'arrow>=1.0.0', 'certifi', 'click==8.0.4', diff --git a/src/oci_cli/version.py b/src/oci_cli/version.py index e49449509..b011518bd 100644 --- a/src/oci_cli/version.py +++ b/src/oci_cli/version.py @@ -2,4 +2,4 @@ # Copyright (c) 2016, 2021, 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.29.0' +__version__ = '3.29.1'