From 1c9135957b835f346f3707dc20f0d70674b5bbf4 Mon Sep 17 00:00:00 2001 From: bhagwatvyas Date: Tue, 2 Jun 2020 16:26:30 +0000 Subject: [PATCH] Releasing version 2.15.0 --- CHANGELOG.rst | 21 + NOTICE.txt | 1 + examples/showoci/CHANGELOG.rst | 6 + examples/showoci/img/Image_01.png | Bin 0 -> 81722 bytes examples/showoci/img/Image_02.png | Bin 0 -> 41505 bytes examples/showoci/img/Image_03.png | Bin 0 -> 53939 bytes examples/showoci/img/Image_04.png | Bin 0 -> 22246 bytes examples/showoci/img/Image_05.png | Bin 0 -> 35400 bytes examples/showoci/showoci_data.py | 12 +- examples/showoci/showoci_output.py | 2 +- examples/showoci/step_by_step_installation.md | 100 ++++ examples/usage_reports_to_adw/CHANGELOG.rst | 6 + .../apex_demo_app/usage.demo.apex.sql | 546 ++++++++++++++++-- .../step_by_step_installation.md | 2 +- src/oci/auth/__init__.py | 1 + src/oci/auth/rpt_path_providers.py | 139 +++++ src/oci/auth/signers/__init__.py | 1 + .../resource_principals_federation_signer.py | 169 ++++++ .../signers/resource_principals_signer.py | 22 +- src/oci/marketplace/marketplace_client.py | 11 +- .../models/image_listing_package.py | 35 +- src/oci/marketplace/models/listing.py | 4 +- .../models/listing_package_summary.py | 31 + src/oci/marketplace/models/listing_summary.py | 31 + .../models/orchestration_listing_package.py | 35 +- src/oci/marketplace/models/region.py | 2 +- src/oci/regions.py | 5 +- src/oci/retry/retry.py | 26 +- src/oci/version.py | 2 +- src/oci/waiter.py | 42 +- tests/unit/test_waiters.py | 47 +- 31 files changed, 1182 insertions(+), 117 deletions(-) create mode 100644 NOTICE.txt create mode 100644 examples/showoci/img/Image_01.png create mode 100644 examples/showoci/img/Image_02.png create mode 100644 examples/showoci/img/Image_03.png create mode 100644 examples/showoci/img/Image_04.png create mode 100644 examples/showoci/img/Image_05.png create mode 100644 examples/showoci/step_by_step_installation.md create mode 100644 src/oci/auth/rpt_path_providers.py create mode 100644 src/oci/auth/signers/resource_principals_federation_signer.py diff --git a/CHANGELOG.rst b/CHANGELOG.rst index a3cdb5cde6..3ae5b36cb8 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -3,6 +3,27 @@ Change Log All notable changes to this project will be documented in this file. The format is based on `Keep a Changelog `_. +==================== +2.15.0 - 2020-06-02 +==================== + +Added +----- +* Support for optionally supplying a signature when deleting an agreement in the Marketplace service +* Support for launching paid listings in non-US regions in the Marketplace service +* Support for returning the image id of packages in the Marketplace service +* Support for calling Oracle Cloud Infrastructure services in the ap-chuncheon-1 region +* Support for authenticating via Resource Principals. An example of how to use resource principals is available on `GitHub `__ + +Fixed +----- +* Fixed a bug where `oci.waiter.wait_until()` was not invoking `wait_callback` correctly based on the resource property +* Fixed a bug in `ExponentialBackoffWithFullJitterRetryStrategy.do_sleep()` where it was assuming time in milliseconds but it should be seconds + +Breaking +-------- +* Field `signature` in `delete_accepted_agreement_id` from Marketplace Service changed from required to optional + ==================== 2.14.3 - 2020-05-19 ==================== diff --git a/NOTICE.txt b/NOTICE.txt new file mode 100644 index 0000000000..1481664f37 --- /dev/null +++ b/NOTICE.txt @@ -0,0 +1 @@ +Copyright (c) 2016, 2020, Oracle and/or its affiliates. diff --git a/examples/showoci/CHANGELOG.rst b/examples/showoci/CHANGELOG.rst index 9459f9c004..46c437f91d 100755 --- a/examples/showoci/CHANGELOG.rst +++ b/examples/showoci/CHANGELOG.rst @@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file. The format is based on `Keep a Changelog `_. +===================== +20.06.02 - 2020-06-02 +===================== +* Added image to the summary if it is custom image (from the marketplace) +* Added step by step installation guide + ===================== 20.05.18 - 2020-05-18 ===================== diff --git a/examples/showoci/img/Image_01.png b/examples/showoci/img/Image_01.png new file mode 100644 index 0000000000000000000000000000000000000000..1ac0ea2f1b8777283ee32c1697ff7708e5c8c078 GIT binary patch literal 81722 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

_{kB*qhv~{orZI%)Or}P3UT!#0|zAS+uTb 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

HokI5x)&Xyj#Z|r<-aMgcJoPugDuC<3rt% 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 z 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 UA$GV8DBz#s6BXDu8Kc1e2XDh5qyPW_ literal 0 HcmV?d00001 diff --git a/examples/showoci/img/Image_04.png b/examples/showoci/img/Image_04.png new file mode 100644 index 0000000000000000000000000000000000000000..063316e5fb2358582bcc581a24d172477b9dda79 GIT binary patch literal 22246 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

*vDA*fkhdfyrs(~bfW}>1V@p_E-Qw~ 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 WRxq5mP4gH0dnEN(vP9g-|9=49$+WBh literal 0 HcmV?d00001 diff --git a/examples/showoci/showoci_data.py b/examples/showoci/showoci_data.py index f115d57280..39b6a1a183 100755 --- a/examples/showoci/showoci_data.py +++ b/examples/showoci/showoci_data.py @@ -1373,9 +1373,19 @@ def __get_core_compute_instances(self, region_name, compartment): instances = self.service.search_multi_items(self.service.C_COMPUTE, self.service.C_COMPUTE_INST, 'region_name', region_name, 'compartment_id', compartment['id']) for instance in instances: + + # fix the shape image for the summary + sum_shape = "" + if instance['image'] == "Not Found" or instance['image'] == "Custom" or instance['image_os'] == "Oracle Linux": + sum_shape = instance['image_os'][0:35] + elif 'Windows-Server' in instance['image']: + sum_shape = instance['image'][0:19] + else: + sum_shape = instance['image'][0:35] + inst = {'id': instance['id'], 'name': instance['shape'] + " - " + instance['display_name'] + " - " + instance['lifecycle_state'], 'sum_info': 'Compute', - 'sum_shape': instance['image_os'][0:14] + " - " + instance['shape'], + 'sum_shape': instance['shape'].ljust(16, ' ')[0:15] + " - " + sum_shape, 'availability_domain': instance['availability_domain'], 'fault_domain': instance['fault_domain'], 'time_maintenance_reboot_due': str(instance['time_maintenance_reboot_due']), diff --git a/examples/showoci/showoci_output.py b/examples/showoci/showoci_output.py index 7261591c7e..11c3d0412b 100755 --- a/examples/showoci/showoci_output.py +++ b/examples/showoci/showoci_output.py @@ -1484,7 +1484,7 @@ def __print_core_compute_instances(self, instances): print(self.tabs2 + "MRB : Maintenance Reboot Due " + instance['time_maintenance_reboot_due']) if 'image' in instance: - print(self.tabs2 + "Img : " + instance['image']) + print(self.tabs2 + "Img : " + instance['image'] + " (" + instance['image_os'] + ")") if 'boot_volume' in instance: for bv in instance['boot_volume']: diff --git a/examples/showoci/step_by_step_installation.md b/examples/showoci/step_by_step_installation.md new file mode 100644 index 0000000000..45c8ee6245 --- /dev/null +++ b/examples/showoci/step_by_step_installation.md @@ -0,0 +1,100 @@ +# showoci - Oracle Cloud Infrastructure Reporting Tool + +## Step by Step installation Guide on OCI VM +SHOWOCI is a reporting tool which uses the Python SDK to extract list of resources from your tenant. +It covers most of OCI components, +Authentication by User or Compute using instance principals, +Output can be printer friendly, CSV files or JSON file. + +**Developed by Adi Zohar** + +** DISCLAIMER – This is not an official Oracle application ** + +## 1. Deploy VM Compute instance to run the python script +``` + OCI -> Menu -> Compute -> Instances + Create Instance + --> Name = ShowOCIVM + --> Image = Oracle Linux 7 + --> Shape = VM.Standard2.1 (Free Micro can be used as well) + --> Choose your network VCN and Subnet (any type of VCN and Subnet) + --> Assign public IP - Optional if on public subnet + --> Add your public SSH key + --> Press Create +``` +![](img/Image_01.png) + +![](img/Image_02.png) + +![](img/Image_03.png) + +``` + Copy Instance Info: + --> Compute OCID to be used for Dynamic Group Permission + --> Compute IP +``` + +## 2. Create Dynamic Group for Instance Principles + +``` + OCI -> Menu -> Identity -> Dynamic Groups -> Create Dynamic Group + --> Name = ShowOCIDynamicGroup + --> Desc = Dynamic Group for the showoci VM + --> Rule 1 = ANY { instance.id = 'OCID_Of_Step_1_Instance' } +``` +![](img/Image_04.png) + +## 3. Create Policy to allow the Dynamic Group to run showoci report + +``` + OCI -> Menu -> Identity -> Policies + Choose Root Compartment + Create Policy + --> Name = showociPolicy + --> Desc = Allow Dynamic Group ShowOCIDynamicGroup to extract tenant information using showoci + --> Statement = allow dynamic-group ShowOCIDynamicGroup to read all-resources in tenancy + +``` + +![](img/Image_05.png) + +## 4. Login to Linux Machine + +``` + Using the SSH key you provided, SSH to the linux machine from step #1 + ssh opc@UsageVM +``` + +## 5. Install Python 3, GIT and OCI packages + +``` + sudo yum install -y python3 git + sudo pip3 install --upgrade oci oci-cli + + # test instance principle is working using oci-cli + oci os ns get --auth instance_principal + + [opc@ShowOCIVM ~]$ oci os ns get --auth instance_principal + { + "data": "orasenatdplxxxx" + } +``` + +## 6. Clone the OCI SDK Repo from Git Hub + +``` + git clone https://github.com/oracle/oci-python-sdk +``` + +## 7. Execute the python script - showoci.py + +``` + cd oci-python-sdk/examples/showoci + python3 showoci.py -ip -ani +``` + +## License + +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. diff --git a/examples/usage_reports_to_adw/CHANGELOG.rst b/examples/usage_reports_to_adw/CHANGELOG.rst index bc1027a330..9db1c2baeb 100644 --- a/examples/usage_reports_to_adw/CHANGELOG.rst +++ b/examples/usage_reports_to_adw/CHANGELOG.rst @@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file. The format is based on `Keep a Changelog `_. +===================== +20.06.02 - 2020-06-02 +===================== +* Added Summary cost per day to the Data Statistics - if you manage many tenants, it is a great view to see them all +* Added Cost by SKU to the Cost Over Time - Daily/Weekly and Monthly + ===================== 20.05.18 - 2020-05-18 ===================== diff --git a/examples/usage_reports_to_adw/apex_demo_app/usage.demo.apex.sql b/examples/usage_reports_to_adw/apex_demo_app/usage.demo.apex.sql index 17939566a2..d2cedb6e91 100644 --- a/examples/usage_reports_to_adw/apex_demo_app/usage.demo.apex.sql +++ b/examples/usage_reports_to_adw/apex_demo_app/usage.demo.apex.sql @@ -28,17 +28,17 @@ prompt APPLICATION 100 - OCI Usage and Cost Report -- Application Export: -- Application: 100 -- Name: OCI Usage and Cost Report --- Date and Time: 15:06 Thursday May 14, 2020 +-- Date and Time: 15:20 Wednesday May 20, 2020 -- Exported By: ADIZOHAR -- Flashback: 0 -- Export Type: Application Export -- Pages: 9 --- Items: 70 --- Computations: 14 +-- Items: 77 +-- Computations: 21 -- Processes: 4 --- Regions: 55 +-- Regions: 57 -- Buttons: 5 --- Dynamic Actions: 28 +-- Dynamic Actions: 29 -- Shared Components: -- Logic: -- App Settings: 1 @@ -105,7 +105,7 @@ wwv_flow_api.create_flow( ,p_public_user=>'APEX_PUBLIC_USER' ,p_proxy_server=>nvl(wwv_flow_application_install.get_proxy,'') ,p_no_proxy_domains=>nvl(wwv_flow_application_install.get_no_proxy_domains,'') -,p_flow_version=>'Release 20.05.18' +,p_flow_version=>'Release 20.06.02' ,p_flow_status=>'AVAILABLE_W_EDIT_LINK' ,p_flow_unavailable_text=>'This application is currently unavailable at this time.' ,p_exact_substitutions_only=>'Y' @@ -119,7 +119,7 @@ wwv_flow_api.create_flow( ,p_substitution_string_01=>'APP_NAME' ,p_substitution_value_01=>'OCI Usage and Cost Report' ,p_last_updated_by=>'ADIZOHAR' -,p_last_upd_yyyymmddhh24miss=>'20200514145916' +,p_last_upd_yyyymmddhh24miss=>'20200520151207' ,p_file_prefix => nvl(wwv_flow_application_install.get_static_app_file_prefix,'') ,p_files_version=>3 ,p_ui_type_name => null @@ -15342,7 +15342,7 @@ wwv_flow_api.create_page( '#P5_REPORT_SELECTOR { background-color: #F5FBB4; font-weight: bold; font-size: 13px;}')) ,p_page_template_options=>'#DEFAULT#' ,p_last_updated_by=>'ADIZOHAR' -,p_last_upd_yyyymmddhh24miss=>'20200514145916' +,p_last_upd_yyyymmddhh24miss=>'20200520151207' ); wwv_flow_api.create_page_plug( p_id=>wwv_flow_api.id(22846551592241693) @@ -15388,7 +15388,7 @@ wwv_flow_api.create_report_region( ,p_name=>'Monthly Report' ,p_parent_plug_id=>wwv_flow_api.id(33638842014589649) ,p_template=>wwv_flow_api.id(9765042323688020) -,p_display_sequence=>80 +,p_display_sequence=>90 ,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody' ,p_component_template_options=>'#DEFAULT#:t-Report--altRowsDefault:t-Report--rowHighlight' ,p_display_point=>'BODY' @@ -15705,7 +15705,7 @@ wwv_flow_api.create_report_region( ,p_name=>'Daily Cost Report' ,p_parent_plug_id=>wwv_flow_api.id(33638842014589649) ,p_template=>wwv_flow_api.id(9765042323688020) -,p_display_sequence=>100 +,p_display_sequence=>110 ,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody' ,p_component_template_options=>'#DEFAULT#:t-Report--altRowsDefault:t-Report--rowHighlight' ,p_display_point=>'BODY' @@ -16329,7 +16329,7 @@ wwv_flow_api.create_report_region( ,p_name=>'Weekly Report' ,p_parent_plug_id=>wwv_flow_api.id(33638842014589649) ,p_template=>wwv_flow_api.id(9765042323688020) -,p_display_sequence=>130 +,p_display_sequence=>140 ,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody' ,p_component_template_options=>'#DEFAULT#:t-Report--altRowsDefault:t-Report--rowHighlight' ,p_display_point=>'BODY' @@ -17184,7 +17184,7 @@ wwv_flow_api.create_report_region( ,p_name=>'Daily Product Unit Report - Single' ,p_parent_plug_id=>wwv_flow_api.id(33638842014589649) ,p_template=>wwv_flow_api.id(9765042323688020) -,p_display_sequence=>110 +,p_display_sequence=>120 ,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody' ,p_component_template_options=>'#DEFAULT#:t-Report--altRowsDefault:t-Report--rowHighlight' ,p_display_point=>'BODY' @@ -17915,7 +17915,7 @@ wwv_flow_api.create_page_plug( ,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody' ,p_escape_on_http_output=>'Y' ,p_plug_template=>wwv_flow_api.id(9765042323688020) -,p_plug_display_sequence=>60 +,p_plug_display_sequence=>70 ,p_plug_display_point=>'BODY' ,p_plug_source_type=>'NATIVE_JET_CHART' ,p_plug_query_num_rows=>15 @@ -18067,7 +18067,7 @@ wwv_flow_api.create_page_plug( wwv_flow_api.create_jet_chart( p_id=>wwv_flow_api.id(15051010405989902) ,p_region_id=>wwv_flow_api.id(15050972044989901) -,p_chart_type=>'line' +,p_chart_type=>'bar' ,p_height=>'500' ,p_animation_on_display=>'auto' ,p_animation_on_data_change=>'auto' @@ -18077,9 +18077,8 @@ wwv_flow_api.create_jet_chart( ,p_hide_and_show_behavior=>'none' ,p_hover_behavior=>'none' ,p_stack=>'on' -,p_stack_label=>'off' +,p_stack_label=>'on' ,p_connect_nulls=>'Y' -,p_value_position=>'auto' ,p_sorting=>'label-asc' ,p_fill_multi_series_gaps=>true ,p_zoom_and_scroll=>'off' @@ -18087,24 +18086,9 @@ wwv_flow_api.create_jet_chart( ,p_show_series_name=>true ,p_show_group_name=>true ,p_show_value=>true -,p_show_label=>true -,p_show_row=>true -,p_show_start=>true -,p_show_end=>true -,p_show_progress=>true -,p_show_baseline=>true ,p_legend_rendered=>'on' ,p_legend_position=>'end' -,p_overview_rendered=>'off' -,p_horizontal_grid=>'auto' -,p_vertical_grid=>'auto' -,p_gauge_orientation=>'circular' -,p_gauge_plot_area=>'on' -,p_show_gauge_value=>true ); -end; -/ -begin wwv_flow_api.create_jet_chart_series( p_id=>wwv_flow_api.id(15051132224989903) ,p_chart_id=>wwv_flow_api.id(15051010405989902) @@ -18143,17 +18127,14 @@ wwv_flow_api.create_jet_chart_series( ,p_series_name_column_name=>'PRD_SERVICE' ,p_items_value_column_name=>'COST_USAGE' ,p_items_label_column_name=>'PERIOD' -,p_line_style=>'solid' -,p_line_type=>'auto' -,p_marker_rendered=>'auto' -,p_marker_shape=>'auto' ,p_assigned_to_y2=>'off' ,p_items_label_rendered=>true ,p_items_label_position=>'center' -,p_items_label_display_as=>'PERCENT' ,p_items_label_font_size=>'10' -,p_threshold_display=>'onIndicator' ); +end; +/ +begin wwv_flow_api.create_jet_chart_axis( p_id=>wwv_flow_api.id(15051263494989904) ,p_chart_id=>wwv_flow_api.id(15051010405989902) @@ -18208,7 +18189,7 @@ wwv_flow_api.create_page_plug( ,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody' ,p_escape_on_http_output=>'Y' ,p_plug_template=>wwv_flow_api.id(9765042323688020) -,p_plug_display_sequence=>50 +,p_plug_display_sequence=>60 ,p_plug_display_point=>'BODY' ,p_plug_source_type=>'NATIVE_JET_CHART' ,p_plug_query_num_rows=>15 @@ -18338,7 +18319,7 @@ wwv_flow_api.create_page_plug( ,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody' ,p_escape_on_http_output=>'Y' ,p_plug_template=>wwv_flow_api.id(9765042323688020) -,p_plug_display_sequence=>70 +,p_plug_display_sequence=>80 ,p_plug_display_point=>'BODY' ,p_plug_source_type=>'NATIVE_JET_CHART' ,p_plug_query_num_rows=>15 @@ -18479,7 +18460,7 @@ wwv_flow_api.create_report_region( ,p_name=>'Daily Product Unit Report - Total' ,p_parent_plug_id=>wwv_flow_api.id(33638842014589649) ,p_template=>wwv_flow_api.id(9765042323688020) -,p_display_sequence=>120 +,p_display_sequence=>130 ,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody' ,p_component_template_options=>'#DEFAULT#:t-Report--altRowsDefault:t-Report--rowHighlight' ,p_display_point=>'BODY' @@ -19005,9 +18986,6 @@ wwv_flow_api.create_report_columns( ,p_derived_column=>'N' ,p_include_in_export=>'Y' ); -end; -/ -begin wwv_flow_api.create_report_columns( p_id=>wwv_flow_api.id(15083179032497506) ,p_query_column_id=>31 @@ -19041,7 +19019,7 @@ wwv_flow_api.create_report_region( ,p_name=>'Weekly Product Unit Report' ,p_parent_plug_id=>wwv_flow_api.id(33638842014589649) ,p_template=>wwv_flow_api.id(9765042323688020) -,p_display_sequence=>140 +,p_display_sequence=>150 ,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody' ,p_component_template_options=>'#DEFAULT#:t-Report--altRowsDefault:t-Report--rowHighlight' ,p_display_point=>'BODY' @@ -19163,6 +19141,9 @@ wwv_flow_api.create_report_region( ,p_sort_null=>'L' ,p_plug_query_strip_html=>'N' ); +end; +/ +begin wwv_flow_api.create_report_columns( p_id=>wwv_flow_api.id(15083882458497513) ,p_query_column_id=>1 @@ -19908,7 +19889,7 @@ wwv_flow_api.create_report_region( ,p_name=>'Monthly Product Unit Report' ,p_parent_plug_id=>wwv_flow_api.id(33638842014589649) ,p_template=>wwv_flow_api.id(9765042323688020) -,p_display_sequence=>90 +,p_display_sequence=>100 ,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody' ,p_component_template_options=>'#DEFAULT#:t-Report--altRowsDefault:t-Report--rowHighlight' ,p_display_point=>'BODY' @@ -19991,9 +19972,6 @@ wwv_flow_api.create_report_region( ,p_sort_null=>'L' ,p_plug_query_strip_html=>'N' ); -end; -/ -begin wwv_flow_api.create_report_columns( p_id=>wwv_flow_api.id(15102928440532017) ,p_query_column_id=>1 @@ -20175,6 +20153,121 @@ wwv_flow_api.create_report_columns( ,p_derived_column=>'N' ,p_include_in_export=>'Y' ); +wwv_flow_api.create_page_plug( + p_id=>wwv_flow_api.id(16359989459490324) +,p_plug_name=>'Cost By SKU - &P5_PERIOD.' +,p_parent_plug_id=>wwv_flow_api.id(33638842014589649) +,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody' +,p_escape_on_http_output=>'Y' +,p_plug_template=>wwv_flow_api.id(9765042323688020) +,p_plug_display_sequence=>50 +,p_plug_display_point=>'BODY' +,p_plug_source_type=>'NATIVE_JET_CHART' +,p_plug_query_num_rows=>15 +,p_plug_query_options=>'DERIVED_REPORT_COLUMNS' +); +wwv_flow_api.create_jet_chart( + p_id=>wwv_flow_api.id(16360042364490325) +,p_region_id=>wwv_flow_api.id(16359989459490324) +,p_chart_type=>'bar' +,p_height=>'500' +,p_animation_on_display=>'auto' +,p_animation_on_data_change=>'auto' +,p_orientation=>'vertical' +,p_data_cursor=>'auto' +,p_data_cursor_behavior=>'auto' +,p_hide_and_show_behavior=>'none' +,p_hover_behavior=>'none' +,p_stack=>'on' +,p_stack_label=>'on' +,p_connect_nulls=>'Y' +,p_sorting=>'label-asc' +,p_fill_multi_series_gaps=>true +,p_zoom_and_scroll=>'off' +,p_tooltip_rendered=>'Y' +,p_show_series_name=>true +,p_show_group_name=>true +,p_show_value=>true +,p_legend_rendered=>'on' +,p_legend_position=>'end' +); +wwv_flow_api.create_jet_chart_series( + p_id=>wwv_flow_api.id(16360174750490326) +,p_chart_id=>wwv_flow_api.id(16360042364490325) +,p_seq=>10 +,p_name=>'Usage' +,p_data_source_type=>'SQL' +,p_data_source=>wwv_flow_string.join(wwv_flow_t_varchar2( +'select ', +' case ', +' when :P5_PERIOD=''Daily'' then to_char(USAGE_INTERVAL_START,''YYYY-MM-DD'') ', +' when :P5_PERIOD=''Weekly'' then to_char(USAGE_INTERVAL_START,''YYYY-WW'') ', +' when :P5_PERIOD=''Monthly'' or :P5_PERIOD is null then to_char(USAGE_INTERVAL_START,''YYYY-MM-MON'')', +' end PERIOD,', +' COST_PRODUCT_SKU || '' '' || replace(replace(PRD_DESCRIPTION,COST_PRODUCT_SKU||'' - '',''''),''Oracle Cloud Infrastructure'',''OCI'') COST_PRODUCT_SKU,', +' sum(COST_MY_COST) as COST_USAGE', +'from oci_cost', +'where ', +' tenant_name=:P5_TENANT_NAME and', +' (:P5_COMPARTMENT_NAME is null or prd_compartment_name = :P5_COMPARTMENT_NAME) and', +' (:P5_COMPARTMENT_TOP is null or prd_compartment_path like :P5_COMPARTMENT_TOP ||''%'') and', +' (:P5_PRODUCT_SERVICE is null or prd_service = :P5_PRODUCT_SERVICE) and', +' (:P5_PRODUCT_REGION is null or prd_region = :P5_PRODUCT_REGION) and', +' (:P5_COST_PRODUCT_SKU is null or COST_PRODUCT_SKU = :P5_COST_PRODUCT_SKU) and', +' (:P5_TAG_KEY is null or tags_data like ''%#'' || :P5_TAG_KEY || ''=%'') and', +' (:P5_TAG_DATA is null or tags_data like ''%#'' || nvl(:P5_TAG_KEY,''%'') || ''=%'' || :P5_TAG_DATA || ''#'') and', +' (:P5_PERIOD=''Daily'' and to_char(USAGE_INTERVAL_START,''YYYY-MM'') = :P5_PERIOD_RANGE or :P5_PERIOD in (''Monthly'',''Weekly'') and to_char(USAGE_INTERVAL_START,''YYYY'') = :P5_PERIOD_RANGE) and', +' :P5_REPORT_SELECTOR in (''Daily Cost By SKU'',''Weekly Cost By SKU'',''Monthly Cost By SKU'') ', +' group by ', +' case ', +' when :P5_PERIOD=''Daily'' then to_char(USAGE_INTERVAL_START,''YYYY-MM-DD'') ', +' when :P5_PERIOD=''Weekly'' then to_char(USAGE_INTERVAL_START,''YYYY-WW'') ', +' when :P5_PERIOD=''Monthly'' or :P5_PERIOD is null then to_char(USAGE_INTERVAL_START,''YYYY-MM-MON'')', +' end,', +' COST_PRODUCT_SKU || '' '' || replace(replace(PRD_DESCRIPTION,COST_PRODUCT_SKU||'' - '',''''),''Oracle Cloud Infrastructure'',''OCI'')', +'order by 1,2')) +,p_series_name_column_name=>'COST_PRODUCT_SKU' +,p_items_value_column_name=>'COST_USAGE' +,p_items_label_column_name=>'PERIOD' +,p_assigned_to_y2=>'off' +,p_items_label_rendered=>true +,p_items_label_position=>'center' +,p_items_label_font_size=>'10' +); +end; +/ +begin +wwv_flow_api.create_jet_chart_axis( + p_id=>wwv_flow_api.id(16360289843490327) +,p_chart_id=>wwv_flow_api.id(16360042364490325) +,p_axis=>'y' +,p_is_rendered=>'on' +,p_format_type=>'decimal' +,p_decimal_places=>1 +,p_format_scaling=>'auto' +,p_scaling=>'linear' +,p_baseline_scaling=>'zero' +,p_position=>'auto' +,p_major_tick_rendered=>'on' +,p_minor_tick_rendered=>'off' +,p_tick_label_rendered=>'on' +); +wwv_flow_api.create_jet_chart_axis( + p_id=>wwv_flow_api.id(16360351214490328) +,p_chart_id=>wwv_flow_api.id(16360042364490325) +,p_axis=>'x' +,p_is_rendered=>'on' +,p_format_type=>'date-short' +,p_numeric_pattern=>'DD-MON-YYYY' +,p_format_scaling=>'auto' +,p_scaling=>'linear' +,p_baseline_scaling=>'zero' +,p_major_tick_rendered=>'on' +,p_minor_tick_rendered=>'off' +,p_tick_label_rendered=>'on' +,p_tick_label_rotation=>'auto' +,p_tick_label_position=>'outside' +); wwv_flow_api.create_page_plug( p_id=>wwv_flow_api.id(23961814581267567) ,p_plug_name=>'Cost Over Time - &P5_PERIOD.' @@ -20859,9 +20952,6 @@ wwv_flow_api.create_page_item( ,p_attribute_02=>'VALUE' ,p_attribute_04=>'Y' ); -end; -/ -begin wwv_flow_api.create_page_item( p_id=>wwv_flow_api.id(12055265653076068) ,p_name=>'P5_SUBSCRIPTION' @@ -20921,6 +21011,8 @@ wwv_flow_api.create_page_item( ' union all', ' select ''Daily Cost By Service'' report_name from dual where :P5_PERIOD=''Daily''', ' union all', +' select ''Daily Cost By SKU'' report_name from dual where :P5_PERIOD=''Daily''', +' union all', ' select ''Daily Cost By Region'' report_name from dual where :P5_PERIOD=''Daily''', ' union all', ' select ''Daily Cost By Compartment'' report_name from dual where :P5_PERIOD=''Daily''', @@ -20939,6 +21031,8 @@ wwv_flow_api.create_page_item( ' union all', ' select ''Weekly Cost By Service'' report_name from dual where :P5_PERIOD=''Weekly''', ' union all', +' select ''Weekly Cost By SKU'' report_name from dual where :P5_PERIOD=''Weekly''', +' union all', ' select ''Weekly Cost By Region'' report_name from dual where :P5_PERIOD=''Weekly''', ' union all', ' select ''Weekly Cost By Compartment'' report_name from dual where :P5_PERIOD=''Weekly''', @@ -20953,6 +21047,8 @@ wwv_flow_api.create_page_item( ' union all', ' select ''Monthly Cost By Service'' report_name from dual where :P5_PERIOD=''Monthly''', ' union all', +' select ''Monthly Cost By SKU'' report_name from dual where :P5_PERIOD=''Monthly''', +' union all', ' select ''Monthly Cost By Region'' report_name from dual where :P5_PERIOD=''Monthly''', ' union all', ' select ''Monthly Cost By Compartment'' report_name from dual where :P5_PERIOD=''Monthly''', @@ -20979,6 +21075,9 @@ wwv_flow_api.create_page_item( ,p_attribute_01=>'NONE' ,p_attribute_02=>'N' ); +end; +/ +begin wwv_flow_api.create_page_item( p_id=>wwv_flow_api.id(14186230501270003) ,p_name=>'P5_YEARLY' @@ -21290,10 +21389,40 @@ wwv_flow_api.create_page_da_action( ,p_affected_elements_type=>'REGION' ,p_affected_region_id=>wwv_flow_api.id(15050972044989901) ); +wwv_flow_api.create_page_da_event( + p_id=>wwv_flow_api.id(16360416189490329) +,p_name=>'ShowCostBySKU' +,p_event_sequence=>90 +,p_condition_element=>'P5_REPORT_SELECTOR' +,p_triggering_condition_type=>'IN_LIST' +,p_triggering_expression=>'Daily Cost By SKU,Weekly Cost By SKU,Monthly Cost By SKU' +,p_bind_type=>'bind' +,p_bind_event_type=>'ready' +); +wwv_flow_api.create_page_da_action( + p_id=>wwv_flow_api.id(16360563041490330) +,p_event_id=>wwv_flow_api.id(16360416189490329) +,p_event_result=>'FALSE' +,p_action_sequence=>10 +,p_execute_on_page_init=>'Y' +,p_action=>'NATIVE_HIDE' +,p_affected_elements_type=>'REGION' +,p_affected_region_id=>wwv_flow_api.id(16359989459490324) +); +wwv_flow_api.create_page_da_action( + p_id=>wwv_flow_api.id(16360614830490331) +,p_event_id=>wwv_flow_api.id(16360416189490329) +,p_event_result=>'TRUE' +,p_action_sequence=>10 +,p_execute_on_page_init=>'Y' +,p_action=>'NATIVE_SHOW' +,p_affected_elements_type=>'REGION' +,p_affected_region_id=>wwv_flow_api.id(16359989459490324) +); wwv_flow_api.create_page_da_event( p_id=>wwv_flow_api.id(15052224625989914) ,p_name=>'ShowCostByCompartment' -,p_event_sequence=>90 +,p_event_sequence=>100 ,p_condition_element=>'P5_REPORT_SELECTOR' ,p_triggering_condition_type=>'IN_LIST' ,p_triggering_expression=>'Daily Cost By Compartment,Weekly Cost By Compartment,Monthly Cost By Compartment' @@ -21323,7 +21452,7 @@ wwv_flow_api.create_page_da_action( wwv_flow_api.create_page_da_event( p_id=>wwv_flow_api.id(14186923617270010) ,p_name=>'ShowCostByRegion' -,p_event_sequence=>100 +,p_event_sequence=>110 ,p_condition_element=>'P5_REPORT_SELECTOR' ,p_triggering_condition_type=>'IN_LIST' ,p_triggering_expression=>'Daily Cost By Region,Weekly Cost By Region,Monthly Cost By Region' @@ -21353,7 +21482,7 @@ wwv_flow_api.create_page_da_action( wwv_flow_api.create_page_da_event( p_id=>wwv_flow_api.id(15053003375989922) ,p_name=>'ShowCostByTopCompartment' -,p_event_sequence=>110 +,p_event_sequence=>120 ,p_condition_element=>'P5_REPORT_SELECTOR' ,p_triggering_condition_type=>'IN_LIST' ,p_triggering_expression=>'Daily Cost By Top Compartment,Weekly Cost By Top Compartment,Monthly Cost By Top Compartment' @@ -21383,7 +21512,7 @@ wwv_flow_api.create_page_da_action( wwv_flow_api.create_page_da_event( p_id=>wwv_flow_api.id(13975055917041427) ,p_name=>'ShowDailyCostReport' -,p_event_sequence=>120 +,p_event_sequence=>130 ,p_condition_element=>'P5_REPORT_SELECTOR' ,p_triggering_condition_type=>'EQUALS' ,p_triggering_expression=>'Daily Cost Report' @@ -21413,7 +21542,7 @@ wwv_flow_api.create_page_da_action( wwv_flow_api.create_page_da_event( p_id=>wwv_flow_api.id(13975348835041430) ,p_name=>'ShowDailyProductUnitReportSingle' -,p_event_sequence=>130 +,p_event_sequence=>140 ,p_condition_element=>'P5_REPORT_SELECTOR' ,p_triggering_condition_type=>'EQUALS' ,p_triggering_expression=>'Daily Product Unit Report - Single' @@ -21443,7 +21572,7 @@ wwv_flow_api.create_page_da_action( wwv_flow_api.create_page_da_event( p_id=>wwv_flow_api.id(15083319206497508) ,p_name=>'ShowDailyProductUnitReportTotal' -,p_event_sequence=>140 +,p_event_sequence=>150 ,p_condition_element=>'P5_REPORT_SELECTOR' ,p_triggering_condition_type=>'EQUALS' ,p_triggering_expression=>'Daily Product Unit Report - Total' @@ -21473,7 +21602,7 @@ wwv_flow_api.create_page_da_action( wwv_flow_api.create_page_da_event( p_id=>wwv_flow_api.id(13975688110041433) ,p_name=>'ShowWeeklyCostReport' -,p_event_sequence=>150 +,p_event_sequence=>160 ,p_condition_element=>'P5_REPORT_SELECTOR' ,p_triggering_condition_type=>'EQUALS' ,p_triggering_expression=>'Weekly Cost Report' @@ -21503,7 +21632,7 @@ wwv_flow_api.create_page_da_action( wwv_flow_api.create_page_da_event( p_id=>wwv_flow_api.id(15104375728532031) ,p_name=>'ShowWeeklyProductUnitReport' -,p_event_sequence=>160 +,p_event_sequence=>170 ,p_condition_element=>'P5_REPORT_SELECTOR' ,p_triggering_condition_type=>'EQUALS' ,p_triggering_expression=>'Weekly Product Unit Report' @@ -21533,7 +21662,7 @@ wwv_flow_api.create_page_da_action( wwv_flow_api.create_page_da_event( p_id=>wwv_flow_api.id(15104677803532034) ,p_name=>'ShowMonthlyProductUnitReport' -,p_event_sequence=>170 +,p_event_sequence=>180 ,p_condition_element=>'P5_REPORT_SELECTOR' ,p_triggering_condition_type=>'EQUALS' ,p_triggering_expression=>'Monthly Product Unit Report' @@ -21563,7 +21692,7 @@ wwv_flow_api.create_page_da_action( wwv_flow_api.create_page_da_event( p_id=>wwv_flow_api.id(13975972745041436) ,p_name=>'ShowMonthlyCostReport' -,p_event_sequence=>180 +,p_event_sequence=>190 ,p_condition_element=>'P5_REPORT_SELECTOR' ,p_triggering_condition_type=>'EQUALS' ,p_triggering_expression=>'Monthly Cost Report' @@ -21593,7 +21722,7 @@ wwv_flow_api.create_page_da_action( wwv_flow_api.create_page_da_event( p_id=>wwv_flow_api.id(13976243106041439) ,p_name=>'ShowReportGroupOption' -,p_event_sequence=>190 +,p_event_sequence=>200 ,p_condition_element=>'P5_REPORT_SELECTOR' ,p_triggering_condition_type=>'IN_LIST' ,p_triggering_expression=>'Daily Cost Report,Weekly Cost Report,Monthly Cost Report' @@ -21630,16 +21759,21 @@ wwv_flow_api.create_page( ,p_name=>'Data Statistics' ,p_step_title=>'Data Statistics' ,p_autocomplete_on_off=>'OFF' +,p_inline_css=>wwv_flow_string.join(wwv_flow_t_varchar2( +'.a-IRR-table tr td[headers*="rep_col_grey"]', +'{', +' background-color: #efffff;', +'}')) ,p_page_template_options=>'#DEFAULT#' ,p_last_updated_by=>'ADIZOHAR' -,p_last_upd_yyyymmddhh24miss=>'20200506182015' +,p_last_upd_yyyymmddhh24miss=>'20200520121531' ); wwv_flow_api.create_page_plug( p_id=>wwv_flow_api.id(12552815670313326) ,p_plug_name=>'Usage Statistics - &P6_USAGE_SIZE.' ,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody' ,p_plug_template=>wwv_flow_api.id(9765042323688020) -,p_plug_display_sequence=>30 +,p_plug_display_sequence=>40 ,p_plug_display_point=>'BODY' ,p_query_type=>'SQL' ,p_plug_source=>wwv_flow_string.join(wwv_flow_t_varchar2( @@ -22060,6 +22194,178 @@ wwv_flow_api.create_worksheet_rpt( ,p_report_columns=>'TENANT_NAME:MIN_FILE_TIME:MAX_FILE_TIME:MIN_FILE_ID:MAX_FILE_ID:NUM_FILES:NUM_ROWS:AVG_COST_DAY:MAX_COST_DAY:NUM_FULL_DAYS:LAST_LOAD:AGENT_VERSION' ,p_sum_columns_on_break=>'NUM_ROWS:NUM_FILES' ); +wwv_flow_api.create_page_plug( + p_id=>wwv_flow_api.id(14188632778270027) +,p_plug_name=>'Cost Summary Last 7 Days' +,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody' +,p_component_template_options=>'#DEFAULT#' +,p_plug_template=>wwv_flow_api.id(9765042323688020) +,p_plug_display_sequence=>30 +,p_include_in_reg_disp_sel_yn=>'Y' +,p_plug_display_point=>'BODY' +,p_query_type=>'SQL' +,p_plug_source=>wwv_flow_string.join(wwv_flow_t_varchar2( +'select tenant_name, day7, day6, day5, day4, day3, day2, day1, greatest(day1,day2,day3,day4,day5,day6,day7)*365 year', +'from', +'(', +' select ', +' tenant_name,', +' sum(case when trunc(USAGE_INTERVAL_START) = trunc(sysdate-7) then COST_MY_COST else 0 end) DAY7,', +' sum(case when trunc(USAGE_INTERVAL_START) = trunc(sysdate-6) then COST_MY_COST else 0 end) DAY6,', +' sum(case when trunc(USAGE_INTERVAL_START) = trunc(sysdate-5) then COST_MY_COST else 0 end) DAY5,', +' sum(case when trunc(USAGE_INTERVAL_START) = trunc(sysdate-4) then COST_MY_COST else 0 end) DAY4,', +' sum(case when trunc(USAGE_INTERVAL_START) = trunc(sysdate-3) then COST_MY_COST else 0 end) DAY3,', +' sum(case when trunc(USAGE_INTERVAL_START) = trunc(sysdate-2) then COST_MY_COST else 0 end) DAY2,', +' sum(case when trunc(USAGE_INTERVAL_START) = trunc(sysdate-1) then COST_MY_COST else 0 end) DAY1,', +' sum(case when trunc(USAGE_INTERVAL_START) = trunc(sysdate-4) then COST_MY_COST else 0 end)*365 YEAR3 ', +' from oci_cost_stats', +' where ', +' tenant_name like ''%'' and', +' USAGE_INTERVAL_START > trunc(sysdate-8)', +' group by tenant_name', +')', +'order by 1', +'')) +,p_plug_source_type=>'NATIVE_IR' +,p_plug_query_options=>'DERIVED_REPORT_COLUMNS' +,p_prn_content_disposition=>'ATTACHMENT' +,p_prn_document_header=>'APEX' +,p_prn_units=>'INCHES' +,p_prn_paper_size=>'LETTER' +,p_prn_width=>8.5 +,p_prn_height=>11 +,p_prn_orientation=>'HORIZONTAL' +,p_prn_page_header_font_color=>'#000000' +,p_prn_page_header_font_family=>'Helvetica' +,p_prn_page_header_font_weight=>'normal' +,p_prn_page_header_font_size=>'12' +,p_prn_page_footer_font_color=>'#000000' +,p_prn_page_footer_font_family=>'Helvetica' +,p_prn_page_footer_font_weight=>'normal' +,p_prn_page_footer_font_size=>'12' +,p_prn_header_bg_color=>'#9bafde' +,p_prn_header_font_color=>'#000000' +,p_prn_header_font_family=>'Helvetica' +,p_prn_header_font_weight=>'normal' +,p_prn_header_font_size=>'10' +,p_prn_body_bg_color=>'#efefef' +,p_prn_body_font_color=>'#000000' +,p_prn_body_font_family=>'Helvetica' +,p_prn_body_font_weight=>'normal' +,p_prn_body_font_size=>'10' +,p_prn_border_width=>.5 +,p_prn_page_header_alignment=>'CENTER' +,p_prn_page_footer_alignment=>'CENTER' +); +wwv_flow_api.create_worksheet( + p_id=>wwv_flow_api.id(14188875057270029) +,p_max_row_count=>'1000000' +,p_show_nulls_as=>'-' +,p_pagination_type=>'ROWS_X_TO_Y' +,p_pagination_display_pos=>'BOTTOM_RIGHT' +,p_show_search_bar=>'N' +,p_show_detail_link=>'N' +,p_owner=>'ADIZOHAR' +,p_internal_uid=>14188875057270029 +); +wwv_flow_api.create_worksheet_column( + p_id=>wwv_flow_api.id(14188947516270030) +,p_db_column_name=>'TENANT_NAME' +,p_display_order=>10 +,p_column_identifier=>'A' +,p_column_label=>'Tenant Name' +,p_column_type=>'STRING' +); +wwv_flow_api.create_worksheet_column( + p_id=>wwv_flow_api.id(14189055837270031) +,p_db_column_name=>'DAY7' +,p_display_order=>20 +,p_column_identifier=>'B' +,p_column_label=>'&P6_DAY7.' +,p_column_type=>'NUMBER' +,p_column_alignment=>'RIGHT' +,p_format_mask=>'999G999G999G999G990D00' +); +wwv_flow_api.create_worksheet_column( + p_id=>wwv_flow_api.id(14189164915270032) +,p_db_column_name=>'DAY6' +,p_display_order=>30 +,p_column_identifier=>'C' +,p_column_label=>'&P6_DAY6.' +,p_column_type=>'NUMBER' +,p_column_alignment=>'RIGHT' +,p_format_mask=>'999G999G999G999G990D00' +); +wwv_flow_api.create_worksheet_column( + p_id=>wwv_flow_api.id(14189202068270033) +,p_db_column_name=>'DAY5' +,p_display_order=>40 +,p_column_identifier=>'D' +,p_column_label=>'&P6_DAY5.' +,p_column_type=>'NUMBER' +,p_column_alignment=>'RIGHT' +,p_format_mask=>'999G999G999G999G990D00' +); +wwv_flow_api.create_worksheet_column( + p_id=>wwv_flow_api.id(14189318043270034) +,p_db_column_name=>'DAY4' +,p_display_order=>50 +,p_column_identifier=>'E' +,p_column_label=>'&P6_DAY4.' +,p_column_type=>'NUMBER' +,p_column_alignment=>'RIGHT' +,p_format_mask=>'999G999G999G999G990D00' +); +wwv_flow_api.create_worksheet_column( + p_id=>wwv_flow_api.id(14189429637270035) +,p_db_column_name=>'DAY3' +,p_display_order=>60 +,p_column_identifier=>'F' +,p_column_label=>'&P6_DAY3.' +,p_column_type=>'NUMBER' +,p_column_alignment=>'RIGHT' +,p_format_mask=>'999G999G999G999G990D00' +); +wwv_flow_api.create_worksheet_column( + p_id=>wwv_flow_api.id(14189561008270036) +,p_db_column_name=>'DAY2' +,p_display_order=>70 +,p_column_identifier=>'G' +,p_column_label=>'&P6_DAY2.' +,p_column_type=>'NUMBER' +,p_column_alignment=>'RIGHT' +,p_format_mask=>'999G999G999G999G990D00' +); +wwv_flow_api.create_worksheet_column( + p_id=>wwv_flow_api.id(14189618941270037) +,p_db_column_name=>'DAY1' +,p_display_order=>80 +,p_column_identifier=>'H' +,p_column_label=>'&P6_DAY1.' +,p_column_type=>'NUMBER' +,p_column_alignment=>'RIGHT' +,p_format_mask=>'999G999G999G999G990D00' +); +wwv_flow_api.create_worksheet_column( + p_id=>wwv_flow_api.id(16672415759602103) +,p_db_column_name=>'YEAR' +,p_display_order=>90 +,p_column_identifier=>'J' +,p_column_label=>'Year Estimation' +,p_column_type=>'NUMBER' +,p_column_alignment=>'RIGHT' +,p_format_mask=>'999G999G999G999G990' +,p_static_id=>'rep_col_grey' +); +wwv_flow_api.create_worksheet_rpt( + p_id=>wwv_flow_api.id(16669557578557119) +,p_application_user=>'APXWS_DEFAULT' +,p_report_seq=>10 +,p_report_alias=>'166696' +,p_status=>'PUBLIC' +,p_is_default=>'Y' +,p_report_columns=>'TENANT_NAME:DAY7:DAY6:DAY5:DAY4:DAY3:DAY2:DAY1:YEAR:' +); wwv_flow_api.create_page_item( p_id=>wwv_flow_api.id(12555202081313350) ,p_name=>'P6_USAGE_SIZE' @@ -22082,6 +22388,118 @@ wwv_flow_api.create_page_item( ,p_display_as=>'NATIVE_HIDDEN' ,p_attribute_01=>'Y' ); +wwv_flow_api.create_page_item( + p_id=>wwv_flow_api.id(14189745953270038) +,p_name=>'P6_DAY1' +,p_item_sequence=>10 +,p_item_plug_id=>wwv_flow_api.id(14188632778270027) +,p_display_as=>'NATIVE_HIDDEN' +,p_attribute_01=>'Y' +); +wwv_flow_api.create_page_item( + p_id=>wwv_flow_api.id(14189972710270040) +,p_name=>'P6_DAY2' +,p_item_sequence=>20 +,p_item_plug_id=>wwv_flow_api.id(14188632778270027) +,p_display_as=>'NATIVE_HIDDEN' +,p_attribute_01=>'Y' +); +wwv_flow_api.create_page_item( + p_id=>wwv_flow_api.id(14190110518270042) +,p_name=>'P6_DAY3' +,p_item_sequence=>30 +,p_item_plug_id=>wwv_flow_api.id(14188632778270027) +,p_display_as=>'NATIVE_HIDDEN' +,p_attribute_01=>'Y' +); +wwv_flow_api.create_page_item( + p_id=>wwv_flow_api.id(14190215017270043) +,p_name=>'P6_DAY4' +,p_item_sequence=>40 +,p_item_plug_id=>wwv_flow_api.id(14188632778270027) +,p_display_as=>'NATIVE_HIDDEN' +,p_attribute_01=>'Y' +); +wwv_flow_api.create_page_item( + p_id=>wwv_flow_api.id(14190314422270044) +,p_name=>'P6_DAY5' +,p_item_sequence=>50 +,p_item_plug_id=>wwv_flow_api.id(14188632778270027) +,p_display_as=>'NATIVE_HIDDEN' +,p_attribute_01=>'Y' +); +wwv_flow_api.create_page_item( + p_id=>wwv_flow_api.id(14190487872270045) +,p_name=>'P6_DAY6' +,p_item_sequence=>60 +,p_item_plug_id=>wwv_flow_api.id(14188632778270027) +,p_display_as=>'NATIVE_HIDDEN' +,p_attribute_01=>'Y' +); +wwv_flow_api.create_page_item( + p_id=>wwv_flow_api.id(14190567586270046) +,p_name=>'P6_DAY7' +,p_item_sequence=>70 +,p_item_plug_id=>wwv_flow_api.id(14188632778270027) +,p_display_as=>'NATIVE_HIDDEN' +,p_attribute_01=>'Y' +); +wwv_flow_api.create_page_computation( + p_id=>wwv_flow_api.id(14189861715270039) +,p_computation_sequence=>10 +,p_computation_item=>'P6_DAY1' +,p_computation_point=>'BEFORE_BOX_BODY' +,p_computation_type=>'QUERY' +,p_computation=>'select to_char(trunc(sysdate-1),''DD-MON-YYYY'') val from dual' +); +wwv_flow_api.create_page_computation( + p_id=>wwv_flow_api.id(14190030026270041) +,p_computation_sequence=>20 +,p_computation_item=>'P6_DAY2' +,p_computation_point=>'BEFORE_BOX_BODY' +,p_computation_type=>'QUERY' +,p_computation=>'select to_char(trunc(sysdate-2),''DD-MON-YYYY'') val from dual' +); +wwv_flow_api.create_page_computation( + p_id=>wwv_flow_api.id(14190665626270047) +,p_computation_sequence=>30 +,p_computation_item=>'P6_DAY3' +,p_computation_point=>'BEFORE_BOX_BODY' +,p_computation_type=>'QUERY' +,p_computation=>'select to_char(trunc(sysdate-3),''DD-MON-YYYY'') val from dual' +); +wwv_flow_api.create_page_computation( + p_id=>wwv_flow_api.id(14190773992270048) +,p_computation_sequence=>40 +,p_computation_item=>'P6_DAY4' +,p_computation_point=>'BEFORE_BOX_BODY' +,p_computation_type=>'QUERY' +,p_computation=>'select to_char(trunc(sysdate-4),''DD-MON-YYYY'') val from dual' +); +wwv_flow_api.create_page_computation( + p_id=>wwv_flow_api.id(14190860366270049) +,p_computation_sequence=>50 +,p_computation_item=>'P6_DAY5' +,p_computation_point=>'BEFORE_BOX_BODY' +,p_computation_type=>'QUERY' +,p_computation=>'select to_char(trunc(sysdate-5),''DD-MON-YYYY'') val from dual' +); +wwv_flow_api.create_page_computation( + p_id=>wwv_flow_api.id(14190996091270050) +,p_computation_sequence=>60 +,p_computation_item=>'P6_DAY6' +,p_computation_point=>'BEFORE_BOX_BODY' +,p_computation_type=>'QUERY' +,p_computation=>'select to_char(trunc(sysdate-6),''DD-MON-YYYY'') val from dual' +); +wwv_flow_api.create_page_computation( + p_id=>wwv_flow_api.id(16672287011602101) +,p_computation_sequence=>70 +,p_computation_item=>'P6_DAY7' +,p_computation_point=>'BEFORE_BOX_BODY' +,p_computation_type=>'QUERY' +,p_computation=>'select to_char(trunc(sysdate-7),''DD-MON-YYYY'') val from dual' +); end; / prompt --application/pages/page_00007 diff --git a/examples/usage_reports_to_adw/step_by_step_installation.md b/examples/usage_reports_to_adw/step_by_step_installation.md index 6e865a7d1c..540e7dde98 100644 --- a/examples/usage_reports_to_adw/step_by_step_installation.md +++ b/examples/usage_reports_to_adw/step_by_step_installation.md @@ -125,7 +125,7 @@ Oracle Application Express (APEX) will be used for reporting. # setup oracle home variables # Add the below to $HOME/.bashrc: - export CLIENT_HOME=/usr/lib/oracle/18.3/client64 + export CLIENT_HOME=/usr/lib/oracle/19.6/client64 export LD_LIBRARY_PATH=$CLIENT_HOME/lib export PATH=$PATH:$CLIENT_HOME/bin export TNS_ADMIN=$HOME/ADWCUSG diff --git a/src/oci/auth/__init__.py b/src/oci/auth/__init__.py index 29e517993f..1566c7262d 100644 --- a/src/oci/auth/__init__.py +++ b/src/oci/auth/__init__.py @@ -8,3 +8,4 @@ from . import security_token_container # noqa: F401 from . import session_key_supplier # noqa: F401 from . import signers # noqa: F401 +from . import rpt_path_providers # noqa: F401 diff --git a/src/oci/auth/rpt_path_providers.py b/src/oci/auth/rpt_path_providers.py new file mode 100644 index 0000000000..d2d1b21175 --- /dev/null +++ b/src/oci/auth/rpt_path_providers.py @@ -0,0 +1,139 @@ +# 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. + +from __future__ import absolute_import +import abc +import os +import logging + +from oci._vendor import requests + +from .signers.instance_principals_security_token_signer import InstancePrincipalsSecurityTokenSigner + +OCI_RESOURCE_PRINCIPAL_RPT_PATH = "OCI_RESOURCE_PRINCIPAL_RPT_PATH" +OCI_RESOURCE_PRINCIPAL_RPT_ID = "OCI_RESOURCE_PRINCIPAL_RPT_ID" +IMDS_PATH_TEMPLATE = "/20180711/resourcePrincipalToken/{id}" +METADATA_AUTH_HEADERS = {'Authorization': 'Bearer Oracle'} + +logger = logging.getLogger(__name__) + + +class RptPathProviderInterface(object): + """An informal interface which returns the complete RPT path""" + def get_path(self): + pass + + +class StringRptPathProvider(RptPathProviderInterface): + def __init__(self, path): + self.path = path + logger.debug("Found String RPT Path Provider with path {}".format(path)) + + def get_path(self): + return self.path + + +class AbstractRptPathProvider(RptPathProviderInterface): + """This abstract path provider has a string template with placeholders like {id}, + and provides a way to get a mapping of substitutions to fill in""" + __metaclass__ = abc.ABCMeta + + def __init__(self, path_template): + self.path_template = path_template + + def get_path(self): + replacements = self.get_replacements() + path = self.path_template.format(**replacements) + logger.debug("Using path {}".format(path)) + return path + + @abc.abstractmethod + def get_replacements(self): + pass + + +class ImdsRptPathProvider(AbstractRptPathProvider): + def __init__(self): + super(ImdsRptPathProvider, self).__init__(self.get_path_template()) + self.replacements = self.build_replacements() + + def get_replacements(self): + return self.replacements + + def get_path_template(self): + return IMDS_PATH_TEMPLATE + + def build_replacements(self): + # Get instance ID from IMDS + return {'id': get_instance_id_from_imds()} + + +class EnvRptPathProvider(AbstractRptPathProvider): + def __init__(self): + super(EnvRptPathProvider, self).__init__(self.get_path_template()) + self.replacements = self.build_replacements() + + def get_replacements(self): + return self.replacements + + def get_path_template(self): + return os.environ.get(OCI_RESOURCE_PRINCIPAL_RPT_PATH) + + def build_replacements(self): + rpt_id = os.environ.get(OCI_RESOURCE_PRINCIPAL_RPT_ID) + if rpt_id: + return {'id': rpt_id} + return None + + +class DefaultRptPathProvider(AbstractRptPathProvider): + """ + This path provider makes sure the behavior happens with the correct fallback. + + For the path, + Use the contents of the OCI_RESOURCE_PRINCIPAL_RPT_PATH environment variable, if set. + Otherwise, use the current path: "/20180711/resourcePrincipalToken/{id}" + + For the resource id, + Use the contents of the OCI_RESOURCE_PRINCIPAL_RPT_ID environment variable, if set. + Otherwise, use IMDS to get the instance id + + This path provider is used when the caller doesn't provide a specific path provider to the resource principals signer + """ + + def __init__(self): + logger.debug("A path provider was not specified, using DefaultRptPathProvider") + self.env_rpt_path_provider = EnvRptPathProvider() + self.imds_rpt_path_provider = ImdsRptPathProvider() + super(DefaultRptPathProvider, self).__init__(self.get_path_template()) + self.replacements = self.build_replacements() + + def get_path_template(self): + path_template = self.env_rpt_path_provider.get_path_template() + if not path_template: + logger.debug("Unable to get path template from {} env variable, using IMDS template".format(OCI_RESOURCE_PRINCIPAL_RPT_PATH)) + path_template = self.imds_rpt_path_provider.get_path_template() + logger.debug("The path template is {}".format(path_template)) + return path_template + + def build_replacements(self): + replacements = self.env_rpt_path_provider.build_replacements() + if not replacements: + logger.debug("Unable to get replacements from {} env variable, getting replacements from IMDS".format(OCI_RESOURCE_PRINCIPAL_RPT_ID)) + replacements = self.imds_rpt_path_provider.build_replacements() + logger.debug("The replacement dict is {}".format(replacements)) + return replacements + + def get_replacements(self): + return self.replacements + + +def get_instance_id_from_imds(): + # Get the instance id from the metadata service + # TODO add error checks to ensure instance_id was retrieved. + endpoint = '{}/instance/id'.format(InstancePrincipalsSecurityTokenSigner.METADATA_URL_BASE) + # Set the connect time out to 10 seconds and the read time out to 60 seconds. + timeout = (10, 60) + response = requests.get(endpoint, timeout=timeout, headers=METADATA_AUTH_HEADERS) + return response.text.strip().lower() diff --git a/src/oci/auth/signers/__init__.py b/src/oci/auth/signers/__init__.py index ddb4779506..7c467a6ddc 100644 --- a/src/oci/auth/signers/__init__.py +++ b/src/oci/auth/signers/__init__.py @@ -5,5 +5,6 @@ from .security_token_signer import SecurityTokenSigner, X509FederationClientBasedSecurityTokenSigner # noqa: F401 from .instance_principals_security_token_signer import InstancePrincipalsSecurityTokenSigner # noqa: F401 from .instance_principals_delegation_token_signer import InstancePrincipalsDelegationTokenSigner # noqa: F401 +from .resource_principals_federation_signer import ResourcePrincipalsFederationSigner # noqa: F401 from .ephemeral_resource_principals_signer import EphemeralResourcePrincipalSigner # noqa: F401 from .resource_principals_signer import get_resource_principals_signer # noqa: F401 diff --git a/src/oci/auth/signers/resource_principals_federation_signer.py b/src/oci/auth/signers/resource_principals_federation_signer.py new file mode 100644 index 0000000000..5ac03cd825 --- /dev/null +++ b/src/oci/auth/signers/resource_principals_federation_signer.py @@ -0,0 +1,169 @@ +# 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 json +import threading +import oci +from .instance_principals_security_token_signer import InstancePrincipalsSecurityTokenSigner +from .security_token_signer import SecurityTokenSigner +from ..security_token_container import SecurityTokenContainer +from ..session_key_supplier import SessionKeySupplier +from .. import auth_utils +from cryptography.hazmat.primitives.serialization import Encoding, PublicFormat +from ..rpt_path_providers import DefaultRptPathProvider + + +class ResourcePrincipalsFederationSigner(SecurityTokenSigner): + METADATA_AUTH_HEADERS = {'Authorization': 'Bearer Oracle'} + + def __init__(self, resource_principal_token_endpoint=None, resource_principal_session_token_endpoint=None, + resource_principal_token_path_provider=None, retry_strategy=None, log_requests=None): + """ + :param resource_principal_token_endpoint: The endpoint that can provide the resource principal token. This is + a service endpoint. + :param resource_principal_session_token_endpoint: The endpoint that can provide the resource principal session token. + This will default to the auth federation endpoint if not provided. + :param resource_principal_token_path_provider: An object of a class which implements RptPathProviderInterface that can provide the + path for resource principal token. If not set, use + DefaultRptPathProvider to determine the path + """ + self.resource_principal_token_path_provider = resource_principal_token_path_provider or DefaultRptPathProvider() + self.resource_principal_token_path = self.resource_principal_token_path_provider.get_path() + + self._reset_signers_lock = threading.Lock() + if resource_principal_token_endpoint: + self.resource_principal_token_endpoint = resource_principal_token_endpoint + else: + raise ValueError("resource_principal_token_endpoint must be provided") + + self.instance_principal_signer = InstancePrincipalsSecurityTokenSigner() + self.session_key_supplier = SessionKeySupplier() + self.region = self.instance_principal_signer.initialize_and_return_region() + self.tenancy_id = self.instance_principal_signer.tenancy_id + + if resource_principal_session_token_endpoint: + self.resource_principal_session_token_endpoint = resource_principal_session_token_endpoint + else: + self.resource_principal_session_token_endpoint = oci.regions.endpoint_for('auth', self.region) + + if retry_strategy: + self.retry_strategy = retry_strategy + else: + self.retry_strategy = oci.retry.DEFAULT_RETRY_STRATEGY + + # Holders for the tokens needed. + self.rpt = None + self.spst = None + + # Setup the base_client for calls to Service to get Resource Principal Token + # and Service Principal Sesion Token + + # The config is not needed by when using the instance principals signer, but request logging could be enabled. + config = {} + if log_requests: + config["log_requests"] = log_requests + + self.base_client = oci.BaseClient("", # No service + config, + self.instance_principal_signer, + {}, # No type mapping + region_client=False, + service_endpoint=self.resource_principal_token_endpoint) + + # Get the Resource Principal Session Token and use it to set up the signer + self.rpst = self.get_security_token() + super(ResourcePrincipalsFederationSigner, self).__init__(self.rpst, self.session_key_supplier.get_key_pair()['private']) + + def get_security_token(self): + if hasattr(self, 'security_token'): + if self.security_token.valid_with_jitter(): + return self.security_token.security_token + + return self._refresh_security_token_inner() + + def refresh_security_token(self): + return self._refresh_security_token_inner() + + def _refresh_security_token_inner(self): + self._reset_signers_lock.acquire() + try: + self.session_key_supplier.refresh() + self.instance_principal_signer.refresh_security_token() + + # Get RPT blob, Service Principal Session Token from service, Steps A.1 and B.1 + self.rpt, self.spst = self._get_resource_principal_token_and_service_principal_session_token() + + # Get RPST token from itentity, steps A.2 and B.2 + self.security_token = SecurityTokenContainer(self.session_key_supplier, self._get_resource_principal_session_token()) + return self.security_token.security_token + finally: + self._reset_signers_lock.release() + + def _get_resource_principal_token_and_service_principal_session_token(self): + """ + Get the Resource Principal Token and the Service Principal Session Token + + This makes a call to the resource_principal_token_endpoint which is + defined by the service. + """ + method = "get" + self.base_client.endpoint = self.resource_principal_token_endpoint + + response = self.make_call(method, self.resource_principal_token_path) + parsed_response = json.loads(response.data.decode('UTF-8')) + return parsed_response['resourcePrincipalToken'], parsed_response['servicePrincipalSessionToken'] + + def _get_resource_principal_session_token(self): + """ + Get the Resource Principal Session Token + """ + method = "post" + resource_path = "/v1/resourcePrincipalSessionToken" + + self.base_client.endpoint = self.resource_principal_session_token_endpoint + + public_key = self.session_key_supplier.get_key_pair()['public'] + sanitized_public_key = auth_utils.sanitize_certificate_string(public_key.public_bytes(Encoding.PEM, PublicFormat.SubjectPublicKeyInfo)) + + request_payload = { + 'resourcePrincipalToken': self.rpt, + 'servicePrincipalSessionToken': self.spst, + 'sessionPublicKey': sanitized_public_key + } + + # The base client will convert the payload to JSON, but won't update the content length, so we need to + # it here. + json_request_payload = json.dumps(request_payload) + header_params = {'content-type': 'application/json', + 'Content-Length': str(len(json_request_payload))} + response = self.make_call(method, resource_path, header_params=header_params, body=request_payload) + parsed_response = json.loads(response.data.decode('UTF-8')) + + return parsed_response['token'] + + def make_call(self, method, resource_path, path_params=None, header_params=None, body=None): + """ + make_call + + Normally this would be part of the generated client. In this case the endpoint for the + Resource Principal Token is not part of the generated client, so we need the same + behavior here. + """ + if self.retry_strategy: + return self.retry_strategy.make_retrying_call( + self.base_client.call_api, + resource_path=resource_path, + method=method, + path_params=path_params, + header_params=header_params, + body=body, + response_type=oci.base_client.BYTES_RESPONSE_TYPE) + else: + return self.base_client.call_api( + resource_path=resource_path, + method=method, + path_params=path_params, + header_params=header_params, + body=body, + response_type=oci.base_client.BYTES_RESPONSE_TYPE) diff --git a/src/oci/auth/signers/resource_principals_signer.py b/src/oci/auth/signers/resource_principals_signer.py index 957f06dee7..5e9ad806ed 100644 --- a/src/oci/auth/signers/resource_principals_signer.py +++ b/src/oci/auth/signers/resource_principals_signer.py @@ -3,6 +3,7 @@ # 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 os +from .resource_principals_federation_signer import ResourcePrincipalsFederationSigner from .ephemeral_resource_principals_signer import EphemeralResourcePrincipalSigner OCI_RESOURCE_PRINCIPAL_VERSION = "OCI_RESOURCE_PRINCIPAL_VERSION" @@ -10,9 +11,11 @@ OCI_RESOURCE_PRINCIPAL_PRIVATE_PEM = "OCI_RESOURCE_PRINCIPAL_PRIVATE_PEM" OCI_RESOURCE_PRINCIPAL_PRIVATE_PEM_PASSPHRASE = "OCI_RESOURCE_PRINCIPAL_PRIVATE_PEM_PASSPHRASE" OCI_RESOURCE_PRINCIPAL_REGION = "OCI_RESOURCE_PRINCIPAL_REGION" +OCI_RESOURCE_PRINCIPAL_RPT_ENDPOINT = "OCI_RESOURCE_PRINCIPAL_RPT_ENDPOINT" +OCI_RESOURCE_PRINCIPAL_RPST_ENDPOINT = "OCI_RESOURCE_PRINCIPAL_RPST_ENDPOINT" -def get_resource_principals_signer(): +def get_resource_principals_signer(resource_principal_token_path_provider=None): """ A Resource Principals signer is token based signer. The flavor of resource principals signer required is determined by the configured environment of @@ -20,6 +23,7 @@ def get_resource_principals_signer(): returns: a resource principals signer """ + rp_version = os.environ.get(OCI_RESOURCE_PRINCIPAL_VERSION, "UNDEFINED") if rp_version == "2.2": """ @@ -51,6 +55,22 @@ def get_resource_principals_signer(): private_key=private_key, private_key_passphrase=private_key_passphrase, region=region) + + elif rp_version == "1.1": + """ + This signer takes its configuration from the following environement variables + - OCI_RESOURCE_PRINCIPAL_RPT_ENDPOINT + The endpoint for retreiving the Resource Principal Token + - OCI_RESOURCE_PRINCIPAL_RPST_ENDPOINT + The endpoint for retrieving the Resource Principal Session Token + """ + resource_principal_token_endpoint = os.environ.get(OCI_RESOURCE_PRINCIPAL_RPT_ENDPOINT) + resource_principal_session_token_endpoint = os.environ.get(OCI_RESOURCE_PRINCIPAL_RPST_ENDPOINT) + + return ResourcePrincipalsFederationSigner(resource_principal_token_endpoint=resource_principal_token_endpoint, + resource_principal_session_token_endpoint=resource_principal_session_token_endpoint, + resource_principal_token_path_provider=resource_principal_token_path_provider) + elif rp_version == "UNDEFINED": raise EnvironmentError("{} is not defined".format(OCI_RESOURCE_PRINCIPAL_VERSION)) else: diff --git a/src/oci/marketplace/marketplace_client.py b/src/oci/marketplace/marketplace_client.py index 0d53013e9b..fe80c71148 100644 --- a/src/oci/marketplace/marketplace_client.py +++ b/src/oci/marketplace/marketplace_client.py @@ -155,7 +155,7 @@ def create_accepted_agreement(self, create_accepted_agreement_details, **kwargs) body=create_accepted_agreement_details, response_type="AcceptedAgreement") - def delete_accepted_agreement(self, accepted_agreement_id, signature, **kwargs): + def delete_accepted_agreement(self, accepted_agreement_id, **kwargs): """ Removes a previously accepted terms of use agreement from the list of agreements that Marketplace checks before initiating a deployment. Listings in the Marketplace that require acceptance of the specified terms @@ -165,10 +165,8 @@ def delete_accepted_agreement(self, accepted_agreement_id, signature, **kwargs): :param str accepted_agreement_id: (required) The unique identifier for the accepted terms of use agreement. - :param str signature: (required) - A signature generated for the listing package terms of use agreements that you can retrieve with a `GetAgreement`__ API call. - - __ https://docs.cloud.oracle.com/en-us/iaas/api/#/en/marketplace/latest/Agreement/GetAgreement + :param str signature: (optional) + Deprecated. The signature value is ignored. :param str opc_request_id: (optional) Unique Oracle-assigned identifier for the request. If you need to contact Oracle about a particular request, @@ -196,6 +194,7 @@ def delete_accepted_agreement(self, accepted_agreement_id, signature, **kwargs): # Don't accept unknown kwargs expected_kwargs = [ "retry_strategy", + "signature", "opc_request_id", "if_match" ] @@ -215,7 +214,7 @@ def delete_accepted_agreement(self, accepted_agreement_id, signature, **kwargs): raise ValueError('Parameter {} cannot be None, whitespace or empty string'.format(k)) query_params = { - "signature": signature + "signature": kwargs.get("signature", missing) } query_params = {k: v for (k, v) in six.iteritems(query_params) if v is not missing and v is not None} diff --git a/src/oci/marketplace/models/image_listing_package.py b/src/oci/marketplace/models/image_listing_package.py index decbf0b40f..7779332101 100644 --- a/src/oci/marketplace/models/image_listing_package.py +++ b/src/oci/marketplace/models/image_listing_package.py @@ -56,6 +56,10 @@ def __init__(self, **kwargs): The value to assign to the app_catalog_listing_resource_version property of this ImageListingPackage. :type app_catalog_listing_resource_version: str + :param image_id: + The value to assign to the image_id property of this ImageListingPackage. + :type image_id: str + :param regions: The value to assign to the regions property of this ImageListingPackage. :type regions: list[Region] @@ -71,6 +75,7 @@ def __init__(self, **kwargs): 'time_created': 'datetime', 'app_catalog_listing_id': 'str', 'app_catalog_listing_resource_version': 'str', + 'image_id': 'str', 'regions': 'list[Region]' } @@ -84,6 +89,7 @@ def __init__(self, **kwargs): 'time_created': 'timeCreated', 'app_catalog_listing_id': 'appCatalogListingId', 'app_catalog_listing_resource_version': 'appCatalogListingResourceVersion', + 'image_id': 'imageId', 'regions': 'regions' } @@ -96,6 +102,7 @@ def __init__(self, **kwargs): self._time_created = None self._app_catalog_listing_id = None self._app_catalog_listing_resource_version = None + self._image_id = None self._regions = None self._package_type = 'IMAGE' @@ -151,11 +158,35 @@ def app_catalog_listing_resource_version(self, app_catalog_listing_resource_vers """ self._app_catalog_listing_resource_version = app_catalog_listing_resource_version + @property + def image_id(self): + """ + Gets the image_id of this ImageListingPackage. + The id of the image corresponding to the package. + + + :return: The image_id of this ImageListingPackage. + :rtype: str + """ + return self._image_id + + @image_id.setter + def image_id(self, image_id): + """ + Sets the image_id of this ImageListingPackage. + The id of the image corresponding to the package. + + + :param image_id: The image_id of this ImageListingPackage. + :type: str + """ + self._image_id = image_id + @property def regions(self): """ Gets the regions of this ImageListingPackage. - The regions where the listing is available. + List of regions in which this ListingPackage is available. :return: The regions of this ImageListingPackage. @@ -167,7 +198,7 @@ def regions(self): def regions(self, regions): """ Sets the regions of this ImageListingPackage. - The regions where the listing is available. + List of regions in which this ListingPackage is available. :param regions: The regions of this ImageListingPackage. diff --git a/src/oci/marketplace/models/listing.py b/src/oci/marketplace/models/listing.py index 13051f473c..4217311697 100644 --- a/src/oci/marketplace/models/listing.py +++ b/src/oci/marketplace/models/listing.py @@ -745,7 +745,7 @@ def banner(self, banner): def regions(self): """ Gets the regions of this Listing. - The regions where the listing is available. + The regions where the listing is eligible to be deployed. :return: The regions of this Listing. @@ -757,7 +757,7 @@ def regions(self): def regions(self, regions): """ Sets the regions of this Listing. - The regions where the listing is available. + The regions where the listing is eligible to be deployed. :param regions: The regions of this Listing. diff --git a/src/oci/marketplace/models/listing_package_summary.py b/src/oci/marketplace/models/listing_package_summary.py index 3041802a84..0333b73210 100644 --- a/src/oci/marketplace/models/listing_package_summary.py +++ b/src/oci/marketplace/models/listing_package_summary.py @@ -40,6 +40,10 @@ def __init__(self, **kwargs): Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. :type package_type: str + :param regions: + The value to assign to the regions property of this ListingPackageSummary. + :type regions: list[Region] + :param resource_id: The value to assign to the resource_id property of this ListingPackageSummary. :type resource_id: str @@ -53,6 +57,7 @@ def __init__(self, **kwargs): 'listing_id': 'str', 'package_version': 'str', 'package_type': 'str', + 'regions': 'list[Region]', 'resource_id': 'str', 'time_created': 'datetime' } @@ -61,6 +66,7 @@ def __init__(self, **kwargs): 'listing_id': 'listingId', 'package_version': 'packageVersion', 'package_type': 'packageType', + 'regions': 'regions', 'resource_id': 'resourceId', 'time_created': 'timeCreated' } @@ -68,6 +74,7 @@ def __init__(self, **kwargs): self._listing_id = None self._package_version = None self._package_type = None + self._regions = None self._resource_id = None self._time_created = None @@ -149,6 +156,30 @@ def package_type(self, package_type): package_type = 'UNKNOWN_ENUM_VALUE' self._package_type = package_type + @property + def regions(self): + """ + Gets the regions of this ListingPackageSummary. + The regions where the package is eligible to be deployed. + + + :return: The regions of this ListingPackageSummary. + :rtype: list[Region] + """ + return self._regions + + @regions.setter + def regions(self, regions): + """ + Sets the regions of this ListingPackageSummary. + The regions where the package is eligible to be deployed. + + + :param regions: The regions of this ListingPackageSummary. + :type: list[Region] + """ + self._regions = regions + @property def resource_id(self): """ diff --git a/src/oci/marketplace/models/listing_summary.py b/src/oci/marketplace/models/listing_summary.py index 4fcc6504ee..6fcbedc131 100644 --- a/src/oci/marketplace/models/listing_summary.py +++ b/src/oci/marketplace/models/listing_summary.py @@ -70,6 +70,10 @@ def __init__(self, **kwargs): Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. :type pricing_types: list[str] + :param regions: + The value to assign to the regions property of this ListingSummary. + :type regions: list[Region] + :param is_featured: The value to assign to the is_featured property of this ListingSummary. :type is_featured: bool @@ -91,6 +95,7 @@ def __init__(self, **kwargs): 'icon': 'UploadData', 'package_type': 'str', 'pricing_types': 'list[str]', + 'regions': 'list[Region]', 'is_featured': 'bool', 'categories': 'list[str]', 'publisher': 'PublisherSummary' @@ -104,6 +109,7 @@ def __init__(self, **kwargs): 'icon': 'icon', 'package_type': 'packageType', 'pricing_types': 'pricingTypes', + 'regions': 'regions', 'is_featured': 'isFeatured', 'categories': 'categories', 'publisher': 'publisher' @@ -116,6 +122,7 @@ def __init__(self, **kwargs): self._icon = None self._package_type = None self._pricing_types = None + self._regions = None self._is_featured = None self._categories = None self._publisher = None @@ -296,6 +303,30 @@ def pricing_types(self, pricing_types): pricing_types[:] = ['UNKNOWN_ENUM_VALUE' if not value_allowed_none_or_none_sentinel(x, allowed_values) else x for x in pricing_types] self._pricing_types = pricing_types + @property + def regions(self): + """ + Gets the regions of this ListingSummary. + The regions where the listing is eligible to be deployed. + + + :return: The regions of this ListingSummary. + :rtype: list[Region] + """ + return self._regions + + @regions.setter + def regions(self, regions): + """ + Sets the regions of this ListingSummary. + The regions where the listing is eligible to be deployed. + + + :param regions: The regions of this ListingSummary. + :type: list[Region] + """ + self._regions = regions + @property def is_featured(self): """ diff --git a/src/oci/marketplace/models/orchestration_listing_package.py b/src/oci/marketplace/models/orchestration_listing_package.py index 050b939cc3..42a5648843 100644 --- a/src/oci/marketplace/models/orchestration_listing_package.py +++ b/src/oci/marketplace/models/orchestration_listing_package.py @@ -56,6 +56,10 @@ def __init__(self, **kwargs): The value to assign to the variables property of this OrchestrationListingPackage. :type variables: list[OrchestrationVariable] + :param regions: + The value to assign to the regions property of this OrchestrationListingPackage. + :type regions: list[Region] + """ self.swagger_types = { 'description': 'str', @@ -66,7 +70,8 @@ def __init__(self, **kwargs): 'resource_id': 'str', 'time_created': 'datetime', 'resource_link': 'str', - 'variables': 'list[OrchestrationVariable]' + 'variables': 'list[OrchestrationVariable]', + 'regions': 'list[Region]' } self.attribute_map = { @@ -78,7 +83,8 @@ def __init__(self, **kwargs): 'resource_id': 'resourceId', 'time_created': 'timeCreated', 'resource_link': 'resourceLink', - 'variables': 'variables' + 'variables': 'variables', + 'regions': 'regions' } self._description = None @@ -90,6 +96,7 @@ def __init__(self, **kwargs): self._time_created = None self._resource_link = None self._variables = None + self._regions = None self._package_type = 'ORCHESTRATION' @property @@ -140,6 +147,30 @@ def variables(self, variables): """ self._variables = variables + @property + def regions(self): + """ + Gets the regions of this OrchestrationListingPackage. + List of regions in which this ListingPackage is available. + + + :return: The regions of this OrchestrationListingPackage. + :rtype: list[Region] + """ + return self._regions + + @regions.setter + def regions(self, regions): + """ + Sets the regions of this OrchestrationListingPackage. + List of regions in which this ListingPackage is available. + + + :param regions: The regions of this OrchestrationListingPackage. + :type: list[Region] + """ + self._regions = regions + def __repr__(self): return formatted_flat_dict(self) diff --git a/src/oci/marketplace/models/region.py b/src/oci/marketplace/models/region.py index 2513704186..38683b7e79 100644 --- a/src/oci/marketplace/models/region.py +++ b/src/oci/marketplace/models/region.py @@ -10,7 +10,7 @@ @init_model_state_from_kwargs class Region(object): """ - The model for regions supported by a listing. + The model for regions supported by a listing and package. """ def __init__(self, **kwargs): diff --git a/src/oci/regions.py b/src/oci/regions.py index 7dbd93b347..bc1f413ba0 100644 --- a/src/oci/regions.py +++ b/src/oci/regions.py @@ -33,7 +33,8 @@ 'ams': 'eu-amsterdam-1', 'jed': 'me-jeddah-1', 'yul': 'ca-montreal-1', - 'hyd': 'ap-hyderabad-1' + 'hyd': 'ap-hyderabad-1', + 'yny': 'ap-chuncheon-1' } REGION_REALMS = { 'ap-melbourne-1': 'oc1', @@ -43,6 +44,7 @@ 'ap-seoul-1': 'oc1', 'ap-sydney-1': 'oc1', 'ap-tokyo-1': 'oc1', + 'ap-chuncheon-1': 'oc1', 'us-phoenix-1': 'oc1', 'us-ashburn-1': 'oc1', 'eu-amsterdam-1': 'oc1', @@ -77,6 +79,7 @@ "ap-seoul-1", "ap-sydney-1", "ap-tokyo-1", + "ap-chuncheon-1", "us-phoenix-1", "us-ashburn-1", "eu-amsterdam-1", diff --git a/src/oci/retry/retry.py b/src/oci/retry/retry.py index 39a05c74b9..318eefc934 100644 --- a/src/oci/retry/retry.py +++ b/src/oci/retry/retry.py @@ -283,7 +283,7 @@ def do_sleep(self, attempt, exception): class ExponentialBackoffWithFullJitterRetryStrategy(ExponentialBackoffRetryStrategyBase): """ - A retry strategy which does exponential backoff and full jitter. Times used are in milliseconds and + A retry strategy which does exponential backoff and full jitter. Times used are in seconds and the strategy can be described as: .. code-block:: none @@ -301,7 +301,7 @@ def __init__(self, base_sleep_time_seconds, exponent_growth_factor, max_wait_bet :param int exponent_growth_factor: The exponent part of our backoff. We will raise take this value and raising it to the power - of attemps and then multiply this with base_sleep_time_seconds + of attempts and then multiply this with base_sleep_time_seconds :param int max_wait_between_calls_seconds: The maximum time we will wait between calls, in seconds @@ -313,13 +313,14 @@ def __init__(self, base_sleep_time_seconds, exponent_growth_factor, max_wait_bet .__init__(base_sleep_time_seconds, exponent_growth_factor, max_wait_between_calls_seconds, checker_container, **kwargs) def do_sleep(self, attempt, exception): - sleep_time_millis = retry_sleep_utils.get_exponential_backoff_with_full_jitter_sleep_time(self.base_sleep_time_seconds, self.exponent_growth_factor, self.max_wait_between_calls_seconds, attempt) - time.sleep(sleep_time_millis / 1000.0) # time.sleep needs seconds, but can take fractional seconds + sleep_time_subseconds = retry_sleep_utils.get_exponential_backoff_with_full_jitter_sleep_time( + self.base_sleep_time_seconds, self.exponent_growth_factor, self.max_wait_between_calls_seconds, attempt) + time.sleep(sleep_time_subseconds) # time.sleep needs seconds, but can take fractional seconds class ExponentialBackoffWithEqualJitterRetryStrategy(ExponentialBackoffRetryStrategyBase): """ - A retry strategy which does exponential backoff and equal jitter. Times used are in milliseconds and + A retry strategy which does exponential backoff and equal jitter. Times used are in seconds and the strategy can be described as: .. code-block:: none @@ -356,9 +357,9 @@ def do_sleep(self, attempt, exception): class ExponentialBackoffWithFullJitterEqualForThrottlesRetryStrategy(ExponentialBackoffRetryStrategyBase): """ - A retry strategy that does exponential backoff and full jitter for most retries, but uses exponential backoff with equal - jitter for throttles. This provides a reasonable distribution of retry times for most retryable error cases, but for throttles - guarantees some sleep time + A retry strategy that does exponential backoff and full jitter for most retries, but uses exponential backoff with + equal jitter for throttles. This provides a reasonable distribution of retry times for most retryable error cases, + but for throttles guarantees some sleep time """ def __init__(self, base_sleep_time_seconds, exponent_growth_factor, max_wait_between_calls_seconds, checker_container, **kwargs): @@ -384,10 +385,13 @@ def __init__(self, base_sleep_time_seconds, exponent_growth_factor, max_wait_bet def do_sleep(self, attempt, exception): if isinstance(exception, ServiceError): if exception.status == 429: - sleep_time_seconds = retry_sleep_utils.get_exponential_backoff_with_equal_jitter_sleep_time(self.base_sleep_time_seconds, self.exponent_growth_factor, self.max_wait_between_calls_seconds, attempt) + sleep_time_seconds = retry_sleep_utils.get_exponential_backoff_with_equal_jitter_sleep_time( + self.base_sleep_time_seconds, self.exponent_growth_factor, self.max_wait_between_calls_seconds, attempt) else: - sleep_time_seconds = retry_sleep_utils.get_exponential_backoff_with_full_jitter_sleep_time(self.base_sleep_time_seconds, self.exponent_growth_factor, self.max_wait_between_calls_seconds, attempt) + sleep_time_seconds = retry_sleep_utils.get_exponential_backoff_with_full_jitter_sleep_time( + self.base_sleep_time_seconds, self.exponent_growth_factor, self.max_wait_between_calls_seconds, attempt) else: - sleep_time_seconds = retry_sleep_utils.get_exponential_backoff_with_full_jitter_sleep_time(self.base_sleep_time_seconds, self.exponent_growth_factor, self.max_wait_between_calls_seconds, attempt) + sleep_time_seconds = retry_sleep_utils.get_exponential_backoff_with_full_jitter_sleep_time( + self.base_sleep_time_seconds, self.exponent_growth_factor, self.max_wait_between_calls_seconds, attempt) time.sleep(sleep_time_seconds) diff --git a/src/oci/version.py b/src/oci/version.py index eedb55d60c..a2ab33ed2a 100644 --- a/src/oci/version.py +++ b/src/oci/version.py @@ -2,4 +2,4 @@ # 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. -__version__ = "2.14.3" +__version__ = "2.15.0" diff --git a/src/oci/waiter.py b/src/oci/waiter.py index 26d6dcbc85..86a47ffcf9 100644 --- a/src/oci/waiter.py +++ b/src/oci/waiter.py @@ -45,27 +45,32 @@ def wait_until(client, response, property=None, state=None, max_interval_seconds :param succeed_on_not_found: (optional) A boolean determining whether or not the waiter should return successfully if the data we're waiting on is not found (e.g. a 404 is returned from the service). This defaults to False and so a 404 would cause an exception to be thrown by this function. Setting it to True may be useful - in scenarios when waiting for a resource to be terminated/deleted since it is possible that the resource would not - be returned by the a GET call anymore. - :param evaluate_response: (optional) A function which can be used to evaluate the response from the GET operation. This is - a single argument function which takes in the response from the GET operation. If this function - is supplied, then the 'property' argument cannot be supplied. It is expected that this function return a truthy value - to signify that a condition has passed and the wait_until function should return, and a falsey value otherwise. - :param wait_callback: (optional) A function which will be called each time that we have to do an initial wait (i.e. because the - property of the resource was not in the correct state, or the ``evaluate_response`` function returned False). This function - should take two arguments - the first argument is the number of times we have checked the resource, and the second argument - is the result of the most recent check. + in scenarios when waiting for a resource to be terminated/deleted since it is possible that the resource would + not be returned by the a GET call anymore. + :param evaluate_response: (optional) A function which can be used to evaluate the response from the GET operation. + This is a single argument function which takes in the response from the GET operation. If this function is + supplied, then the 'property' argument cannot be supplied. It is expected that this function return a truthy + value to signify that a condition has passed and the wait_until function should return, and a falsey value otherwise. + :param wait_callback: (optional) A function which will be called each time that we have to do an initial wait (i.e. + because the property of the resource was not in the correct state, or the ``evaluate_response`` function returned + False). This function should take two arguments - the first argument is the number of times we have checked the + resource, and the second argument is the result of the most recent check. :param fetch_func: (optional) This function will be called to fetch the updated state from the server. This can be used if the call to check for state needs to be more complex than a single GET request. For example, if the goal is to wait until an item appears in a list, fetch_func can be a function that paginates through a full list on the server. + :return: The final response, which will contain the property in the specified state. - If the ``succeed_on_not_found`` parameter is set to True and the data was not then ``oci.waiter.WAIT_RESOURCE_NOT_FOUND`` will be returned. This is a :py:class:`~oci.util.Sentinel` which is not truthy and holds an internal name of ``WaitResourceNotFound``. + If the ``succeed_on_not_found`` parameter is set to True and the data was not then ``oci.waiter. + WAIT_RESOURCE_NOT_FOUND`` will be returned. This is a :py:class:`~oci.util.Sentinel` which is not truthy and + holds an internal name of ``WaitResourceNotFound``. """ if kwargs.get('evaluate_response') and (property): - raise ValueError('If an evaluate_response function is provided, then the property argument cannot also be provided') + raise ValueError('Invalid wait_until configuration - can not provide both evaluate_response function and property argument, only one should be specified') + elif not (kwargs.get('evaluate_response') or property): + raise RuntimeError('Invalid wait_until configuration - neither a property argument, nor an evaluate_response function, have been specified') if kwargs.get('fetch_func') is None: # if no custom fetch_func is provided, we only support waiting on a GET request @@ -86,20 +91,17 @@ def default_fetch_func(response=None): times_checked = 0 while True: - if kwargs.get('wait_callback') and times_checked > 0: - kwargs['wait_callback'](times_checked, response) - if property: if isinstance(state, tuple): if getattr(response.data, property) in state: return response elif getattr(response.data, property) == state: return response - elif kwargs.get('evaluate_response'): - if kwargs.get('evaluate_response')(response): - return response - else: - raise RuntimeError('Invalid wait_until configuration - neither a property, nor an evaluate_response function, have been specified') + elif kwargs.get('evaluate_response')(response): + return response + + if kwargs.get('wait_callback') and times_checked > 0: + kwargs['wait_callback'](times_checked, response) elapsed_seconds = (time.time() - start_time) diff --git a/tests/unit/test_waiters.py b/tests/unit/test_waiters.py index 980fbc0737..4fe7906a47 100644 --- a/tests/unit/test_waiters.py +++ b/tests/unit/test_waiters.py @@ -105,7 +105,7 @@ def test_wait_multiple_states(virtual_network, config): total_time = time.time() - start_time - # This should always be between 1 second and 5 minutes. + # This should always be under 5 minutes. assert total_time < 60 * 5 @@ -180,7 +180,7 @@ def test_property_and_eval_function_provided(virtual_network): with pytest.raises(ValueError) as ve: oci.wait_until(virtual_network, oci.Response(200, {}, None, oci.Request('GET', 'https://blah.example.org')), 'unit-test-prop', 'val', evaluate_response=lambda x: isinstance(x, object)) - assert str(ve.value) == 'If an evaluate_response function is provided, then the property argument cannot also be provided' + assert str(ve.value) == 'Invalid wait_until configuration - can not provide both evaluate_response function and property argument, only one should be specified' def test_eval_function_lambda(identity, config): @@ -252,6 +252,47 @@ def test_user_response_for_timeout(user_response): def test_callback_func(virtual_network, config): name = "pythonsdk_waiter_" + tests.util.random_number_string() + counters = {'create': 0, 'delete': 0, 'wait': 0} + + def create_vcn_callback(times_called, response): + counters['create'] = times_called + + def delete_vcn_callback(times_called, response): + counters['delete'] = times_called + + request = oci.core.models.CreateVcnDetails() + request.cidr_block = '10.0.0.0/16' + request.display_name = name + request.compartment_id = config["tenancy"] + + response = virtual_network.create_vcn(request) + vcn = response.data + get_vcn_response = virtual_network.get_vcn(vcn.id) + get_vcn_response.data.lifecycle_state = 'DUMMY' # This will force at least one service call + + def fetch_func(response=None, num=2): + counters['wait'] = counters['wait'] + 1 + if counters['wait'] < num: + resp = virtual_network.get_vcn(vcn.id) + resp.data.lifecycle_state = 'DUMMY' + return resp + else: + return virtual_network.get_vcn(vcn.id) + + response = oci.wait_until(virtual_network, get_vcn_response, 'lifecycle_state', 'AVAILABLE', wait_callback=create_vcn_callback, fetch_func=fetch_func) + assert 'AVAILABLE' == response.data.lifecycle_state + assert counters['create'] > 0 # make sure call-back function is called here + + print('Deleting vcn') + response = virtual_network.delete_vcn(vcn.id) + result = oci.wait_until(virtual_network, get_vcn_response, 'lifecycle_state', 'TERMINATED', max_wait_seconds=180, succeed_on_not_found=True, wait_callback=delete_vcn_callback) + assert result == oci.waiter.WAIT_RESOURCE_NOT_FOUND + assert counters['delete'] >= 0 + + +def test_callback_cornercase(virtual_network, config): + name = "pythonsdk_waiter_" + tests.util.random_number_string() + counters = {'create': 0, 'delete': 0} def create_vcn_callback(times_called, response): @@ -271,7 +312,7 @@ def delete_vcn_callback(times_called, response): get_vcn_response.data.lifecycle_state = 'DUMMY' # This will force at least one service call response = oci.wait_until(virtual_network, get_vcn_response, 'lifecycle_state', 'AVAILABLE', wait_callback=create_vcn_callback) assert 'AVAILABLE' == response.data.lifecycle_state - assert counters['create'] > 0 + assert counters['create'] == 0 # This will make sure invoke wait_callbacK after checking resource property print('Deleting vcn') response = virtual_network.delete_vcn(vcn.id)