oci 2.1.0 → 2.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +11 -3
- data/lib/oci.rb +6 -0
- data/lib/oci/api_client.rb +159 -134
- data/lib/oci/audit/audit.rb +3 -0
- data/lib/oci/audit/audit_client.rb +88 -40
- data/lib/oci/audit/audit_client_composite_operations.rb +64 -0
- data/lib/oci/audit/models/audit_event.rb +151 -200
- data/lib/oci/audit/models/configuration.rb +61 -38
- data/lib/oci/audit/models/update_configuration_details.rb +61 -38
- data/lib/oci/auth/util.rb +1 -1
- data/lib/oci/base_signer.rb +20 -29
- data/lib/oci/config.rb +9 -3
- data/lib/oci/core/blockstorage_client.rb +512 -269
- data/lib/oci/core/blockstorage_client_composite_operations.rb +342 -0
- data/lib/oci/core/compute_client.rb +959 -536
- data/lib/oci/core/compute_client_composite_operations.rb +738 -0
- data/lib/oci/core/core.rb +5 -0
- data/lib/oci/core/models/attach_boot_volume_details.rb +72 -57
- data/lib/oci/core/models/attach_i_scsi_volume_details.rb +76 -53
- data/lib/oci/core/models/attach_paravirtualized_volume_details.rb +69 -45
- data/lib/oci/core/models/attach_vnic_details.rb +79 -68
- data/lib/oci/core/models/attach_volume_details.rb +83 -74
- data/lib/oci/core/models/boot_volume.rb +119 -120
- data/lib/oci/core/models/boot_volume_attachment.rb +114 -111
- data/lib/oci/core/models/bulk_add_virtual_circuit_public_prefixes_details.rb +61 -38
- data/lib/oci/core/models/bulk_delete_virtual_circuit_public_prefixes_details.rb +61 -38
- data/lib/oci/core/models/capture_console_history_details.rb +81 -70
- data/lib/oci/core/models/connect_local_peering_gateways_details.rb +60 -38
- data/lib/oci/core/models/connect_remote_peering_connections_details.rb +67 -49
- data/lib/oci/core/models/console_history.rb +122 -123
- data/lib/oci/core/models/cpe.rb +82 -74
- data/lib/oci/core/models/create_cpe_details.rb +73 -58
- data/lib/oci/core/models/create_cross_connect_details.rb +98 -99
- data/lib/oci/core/models/create_cross_connect_group_details.rb +67 -48
- data/lib/oci/core/models/create_dhcp_details.rb +89 -84
- data/lib/oci/core/models/create_drg_attachment_details.rb +71 -56
- data/lib/oci/core/models/create_drg_details.rb +66 -47
- data/lib/oci/core/models/create_image_details.rb +108 -110
- data/lib/oci/core/models/create_instance_console_connection_details.rb +79 -69
- data/lib/oci/core/models/create_internet_gateway_details.rb +76 -65
- data/lib/oci/core/models/create_ip_sec_connection_details.rb +83 -76
- data/lib/oci/core/models/create_local_peering_gateway_details.rb +72 -57
- data/lib/oci/core/models/create_private_ip_details.rb +97 -94
- data/lib/oci/core/models/create_public_ip_details.rb +90 -77
- data/lib/oci/core/models/create_remote_peering_connection_details.rb +72 -57
- data/lib/oci/core/models/create_route_table_details.rb +90 -87
- data/lib/oci/core/models/create_security_list_details.rb +95 -96
- data/lib/oci/core/models/create_subnet_details.rb +133 -154
- data/lib/oci/core/models/create_vcn_details.rb +96 -93
- data/lib/oci/core/models/create_virtual_circuit_details.rb +136 -153
- data/lib/oci/core/models/create_virtual_circuit_public_prefix_details.rb +62 -39
- data/lib/oci/core/models/create_vnic_details.rb +99 -97
- data/lib/oci/core/models/create_volume_backup_details.rb +94 -85
- data/lib/oci/core/models/create_volume_backup_policy_assignment_details.rb +66 -47
- data/lib/oci/core/models/create_volume_details.rb +117 -130
- data/lib/oci/core/models/cross_connect.rb +120 -121
- data/lib/oci/core/models/cross_connect_group.rb +97 -82
- data/lib/oci/core/models/cross_connect_location.rb +65 -43
- data/lib/oci/core/models/cross_connect_mapping.rb +89 -81
- data/lib/oci/core/models/cross_connect_port_speed_shape.rb +68 -48
- data/lib/oci/core/models/cross_connect_status.rb +110 -87
- data/lib/oci/core/models/delete_virtual_circuit_public_prefix_details.rb +61 -38
- data/lib/oci/core/models/dhcp_dns_option.rb +85 -60
- data/lib/oci/core/models/dhcp_option.rb +62 -38
- data/lib/oci/core/models/dhcp_options.rb +119 -118
- data/lib/oci/core/models/dhcp_search_domain_option.rb +66 -44
- data/lib/oci/core/models/drg.rb +96 -81
- data/lib/oci/core/models/drg_attachment.rb +106 -99
- data/lib/oci/core/models/egress_security_rule.rb +89 -83
- data/lib/oci/core/models/export_image_details.rb +63 -41
- data/lib/oci/core/models/export_image_via_object_storage_tuple_details.rb +74 -59
- data/lib/oci/core/models/export_image_via_object_storage_uri_details.rb +65 -42
- data/lib/oci/core/models/fast_connect_provider_service.rb +155 -126
- data/lib/oci/core/models/get_public_ip_by_ip_address_details.rb +61 -39
- data/lib/oci/core/models/get_public_ip_by_private_ip_id_details.rb +61 -39
- data/lib/oci/core/models/i_scsi_volume_attachment.rb +117 -105
- data/lib/oci/core/models/icmp_options.rb +63 -41
- data/lib/oci/core/models/image.rb +170 -185
- data/lib/oci/core/models/image_source_details.rb +79 -60
- data/lib/oci/core/models/image_source_via_object_storage_tuple_details.rb +77 -62
- data/lib/oci/core/models/image_source_via_object_storage_uri_details.rb +67 -44
- data/lib/oci/core/models/ingress_security_rule.rb +89 -83
- data/lib/oci/core/models/instance.rb +190 -211
- data/lib/oci/core/models/instance_console_connection.rb +118 -117
- data/lib/oci/core/models/instance_credentials.rb +63 -41
- data/lib/oci/core/models/instance_source_details.rb +64 -41
- data/lib/oci/core/models/instance_source_via_boot_volume_details.rb +64 -41
- data/lib/oci/core/models/instance_source_via_image_details.rb +70 -51
- data/lib/oci/core/models/internet_gateway.rb +107 -100
- data/lib/oci/core/models/ip_sec_connection.rb +113 -110
- data/lib/oci/core/models/ip_sec_connection_device_config.rb +73 -59
- data/lib/oci/core/models/ip_sec_connection_device_status.rb +75 -61
- data/lib/oci/core/models/launch_instance_details.rb +163 -189
- data/lib/oci/core/models/launch_options.rb +130 -93
- data/lib/oci/core/models/letter_of_authority.rb +105 -100
- data/lib/oci/core/models/local_peering_gateway.rb +141 -140
- data/lib/oci/core/models/paravirtualized_volume_attachment.rb +83 -60
- data/lib/oci/core/models/peer_region_for_remote_peering.rb +61 -37
- data/lib/oci/core/models/port_range.rb +65 -42
- data/lib/oci/core/models/private_ip.rb +131 -151
- data/lib/oci/core/models/public_ip.rb +160 -149
- data/lib/oci/core/models/remote_peering_connection.rb +148 -151
- data/lib/oci/core/models/route_rule.rb +68 -50
- data/lib/oci/core/models/route_table.rb +120 -121
- data/lib/oci/core/models/security_list.rb +125 -130
- data/lib/oci/core/models/shape.rb +60 -36
- data/lib/oci/core/models/subnet.rb +183 -220
- data/lib/oci/core/models/tcp_options.rb +67 -49
- data/lib/oci/core/models/tunnel_config.rb +76 -62
- data/lib/oci/core/models/tunnel_status.rb +94 -77
- data/lib/oci/core/models/udp_options.rb +67 -49
- data/lib/oci/core/models/update_boot_volume_details.rb +62 -39
- data/lib/oci/core/models/update_console_history_details.rb +76 -61
- data/lib/oci/core/models/update_cpe_details.rb +62 -39
- data/lib/oci/core/models/update_cross_connect_details.rb +68 -50
- data/lib/oci/core/models/update_cross_connect_group_details.rb +62 -39
- data/lib/oci/core/models/update_dhcp_details.rb +80 -67
- data/lib/oci/core/models/update_drg_attachment_details.rb +62 -39
- data/lib/oci/core/models/update_drg_details.rb +62 -39
- data/lib/oci/core/models/update_image_details.rb +77 -62
- data/lib/oci/core/models/update_instance_details.rb +77 -62
- data/lib/oci/core/models/update_internet_gateway_details.rb +67 -48
- data/lib/oci/core/models/update_ip_sec_connection_details.rb +62 -39
- data/lib/oci/core/models/update_local_peering_gateway_details.rb +62 -39
- data/lib/oci/core/models/update_private_ip_details.rb +90 -83
- data/lib/oci/core/models/update_public_ip_details.rb +68 -49
- data/lib/oci/core/models/update_remote_peering_connection_details.rb +62 -39
- data/lib/oci/core/models/update_route_table_details.rb +81 -70
- data/lib/oci/core/models/update_security_list_details.rb +86 -79
- data/lib/oci/core/models/update_subnet_details.rb +76 -61
- data/lib/oci/core/models/update_vcn_details.rb +76 -61
- data/lib/oci/core/models/update_virtual_circuit_details.rb +114 -115
- data/lib/oci/core/models/update_vnic_details.rb +75 -60
- data/lib/oci/core/models/update_volume_backup_details.rb +76 -61
- data/lib/oci/core/models/update_volume_details.rb +76 -61
- data/lib/oci/core/models/vcn.rb +150 -167
- data/lib/oci/core/models/virtual_circuit.rb +254 -269
- data/lib/oci/core/models/virtual_circuit_bandwidth_shape.rb +68 -48
- data/lib/oci/core/models/virtual_circuit_public_prefix.rb +79 -54
- data/lib/oci/core/models/vnic.rb +149 -166
- data/lib/oci/core/models/vnic_attachment.rb +132 -141
- data/lib/oci/core/models/volume.rb +138 -151
- data/lib/oci/core/models/volume_attachment.rb +126 -131
- data/lib/oci/core/models/volume_backup.rb +185 -200
- data/lib/oci/core/models/volume_backup_policy.rb +75 -61
- data/lib/oci/core/models/volume_backup_policy_assignment.rb +75 -63
- data/lib/oci/core/models/volume_backup_schedule.rb +101 -76
- data/lib/oci/core/models/volume_source_details.rb +62 -37
- data/lib/oci/core/models/volume_source_from_volume_backup_details.rb +62 -38
- data/lib/oci/core/models/volume_source_from_volume_details.rb +62 -38
- data/lib/oci/core/virtual_network_client.rb +2683 -1457
- data/lib/oci/core/virtual_network_client_composite_operations.rb +1849 -0
- data/lib/oci/database/database.rb +3 -0
- data/lib/oci/database/database_client.rb +894 -454
- data/lib/oci/database/database_client_composite_operations.rb +462 -0
- data/lib/oci/database/models/backup.rb +131 -128
- data/lib/oci/database/models/backup_summary.rb +131 -128
- data/lib/oci/database/models/create_backup_details.rb +66 -47
- data/lib/oci/database/models/create_data_guard_association_details.rb +112 -102
- data/lib/oci/database/models/create_data_guard_association_to_existing_db_system_details.rb +73 -51
- data/lib/oci/database/models/create_database_details.rb +140 -105
- data/lib/oci/database/models/create_database_from_backup_details.rb +71 -56
- data/lib/oci/database/models/create_db_home_details.rb +70 -53
- data/lib/oci/database/models/create_db_home_with_db_system_id_base.rb +83 -67
- data/lib/oci/database/models/create_db_home_with_db_system_id_details.rb +74 -53
- data/lib/oci/database/models/create_db_home_with_db_system_id_from_backup_details.rb +69 -44
- data/lib/oci/database/models/data_guard_association.rb +205 -204
- data/lib/oci/database/models/data_guard_association_summary.rb +205 -204
- data/lib/oci/database/models/database.rb +175 -156
- data/lib/oci/database/models/database_summary.rb +175 -156
- data/lib/oci/database/models/db_backup_config.rb +60 -38
- data/lib/oci/database/models/db_home.rb +110 -107
- data/lib/oci/database/models/db_home_summary.rb +110 -107
- data/lib/oci/database/models/db_node.rb +113 -108
- data/lib/oci/database/models/db_node_summary.rb +113 -108
- data/lib/oci/database/models/db_system.rb +299 -314
- data/lib/oci/database/models/db_system_shape_summary.rb +88 -86
- data/lib/oci/database/models/db_system_summary.rb +299 -314
- data/lib/oci/database/models/db_version_summary.rb +64 -44
- data/lib/oci/database/models/failover_data_guard_association_details.rb +60 -38
- data/lib/oci/database/models/launch_db_system_details.rb +231 -234
- data/lib/oci/database/models/patch.rb +136 -113
- data/lib/oci/database/models/patch_details.rb +73 -53
- data/lib/oci/database/models/patch_history_entry.rb +114 -99
- data/lib/oci/database/models/patch_history_entry_summary.rb +114 -99
- data/lib/oci/database/models/patch_summary.rb +136 -113
- data/lib/oci/database/models/reinstate_data_guard_association_details.rb +60 -38
- data/lib/oci/database/models/restore_database_details.rb +72 -53
- data/lib/oci/database/models/switchover_data_guard_association_details.rb +60 -38
- data/lib/oci/database/models/update_database_details.rb +97 -38
- data/lib/oci/database/models/update_db_home_details.rb +60 -38
- data/lib/oci/database/models/update_db_system_details.rb +112 -64
- data/lib/oci/dns/dns.rb +3 -0
- data/lib/oci/dns/dns_client.rb +489 -302
- data/lib/oci/dns/dns_client_composite_operations.rb +143 -0
- data/lib/oci/dns/models/create_zone_details.rb +84 -72
- data/lib/oci/dns/models/external_master.rb +67 -47
- data/lib/oci/dns/models/patch_domain_records_details.rb +60 -35
- data/lib/oci/dns/models/patch_rr_set_details.rb +60 -35
- data/lib/oci/dns/models/patch_zone_records_details.rb +60 -35
- data/lib/oci/dns/models/record.rb +92 -86
- data/lib/oci/dns/models/record_collection.rb +59 -35
- data/lib/oci/dns/models/record_details.rb +92 -86
- data/lib/oci/dns/models/record_operation.rb +113 -110
- data/lib/oci/dns/models/rr_set.rb +59 -35
- data/lib/oci/dns/models/sort_order.rb +0 -2
- data/lib/oci/dns/models/tsig.rb +68 -48
- data/lib/oci/dns/models/update_domain_records_details.rb +60 -35
- data/lib/oci/dns/models/update_rr_set_details.rb +60 -35
- data/lib/oci/dns/models/update_zone_details.rb +60 -38
- data/lib/oci/dns/models/update_zone_records_details.rb +60 -35
- data/lib/oci/dns/models/zone.rb +133 -126
- data/lib/oci/dns/models/zone_summary.rb +108 -99
- data/lib/oci/email/email.rb +3 -0
- data/lib/oci/email/email_client.rb +223 -112
- data/lib/oci/email/email_client_composite_operations.rb +103 -0
- data/lib/oci/email/models/create_sender_details.rb +65 -47
- data/lib/oci/email/models/create_suppression_details.rb +66 -48
- data/lib/oci/email/models/sender.rb +97 -84
- data/lib/oci/email/models/sender_summary.rb +89 -70
- data/lib/oci/email/models/suppression.rb +90 -69
- data/lib/oci/email/models/suppression_summary.rb +90 -69
- data/lib/oci/errors.rb +16 -0
- data/lib/oci/file_storage/file_storage.rb +3 -0
- data/lib/oci/file_storage/file_storage_client.rb +587 -333
- data/lib/oci/file_storage/file_storage_client_composite_operations.rb +460 -0
- data/lib/oci/file_storage/models/create_export_details.rb +73 -56
- data/lib/oci/file_storage/models/create_file_system_details.rb +75 -60
- data/lib/oci/file_storage/models/create_mount_target_details.rb +96 -93
- data/lib/oci/file_storage/models/create_snapshot_details.rb +68 -47
- data/lib/oci/file_storage/models/export.rb +102 -89
- data/lib/oci/file_storage/models/export_set.rb +121 -122
- data/lib/oci/file_storage/models/export_set_summary.rb +109 -102
- data/lib/oci/file_storage/models/export_summary.rb +102 -89
- data/lib/oci/file_storage/models/file_system.rb +110 -103
- data/lib/oci/file_storage/models/file_system_summary.rb +110 -103
- data/lib/oci/file_storage/models/mount_target.rb +126 -131
- data/lib/oci/file_storage/models/mount_target_summary.rb +121 -122
- data/lib/oci/file_storage/models/snapshot.rb +98 -81
- data/lib/oci/file_storage/models/snapshot_summary.rb +98 -81
- data/lib/oci/file_storage/models/update_export_set_details.rb +75 -60
- data/lib/oci/file_storage/models/update_file_system_details.rb +63 -40
- data/lib/oci/file_storage/models/update_mount_target_details.rb +63 -40
- data/lib/oci/identity/identity.rb +3 -0
- data/lib/oci/identity/identity_client.rb +1671 -872
- data/lib/oci/identity/identity_client_composite_operations.rb +818 -0
- data/lib/oci/identity/models/add_user_to_group_details.rb +66 -47
- data/lib/oci/identity/models/api_key.rb +108 -101
- data/lib/oci/identity/models/availability_domain.rb +64 -44
- data/lib/oci/identity/models/compartment.rb +118 -115
- data/lib/oci/identity/models/create_api_key_details.rb +60 -35
- data/lib/oci/identity/models/create_compartment_details.rb +83 -72
- data/lib/oci/identity/models/create_customer_secret_key_details.rb +62 -39
- data/lib/oci/identity/models/create_dynamic_group_details.rb +75 -61
- data/lib/oci/identity/models/create_group_details.rb +82 -71
- data/lib/oci/identity/models/create_identity_provider_details.rb +115 -110
- data/lib/oci/identity/models/create_idp_group_mapping_details.rb +67 -48
- data/lib/oci/identity/models/create_policy_details.rb +94 -89
- data/lib/oci/identity/models/create_region_subscription_details.rb +64 -41
- data/lib/oci/identity/models/create_saml2_identity_provider_details.rb +88 -67
- data/lib/oci/identity/models/create_smtp_credential_details.rb +61 -36
- data/lib/oci/identity/models/create_swift_password_details.rb +61 -36
- data/lib/oci/identity/models/create_tag_details.rb +77 -62
- data/lib/oci/identity/models/create_tag_namespace_details.rb +82 -71
- data/lib/oci/identity/models/create_user_details.rb +82 -71
- data/lib/oci/identity/models/customer_secret_key.rb +114 -109
- data/lib/oci/identity/models/customer_secret_key_summary.rb +109 -102
- data/lib/oci/identity/models/dynamic_group.rb +112 -105
- data/lib/oci/identity/models/group.rb +118 -115
- data/lib/oci/identity/models/identity_provider.rb +135 -138
- data/lib/oci/identity/models/idp_group_mapping.rb +112 -109
- data/lib/oci/identity/models/policy.rb +129 -132
- data/lib/oci/identity/models/region.rb +67 -45
- data/lib/oci/identity/models/region_subscription.rb +90 -71
- data/lib/oci/identity/models/saml2_identity_provider.rb +106 -92
- data/lib/oci/identity/models/smtp_credential.rb +118 -113
- data/lib/oci/identity/models/smtp_credential_summary.rb +113 -106
- data/lib/oci/identity/models/swift_password.rb +113 -106
- data/lib/oci/identity/models/tag.rb +108 -116
- data/lib/oci/identity/models/tag_namespace.rb +97 -97
- data/lib/oci/identity/models/tag_namespace_summary.rb +97 -97
- data/lib/oci/identity/models/tag_summary.rb +97 -97
- data/lib/oci/identity/models/tenancy.rb +86 -78
- data/lib/oci/identity/models/ui_password.rb +97 -82
- data/lib/oci/identity/models/update_compartment_details.rb +77 -62
- data/lib/oci/identity/models/update_customer_secret_key_details.rb +61 -38
- data/lib/oci/identity/models/update_dynamic_group_details.rb +65 -45
- data/lib/oci/identity/models/update_group_details.rb +72 -55
- data/lib/oci/identity/models/update_identity_provider_details.rb +89 -74
- data/lib/oci/identity/models/update_idp_group_mapping_details.rb +66 -47
- data/lib/oci/identity/models/update_policy_details.rb +83 -72
- data/lib/oci/identity/models/update_saml2_identity_provider_details.rb +79 -58
- data/lib/oci/identity/models/update_smtp_credential_details.rb +60 -35
- data/lib/oci/identity/models/update_state_details.rb +61 -36
- data/lib/oci/identity/models/update_swift_password_details.rb +60 -35
- data/lib/oci/identity/models/update_tag_details.rb +78 -65
- data/lib/oci/identity/models/update_tag_namespace_details.rb +78 -65
- data/lib/oci/identity/models/update_user_details.rb +72 -55
- data/lib/oci/identity/models/user.rb +120 -117
- data/lib/oci/identity/models/user_group_membership.rb +107 -100
- data/lib/oci/load_balancer/load_balancer.rb +3 -0
- data/lib/oci/load_balancer/load_balancer_client.rb +918 -500
- data/lib/oci/load_balancer/load_balancer_client_composite_operations.rb +795 -0
- data/lib/oci/load_balancer/models/backend.rb +101 -94
- data/lib/oci/load_balancer/models/backend_details.rb +95 -86
- data/lib/oci/load_balancer/models/backend_health.rb +84 -57
- data/lib/oci/load_balancer/models/backend_set.rb +87 -79
- data/lib/oci/load_balancer/models/backend_set_details.rb +80 -70
- data/lib/oci/load_balancer/models/backend_set_health.rb +106 -91
- data/lib/oci/load_balancer/models/certificate.rb +78 -64
- data/lib/oci/load_balancer/models/certificate_details.rb +92 -84
- data/lib/oci/load_balancer/models/connection_configuration.rb +73 -51
- data/lib/oci/load_balancer/models/create_backend_details.rb +95 -86
- data/lib/oci/load_balancer/models/create_backend_set_details.rb +87 -79
- data/lib/oci/load_balancer/models/create_certificate_details.rb +92 -84
- data/lib/oci/load_balancer/models/create_listener_details.rb +97 -93
- data/lib/oci/load_balancer/models/create_load_balancer_details.rb +109 -117
- data/lib/oci/load_balancer/models/create_path_route_set_details.rb +66 -46
- data/lib/oci/load_balancer/models/health_check_result.rb +98 -79
- data/lib/oci/load_balancer/models/health_checker.rb +108 -108
- data/lib/oci/load_balancer/models/health_checker_details.rb +108 -108
- data/lib/oci/load_balancer/models/ip_address.rb +70 -52
- data/lib/oci/load_balancer/models/listener.rb +97 -93
- data/lib/oci/load_balancer/models/listener_details.rb +91 -85
- data/lib/oci/load_balancer/models/load_balancer.rb +144 -157
- data/lib/oci/load_balancer/models/load_balancer_health.rb +110 -95
- data/lib/oci/load_balancer/models/load_balancer_health_summary.rb +88 -61
- data/lib/oci/load_balancer/models/load_balancer_policy.rb +59 -35
- data/lib/oci/load_balancer/models/load_balancer_protocol.rb +59 -35
- data/lib/oci/load_balancer/models/load_balancer_shape.rb +59 -35
- data/lib/oci/load_balancer/models/path_match_type.rb +80 -51
- data/lib/oci/load_balancer/models/path_route.rb +76 -60
- data/lib/oci/load_balancer/models/path_route_set.rb +66 -46
- data/lib/oci/load_balancer/models/path_route_set_details.rb +60 -38
- data/lib/oci/load_balancer/models/session_persistence_configuration_details.rb +71 -55
- data/lib/oci/load_balancer/models/ssl_configuration.rb +78 -66
- data/lib/oci/load_balancer/models/ssl_configuration_details.rb +78 -66
- data/lib/oci/load_balancer/models/update_backend_details.rb +82 -67
- data/lib/oci/load_balancer/models/update_backend_set_details.rb +80 -70
- data/lib/oci/load_balancer/models/update_health_checker_details.rb +108 -108
- data/lib/oci/load_balancer/models/update_listener_details.rb +91 -85
- data/lib/oci/load_balancer/models/update_load_balancer_details.rb +62 -40
- data/lib/oci/load_balancer/models/update_path_route_set_details.rb +60 -38
- data/lib/oci/load_balancer/models/work_request.rb +115 -108
- data/lib/oci/load_balancer/models/work_request_error.rb +76 -49
- data/lib/oci/object_storage/models/bucket.rb +136 -133
- data/lib/oci/object_storage/models/bucket_summary.rb +95 -95
- data/lib/oci/object_storage/models/commit_multipart_upload_details.rb +66 -48
- data/lib/oci/object_storage/models/commit_multipart_upload_part_details.rb +64 -44
- data/lib/oci/object_storage/models/create_bucket_details.rb +113 -111
- data/lib/oci/object_storage/models/create_multipart_upload_details.rb +80 -70
- data/lib/oci/object_storage/models/create_preauthenticated_request_details.rb +87 -74
- data/lib/oci/object_storage/models/list_objects.rb +71 -53
- data/lib/oci/object_storage/models/multipart_upload.rb +77 -65
- data/lib/oci/object_storage/models/multipart_upload_part_summary.rb +72 -56
- data/lib/oci/object_storage/models/namespace_metadata.rb +69 -53
- data/lib/oci/object_storage/models/object_summary.rb +73 -57
- data/lib/oci/object_storage/models/preauthenticated_request.rb +105 -96
- data/lib/oci/object_storage/models/preauthenticated_request_summary.rb +99 -86
- data/lib/oci/object_storage/models/rename_object_details.rb +80 -74
- data/lib/oci/object_storage/models/restore_objects_details.rb +66 -45
- data/lib/oci/object_storage/models/update_bucket_details.rb +101 -97
- data/lib/oci/object_storage/models/update_namespace_metadata_details.rb +65 -47
- data/lib/oci/object_storage/object_storage.rb +2 -0
- data/lib/oci/object_storage/object_storage_client.rb +737 -435
- data/lib/oci/object_storage/object_storage_client_composite_operations.rb +24 -0
- data/lib/oci/signer.rb +20 -7
- data/lib/oci/version.rb +1 -1
- metadata +13 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 122d8a6833bc35b30fd21376077be42796aa9aad
|
4
|
+
data.tar.gz: dd242ebfcdc8c4d2c5bf8bdba3a1765de19fd80f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f425a54f1c47f002b7260d0de1aa36de516e7205f8d1388f5ade8b64a39e93429341dc0d0bd17e3686a1182f646f6771decc54aefae08aa01c7a01715aea3337
|
7
|
+
data.tar.gz: 5988a3c9418b0f107c986e926d673914735602c17223eb886e7e2c1c466f942b550edf92b11e7887c4b00b898c98b4921c2f1ad009e17a5189554a58ab803c10
|
data/README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# Oracle Cloud Infrastructure Ruby SDK
|
2
|
-
**Version 2.1.
|
2
|
+
**Version 2.1.1**
|
3
3
|
|
4
4
|
This topic describes how to install, configure, and use the Oracle Cloud Infrastructure Ruby SDK.
|
5
5
|
|
@@ -68,7 +68,15 @@ The following table provides details about some of the attributes of the SDK.
|
|
68
68
|
</tr>
|
69
69
|
<tr>
|
70
70
|
<td>Waiters</td>
|
71
|
-
<td>
|
71
|
+
<td>
|
72
|
+
Responses for get requests support waiting for a particular states using {OCI::Response#wait_until wait_until}. See example code later in this file.
|
73
|
+
<p>
|
74
|
+
In addition to using waiters, you can use the CompositeOperation classes in the SDK (e.g. {OCI::Core::ComputeClientCompositeOperations}) to perform
|
75
|
+
an action on a resource and wait for it to enter a particular state (or states). The CompositeOperation classes provide convenience methods so that
|
76
|
+
you yourself do not have to invoke an operation and then separately invoke a waiter. An example of using the CompositeOperations classes can be found
|
77
|
+
in the examples folder of the Ruby SDK <a href="https://docs.us-phoenix-1.oraclecloud.com/tools/ruby/latest/download/oci-ruby-sdk.zip">download</a>
|
78
|
+
</p>
|
79
|
+
</td>
|
72
80
|
</tr>
|
73
81
|
<tr>
|
74
82
|
<td>HTTP Client</td>
|
@@ -77,7 +85,7 @@ The following table provides details about some of the attributes of the SDK.
|
|
77
85
|
<tr>
|
78
86
|
<td>Instance Principals Authentication</td>
|
79
87
|
<td>
|
80
|
-
The Ruby SDK supports <a href="">Instance Principals</a> authentication via the use of the {OCI::Auth::Signers::InstancePrincipalsSecurityTokenSigner} class. An example of using Instance Principals authentication can be found in the examples folder of the Ruby SDK <a href="https://docs.us-phoenix-1.oraclecloud.com/tools/ruby/latest/download/oci-ruby-sdk.zip">download</a>
|
88
|
+
The Ruby SDK supports <a href="https://docs.us-phoenix-1.oraclecloud.com/Content/Identity/Tasks/callingservicesfrominstances.htm">Instance Principals</a> authentication via the use of the {OCI::Auth::Signers::InstancePrincipalsSecurityTokenSigner} class. An example of using Instance Principals authentication can be found in the examples folder of the Ruby SDK <a href="https://docs.us-phoenix-1.oraclecloud.com/tools/ruby/latest/download/oci-ruby-sdk.zip">download</a>
|
81
89
|
</td>
|
82
90
|
</tr>
|
83
91
|
<tr>
|
data/lib/oci.rb
CHANGED
@@ -31,6 +31,12 @@ require 'oci/object_storage/transfer/transfer'
|
|
31
31
|
module OCI
|
32
32
|
class << self
|
33
33
|
attr_accessor :sdk_name
|
34
|
+
|
35
|
+
# Defines the logger used for debugging for the OCI module.
|
36
|
+
# For example, log to STDOUT by setting this to Logger.new(STDOUT).
|
37
|
+
#
|
38
|
+
# @return [Logger]
|
39
|
+
attr_accessor :logger
|
34
40
|
end
|
35
41
|
end
|
36
42
|
|
data/lib/oci/api_client.rb
CHANGED
@@ -14,7 +14,27 @@ require_relative 'version'
|
|
14
14
|
require_relative 'response'
|
15
15
|
|
16
16
|
module OCI
|
17
|
+
# The base API client which contains functionality make requests and receive responses from OCI
|
18
|
+
# services. This client also handles request serialization and response deserialization
|
17
19
|
class ApiClient
|
20
|
+
class << self
|
21
|
+
private
|
22
|
+
|
23
|
+
def get_rfc339_formatted_date_string_with_z_offset(date_time)
|
24
|
+
as_utc = date_time.to_time.utc
|
25
|
+
|
26
|
+
# Port of the Java SDK behaviour where we omit fractional seconds if they would be 0
|
27
|
+
return as_utc.iso8601 if as_utc.strftime('%L').to_i.zero?
|
28
|
+
as_utc.iso8601(3)
|
29
|
+
end
|
30
|
+
|
31
|
+
def cgi_escape_query_param(raw_value)
|
32
|
+
return CGI.escape(get_rfc339_formatted_date_string_with_z_offset(raw_value)) if raw_value.is_a?(DateTime)
|
33
|
+
|
34
|
+
CGI.escape(raw_value.to_s)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
18
38
|
# Maps collection format types (as per the collectionFormat types described here:
|
19
39
|
# https://swagger.io/docs/specification/2-0/describing-parameters/) to the delimiters
|
20
40
|
# we should use to separate values.
|
@@ -23,11 +43,13 @@ module OCI
|
|
23
43
|
# a collection rather than transforming them into a single string
|
24
44
|
VALID_COLLECTION_FORMATS = {
|
25
45
|
multi: nil,
|
26
|
-
csv: ',',
|
27
|
-
ssv: ' ',
|
28
|
-
|
29
|
-
|
30
|
-
|
46
|
+
csv: ','.freeze,
|
47
|
+
ssv: ' '.freeze,
|
48
|
+
pipes: '|'.freeze,
|
49
|
+
|
50
|
+
# this is double quoted so it is interpreted as a tab rather than as a literal slash ('\') followed by a 't'
|
51
|
+
tsv: "\t".freeze
|
52
|
+
}.freeze
|
31
53
|
|
32
54
|
# The Config object holding settings to be used in the API client.
|
33
55
|
attr_accessor :config
|
@@ -61,6 +83,9 @@ module OCI
|
|
61
83
|
@proxy_settings = proxy_settings
|
62
84
|
end
|
63
85
|
|
86
|
+
# rubocop:disable Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/PerceivedComplexity, Layout/EmptyLines
|
87
|
+
|
88
|
+
|
64
89
|
# Call an API with given options.
|
65
90
|
#
|
66
91
|
# @param [Symbol] http_method HTTP method/verb (e.g. :post, :get)
|
@@ -69,6 +94,7 @@ module OCI
|
|
69
94
|
# @option opts [Hash] :header_params Header parameters
|
70
95
|
# @option opts [Hash] :query_params Query parameters
|
71
96
|
# @option opts [Hash] :form_params Form parameters
|
97
|
+
# @option opts [String] :operation_signing_strategy The signing strategy for the api operation
|
72
98
|
# @option opts [Object] :body HTTP body in JSON
|
73
99
|
# @option [Block] block Allow to receive data from http body as streaming
|
74
100
|
#
|
@@ -78,8 +104,13 @@ module OCI
|
|
78
104
|
def call_api(http_method, path, endpoint, opts, &block)
|
79
105
|
http_method = http_method.to_sym.downcase
|
80
106
|
|
81
|
-
|
82
|
-
|
107
|
+
if http_method != :get
|
108
|
+
return call_api_inner(http_method, path, endpoint, opts, &block) unless using_instance_principals?
|
109
|
+
|
110
|
+
return instance_principals_signer_wrapped_call do
|
111
|
+
call_api_inner(http_method, path, endpoint, opts, &block)
|
112
|
+
end
|
113
|
+
end
|
83
114
|
|
84
115
|
# Wrap get calls in a lambda that can be called later for paging
|
85
116
|
# and wait_until.
|
@@ -93,7 +124,7 @@ module OCI
|
|
93
124
|
return call_api_inner(http_method, path, endpoint, opts, &block)
|
94
125
|
}
|
95
126
|
|
96
|
-
response = proc.call(nil)
|
127
|
+
response = proc.call(nil) unless using_instance_principals?
|
97
128
|
response = instance_principals_signer_wrapped_call { proc.call(nil) } if using_instance_principals?
|
98
129
|
|
99
130
|
response.api_call = proc
|
@@ -116,54 +147,132 @@ module OCI
|
|
116
147
|
# an IO
|
117
148
|
return model.to_io if (model.respond_to?(:read) || model.respond_to?(:write)) && model.respond_to?(:to_io)
|
118
149
|
|
119
|
-
if model.is_a?(Array)
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
150
|
+
local_body = if model.is_a?(Array)
|
151
|
+
model.map { |m| object_to_hash(m) }
|
152
|
+
else
|
153
|
+
object_to_hash(model)
|
154
|
+
end
|
155
|
+
|
124
156
|
local_body.to_json
|
125
157
|
end
|
158
|
+
# rubocop:enable Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/PerceivedComplexity, Layout/EmptyLines
|
126
159
|
|
127
160
|
# Builds the client info string to be sent with each request.
|
128
161
|
def build_request_id
|
129
|
-
|
162
|
+
SecureRandom.uuid.delete!('-').upcase
|
130
163
|
end
|
131
164
|
|
132
165
|
# Builds the client info string to be sent with each request.
|
133
166
|
def build_user_info
|
134
|
-
|
167
|
+
"Oracle-RubySDK/#{VERSION}"
|
135
168
|
end
|
136
169
|
|
137
170
|
# Build the user agent string to be send with each request.
|
138
171
|
def build_user_agent
|
139
172
|
agent = "#{build_user_info}#{OCI.sdk_name} (ruby #{RUBY_VERSION}; #{RUBY_PLATFORM})"
|
140
|
-
|
141
|
-
if config.additional_user_agent
|
142
|
-
agent = "#{agent} #{config.additional_user_agent}"
|
143
|
-
end
|
173
|
+
agent = "#{agent} #{config.additional_user_agent}" if config.additional_user_agent
|
144
174
|
|
145
175
|
agent
|
146
176
|
end
|
147
177
|
|
148
178
|
def self.build_collection_params(collection, collection_format)
|
149
|
-
if collection_format.nil? || !VALID_COLLECTION_FORMATS.
|
179
|
+
if collection_format.nil? || !VALID_COLLECTION_FORMATS.key?(collection_format.to_sym)
|
150
180
|
raise "Invalid collection_format: #{collection_format}. Must be one of: #{VALID_COLLECTION_FORMATS.keys}"
|
151
181
|
end
|
152
182
|
|
153
|
-
if collection_format == :multi
|
154
|
-
|
155
|
-
|
156
|
-
|
183
|
+
return collection if collection_format == :multi
|
184
|
+
|
185
|
+
collection.join(VALID_COLLECTION_FORMATS[collection_format.to_sym])
|
186
|
+
end
|
187
|
+
|
188
|
+
# rubocop:disable Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/PerceivedComplexity, Layout/EmptyLines
|
189
|
+
|
190
|
+
|
191
|
+
def self.append_query_params(url, query_params)
|
192
|
+
return url if query_params.empty?
|
193
|
+
|
194
|
+
# First divide our query params into ones where the param value is a simple value (e.g. a string), an array or a hash.
|
195
|
+
# The params where the value is a hash are, for example, tags we need to handle differently for inclusion in the query
|
196
|
+
# string. We also need to handle array params differently in the query string since the values should appear as separate entries
|
197
|
+
# in the query string with the same key (this corresponds to using collectionFormat=multi in Swagger)
|
198
|
+
#
|
199
|
+
# An example query_params is:
|
200
|
+
#
|
201
|
+
# {
|
202
|
+
# "stuff" => "things",
|
203
|
+
# "anArrayType" => ["hello", "world"]
|
204
|
+
# "definedTags" => { "tag1" => ["val1", "val2", "val3"], "tag2" => ["val1"] },
|
205
|
+
# "definedTagsExists" => { "tag3" => true, "tag4" => true }
|
206
|
+
# }
|
207
|
+
#
|
208
|
+
# So our simple_params will be: { "stuff" => "things" }
|
209
|
+
# And our array_params will be: { "anArrayType" => ["hello", "world"]}
|
210
|
+
# And our hash_params will be: { "definedTags" => { "tag1" => ["val1", "val2", "val3"], "tag2" => ["val1"] }, "definedTagsExists" => { "tag3" => true, "tag4" => true } }
|
211
|
+
simple_params = query_params.select { |_k, v| !v.is_a?(Hash) && !v.is_a?(Array) }.to_h
|
212
|
+
array_params = query_params.select { |_k, v| v.is_a?(Array) }.to_h
|
213
|
+
hash_params = query_params.select { |_k, v| v.is_a?(Hash) }.to_h
|
214
|
+
|
215
|
+
# Simple params just go key to value
|
216
|
+
base_query_string = ''
|
217
|
+
|
218
|
+
unless simple_params.empty?
|
219
|
+
base_query_string << simple_params.map { |k, v| "#{k}=#{cgi_escape_query_param(v)}" }.join('&')
|
220
|
+
end
|
221
|
+
|
222
|
+
# Using the previous comment:
|
223
|
+
# k = "anArrayType", v = ["hello", "world"]
|
224
|
+
#
|
225
|
+
# And we want query string params like #{k}=#{v[0]}&#{k}=#{v[1]}&#{k}=#{v[2]}...
|
226
|
+
# So the same key is repeated, but each value is a different value from the array
|
227
|
+
array_params.each do |k, v|
|
228
|
+
v.each do |query_string_val|
|
229
|
+
base_query_string << '&' unless base_query_string.empty?
|
230
|
+
base_query_string << "#{k}=#{cgi_escape_query_param(query_string_val)}"
|
231
|
+
end
|
232
|
+
end
|
233
|
+
|
234
|
+
# Using the previous comment:
|
235
|
+
# k = "definedTags", v = { "tag1" => [...] }
|
236
|
+
#
|
237
|
+
# Hash params are exploded as follows:
|
238
|
+
#
|
239
|
+
# - If value in v is an array then we explode the content like: #{k}.#{v.key}=#{v.value[0]}&#{k}.#{v.key}=#{v.value[1]}&... so that there is
|
240
|
+
# one query string parameter per item in the array
|
241
|
+
# - If value in v is not an array then we explode the content like: #{k}.#{v.key}=#{v.value}
|
242
|
+
hash_params.each do |k, v|
|
243
|
+
v.each do |tag_key, tag_val|
|
244
|
+
# TODO: Should this be ERB::Util.url_encode instead? CGI.escape gives "+" here but url_encode will give %20
|
245
|
+
# CGI.escape is what we've been using until now, and it looks like it works...A literal "+" in the string will
|
246
|
+
# be encoded to %2B
|
247
|
+
query_string_val = if tag_val.is_a?(Array)
|
248
|
+
# to_s tag_key to avoid errors around implicit conversion of symbols to strings
|
249
|
+
tag_val.map do |tv|
|
250
|
+
"#{k}.#{cgi_escape_query_param(tag_key)}=#{cgi_escape_query_param(tv)}"
|
251
|
+
end.join('&')
|
252
|
+
else
|
253
|
+
"#{k}.#{cgi_escape_query_param(tag_key)}=#{cgi_escape_query_param(tag_val)}"
|
254
|
+
end
|
255
|
+
base_query_string << '&' unless base_query_string.empty?
|
256
|
+
base_query_string << query_string_val
|
257
|
+
end
|
157
258
|
end
|
259
|
+
|
260
|
+
url << '?' unless base_query_string.empty?
|
261
|
+
url << base_query_string
|
262
|
+
|
263
|
+
url
|
158
264
|
end
|
265
|
+
# rubocop:enable Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/PerceivedComplexity, Layout/EmptyLines
|
159
266
|
|
160
267
|
private
|
161
268
|
|
269
|
+
# rubocop:disable Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/PerceivedComplexity
|
162
270
|
def call_api_inner(http_method, path, endpoint, opts, &block)
|
163
271
|
query_params = opts[:query_params] || {}
|
164
272
|
header_params = @default_headers.merge(opts[:header_params] || {})
|
165
273
|
form_params = opts[:form_params] || {}
|
166
274
|
body = opts[:body] || nil
|
275
|
+
operation_signing_strategy = opts[:operation_signing_strategy] || nil
|
167
276
|
|
168
277
|
url = ApiClient.append_query_params(build_request_url(path, endpoint), query_params)
|
169
278
|
uri = URI(url)
|
@@ -189,18 +298,13 @@ module OCI
|
|
189
298
|
if body.respond_to?(:read) && body.respond_to?(:write)
|
190
299
|
request.body_stream = body
|
191
300
|
else
|
192
|
-
if %i[post
|
193
|
-
body = build_request_body(header_params, form_params, body)
|
194
|
-
end
|
195
|
-
|
301
|
+
body = build_request_body(header_params, form_params, body) if %i[post put delete patch].include?(http_method)
|
196
302
|
request.body = body
|
197
303
|
end
|
198
304
|
|
199
|
-
if @config.logger
|
200
|
-
@config.logger.debug "HTTP request body param ~BEGIN~\n#{body}\n~END~\n"
|
201
|
-
end
|
305
|
+
@config.logger.debug "HTTP request body param ~BEGIN~\n#{body}\n~END~\n" if @config.logger
|
202
306
|
|
203
|
-
@signer.sign(http_method, url, header_params, body)
|
307
|
+
@signer.sign(http_method, url, header_params, body, operation_signing_strategy)
|
204
308
|
|
205
309
|
header_params.each do |key, value|
|
206
310
|
request[key.to_s] = value
|
@@ -214,8 +318,8 @@ module OCI
|
|
214
318
|
|
215
319
|
unless @request_option_overrides.empty?
|
216
320
|
http.methods.grep(/\A(\w+)=\z/) do |meth|
|
217
|
-
key =
|
218
|
-
@request_option_overrides.key?(key)
|
321
|
+
key = Regexp.last_match(1).to_sym
|
322
|
+
@request_option_overrides.key?(key) || next
|
219
323
|
http.__send__(meth, @request_option_overrides[key])
|
220
324
|
end
|
221
325
|
end
|
@@ -277,6 +381,7 @@ module OCI
|
|
277
381
|
return handle_success_response(request, response_ref, opts[:return_type]) if success?(response_ref)
|
278
382
|
handle_non_success_response(request, response_ref)
|
279
383
|
end
|
384
|
+
# rubocop:enable Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/PerceivedComplexity
|
280
385
|
|
281
386
|
def get_http_object(hostname, port)
|
282
387
|
return Net::HTTP.new(hostname, port) if @proxy_settings.nil?
|
@@ -313,9 +418,7 @@ module OCI
|
|
313
418
|
processed_keys = {}
|
314
419
|
|
315
420
|
response.each_header do |key, value|
|
316
|
-
if key.start_with?(prefix)
|
317
|
-
processed_keys[key[prefix_size..-1]] = value
|
318
|
-
end
|
421
|
+
processed_keys[key[prefix_size..-1]] = value if key.start_with?(prefix)
|
319
422
|
end
|
320
423
|
|
321
424
|
processed_keys.each do |key, value|
|
@@ -348,12 +451,16 @@ module OCI
|
|
348
451
|
def handle_success_response(request, response, return_type)
|
349
452
|
data = return_type ? deserialize(request, response, return_type) : nil
|
350
453
|
|
351
|
-
@config.logger
|
352
|
-
|
454
|
+
if @config.logger
|
455
|
+
@config.logger.debug(
|
456
|
+
"API Response Received:\nData: #{data.inspect}\nStatus code: #{response.code}\nHeaders: #{response.header}"
|
457
|
+
)
|
458
|
+
end
|
353
459
|
|
354
460
|
Response.new(response.code.to_i, response.header, data)
|
355
461
|
end
|
356
462
|
|
463
|
+
# rubocop:disable Metrics/AbcSize
|
357
464
|
def handle_non_success_response(request, response)
|
358
465
|
# For errors, we expect a plain JSON object so pass 'Object' here in order to serialize it into a hash
|
359
466
|
data = deserialize(request, response, 'Object')
|
@@ -384,78 +491,7 @@ module OCI
|
|
384
491
|
)
|
385
492
|
end
|
386
493
|
end
|
387
|
-
|
388
|
-
def self.append_query_params(url, query_params)
|
389
|
-
if query_params.empty?
|
390
|
-
url
|
391
|
-
else
|
392
|
-
# First divide our query params into ones where the param value is a simple value (e.g. a string), an array or a hash.
|
393
|
-
# The params where the value is a hash are, for example, tags we need to handle differently for inclusion in the query
|
394
|
-
# string. We also need to handle array params differently in the query string since the values should appear as separate entries
|
395
|
-
# in the query string with the same key (this corresponds to using collectionFormat=multi in Swagger)
|
396
|
-
#
|
397
|
-
# An example query_params is:
|
398
|
-
#
|
399
|
-
# {
|
400
|
-
# "stuff" => "things",
|
401
|
-
# "anArrayType" => ["hello", "world"]
|
402
|
-
# "definedTags" => { "tag1" => ["val1", "val2", "val3"], "tag2" => ["val1"] },
|
403
|
-
# "definedTagsExists" => { "tag3" => true, "tag4" => true }
|
404
|
-
# }
|
405
|
-
#
|
406
|
-
# So our simple_params will be: { "stuff" => "things" }
|
407
|
-
# And our array_params will be: { "anArrayType" => ["hello", "world"]}
|
408
|
-
# And our hash_params will be: { "definedTags" => { "tag1" => ["val1", "val2", "val3"], "tag2" => ["val1"] }, "definedTagsExists" => { "tag3" => true, "tag4" => true } }
|
409
|
-
simple_params = query_params.select { |k,v| !v.is_a?(Hash) && !v.is_a?(Array) }.to_h
|
410
|
-
array_params = query_params.select { |k,v| v.is_a?(Array) }.to_h
|
411
|
-
hash_params = query_params.select { |k,v| v.is_a?(Hash) }.to_h
|
412
|
-
|
413
|
-
# Simple params just go key to value
|
414
|
-
base_query_string = ''
|
415
|
-
base_query_string << simple_params.map{|k,v| "#{k}=#{self.cgi_escape_query_param(v)}"}.join('&') unless simple_params.empty?
|
416
|
-
|
417
|
-
# Using the previous comment:
|
418
|
-
# k = "anArrayType", v = ["hello", "world"]
|
419
|
-
#
|
420
|
-
# And we want query string params like #{k}=#{v[0]}&#{k}=#{v[1]}&#{k}=#{v[2]}...
|
421
|
-
# So the same key is repeated, but each value is a different value from the array
|
422
|
-
array_params.each do |k,v|
|
423
|
-
v.each do |query_string_val|
|
424
|
-
base_query_string << '&' unless base_query_string.empty?
|
425
|
-
base_query_string << "#{k}=#{self.cgi_escape_query_param(query_string_val)}"
|
426
|
-
end
|
427
|
-
end
|
428
|
-
|
429
|
-
# Using the previous comment:
|
430
|
-
# k = "definedTags", v = { "tag1" => [...] }
|
431
|
-
#
|
432
|
-
# Hash params are exploded as follows:
|
433
|
-
#
|
434
|
-
# - If value in v is an array then we explode the content like: #{k}.#{v.key}=#{v.value[0]}&#{k}.#{v.key}=#{v.value[1]}&... so that there is
|
435
|
-
# one query string parameter per item in the array
|
436
|
-
# - If value in v is not an array then we explode the content like: #{k}.#{v.key}=#{v.value}
|
437
|
-
hash_params.each do |k,v|
|
438
|
-
v.each do |tag_key, tag_val|
|
439
|
-
# TODO: Should this be ERB::Util.url_encode instead? CGI.escape gives "+" here but url_encode will give %20
|
440
|
-
# CGI.escape is what we've been using until now, and it looks like it works...A literal "+" in the string will
|
441
|
-
# be encoded to %2B
|
442
|
-
query_string_val = if tag_val.is_a?(Array)
|
443
|
-
# to_s tag_key to avoid errors around implicit conversion of symbols to strings
|
444
|
-
tag_val.map { |tv| "#{k}.#{self.cgi_escape_query_param(tag_key)}=#{self.cgi_escape_query_param(tv)}" }.join('&')
|
445
|
-
else
|
446
|
-
"#{k}.#{self.cgi_escape_query_param(tag_key)}=#{self.cgi_escape_query_param(tag_val)}"
|
447
|
-
end
|
448
|
-
base_query_string << '&' unless base_query_string.empty?
|
449
|
-
base_query_string << query_string_val
|
450
|
-
end
|
451
|
-
end
|
452
|
-
|
453
|
-
url << '?' unless base_query_string.empty?
|
454
|
-
url << base_query_string
|
455
|
-
|
456
|
-
url
|
457
|
-
end
|
458
|
-
end
|
494
|
+
# rubocop:enable Metrics/AbcSize
|
459
495
|
|
460
496
|
# Check if the given MIME is a JSON MIME.
|
461
497
|
# JSON MIME examples:
|
@@ -468,6 +504,9 @@ module OCI
|
|
468
504
|
!(mime =~ /\Aapplication\/json(;.*)?\z/i).nil?
|
469
505
|
end
|
470
506
|
|
507
|
+
# rubocop:disable Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/PerceivedComplexity, Layout/EmptyLines
|
508
|
+
|
509
|
+
|
471
510
|
# Deserialize the response to the given return type.
|
472
511
|
#
|
473
512
|
# @param [Response] response HTTP response
|
@@ -494,9 +533,9 @@ module OCI
|
|
494
533
|
end
|
495
534
|
|
496
535
|
begin
|
497
|
-
data = JSON.parse("[#{body}]", :
|
536
|
+
data = JSON.parse("[#{body}]", symbolize_names: true)[0]
|
498
537
|
rescue JSON::ParserError
|
499
|
-
if %w
|
538
|
+
if %w[String Date DateTime].include?(return_type)
|
500
539
|
data = body
|
501
540
|
else
|
502
541
|
# If we received an error here then we received a response from the OCI service that
|
@@ -522,15 +561,16 @@ module OCI
|
|
522
561
|
|
523
562
|
OCI::Internal::Util.convert_to_type return_type, data
|
524
563
|
end
|
564
|
+
# rubocop:enable Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/PerceivedComplexity, Layout/EmptyLines
|
525
565
|
|
526
566
|
def build_request_url(path, endpoint)
|
527
567
|
# Add leading and trailing slashes to path
|
528
568
|
path = "/#{path}".gsub(/\/+/, '/')
|
569
|
+
endpoint = endpoint.chop if endpoint.end_with? '/'
|
529
570
|
|
530
|
-
|
531
|
-
endpoint = endpoint.chop
|
532
|
-
end
|
571
|
+
# rubocop:disable Lint/UriEscapeUnescape
|
533
572
|
URI.encode(endpoint + path)
|
573
|
+
# rubocop:enable Lint/UriEscapeUnescape
|
534
574
|
end
|
535
575
|
|
536
576
|
# Builds the HTTP request body
|
@@ -542,7 +582,8 @@ module OCI
|
|
542
582
|
def build_request_body(header_params, form_params, body)
|
543
583
|
# http form
|
544
584
|
if header_params['content-type'] == 'application/x-www-form-urlencoded' ||
|
545
|
-
|
585
|
+
header_params['content-type'] == 'multipart/form-data'
|
586
|
+
|
546
587
|
data = {}
|
547
588
|
form_params.each do |key, value|
|
548
589
|
case value
|
@@ -583,7 +624,7 @@ module OCI
|
|
583
624
|
begin
|
584
625
|
return yield
|
585
626
|
rescue OCI::Errors::ServiceError => e
|
586
|
-
raise if attempt >= (max_attempts - 1)
|
627
|
+
raise if attempt >= (max_attempts - 1) # .times is zero-based
|
587
628
|
raise if e.status != 401
|
588
629
|
|
589
630
|
@signer.refresh_security_token
|
@@ -591,21 +632,5 @@ module OCI
|
|
591
632
|
end
|
592
633
|
end
|
593
634
|
end
|
594
|
-
|
595
|
-
def self.get_rfc339_formatted_date_string_with_z_offset(date_time)
|
596
|
-
as_utc = date_time.to_time.utc
|
597
|
-
|
598
|
-
# Port of the Java SDK behaviour where we omit fractional seconds if they would be 0
|
599
|
-
return as_utc.iso8601() if as_utc.strftime('%L').to_i == 0
|
600
|
-
as_utc.iso8601(3)
|
601
|
-
end
|
602
|
-
|
603
|
-
def self.cgi_escape_query_param(raw_value)
|
604
|
-
if raw_value.is_a?(DateTime)
|
605
|
-
CGI.escape(get_rfc339_formatted_date_string_with_z_offset(raw_value))
|
606
|
-
else
|
607
|
-
CGI.escape(raw_value.to_s)
|
608
|
-
end
|
609
|
-
end
|
610
635
|
end
|
611
636
|
end
|