diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 4d9d8ee74c..8b17ae5f05 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -3,6 +3,25 @@ Change Log
All notable changes to this project will be documented in this file.
The format is based on `Keep a Changelog `_.
+====================
+2.35.1 - 2020-04-06
+====================
+
+Added
+-----
+* Support for scheduling the suspension and resumption of compute instance pools based on predefined schedules in the Autoscaling service
+* Support for database software images for Cloud@Customer in the Database service
+* Support for OCIC IDCS authorization details in the Application Migration service
+* Support for cross-region asynchronous volume replication in the Block Storage service
+* Support for SDK generation in the API Gateway service
+* Support for container image signing in the Registry service
+* Support for cluster features as a part of the Container Engine for Kubernetes service
+* Support for filtering dedicated virtual machine hosts by remaining memory and OCPUs in the Compute service
+* Support for read/write-any object from buckets using pre-authenticated requests in the Object Storage service
+* Support for restricting pre-authenticated requests by prefix in the Object Storage service
+* Support for route filtering on public virtual circuits in the Virtual Networking service
+* Support for calculating content length of a non-resettable stream for binary uploads. A non-resettable stream will be buffered into memory to calculate the content length. A buffer_limit may be passed into the request to provide a buffer limit. The default buffer limit is 100 MiB. More documentation can be found here: https://oracle-cloud-infrastructure-python-sdk.readthedocs.io/en/latest/sdk_behaviors/index.html
+
====================
2.35.0 - 2020-03-30
====================
diff --git a/docs/api/apigateway.rst b/docs/api/apigateway.rst
index 6552c0e97a..78f31597a3 100644
--- a/docs/api/apigateway.rst
+++ b/docs/api/apigateway.rst
@@ -55,6 +55,7 @@ Apigateway
oci.apigateway.models.CreateCertificateDetails
oci.apigateway.models.CreateDeploymentDetails
oci.apigateway.models.CreateGatewayDetails
+ oci.apigateway.models.CreateSdkDetails
oci.apigateway.models.CustomAuthenticationPolicy
oci.apigateway.models.Deployment
oci.apigateway.models.DeploymentCollection
@@ -85,6 +86,14 @@ Apigateway
oci.apigateway.models.RenameQueryParameterPolicy
oci.apigateway.models.RenameQueryParameterPolicyItem
oci.apigateway.models.RouteAuthorizationPolicy
+ oci.apigateway.models.Sdk
+ oci.apigateway.models.SdkCollection
+ oci.apigateway.models.SdkLanguageOptionalParameters
+ oci.apigateway.models.SdkLanguageOptionalParametersAllowedValue
+ oci.apigateway.models.SdkLanguageTypeCollection
+ oci.apigateway.models.SdkLanguageTypeSummary
+ oci.apigateway.models.SdkLanguageTypes
+ oci.apigateway.models.SdkSummary
oci.apigateway.models.SetHeaderPolicy
oci.apigateway.models.SetHeaderPolicyItem
oci.apigateway.models.SetQueryParameterPolicy
@@ -96,6 +105,7 @@ Apigateway
oci.apigateway.models.UpdateCertificateDetails
oci.apigateway.models.UpdateDeploymentDetails
oci.apigateway.models.UpdateGatewayDetails
+ oci.apigateway.models.UpdateSdkDetails
oci.apigateway.models.WorkRequest
oci.apigateway.models.WorkRequestCollection
oci.apigateway.models.WorkRequestError
diff --git a/docs/api/apigateway/models/oci.apigateway.models.CreateSdkDetails.rst b/docs/api/apigateway/models/oci.apigateway.models.CreateSdkDetails.rst
new file mode 100644
index 0000000000..8157b6338b
--- /dev/null
+++ b/docs/api/apigateway/models/oci.apigateway.models.CreateSdkDetails.rst
@@ -0,0 +1,11 @@
+CreateSdkDetails
+================
+
+.. currentmodule:: oci.apigateway.models
+
+.. autoclass:: CreateSdkDetails
+ :show-inheritance:
+ :special-members: __init__
+ :members:
+ :undoc-members:
+ :inherited-members:
\ No newline at end of file
diff --git a/docs/api/apigateway/models/oci.apigateway.models.Sdk.rst b/docs/api/apigateway/models/oci.apigateway.models.Sdk.rst
new file mode 100644
index 0000000000..034274fb76
--- /dev/null
+++ b/docs/api/apigateway/models/oci.apigateway.models.Sdk.rst
@@ -0,0 +1,11 @@
+Sdk
+===
+
+.. currentmodule:: oci.apigateway.models
+
+.. autoclass:: Sdk
+ :show-inheritance:
+ :special-members: __init__
+ :members:
+ :undoc-members:
+ :inherited-members:
\ No newline at end of file
diff --git a/docs/api/apigateway/models/oci.apigateway.models.SdkCollection.rst b/docs/api/apigateway/models/oci.apigateway.models.SdkCollection.rst
new file mode 100644
index 0000000000..3e9719f535
--- /dev/null
+++ b/docs/api/apigateway/models/oci.apigateway.models.SdkCollection.rst
@@ -0,0 +1,11 @@
+SdkCollection
+=============
+
+.. currentmodule:: oci.apigateway.models
+
+.. autoclass:: SdkCollection
+ :show-inheritance:
+ :special-members: __init__
+ :members:
+ :undoc-members:
+ :inherited-members:
\ No newline at end of file
diff --git a/docs/api/apigateway/models/oci.apigateway.models.SdkLanguageOptionalParameters.rst b/docs/api/apigateway/models/oci.apigateway.models.SdkLanguageOptionalParameters.rst
new file mode 100644
index 0000000000..e6b03bb3ba
--- /dev/null
+++ b/docs/api/apigateway/models/oci.apigateway.models.SdkLanguageOptionalParameters.rst
@@ -0,0 +1,11 @@
+SdkLanguageOptionalParameters
+=============================
+
+.. currentmodule:: oci.apigateway.models
+
+.. autoclass:: SdkLanguageOptionalParameters
+ :show-inheritance:
+ :special-members: __init__
+ :members:
+ :undoc-members:
+ :inherited-members:
\ No newline at end of file
diff --git a/docs/api/apigateway/models/oci.apigateway.models.SdkLanguageOptionalParametersAllowedValue.rst b/docs/api/apigateway/models/oci.apigateway.models.SdkLanguageOptionalParametersAllowedValue.rst
new file mode 100644
index 0000000000..2ebd320757
--- /dev/null
+++ b/docs/api/apigateway/models/oci.apigateway.models.SdkLanguageOptionalParametersAllowedValue.rst
@@ -0,0 +1,11 @@
+SdkLanguageOptionalParametersAllowedValue
+=========================================
+
+.. currentmodule:: oci.apigateway.models
+
+.. autoclass:: SdkLanguageOptionalParametersAllowedValue
+ :show-inheritance:
+ :special-members: __init__
+ :members:
+ :undoc-members:
+ :inherited-members:
\ No newline at end of file
diff --git a/docs/api/apigateway/models/oci.apigateway.models.SdkLanguageTypeCollection.rst b/docs/api/apigateway/models/oci.apigateway.models.SdkLanguageTypeCollection.rst
new file mode 100644
index 0000000000..64ea6651b5
--- /dev/null
+++ b/docs/api/apigateway/models/oci.apigateway.models.SdkLanguageTypeCollection.rst
@@ -0,0 +1,11 @@
+SdkLanguageTypeCollection
+=========================
+
+.. currentmodule:: oci.apigateway.models
+
+.. autoclass:: SdkLanguageTypeCollection
+ :show-inheritance:
+ :special-members: __init__
+ :members:
+ :undoc-members:
+ :inherited-members:
\ No newline at end of file
diff --git a/docs/api/apigateway/models/oci.apigateway.models.SdkLanguageTypeSummary.rst b/docs/api/apigateway/models/oci.apigateway.models.SdkLanguageTypeSummary.rst
new file mode 100644
index 0000000000..c0b1540d9f
--- /dev/null
+++ b/docs/api/apigateway/models/oci.apigateway.models.SdkLanguageTypeSummary.rst
@@ -0,0 +1,11 @@
+SdkLanguageTypeSummary
+======================
+
+.. currentmodule:: oci.apigateway.models
+
+.. autoclass:: SdkLanguageTypeSummary
+ :show-inheritance:
+ :special-members: __init__
+ :members:
+ :undoc-members:
+ :inherited-members:
\ No newline at end of file
diff --git a/docs/api/apigateway/models/oci.apigateway.models.SdkLanguageTypes.rst b/docs/api/apigateway/models/oci.apigateway.models.SdkLanguageTypes.rst
new file mode 100644
index 0000000000..942ce91cad
--- /dev/null
+++ b/docs/api/apigateway/models/oci.apigateway.models.SdkLanguageTypes.rst
@@ -0,0 +1,11 @@
+SdkLanguageTypes
+================
+
+.. currentmodule:: oci.apigateway.models
+
+.. autoclass:: SdkLanguageTypes
+ :show-inheritance:
+ :special-members: __init__
+ :members:
+ :undoc-members:
+ :inherited-members:
\ No newline at end of file
diff --git a/docs/api/apigateway/models/oci.apigateway.models.SdkSummary.rst b/docs/api/apigateway/models/oci.apigateway.models.SdkSummary.rst
new file mode 100644
index 0000000000..40d097b63f
--- /dev/null
+++ b/docs/api/apigateway/models/oci.apigateway.models.SdkSummary.rst
@@ -0,0 +1,11 @@
+SdkSummary
+==========
+
+.. currentmodule:: oci.apigateway.models
+
+.. autoclass:: SdkSummary
+ :show-inheritance:
+ :special-members: __init__
+ :members:
+ :undoc-members:
+ :inherited-members:
\ No newline at end of file
diff --git a/docs/api/apigateway/models/oci.apigateway.models.UpdateSdkDetails.rst b/docs/api/apigateway/models/oci.apigateway.models.UpdateSdkDetails.rst
new file mode 100644
index 0000000000..0c25bfbe0c
--- /dev/null
+++ b/docs/api/apigateway/models/oci.apigateway.models.UpdateSdkDetails.rst
@@ -0,0 +1,11 @@
+UpdateSdkDetails
+================
+
+.. currentmodule:: oci.apigateway.models
+
+.. autoclass:: UpdateSdkDetails
+ :show-inheritance:
+ :special-members: __init__
+ :members:
+ :undoc-members:
+ :inherited-members:
\ No newline at end of file
diff --git a/docs/api/application_migration.rst b/docs/api/application_migration.rst
index 84b880095b..deda24ef29 100644
--- a/docs/api/application_migration.rst
+++ b/docs/api/application_migration.rst
@@ -34,6 +34,7 @@ Application Migration
oci.application_migration.models.OccAuthorizationDetails
oci.application_migration.models.OccSourceDetails
oci.application_migration.models.OcicAuthorizationDetails
+ oci.application_migration.models.OcicAuthorizationTokenDetails
oci.application_migration.models.OcicSourceDetails
oci.application_migration.models.OicDiscoveryDetails
oci.application_migration.models.PcsDiscoveryDetails
diff --git a/docs/api/application_migration/models/oci.application_migration.models.OcicAuthorizationTokenDetails.rst b/docs/api/application_migration/models/oci.application_migration.models.OcicAuthorizationTokenDetails.rst
new file mode 100644
index 0000000000..13b41000b6
--- /dev/null
+++ b/docs/api/application_migration/models/oci.application_migration.models.OcicAuthorizationTokenDetails.rst
@@ -0,0 +1,11 @@
+OcicAuthorizationTokenDetails
+=============================
+
+.. currentmodule:: oci.application_migration.models
+
+.. autoclass:: OcicAuthorizationTokenDetails
+ :show-inheritance:
+ :special-members: __init__
+ :members:
+ :undoc-members:
+ :inherited-members:
\ No newline at end of file
diff --git a/docs/api/artifacts.rst b/docs/api/artifacts.rst
index 28ceef57a2..70712ccdf9 100644
--- a/docs/api/artifacts.rst
+++ b/docs/api/artifacts.rst
@@ -23,12 +23,16 @@ Artifacts
oci.artifacts.models.ContainerImage
oci.artifacts.models.ContainerImageCollection
oci.artifacts.models.ContainerImageLayer
+ oci.artifacts.models.ContainerImageSignature
+ oci.artifacts.models.ContainerImageSignatureCollection
+ oci.artifacts.models.ContainerImageSignatureSummary
oci.artifacts.models.ContainerImageSummary
oci.artifacts.models.ContainerRepository
oci.artifacts.models.ContainerRepositoryCollection
oci.artifacts.models.ContainerRepositoryReadme
oci.artifacts.models.ContainerRepositorySummary
oci.artifacts.models.ContainerVersion
+ oci.artifacts.models.CreateContainerImageSignatureDetails
oci.artifacts.models.CreateContainerRepositoryDetails
oci.artifacts.models.RemoveContainerVersionDetails
oci.artifacts.models.RestoreContainerImageDetails
diff --git a/docs/api/artifacts/models/oci.artifacts.models.ContainerImageSignature.rst b/docs/api/artifacts/models/oci.artifacts.models.ContainerImageSignature.rst
new file mode 100644
index 0000000000..ce368c8bea
--- /dev/null
+++ b/docs/api/artifacts/models/oci.artifacts.models.ContainerImageSignature.rst
@@ -0,0 +1,11 @@
+ContainerImageSignature
+=======================
+
+.. currentmodule:: oci.artifacts.models
+
+.. autoclass:: ContainerImageSignature
+ :show-inheritance:
+ :special-members: __init__
+ :members:
+ :undoc-members:
+ :inherited-members:
\ No newline at end of file
diff --git a/docs/api/artifacts/models/oci.artifacts.models.ContainerImageSignatureCollection.rst b/docs/api/artifacts/models/oci.artifacts.models.ContainerImageSignatureCollection.rst
new file mode 100644
index 0000000000..a1878d2e9c
--- /dev/null
+++ b/docs/api/artifacts/models/oci.artifacts.models.ContainerImageSignatureCollection.rst
@@ -0,0 +1,11 @@
+ContainerImageSignatureCollection
+=================================
+
+.. currentmodule:: oci.artifacts.models
+
+.. autoclass:: ContainerImageSignatureCollection
+ :show-inheritance:
+ :special-members: __init__
+ :members:
+ :undoc-members:
+ :inherited-members:
\ No newline at end of file
diff --git a/docs/api/artifacts/models/oci.artifacts.models.ContainerImageSignatureSummary.rst b/docs/api/artifacts/models/oci.artifacts.models.ContainerImageSignatureSummary.rst
new file mode 100644
index 0000000000..065e97a328
--- /dev/null
+++ b/docs/api/artifacts/models/oci.artifacts.models.ContainerImageSignatureSummary.rst
@@ -0,0 +1,11 @@
+ContainerImageSignatureSummary
+==============================
+
+.. currentmodule:: oci.artifacts.models
+
+.. autoclass:: ContainerImageSignatureSummary
+ :show-inheritance:
+ :special-members: __init__
+ :members:
+ :undoc-members:
+ :inherited-members:
\ No newline at end of file
diff --git a/docs/api/artifacts/models/oci.artifacts.models.CreateContainerImageSignatureDetails.rst b/docs/api/artifacts/models/oci.artifacts.models.CreateContainerImageSignatureDetails.rst
new file mode 100644
index 0000000000..80e3ed6d43
--- /dev/null
+++ b/docs/api/artifacts/models/oci.artifacts.models.CreateContainerImageSignatureDetails.rst
@@ -0,0 +1,11 @@
+CreateContainerImageSignatureDetails
+====================================
+
+.. currentmodule:: oci.artifacts.models
+
+.. autoclass:: CreateContainerImageSignatureDetails
+ :show-inheritance:
+ :special-members: __init__
+ :members:
+ :undoc-members:
+ :inherited-members:
\ No newline at end of file
diff --git a/docs/api/autoscaling.rst b/docs/api/autoscaling.rst
index be3553cad6..53baf5435e 100644
--- a/docs/api/autoscaling.rst
+++ b/docs/api/autoscaling.rst
@@ -36,6 +36,8 @@ Autoscaling
oci.autoscaling.models.InstancePoolResource
oci.autoscaling.models.Metric
oci.autoscaling.models.Resource
+ oci.autoscaling.models.ResourceAction
+ oci.autoscaling.models.ResourcePowerAction
oci.autoscaling.models.ScheduledPolicy
oci.autoscaling.models.Threshold
oci.autoscaling.models.ThresholdPolicy
diff --git a/docs/api/autoscaling/models/oci.autoscaling.models.ResourceAction.rst b/docs/api/autoscaling/models/oci.autoscaling.models.ResourceAction.rst
new file mode 100644
index 0000000000..b4cb6f5e12
--- /dev/null
+++ b/docs/api/autoscaling/models/oci.autoscaling.models.ResourceAction.rst
@@ -0,0 +1,11 @@
+ResourceAction
+==============
+
+.. currentmodule:: oci.autoscaling.models
+
+.. autoclass:: ResourceAction
+ :show-inheritance:
+ :special-members: __init__
+ :members:
+ :undoc-members:
+ :inherited-members:
\ No newline at end of file
diff --git a/docs/api/autoscaling/models/oci.autoscaling.models.ResourcePowerAction.rst b/docs/api/autoscaling/models/oci.autoscaling.models.ResourcePowerAction.rst
new file mode 100644
index 0000000000..267c8c7b90
--- /dev/null
+++ b/docs/api/autoscaling/models/oci.autoscaling.models.ResourcePowerAction.rst
@@ -0,0 +1,11 @@
+ResourcePowerAction
+===================
+
+.. currentmodule:: oci.autoscaling.models
+
+.. autoclass:: ResourcePowerAction
+ :show-inheritance:
+ :special-members: __init__
+ :members:
+ :undoc-members:
+ :inherited-members:
\ No newline at end of file
diff --git a/docs/api/container_engine.rst b/docs/api/container_engine.rst
index 20cc15098a..2800c6325f 100644
--- a/docs/api/container_engine.rst
+++ b/docs/api/container_engine.rst
@@ -30,9 +30,12 @@ Container Engine
oci.container_engine.models.CreateClusterDetails
oci.container_engine.models.CreateClusterEndpointConfigDetails
oci.container_engine.models.CreateClusterKubeconfigContentDetails
+ oci.container_engine.models.CreateImagePolicyConfigDetails
oci.container_engine.models.CreateNodePoolDetails
oci.container_engine.models.CreateNodePoolNodeConfigDetails
oci.container_engine.models.CreateNodeShapeConfigDetails
+ oci.container_engine.models.ImagePolicyConfig
+ oci.container_engine.models.KeyDetails
oci.container_engine.models.KeyValue
oci.container_engine.models.KubernetesNetworkConfig
oci.container_engine.models.Node
@@ -50,6 +53,7 @@ Container Engine
oci.container_engine.models.UpdateClusterDetails
oci.container_engine.models.UpdateClusterEndpointConfigDetails
oci.container_engine.models.UpdateClusterOptionsDetails
+ oci.container_engine.models.UpdateImagePolicyConfigDetails
oci.container_engine.models.UpdateNodePoolDetails
oci.container_engine.models.UpdateNodePoolNodeConfigDetails
oci.container_engine.models.UpdateNodeShapeConfigDetails
diff --git a/docs/api/container_engine/models/oci.container_engine.models.CreateImagePolicyConfigDetails.rst b/docs/api/container_engine/models/oci.container_engine.models.CreateImagePolicyConfigDetails.rst
new file mode 100644
index 0000000000..c6672ab801
--- /dev/null
+++ b/docs/api/container_engine/models/oci.container_engine.models.CreateImagePolicyConfigDetails.rst
@@ -0,0 +1,11 @@
+CreateImagePolicyConfigDetails
+==============================
+
+.. currentmodule:: oci.container_engine.models
+
+.. autoclass:: CreateImagePolicyConfigDetails
+ :show-inheritance:
+ :special-members: __init__
+ :members:
+ :undoc-members:
+ :inherited-members:
\ No newline at end of file
diff --git a/docs/api/container_engine/models/oci.container_engine.models.ImagePolicyConfig.rst b/docs/api/container_engine/models/oci.container_engine.models.ImagePolicyConfig.rst
new file mode 100644
index 0000000000..922e1a89cb
--- /dev/null
+++ b/docs/api/container_engine/models/oci.container_engine.models.ImagePolicyConfig.rst
@@ -0,0 +1,11 @@
+ImagePolicyConfig
+=================
+
+.. currentmodule:: oci.container_engine.models
+
+.. autoclass:: ImagePolicyConfig
+ :show-inheritance:
+ :special-members: __init__
+ :members:
+ :undoc-members:
+ :inherited-members:
\ No newline at end of file
diff --git a/docs/api/container_engine/models/oci.container_engine.models.KeyDetails.rst b/docs/api/container_engine/models/oci.container_engine.models.KeyDetails.rst
new file mode 100644
index 0000000000..fe2dbe1eb9
--- /dev/null
+++ b/docs/api/container_engine/models/oci.container_engine.models.KeyDetails.rst
@@ -0,0 +1,11 @@
+KeyDetails
+==========
+
+.. currentmodule:: oci.container_engine.models
+
+.. autoclass:: KeyDetails
+ :show-inheritance:
+ :special-members: __init__
+ :members:
+ :undoc-members:
+ :inherited-members:
\ No newline at end of file
diff --git a/docs/api/container_engine/models/oci.container_engine.models.UpdateImagePolicyConfigDetails.rst b/docs/api/container_engine/models/oci.container_engine.models.UpdateImagePolicyConfigDetails.rst
new file mode 100644
index 0000000000..04751ce5c1
--- /dev/null
+++ b/docs/api/container_engine/models/oci.container_engine.models.UpdateImagePolicyConfigDetails.rst
@@ -0,0 +1,11 @@
+UpdateImagePolicyConfigDetails
+==============================
+
+.. currentmodule:: oci.container_engine.models
+
+.. autoclass:: UpdateImagePolicyConfigDetails
+ :show-inheritance:
+ :special-members: __init__
+ :members:
+ :undoc-members:
+ :inherited-members:
\ No newline at end of file
diff --git a/docs/api/core.rst b/docs/api/core.rst
index 3f7bead21e..aefa6e88ad 100644
--- a/docs/api/core.rst
+++ b/docs/api/core.rst
@@ -49,14 +49,21 @@ Core Services
oci.core.models.AttachVnicDetails
oci.core.models.AttachVolumeDetails
oci.core.models.BgpSessionInfo
+ oci.core.models.BlockVolumeReplica
+ oci.core.models.BlockVolumeReplicaDetails
+ oci.core.models.BlockVolumeReplicaInfo
oci.core.models.BooleanImageCapabilitySchemaDescriptor
oci.core.models.BootVolume
oci.core.models.BootVolumeAttachment
oci.core.models.BootVolumeBackup
oci.core.models.BootVolumeKmsKey
+ oci.core.models.BootVolumeReplica
+ oci.core.models.BootVolumeReplicaDetails
+ oci.core.models.BootVolumeReplicaInfo
oci.core.models.BootVolumeSourceDetails
oci.core.models.BootVolumeSourceFromBootVolumeBackupDetails
oci.core.models.BootVolumeSourceFromBootVolumeDetails
+ oci.core.models.BootVolumeSourceFromBootVolumeReplicaDetails
oci.core.models.BulkAddVirtualCircuitPublicPrefixesDetails
oci.core.models.BulkDeleteVirtualCircuitPublicPrefixesDetails
oci.core.models.ByoipAllocatedRangeCollection
@@ -398,5 +405,6 @@ Core Services
oci.core.models.VolumeGroupSourceFromVolumesDetails
oci.core.models.VolumeKmsKey
oci.core.models.VolumeSourceDetails
+ oci.core.models.VolumeSourceFromBlockVolumeReplicaDetails
oci.core.models.VolumeSourceFromVolumeBackupDetails
oci.core.models.VolumeSourceFromVolumeDetails
diff --git a/docs/api/core/models/oci.core.models.BlockVolumeReplica.rst b/docs/api/core/models/oci.core.models.BlockVolumeReplica.rst
new file mode 100644
index 0000000000..02724eff22
--- /dev/null
+++ b/docs/api/core/models/oci.core.models.BlockVolumeReplica.rst
@@ -0,0 +1,11 @@
+BlockVolumeReplica
+==================
+
+.. currentmodule:: oci.core.models
+
+.. autoclass:: BlockVolumeReplica
+ :show-inheritance:
+ :special-members: __init__
+ :members:
+ :undoc-members:
+ :inherited-members:
\ No newline at end of file
diff --git a/docs/api/core/models/oci.core.models.BlockVolumeReplicaDetails.rst b/docs/api/core/models/oci.core.models.BlockVolumeReplicaDetails.rst
new file mode 100644
index 0000000000..2e156e43ea
--- /dev/null
+++ b/docs/api/core/models/oci.core.models.BlockVolumeReplicaDetails.rst
@@ -0,0 +1,11 @@
+BlockVolumeReplicaDetails
+=========================
+
+.. currentmodule:: oci.core.models
+
+.. autoclass:: BlockVolumeReplicaDetails
+ :show-inheritance:
+ :special-members: __init__
+ :members:
+ :undoc-members:
+ :inherited-members:
\ No newline at end of file
diff --git a/docs/api/core/models/oci.core.models.BlockVolumeReplicaInfo.rst b/docs/api/core/models/oci.core.models.BlockVolumeReplicaInfo.rst
new file mode 100644
index 0000000000..2f2974e937
--- /dev/null
+++ b/docs/api/core/models/oci.core.models.BlockVolumeReplicaInfo.rst
@@ -0,0 +1,11 @@
+BlockVolumeReplicaInfo
+======================
+
+.. currentmodule:: oci.core.models
+
+.. autoclass:: BlockVolumeReplicaInfo
+ :show-inheritance:
+ :special-members: __init__
+ :members:
+ :undoc-members:
+ :inherited-members:
\ No newline at end of file
diff --git a/docs/api/core/models/oci.core.models.BootVolumeReplica.rst b/docs/api/core/models/oci.core.models.BootVolumeReplica.rst
new file mode 100644
index 0000000000..8bb3d0a68b
--- /dev/null
+++ b/docs/api/core/models/oci.core.models.BootVolumeReplica.rst
@@ -0,0 +1,11 @@
+BootVolumeReplica
+=================
+
+.. currentmodule:: oci.core.models
+
+.. autoclass:: BootVolumeReplica
+ :show-inheritance:
+ :special-members: __init__
+ :members:
+ :undoc-members:
+ :inherited-members:
\ No newline at end of file
diff --git a/docs/api/core/models/oci.core.models.BootVolumeReplicaDetails.rst b/docs/api/core/models/oci.core.models.BootVolumeReplicaDetails.rst
new file mode 100644
index 0000000000..3289e3e292
--- /dev/null
+++ b/docs/api/core/models/oci.core.models.BootVolumeReplicaDetails.rst
@@ -0,0 +1,11 @@
+BootVolumeReplicaDetails
+========================
+
+.. currentmodule:: oci.core.models
+
+.. autoclass:: BootVolumeReplicaDetails
+ :show-inheritance:
+ :special-members: __init__
+ :members:
+ :undoc-members:
+ :inherited-members:
\ No newline at end of file
diff --git a/docs/api/core/models/oci.core.models.BootVolumeReplicaInfo.rst b/docs/api/core/models/oci.core.models.BootVolumeReplicaInfo.rst
new file mode 100644
index 0000000000..dada62e7b5
--- /dev/null
+++ b/docs/api/core/models/oci.core.models.BootVolumeReplicaInfo.rst
@@ -0,0 +1,11 @@
+BootVolumeReplicaInfo
+=====================
+
+.. currentmodule:: oci.core.models
+
+.. autoclass:: BootVolumeReplicaInfo
+ :show-inheritance:
+ :special-members: __init__
+ :members:
+ :undoc-members:
+ :inherited-members:
\ No newline at end of file
diff --git a/docs/api/core/models/oci.core.models.BootVolumeSourceFromBootVolumeReplicaDetails.rst b/docs/api/core/models/oci.core.models.BootVolumeSourceFromBootVolumeReplicaDetails.rst
new file mode 100644
index 0000000000..94068d0334
--- /dev/null
+++ b/docs/api/core/models/oci.core.models.BootVolumeSourceFromBootVolumeReplicaDetails.rst
@@ -0,0 +1,11 @@
+BootVolumeSourceFromBootVolumeReplicaDetails
+============================================
+
+.. currentmodule:: oci.core.models
+
+.. autoclass:: BootVolumeSourceFromBootVolumeReplicaDetails
+ :show-inheritance:
+ :special-members: __init__
+ :members:
+ :undoc-members:
+ :inherited-members:
\ No newline at end of file
diff --git a/docs/api/core/models/oci.core.models.VolumeSourceFromBlockVolumeReplicaDetails.rst b/docs/api/core/models/oci.core.models.VolumeSourceFromBlockVolumeReplicaDetails.rst
new file mode 100644
index 0000000000..ef39edaba9
--- /dev/null
+++ b/docs/api/core/models/oci.core.models.VolumeSourceFromBlockVolumeReplicaDetails.rst
@@ -0,0 +1,11 @@
+VolumeSourceFromBlockVolumeReplicaDetails
+=========================================
+
+.. currentmodule:: oci.core.models
+
+.. autoclass:: VolumeSourceFromBlockVolumeReplicaDetails
+ :show-inheritance:
+ :special-members: __init__
+ :members:
+ :undoc-members:
+ :inherited-members:
\ No newline at end of file
diff --git a/docs/sdk_behaviors/calculate_content_length.rst b/docs/sdk_behaviors/calculate_content_length.rst
new file mode 100644
index 0000000000..2b401ae7d2
--- /dev/null
+++ b/docs/sdk_behaviors/calculate_content_length.rst
@@ -0,0 +1,14 @@
+.. _sdk-calculate-content-length:
+
+Request body content length
+~~~~~~~~
+By default, any requests that takes in an optional content length in the SDK will try calculate body's content length if the content length is not provided.
+If the request body contains a string, then content length will calculated by giving the length of the string.
+If the request body is a stream, the SDK will check to see if the request stream body contains a tell and seek property to calculate content length and reset the stream's cursor back to its original position.
+If the stream is not resetable, the stream will be buffered into memory at a rate of 128MB per read action to calculate the content length. A buffer_limit may be passed into the request to provide a buffer limit.
+The stream will be read until the buffer is at its limit. If so, it will throw an exception to tell customer to pass in the content-length of the file instead.
+If the buffer_limit is not passed in, then the buffer_limit will be defaulted to 100MB.. Note that for big streams, there is a chance there will be a write timeout.
+One way to get around this is to increase the timeout, turn off the timeout when creating a service client or to pass in the content-length in the request.
+Customers may experience slow performance for calculating content length on a large file. If the file is very large, it may freeze the process. Consider passing in content-length for big files.
+If content length is not provided and the SDK is unable to calculate the content length of the request body, then an exception will be thrown to tell the user to pass in the content length to the request.
+If the content length is already provided in the request, then the SDK will use the content length provided in the request.
\ No newline at end of file
diff --git a/docs/sdk_behaviors/index.rst b/docs/sdk_behaviors/index.rst
index 7d0d8e54cd..0816b40728 100644
--- a/docs/sdk_behaviors/index.rst
+++ b/docs/sdk_behaviors/index.rst
@@ -8,6 +8,7 @@ This section describes SDK-specific behaviors:
* :doc:`Parallel operations `
* :doc:`Passing explicit null/None values `
* :doc:`Retries `
+* :doc:`Calculating stream content length `
.. toctree::
:hidden:
@@ -16,4 +17,5 @@ This section describes SDK-specific behaviors:
handle_naive_datetime
/parallel-ops
/pass-explicit-null
- retries
\ No newline at end of file
+ retries
+ calculate_content_length
\ No newline at end of file
diff --git a/examples/container_image_signing/example.py b/examples/container_image_signing/example.py
new file mode 100644
index 0000000000..866ff1e1e4
--- /dev/null
+++ b/examples/container_image_signing/example.py
@@ -0,0 +1,44 @@
+import logging
+
+from examples.container_image_signing.utils import sign_and_upload_container_image_signature_metadata
+from examples.container_image_signing.utils import get_and_verify_image_signature_metadata
+from src.oci.artifacts.artifacts_client import ArtifactsClient
+from src.oci.config import from_file
+
+
+def main():
+
+ # Default config file and profile
+ config = from_file()
+ # Create artifact
+ artifacts_client = ArtifactsClient(config)
+
+ # Upload Image and Signature Flow
+ kms_key_id = "ocid1.key.oc1..exampleuniqueID"
+ kms_key_version_id = "ocid1.keyversion.oc1..exampleuniqueID"
+ signing_algo = "SHA_512_RSA_PKCS_PSS"
+ compartment_id = "ocid1.compartment.oc1..exampleuniqueID"
+ image_id = "ocid1.containerimage.oc1..exampleuniqueID"
+ description = "Image built by TC"
+ metadata = "{\"buildNumber\":\"123\"}"
+
+ signature = sign_and_upload_container_image_signature_metadata(artifacts_client, config, kms_key_id,
+ kms_key_version_id,
+ signing_algo, compartment_id, image_id,
+ description, metadata)
+ logging.INFO("A signature has been successfully uploaded: %s", signature)
+
+ # Pull Image and Verify Signature Flow
+ repo_name = "repo-name"
+ trusted_keys = ["ocid1.key.oc1..keyId1", "ocid1.key.oc1..keyId2"]
+ image_digest = "sha256:12345"
+
+ verified = get_and_verify_image_signature_metadata(artifacts_client, compartment_id, False, repo_name, image_digest, trusted_keys)
+ if verified:
+ logging.INFO("At least one of the signatures is verified")
+ else:
+ logging.WARN("None of the signatures is verified")
+
+
+if __name__ == '__main__':
+ main()
diff --git a/examples/container_image_signing/utils.py b/examples/container_image_signing/utils.py
new file mode 100644
index 0000000000..ca5d930031
--- /dev/null
+++ b/examples/container_image_signing/utils.py
@@ -0,0 +1,274 @@
+# coding: utf-8
+# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
+
+from __future__ import absolute_import
+
+import re
+import json
+import base64
+import logging
+
+from oci.regions import REALMS, REGION_REALMS
+from oci.artifacts.models.create_container_image_signature_details import CreateContainerImageSignatureDetails
+from oci.key_management.models.sign_data_details import SignDataDetails
+from oci.key_management.kms_crypto_client import KmsCryptoClient
+from oci.key_management.models.verify_data_details import VerifyDataDetails
+
+
+def sign_and_upload_container_image_signature_metadata(artifacts_client, config, key_id, key_version_id, signing_algorithm,
+ compartment_id, image_id,
+ description, metadata):
+ """
+ SignAndUploadContainerImageSignatureMetadata calls KMS to sign the message then calls OCIR to upload the returned signature
+
+ :param artifacts_client: Artifacts client
+ :param config: Config file
+ :param key_id: The OCID of the kmsKeyId used to sign the container image. eg) ocid1.key.oc1..exampleuniqueID. Max length: 255, Min length:1
+ :param key_version_id: The OCID of the kmsKeyVersionId used to sign the container image. eg) ocid1.keyversion.oc1..exampleuniqueID. Max length: 255, Min length:1
+ :param signing_algorithm: The algorithm to be used for signing. These are the only supported signing algorithms for container images.
+ - SHA_224_RSA_PKCS_PSS
+ - SHA_256_RSA_PKCS_PSS
+ - SHA_384_RSA_PKCS_PSS
+ - SHA_512_RSA_PKCS_PSS
+ :param compartment_id: The OCID of the compartment in which the container repository exists. eg) ocid1.compartment.oc1..exampleuniqueID. Max length: 100, Min length: 1
+ :param image_id: The OCID of the container image. eg) ocid1.containerimage.oc1..exampleuniqueID. Max length: 255, Min length:1
+ :param repo_path: The docker repository path. eg) odx-registry/busybox
+ :param digest: The sha256 digest of the docker image. eg) sha256:12345
+ :param description: An user inputted message.
+ :param metadata: An user defined information about the container image in JSON format eg) {"buildNumber":"123"}
+ restriction:
+ - should only contains alphanumeric key strings.
+ - should be alphabetically sorted.
+ - should not have whitespaces or escape characters.
+ :return: The signed container image signature metadata.
+ """
+ signing_algo_kms = mapping_sign_data_details_signing_algorithm.get(signing_algorithm)
+ if signing_algo_kms is None:
+ raise Exception("The sign data details signing algorithm is not valid. Please check.")
+ signing_algo_ocir = mapping_create_container_image_signature_details_signing_algorithm.get(signing_algorithm)
+ if signing_algo_ocir is None:
+ raise Exception("The create container image signature details signing algorithm is not valid. Please check.")
+ region = config.get("region")
+
+ # Create KMS client
+ kms_crypto_client = build_vault_crypto_client(config, key_id, region)
+
+ # Get container image metadata
+ logging.info("Obtaining container image metadata by the image ID")
+ container_image = get_container_image_metadata(artifacts_client, image_id)
+ logging.info("Container image metadata: %s", container_image)
+
+ # Generate message
+ message = {
+ "description": description,
+ "imageDigest": container_image.digest,
+ "kmsKeyId": key_id,
+ "kmsKeyVersionId": key_version_id,
+ "metadata": metadata,
+ "region": region,
+ "repositoryName": container_image.repository_name,
+ "signingAlgorithm": signing_algorithm
+ }
+ json_string = json.dumps(message, separators=(',', ':'))
+ encoded_json = base64.b64encode(json_string.encode()).decode()
+
+ # Sign image digest
+ logging.info("Generating signature")
+ signed_data = sign_container_image(
+ kms_crypto_client, encoded_json, key_id, key_version_id, signing_algo_kms)
+ logging.info("Signature: %s", signed_data)
+
+ # Upload signature metadata
+ logging.info("Uploading signature")
+ container_image_signature_uploaded = upload_signature_metadata(artifacts_client, compartment_id,
+ image_id, key_id, key_version_id, signing_algo_ocir,
+ encoded_json, signed_data.signature)
+ logging.info("Uploaded signature: %s\nMessage: %s\nID: %s\n", container_image_signature_uploaded.signature,
+ container_image_signature_uploaded.message, container_image_signature_uploaded.id)
+ return container_image_signature_uploaded
+
+
+def get_and_verify_image_signature_metadata(artifacts_client, config, compartment_id, compartment_id_in_subtree,
+ repository_name, image_digest, trusted_keys):
+ """
+ GetAndVerifyImageSignatureMetadata calls OCIR to list all the signatures satisfying the user provided criterion then
+ calls KMS to verify the returned signatures
+
+ :param artifacts_client: Artifacts client
+ :param config: Config file
+ :param compartment_id: The OCID of the compartment in which the container repository exists. eg) ocid1.compartment.oc1..exampleuniqueID. MAX length: 100, MIN length 1
+ :param compartment_id_in_subtree: When set to true, the hierarchy of compartments is traversed
+ :param repository_name: The repository name in which the container image exists eg) busybox
+ :param image_digest: The sha256 digest of the docker image. eg) sha256:12345
+ :param trusted_keys: List of OCIDs of the kmsKeyId used to sign the container image.
+ :return: Boolean to indicate if any of the signatures of the container image is verified
+ """
+ return get_and_verify_image_signature_metadata_helper(artifacts_client, config, compartment_id,
+ compartment_id_in_subtree, repository_name, image_digest,
+ trusted_keys, None)
+
+
+def get_and_verify_image_signature_metadata_helper(artifacts_client, config, compartment_id, compartment_id_in_subtree,
+ repository_name, image_digest, trusted_keys, page):
+
+ logging.info("Fetching signatures")
+ try:
+ signature_collection, next_page = list_container_image_signatures_with_repo_path(
+ artifacts_client, compartment_id, compartment_id_in_subtree, repository_name, image_digest, page)
+ except Exception:
+ logging.error("Unable to get container image signature list using repo path.")
+ return False
+ logging.info("Fetched signature: %d signature in compartment %s with image URL: %s:%s. Remaining count %d",
+ len(signature_collection.items), compartment_id, repository_name, image_digest,
+ signature_collection.remaining_items_count)
+
+ # Filter out the keys
+ container_image_signature_summaries = filter_item_by_trusted_keys(signature_collection.items, trusted_keys)
+ if len(container_image_signature_summaries) == 0:
+ raise Exception("No signature in the image was signed by the supplied trusted keys")
+ logging.info("Filtered out %d signatures by the trusted keys",
+ len(signature_collection.items) - len(container_image_signature_summaries))
+
+ # Verify signature
+ logging.info("Verifying signature")
+ verified = verify_signatures(config, container_image_signature_summaries)
+ if verified is False and next_page is not None:
+ return get_and_verify_image_signature_metadata_helper(artifacts_client, config, compartment_id,
+ compartment_id_in_subtree, repository_name, image_digest,
+ trusted_keys, next_page)
+ return verified
+
+
+def sign_container_image(kms_crypto_client, message, key_id, key_version_id, signing_algorithm):
+ sign_data_details = SignDataDetails(
+ message=message,
+ key_id=key_id,
+ key_version_id=key_version_id,
+ signing_algorithm=signing_algorithm,
+ message_type=SignDataDetails.MESSAGE_TYPE_RAW
+ )
+
+ response = kms_crypto_client.sign(sign_data_details)
+ return response.data
+
+
+def upload_signature_metadata(artifacts_client, compartment_id, image_id, key_id, key_version_id, signing_algorithm,
+ message, signature):
+ signature_details = CreateContainerImageSignatureDetails(
+ compartment_id=compartment_id,
+ image_id=image_id,
+ kms_key_id=key_id,
+ kms_key_version_id=key_version_id,
+ message=message,
+ signature=signature,
+ signing_algorithm=signing_algorithm
+ )
+ response = artifacts_client.create_container_image_signature(signature_details)
+ if response.status != 200:
+ raise Exception("Failed to upload the signature to OCI Registry. Status code: %d", response.status)
+ return response.data
+
+
+# Build the KmsCryptoClient based on the vault extension OCID in the keyId
+def build_vault_crypto_client(config, key_id, region):
+ split_list = re.split("ocid1\\.key\\.([\\w-]+)\\.([\\w-]+)\\.([\\w-]+)\\.([\\w]){60}", key_id)
+ if len(split_list) < 4:
+ raise Exception("Failed to split key ocid. Please check the kms_key_id is correct.")
+ vault_ext = split_list[3]
+ realm_name = REGION_REALMS.get(region)
+ second_level_domain = REALMS.get(realm_name)
+ crypto_endpoint = "https://" + vault_ext + "-crypto.kms." + region + "." + second_level_domain
+
+ kms_crypto_client = KmsCryptoClient(config, crypto_endpoint)
+ return kms_crypto_client
+
+
+def list_container_image_signatures_with_repo_path(artifacts_client, compartment_id, compartment_id_in_subtree,
+ repository_name, image_digest, page):
+ response = artifacts_client.list_container_image_signatures(
+ compartment_id=compartment_id,
+ compartment_id_in_subtree=compartment_id_in_subtree,
+ repository_name=repository_name,
+ image_digest=image_digest,
+ page=page)
+ if response.status != 200:
+ raise Exception("Failed to list the signatures of repository_name %s, image_digest %s, status_code %d",
+ repository_name, image_digest, response.status)
+ return response.data, response.next_page
+
+
+def is_trusted_key(key, trusted_keys):
+ for k in trusted_keys:
+ if k == key:
+ return True
+ return False
+
+
+def filter_item_by_trusted_keys(items, trusted_keys):
+ ret = []
+ for item in items:
+ if is_trusted_key(item.kms_key_id, trusted_keys):
+ ret.append(item)
+ return ret
+
+
+def verify_signatures(config, container_image_signature_summary):
+ region = config.get("region")
+
+ for signature_summary in container_image_signature_summary:
+ if signature_summary is not None:
+ vault_crypto_client = build_vault_crypto_client(config, signature_summary.kms_key_id, region)
+ algo = mapping_verify_data_details_signing_algorithm.get(signature_summary.signing_algorithm)
+ if algo is None:
+ raise Exception("The verify data details signing algorithm is not valid. Please check.")
+ verified_data = verify_signature(
+ vault_crypto_client,
+ signature_summary.message,
+ signature_summary.signature,
+ signature_summary.kms_key_id,
+ signature_summary.kms_key_version_id,
+ algo
+ )
+ if verified_data.is_signature_valid:
+ return True
+
+ return False
+
+
+def verify_signature(kms_crypto_client, message, signature, key_id, key_version_id, signing_algorithm):
+ verify_data_details = VerifyDataDetails(
+ key_id=key_id,
+ key_version_id=key_version_id,
+ signing_algorithm=signing_algorithm,
+ message=message,
+ signature=signature
+ )
+ response = kms_crypto_client.verify(verify_data_details)
+ return response.data
+
+
+def get_container_image_metadata(artifacts_client, image_id):
+ container_image = artifacts_client.get_container_image(image_id)
+ return container_image.data
+
+
+mapping_create_container_image_signature_details_signing_algorithm = {
+ "SHA_224_RSA_PKCS_PSS": CreateContainerImageSignatureDetails.SIGNING_ALGORITHM_SHA_224_RSA_PKCS_PSS,
+ "SHA_256_RSA_PKCS_PSS": CreateContainerImageSignatureDetails.SIGNING_ALGORITHM_SHA_256_RSA_PKCS_PSS,
+ "SHA_384_RSA_PKCS_PSS": CreateContainerImageSignatureDetails.SIGNING_ALGORITHM_SHA_384_RSA_PKCS_PSS,
+ "SHA_512_RSA_PKCS_PSS": CreateContainerImageSignatureDetails.SIGNING_ALGORITHM_SHA_512_RSA_PKCS_PSS
+}
+
+mapping_sign_data_details_signing_algorithm = {
+ "SHA_224_RSA_PKCS_PSS": SignDataDetails.SIGNING_ALGORITHM_SHA_224_RSA_PKCS_PSS,
+ "SHA_256_RSA_PKCS_PSS": SignDataDetails.SIGNING_ALGORITHM_SHA_256_RSA_PKCS_PSS,
+ "SHA_384_RSA_PKCS_PSS": SignDataDetails.SIGNING_ALGORITHM_SHA_384_RSA_PKCS_PSS,
+ "SHA_512_RSA_PKCS_PSS": SignDataDetails.SIGNING_ALGORITHM_SHA_512_RSA_PKCS_PSS
+}
+
+mapping_verify_data_details_signing_algorithm = {
+ "SHA_224_RSA_PKCS_PSS": VerifyDataDetails.SIGNING_ALGORITHM_SHA_224_RSA_PKCS_PSS,
+ "SHA_256_RSA_PKCS_PSS": VerifyDataDetails.SIGNING_ALGORITHM_SHA_256_RSA_PKCS_PSS,
+ "SHA_384_RSA_PKCS_PSS": VerifyDataDetails.SIGNING_ALGORITHM_SHA_384_RSA_PKCS_PSS,
+ "SHA_512_RSA_PKCS_PSS": VerifyDataDetails.SIGNING_ALGORITHM_SHA_512_RSA_PKCS_PSS
+}
diff --git a/examples/object_storage/object_storage_bulk_restore.py b/examples/object_storage/object_storage_bulk_restore.py
index de48fdc9f0..51b7c7fc43 100644
--- a/examples/object_storage/object_storage_bulk_restore.py
+++ b/examples/object_storage/object_storage_bulk_restore.py
@@ -2,6 +2,29 @@
# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+##########################################################################
+# object_storage_bulk_restore.py
+#
+# @author: Tim S and Adi Z
+#
+# Supports Python 3
+##########################################################################
+# Info:
+# Bulk restore with parallel threads
+#
+##########################################################################
+# Application Command line parameters
+#
+# -c config - Config file section to use (tenancy profile)
+# -t profile - Profile in config file, DEFAULT as default
+# -p proxy - Set Proxy (i.e. www-proxy-server.com:80)
+# -ip - Use Instance Principals for Authentication
+# -dt - Use Instance Principals with delegation token for cloud shell
+# -sb source_bucket
+# -sp source_prefix_include
+# -sr source_region
+##########################################################################
+
import threading
import time
import queue
diff --git a/examples/showoci/CHANGELOG.rst b/examples/showoci/CHANGELOG.rst
index 165b7df9bc..afd822bf80 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 `_.
+=====================
+21.03.30 - 21.03.30
+=====================
+* Added Network load Balancer
+* Amended Announcement to show all announcements.
+
=====================
21.03.23 - 21.03.23
=====================
diff --git a/examples/showoci/README.md b/examples/showoci/README.md
index 272d109e82..aecdffdd05 100755
--- a/examples/showoci/README.md
+++ b/examples/showoci/README.md
@@ -51,6 +51,7 @@ Output can be printer friendly, CSV files or JSON file.
- oci.logging.LoggingManagementClient
- oci.ocvp.EsxiHostClient and oci.ocvp.SddcClient
- oci.golden_gate.GoldenGateClient
+- oci.network_load_balancer.NetworkLoadBalancerClient
** DISCLAIMER – This is not an official Oracle application
diff --git a/examples/showoci/showoci.py b/examples/showoci/showoci.py
index 724576d87a..5e7ec017f4 100755
--- a/examples/showoci/showoci.py
+++ b/examples/showoci/showoci.py
@@ -68,6 +68,7 @@
# - oci.logging.LoggingManagementClient
# - oci.ocvp.EsxiHostClient and oci.ocvp.SddcClient
# - oci.golden_gate.GoldenGateClient
+# - oci.network_load_balancer.NetworkLoadBalancerClient
#
# Modules Not Yet Covered:
# - oci.secrets.SecretsClient
diff --git a/examples/showoci/showoci_data.py b/examples/showoci/showoci_data.py
index ae1fe6e21c..262af07f68 100755
--- a/examples/showoci/showoci_data.py
+++ b/examples/showoci/showoci_data.py
@@ -252,6 +252,14 @@ def __get_oci_region_data(self, region_name):
data['load_balancer'] = value
has_data = True
+ # run on Network Load Balancer
+ if self.service.flags.read_load_balancer:
+ value = self.__get_load_balancer_network_main(region_name, compartment)
+ if value:
+ if len(value) > 0:
+ data['network_load_balancer'] = value
+ has_data = True
+
# run on Resource Management
if self.service.flags.read_resource_management:
value = self.__get_resource_management_main(region_name, compartment)
@@ -2579,18 +2587,18 @@ def __get_load_balancer_bs_healthchecker(self, health_checker, line):
try:
h = health_checker
- if str(h['protocol']) == "TCP":
+ if str(h['protocol']) == "TCP" or str(h['protocol']) == "UDP":
if line == 1:
- return ("TCP, interval(ms)=" + str(h['interval_in_millis']) + ", " +
+ return (h['protocol'] + ", interval(ms)=" + str(h['interval_in_millis']) + ", " +
"Timeout(ms)=" + str(h['timeout_in_millis']) + ", " +
"retries=" + str(h['retries']))
if line == 2:
return str(h['port']) + "/" + h['protocol']
# if HTTP
- if str(h['protocol']) == "HTTP":
+ if str(h['protocol']) == "HTTP" or str(h['protocol']) == "HTTPS":
if line == 1:
- return ("HTTP, interval(ms)=" + str(h['interval_in_millis']) + ", " +
+ return (h['protocol'] + ", interval(ms)=" + str(h['interval_in_millis']) + ", " +
"Timeout(ms)=" + str(h['timeout_in_millis']) + ", " +
"retries=" + str(h['retries']))
if line == 2:
@@ -2635,7 +2643,6 @@ def __get_load_balancer_backendset(self, load_balancer_id):
##########################################################################
# print load balancer config
##########################################################################
-
def __get_load_balancer_details(self, load_balance_obj):
data = {}
try:
@@ -2718,6 +2725,95 @@ def __get_load_balancer_main(self, region_name, compartment):
self.__print_error("__get_load_balancer_main", e)
return data
+ ##########################################################################
+ # get load balancer backedset network
+ ##########################################################################
+ def __get_load_balancer_backendset_network(self, load_balancer_id):
+
+ data = []
+ try:
+
+ backendsets = self.service.search_multi_items(self.service.C_LB, self.service.C_LB_NETWORK_BACKEND_SETS, 'load_balancer_id', load_balancer_id)
+
+ for bs in backendsets:
+ dataval = bs
+ dataval['status'] = bs['status'].ljust(4)[0:4]
+ dataval['status_full'] = bs['status']
+
+ # Health Checker
+ datahealth = bs['health_checker']
+ datahealth['desc1'] = self.__get_load_balancer_bs_healthchecker(bs['health_checker'], 1)
+ datahealth['desc2'] = self.__get_load_balancer_bs_healthchecker(bs['health_checker'], 2)
+ dataval['health_check'] = datahealth
+
+ data.append(dataval)
+
+ # return the data
+ return data
+
+ except Exception as e:
+ self.__print_error("__get_load_balancer_backendset_network", e)
+ return data
+
+ ##########################################################################
+ # print load balancer config
+ ##########################################################################
+ def __get_load_balancer_network_details(self, load_balance_obj):
+ data = {}
+ try:
+ lb = load_balance_obj
+ data['id'] = str(lb['id'])
+ data['name'] = str(lb['display_name']) + " - " + str(lb['shape_name']) + " - " + ("(Private)" if lb['is_private'] else "(Public)")
+ data['status'] = lb['status']
+ data['display_name'] = lb['display_name']
+ data['is_private'] = lb['is_private']
+ data['ips'] = lb['ip_addresses']
+ data['nsg_ids'] = lb['nsg_ids']
+ data['nsg_names'] = lb['nsg_names']
+ data['compartment_name'] = lb['compartment_name']
+ data['compartment_id'] = lb['compartment_id']
+ data['subnet_id'] = lb['subnet_id']
+ data['subnet_name'] = lb['subnet_name']
+ data['defined_tags'] = lb['defined_tags']
+ data['freeform_tags'] = lb['freeform_tags']
+
+ # listeners
+ datalis = []
+ for lo in lb['listeners']:
+ value = {
+ 'port': str(lo['port']) + "/" + str(lo['protocol']),
+ 'default_backend_set_name': str(lo['default_backend_set_name']),
+ 'desc': (lo['id'].ljust(20) + " - " + str(lo['port']) + "/" + str(lo['protocol']) + " - BS: " + str(lo['default_backend_set_name']))
+ }
+ datalis.append(value)
+ data['listeners'] = datalis
+
+ return data
+ except Exception as e:
+ self.__print_error("__get_load_balancer_network_details", e)
+ return data
+
+ ##########################################################################
+ # Network Load Balancer
+ ##########################################################################
+ def __get_load_balancer_network_main(self, region_name, compartment):
+
+ data = []
+ try:
+ load_balancers = self.service.search_multi_items(self.service.C_LB, self.service.C_LB_NETWORK_LOAD_BALANCERS, 'region_name', region_name, 'compartment_id', compartment['id'])
+
+ for load_balance_obj in load_balancers:
+ dataval = {'sum_info': "Network Load Balancer",
+ 'details': self.__get_load_balancer_network_details(load_balance_obj),
+ 'backendset': self.__get_load_balancer_backendset_network(load_balance_obj['id'])}
+ data.append(dataval)
+
+ return data
+
+ except Exception as e:
+ self.__print_error("__get_load_balancer_main", e)
+ return data
+
##########################################################################
# resource Management
##########################################################################
diff --git a/examples/showoci/showoci_output.py b/examples/showoci/showoci_output.py
index 0141fae0db..ea848d2ea6 100755
--- a/examples/showoci/showoci_output.py
+++ b/examples/showoci/showoci_output.py
@@ -807,6 +807,37 @@ def __print_load_balancer_details(self, load_balance_obj):
except Exception as e:
self.__print_error("__print_load_balancer_details", e)
+ ##########################################################################
+ # print network_load balancer config
+ ##########################################################################
+
+ def __print_load_balancer_network_details(self, load_balance_obj):
+ try:
+ lb = load_balance_obj
+ print(self.taba + "Name : " + lb['name'])
+ print(self.tabs + "Status : " + lb['status'])
+ print(self.tabs + "Subnet : " + lb['subnet_name'])
+
+ if 'nsg_names' in lb:
+ if lb['nsg_names']:
+ print(self.tabs + "SecGrp : " + lb['nsg_names'])
+
+ # ip_addresses
+ if 'ips' in lb:
+ for ip in lb['ips']:
+ print(self.tabs + "IP : " + ip)
+
+ # listeners
+ if 'listeners' in lb:
+ if not lb['listeners']:
+ print(self.tabs + "Listener : None")
+ for listener in lb['listeners']:
+ print(self.tabs + "Listener : " + listener['desc'])
+ print("")
+
+ except Exception as e:
+ self.__print_error("__print_load_balancer_network_details", e)
+
##########################################################################
# Load Balancer
##########################################################################
@@ -830,6 +861,29 @@ def __print_load_balancer_main(self, load_balancers):
except Exception as e:
self.__print_error("__print_load_balancer_main", e)
+ ##########################################################################
+ # Network Load Balancer
+ ##########################################################################
+
+ def __print_load_balancer_network_main(self, load_balancers):
+ try:
+
+ if len(load_balancers) == 0:
+ return
+ self.print_header("Network Load Balancers", 2)
+
+ for load_balance_obj in load_balancers:
+ if 'details' in load_balance_obj:
+ self.__print_load_balancer_network_details(load_balance_obj['details'])
+
+ if 'backendset' in load_balance_obj:
+ self.__print_load_balancer_backendset(load_balance_obj['backendset'])
+
+ print("")
+
+ except Exception as e:
+ self.__print_error("__print_load_balancer_network_main", e)
+
##########################################################################
# print file systems mount targets
##########################################################################
@@ -1442,9 +1496,11 @@ def __print_announcement_main(self, announcements):
self.print_header("Announcements", 2)
for ann in announcements:
- print(self.taba + ann['summary'][0:100] + " (" + ann['reference_ticket_number'] + ") - " + ann['announcement_type'] + ", " + ann['time_one_value'][0:16])
- print(self.tabs + "Regions : " + ann['affected_regions'])
- print(self.tabs + "Services : " + ann['services'])
+ print(self.taba + ann['summary'][0:100] + " (" + ann['reference_ticket_number'] + ") - " + ann['announcement_type'] + ", Start Time: " + ann['time_one_value'][0:16] + ", Time Created: " + ann['time_created'][0:16] + " (" + ann['lifecycle_state'] + ")")
+ if ann['affected_regions']:
+ print(self.tabs + "Regions : " + ann['affected_regions'])
+ if ann['services']:
+ print(self.tabs + "Services : " + ann['services'])
print("")
except Exception as e:
@@ -2112,6 +2168,8 @@ def __print_region_data(self, region_name, data):
self.__print_file_storage_main(cdata['file_storage'])
if 'load_balancer' in cdata:
self.__print_load_balancer_main(cdata['load_balancer'])
+ if 'network_load_balancer' in cdata:
+ self.__print_load_balancer_network_main(cdata['network_load_balancer'])
if 'email' in cdata:
self.__print_email_main(cdata['email'])
if 'resource_management' in cdata:
@@ -2778,6 +2836,8 @@ def __summary_region_data(self, region_name, data):
self.__summary_file_storage_main(cdata['file_storage'])
if 'load_balancer' in cdata:
self.__summary_load_balancer_main(cdata['load_balancer'])
+ if 'network_load_balancer' in cdata:
+ self.__summary_load_balancer_main(cdata['network_load_balancer'])
if 'paas_services' in cdata:
self.__summary_paas_services_main(cdata['paas_services'])
if 'security' in cdata:
diff --git a/examples/showoci/showoci_service.py b/examples/showoci/showoci_service.py
index 8095170fc0..65ea09133e 100755
--- a/examples/showoci/showoci_service.py
+++ b/examples/showoci/showoci_service.py
@@ -134,7 +134,7 @@ def is_load_basic_network(self):
# class ShowOCIService
##########################################################################
class ShowOCIService(object):
- oci_compatible_version = "2.32.1"
+ oci_compatible_version = "2.34.0"
##########################################################################
# Global Constants
@@ -204,6 +204,8 @@ class ShowOCIService(object):
C_LB = 'loadbalancer'
C_LB_LOAD_BALANCERS = 'load_balancers'
C_LB_BACKEND_SETS = 'backend_sets'
+ C_LB_NETWORK_LOAD_BALANCERS = 'network_load_balancers'
+ C_LB_NETWORK_BACKEND_SETS = 'network_lb_backend_sets'
# Load Balancer Identifiers
C_OS = 'objectstorage'
@@ -4839,7 +4841,7 @@ def __load_core_block_volume_backup(self, block_storage, compartments):
# OCI Classes used:
#
# class oci.load_balancer.LoadBalancerClient(config, **kwargs)
- #
+ # class oci.network_load_balancer.NetworkLoadBalancerClient(self.config, signer=self.signer)
##########################################################################
def __load_load_balancer_main(self):
@@ -4851,12 +4853,19 @@ def __load_load_balancer_main(self):
if self.flags.proxy:
load_balancer.base_client.session.proxies = {'https': self.flags.proxy}
+ # NetworkLoadBalancerClient
+ network_load_balancer = oci.network_load_balancer.NetworkLoadBalancerClient(self.config, signer=self.signer)
+ if self.flags.proxy:
+ network_load_balancer.base_client.session.proxies = {'https': self.flags.proxy}
+
# reference to compartments
compartments = self.get_compartment()
# add the key to the network if not exists
self.__initialize_data_key(self.C_LB, self.C_LB_LOAD_BALANCERS)
self.__initialize_data_key(self.C_LB, self.C_LB_BACKEND_SETS)
+ self.__initialize_data_key(self.C_LB, self.C_LB_NETWORK_LOAD_BALANCERS)
+ self.__initialize_data_key(self.C_LB, self.C_LB_NETWORK_BACKEND_SETS)
# reference to compute
lb = self.data[self.C_LB]
@@ -4864,6 +4873,8 @@ def __load_load_balancer_main(self):
# append the data
lb[self.C_LB_LOAD_BALANCERS] += self.__load_load_balancers(load_balancer, compartments)
lb[self.C_LB_BACKEND_SETS] += self.__load_load_balancer_backendset(load_balancer)
+ lb[self.C_LB_NETWORK_LOAD_BALANCERS] += self.__load_load_balancers_network(network_load_balancer, compartments)
+ lb[self.C_LB_NETWORK_BACKEND_SETS] += self.__load_load_balancer_backendset_network(network_load_balancer)
print("")
except oci.exceptions.RequestException:
@@ -5029,6 +5040,117 @@ def __load_load_balancers(self, load_balancer, compartments):
self.__print_error("__load_load_balancers", e)
return data
+ ##########################################################################
+ # data load network load balancers
+ ##########################################################################
+ def __load_load_balancers_network(self, network_load_balancer, compartments):
+
+ data = []
+ cnt = 0
+ start_time = time.time()
+
+ try:
+
+ self.__load_print_status("Network Load Balancers")
+
+ # loop on all compartments
+ for compartment in compartments:
+
+ network_load_balancers = []
+ try:
+ network_load_balancers = oci.pagination.list_call_get_all_results(
+ network_load_balancer.list_network_load_balancers,
+ compartment['id'],
+ sort_by="displayName",
+ lifecycle_state=oci.network_load_balancer.models.NetworkLoadBalancerSummary.LIFECYCLE_STATE_ACTIVE,
+ retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY
+ ).data
+
+ except oci.exceptions.ServiceError as e:
+ if self.__check_service_error(e.code):
+ self.__load_print_auth_warning()
+ continue
+ raise
+
+ print(".", end="")
+
+ # loop on array
+ # arr = oci.network_load_balancer.models.NetworkLoadBalancerSummary
+ for arr in network_load_balancers:
+
+ # get LB health
+ status = ""
+ try:
+ status = network_load_balancer.get_network_load_balancer_health(arr.id).data.status
+ except oci.exceptions.ServiceError as e:
+ if self.__check_service_error(e.code):
+ pass
+ else:
+ raise
+
+ # add the rest
+ val = {'id': str(arr.id),
+ 'shape_name': "Network Load Balancer",
+ 'display_name': str(arr.display_name),
+ 'lifecycle_state': str(arr.lifecycle_state),
+ 'lifecycle_details': str(arr.lifecycle_details),
+ 'time_created': str(arr.time_created),
+ 'time_updated': str(arr.time_updated),
+ 'is_private': str(arr.is_private),
+ 'is_preserve_source_destination': str(arr.is_preserve_source_destination),
+ 'subnet_id': str(arr.subnet_id),
+ 'subnet_name': "" if arr.subnet_id is None else self.get_network_subnet(arr.subnet_id, True),
+ 'status': str(status),
+ 'ip_addresses': [(str(ip.ip_address) + " - " + ("Public" if ip.is_public else "Private") + (" Reserved" if ip.reserved_ip else "")) for ip in arr.ip_addresses],
+ 'compartment_name': str(compartment['name']),
+ 'compartment_id': str(compartment['id']),
+ 'nsg_ids': [],
+ 'nsg_names': "",
+ 'system_tags': [] if arr.system_tags is None else arr.system_tags,
+ 'defined_tags': [] if arr.defined_tags is None else arr.defined_tags,
+ 'freeform_tags': [] if arr.freeform_tags is None else arr.freeform_tags,
+ 'region_name': str(self.config['region'])
+ }
+
+ # network_security_group_ids
+ if arr.network_security_group_ids:
+ val['nsg_ids'] = [str(a) for a in arr.network_security_group_ids]
+ val['nsg_names'] = self.__load_core_network_get_nsg_names(arr.network_security_group_ids)
+
+ # listeners
+ datalis = []
+ for listener in arr.listeners:
+ lo = arr.listeners[listener]
+ value = {
+ 'id': str(listener),
+ 'name': str(lo.name),
+ 'port': "ALL" if str(lo.port) == "0" else str(lo.port),
+ 'protocol': str(lo.protocol),
+ 'default_backend_set_name': str(lo.default_backend_set_name)
+ }
+
+ # add data
+ datalis.append(value)
+
+ val['listeners'] = datalis
+
+ # Add data
+ data.append(val)
+ cnt += 1
+
+ self.__load_print_cnt(cnt, start_time)
+ return data
+
+ except oci.exceptions.RequestException as e:
+
+ if self.__check_request_error(e):
+ return data
+
+ raise
+ except Exception as e:
+ self.__print_error("__load_network_load_balancers", e)
+ return data
+
##########################################################################
# data compute read block volume backups
##########################################################################
@@ -5267,6 +5389,139 @@ def __load_load_balancer_backendset(self, load_balancer):
self.__print_error("__load_load_balancer_backendset", e)
return data
+ ##########################################################################
+ # __load_network_load_balancer_backendset
+ ##########################################################################
+ def __load_load_balancer_backendset_network(self, network_load_balancer):
+
+ data = []
+ cnt = 0
+ start_time = time.time()
+
+ try:
+
+ self.__load_print_status("Network LB Backend Sets")
+
+ # get the load balancers for this regions
+ region_name = str(self.config['region'])
+ load_balancers = self.search_multi_items(self.C_LB, self.C_LB_NETWORK_LOAD_BALANCERS, 'region_name', region_name)
+
+ # loop on all load balancers
+ for lb in load_balancers:
+ load_balancer_id = lb['id']
+ region_name = lb['region_name']
+
+ ############################
+ # get backend set and status
+ ############################
+ backend_sets = []
+ try:
+ backend_sets = network_load_balancer.list_backend_sets(load_balancer_id, retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY).data
+
+ except oci.exceptions.ServiceError as e:
+ if self.__check_service_error(e.code):
+ self.__load_print_auth_warning()
+ continue
+ else:
+ self.__load_print_auth_warning("b", False)
+ continue
+ time.sleep(1)
+
+ # print next load balancer
+ print("L", end="")
+
+ # loop on backendsets
+ if backend_sets:
+ for bs in backend_sets.items:
+
+ ############################
+ # get status
+ ############################
+ status = ""
+ try:
+ status = network_load_balancer.get_backend_set_health(load_balancer_id, bs.name).data.status
+ except oci.exceptions.ServiceError as e:
+ if self.__check_service_error(e.code):
+ pass
+ else:
+ self.__load_print_auth_warning("s", False)
+ status = "-"
+ time.sleep(1)
+
+ # copy load balancer info
+ dataval = {'load_balancer_id': load_balancer_id,
+ 'compartment_name': lb['compartment_name'],
+ 'compartment_id': lb['compartment_id'],
+ 'region_name': lb['region_name'],
+ 'name': str(bs.name),
+ 'policy': str(bs.policy),
+ 'status': str(status),
+ 'desc': str(bs.name) + " - " + str(bs.policy)
+ }
+
+ ############################
+ # list of backends
+ ############################
+ databck = []
+ for backend in bs.backends:
+ bh_status = ""
+
+ # Check Status
+ try:
+ bh_status = network_load_balancer.get_backend_health(load_balancer_id, bs.name, backend.name).data.status
+ except oci.exceptions.ServiceError as e:
+ if self.__check_service_error(e.code):
+ pass
+ else:
+ self.__load_print_auth_warning("h", False)
+ bh_status = "-"
+ time.sleep(1)
+
+ # add details
+ bval = {'name': str(backend.name),
+ 'ip_address': str(backend.ip_address),
+ 'status': str(bh_status),
+ 'target_id': str(backend.target_id),
+ 'port': "ALL" if str(backend.port) == "0" else str(backend.port),
+ 'weight': str(backend.weight),
+ 'is_backup': str(backend.is_backup),
+ 'is_drain': str(backend.is_drain),
+ 'is_offline': str(backend.is_offline),
+ 'desc': (str(bh_status).ljust(4)[0:4] + " - " + str(backend.ip_address) + ":" + ("ALL" if str(backend.port) == "0" else str(backend.port)) + " - Backup=" + ("Y" if backend.is_backup else "N") + ", " + "Drain=" + ("Y" if backend.is_drain else "N") + ", " + "Offline=" + ("Y" if backend.is_offline else "N") + ", " + "Weight=" + str(backend.weight))
+ }
+ databck.append(bval)
+ dataval['backends'] = databck
+
+ # Health Checker
+ h = bs.health_checker
+ datahealth = {'protocol': str(h.protocol),
+ 'interval_in_millis': str(h.interval_in_millis),
+ 'timeout_in_millis': str(h.timeout_in_millis),
+ 'retries': str(h.retries),
+ 'port': str(h.port),
+ 'return_code': str(h.return_code),
+ 'request_data': str(h.request_data),
+ 'response_data': str(h.response_data),
+ 'response_body_regex': str(h.response_body_regex),
+ 'url_path': str(h.url_path)}
+ dataval['health_checker'] = datahealth
+
+ # add data
+ data.append(dataval)
+
+ cnt += 1
+
+ self.__load_print_cnt(cnt, start_time)
+ return data
+
+ except oci.exceptions.RequestException as e:
+ if self.__check_request_error(e):
+ return data
+ raise
+ except Exception as e:
+ self.__print_error("__load_network_load_balancer_backendset", e)
+ return data
+
##########################################################################
# __load_object_storage_main
##########################################################################
@@ -5982,23 +6237,23 @@ def __load_database_main(self):
print("Database...")
# LoadBalancerClient
- database_client = oci.database.DatabaseClient(self.config, signer=self.signer)
+ database_client = oci.database.DatabaseClient(self.config, signer=self.signer, timeout=1)
if self.flags.proxy:
database_client.base_client.session.proxies = {'https': self.flags.proxy}
- virtual_network = oci.core.VirtualNetworkClient(self.config, signer=self.signer)
+ virtual_network = oci.core.VirtualNetworkClient(self.config, signer=self.signer, timeout=1)
if self.flags.proxy:
virtual_network.base_client.session.proxies = {'https': self.flags.proxy}
- nosql_client = oci.nosql.NosqlClient(self.config, signer=self.signer)
+ nosql_client = oci.nosql.NosqlClient(self.config, signer=self.signer, timeout=1)
if self.flags.proxy:
nosql_client.base_client.session.proxies = {'https': self.flags.proxy}
- mysql_client = oci.mysql.DbSystemClient(self.config, signer=self.signer)
+ mysql_client = oci.mysql.DbSystemClient(self.config, signer=self.signer, timeout=1)
if self.flags.proxy:
mysql_client.base_client.session.proxies = {'https': self.flags.proxy}
- gg_client = oci.golden_gate.GoldenGateClient(self.config, signer=self.signer)
+ gg_client = oci.golden_gate.GoldenGateClient(self.config, signer=self.signer, timeout=1)
if self.flags.proxy:
gg_client.base_client.session.proxies = {'https': self.flags.proxy}
@@ -7287,11 +7542,8 @@ def __load_database_gg_deployments(self, gg_client, compartments):
# skip managed paas compartment
if self.__if_managed_paas_compartment(compartment['name']):
- print(".", end="")
continue
- print(".", end="")
-
gg_deployments = []
try:
gg_deployments = oci.pagination.list_call_get_all_results(
@@ -7303,12 +7555,14 @@ def __load_database_gg_deployments(self, gg_client, compartments):
except oci.exceptions.ServiceError as e:
if self.__check_service_error(e.code):
- self.__load_print_auth_warning()
+ self.__load_print_auth_warning("a", False)
continue
else:
print("e - " + str(e))
return data
+ print(".", end="")
+
# loop on auto
# array = oci.golden_gate.models.DeploymentSummary
for array in gg_deployments:
@@ -7370,18 +7624,15 @@ def __load_database_gg_db_registration(self, gg_client, compartments):
try:
- self.__load_print_status("Golden Gate DB Registration")
+ self.__load_print_status("Golden Gate DB Reg.")
# loop on all compartments
for compartment in compartments:
# skip managed paas compartment
if self.__if_managed_paas_compartment(compartment['name']):
- print(".", end="")
continue
- print(".", end="")
-
db_registrations = []
try:
db_registrations = oci.pagination.list_call_get_all_results(
@@ -7393,12 +7644,14 @@ def __load_database_gg_db_registration(self, gg_client, compartments):
except oci.exceptions.ServiceError as e:
if self.__check_service_error(e.code):
- self.__load_print_auth_warning()
+ self.__load_print_auth_warning("a", False)
continue
else:
print("e - " + str(e))
return data
+ print(".", end="")
+
# loop on auto
# array = oci.golden_gate.models.DatabaseRegistrationSummary(*
for array in db_registrations:
@@ -9792,7 +10045,11 @@ def __load_announcements(self, announcement_client, tenancy_id):
announcements = []
try:
- announcements = announcement_client.list_announcements(tenancy_id, lifecycle_state=oci.announcements_service.models.AnnouncementSummary.LIFECYCLE_STATE_ACTIVE, sort_by="timeCreated").data
+ announcements = oci.pagination.list_call_get_all_results(
+ announcement_client.list_announcements,
+ tenancy_id,
+ sort_by="timeCreated"
+ ).data
except oci.exceptions.ServiceError as e:
if self.__check_service_error(e.code):
@@ -9806,9 +10063,10 @@ def __load_announcements(self, announcement_client, tenancy_id):
# oci.announcements_service.models.AnnouncementsCollection
# oci.announcements_service.models.AnnouncementSummary
- for ann in announcements.items:
+ for ann in announcements:
val = {'id': str(ann.id),
'type': str(ann.type),
+ 'lifecycle_state': str(ann.lifecycle_state),
'reference_ticket_number': str(ann.reference_ticket_number),
'summary': str(ann.summary),
'time_one_title': str(ann.time_one_title),
diff --git a/examples/usage_reports_to_adw/CHANGELOG.rst b/examples/usage_reports_to_adw/CHANGELOG.rst
index 033ef90838..29f9ffb0c1 100755
--- a/examples/usage_reports_to_adw/CHANGELOG.rst
+++ b/examples/usage_reports_to_adw/CHANGELOG.rst
@@ -4,6 +4,13 @@ All notable changes to this project will be documented in this file.
The format is based on `Keep a Changelog `_.
+=====================
+21.04.04 - 2021-04-04
+=====================
+* Added option to specify one Tag Key to extract the data to TAG_SPECIAL column , use -ts
+* Added the Tag Special to filter and reports.
+* Fixed filter by Tag Data Bug
+
=====================
20.12.03 - 2020-12-03
=====================
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 848213616d..522129e40e 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
@@ -6,15 +6,15 @@ whenever sqlerror exit sql.sqlcode rollback
-- ORACLE Application Express (APEX) export file
--
-- You should run the script connected to SQL*Plus as the Oracle user
--- APEX_200100 or as the owner (parsing schema) of the application.
+-- APEX_200200 or as the owner (parsing schema) of the application.
--
-- NOTE: Calls to apex_application_install override the defaults below.
--
--------------------------------------------------------------------------------
begin
wwv_flow_api.import_begin (
- p_version_yyyy_mm_dd=>'2020.03.31'
-,p_release=>'20.1.0.00.13'
+ p_version_yyyy_mm_dd=>'2020.10.01'
+,p_release=>'20.2.0.00.20'
,p_default_workspace_id=>9710643564672463
,p_default_application_id=>100
,p_default_id_offset=>0
@@ -28,17 +28,16 @@ prompt APPLICATION 100 - OCI Usage and Cost Report
-- Application Export:
-- Application: 100
-- Name: OCI Usage and Cost Report
--- Date and Time: 12:30 Tuesday November 3, 2020
+-- Date and Time: 15:21 Monday March 29, 2021
-- Exported By: ADIZOHAR
-- Flashback: 0
-- Export Type: Application Export
--- Pages: 9
--- Items: 88
+-- Pages: 10
+-- Items: 101
-- Computations: 28
--- Processes: 4
--- Regions: 62
--- Buttons: 5
--- Dynamic Actions: 32
+-- Processes: 8
+-- Regions: 66
+-- Buttons: 10
-- Shared Components:
-- Logic:
-- App Settings: 1
@@ -69,7 +68,7 @@ prompt APPLICATION 100 - OCI Usage and Cost Report
-- Reports:
-- E-Mail:
-- Supporting Objects: Excluded
--- Version: 20.1.0.00.13
+-- Version: 20.2.0.00.20
-- Instance ID: 9710412995014033
--
@@ -89,6 +88,7 @@ wwv_flow_api.create_flow(
,p_page_protection_enabled_y_n=>'Y'
,p_checksum_salt=>'875FACC9195C359EC344917E15564C1D485DD4068144173F315788BE04F6A9F4'
,p_bookmark_checksum_function=>'SH512'
+,p_accept_old_checksums=>false
,p_compatibility_mode=>'19.2'
,p_flow_language=>'en'
,p_flow_language_derived_from=>'FLOW_PRIMARY_LANGUAGE'
@@ -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.11.10'
+,p_flow_version=>'Release 21.04.04'
,p_flow_status=>'AVAILABLE_W_EDIT_LINK'
,p_flow_unavailable_text=>'This application is currently unavailable at this time.'
,p_exact_substitutions_only=>'Y'
@@ -120,10 +120,11 @@ 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=>'20201103122939'
+,p_last_upd_yyyymmddhh24miss=>'20210329152118'
,p_file_prefix => nvl(wwv_flow_application_install.get_static_app_file_prefix,'')
,p_files_version=>3
,p_ui_type_name => null
+,p_print_server_type=>'INSTANCE'
);
end;
/
@@ -290,6 +291,13 @@ end;
/
prompt --application/plugin_settings
begin
+wwv_flow_api.create_plugin_setting(
+ p_id=>wwv_flow_api.id(1182329746069638)
+,p_plugin_type=>'ITEM TYPE'
+,p_plugin=>'NATIVE_SINGLE_CHECKBOX'
+,p_attribute_01=>'Y'
+,p_attribute_02=>'N'
+);
wwv_flow_api.create_plugin_setting(
p_id=>wwv_flow_api.id(9712418602687875)
,p_plugin_type=>'REGION TYPE'
@@ -516,6 +524,11 @@ wwv_flow_api.create_menu_option(
);
end;
/
+prompt --application/shared_components/navigation/breadcrumbentry
+begin
+null;
+end;
+/
prompt --application/shared_components/user_interface/templates/page/left_side_column
begin
wwv_flow_api.create_template(
@@ -10246,7 +10259,7 @@ wwv_flow_api.create_page(
,p_autocomplete_on_off=>'OFF'
,p_page_template_options=>'#DEFAULT#'
,p_last_updated_by=>'ADIZOHAR'
-,p_last_upd_yyyymmddhh24miss=>'20200506182804'
+,p_last_upd_yyyymmddhh24miss=>'20210329021046'
);
wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(9856082202688393)
@@ -10289,14 +10302,13 @@ wwv_flow_api.create_page_item(
'',
' htp.p(''
Welcome ''||:USER||'' ...
''||',
' ''Usage and Cost Reports to Autonomous database''||',
-' ''
Created by Adi Zohar, Feb-May 2020
''||',
+' ''
Created by Adi Zohar, Feb 2020-Apr 2021
''||',
' ''Application github link = usage_reports_to_adw
''||',
' ''Please check as well showoci application
''||',
unistr(' ''DISCLAIMER \2013 This is not an official Oracle application
'''),
' );',
'',
'END;'))
-,p_attribute_04=>'N'
);
end;
/
@@ -10309,9 +10321,14 @@ wwv_flow_api.create_page(
,p_step_title=>'Current State'
,p_warn_on_unsaved_changes=>'N'
,p_autocomplete_on_off=>'OFF'
+,p_inline_css=>wwv_flow_string.join(wwv_flow_t_varchar2(
+'#report .t-fht-thead{',
+' overflow: auto !important;',
+'}',
+''))
,p_page_template_options=>'#DEFAULT#'
,p_last_updated_by=>'ADIZOHAR'
-,p_last_upd_yyyymmddhh24miss=>'20201021143650'
+,p_last_upd_yyyymmddhh24miss=>'20210329143409'
);
wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(9905068422740501)
@@ -10334,17 +10351,20 @@ wwv_flow_api.create_page_plug(
,p_include_in_reg_disp_sel_yn=>'Y'
,p_plug_display_point=>'BODY'
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
+,p_plug_display_condition_type=>'ITEM_IS_NOT_ZERO'
+,p_plug_display_when_condition=>'P2_ROWS'
,p_attribute_01=>'N'
,p_attribute_02=>'HTML'
);
wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(9905297750740503)
-,p_plug_name=>'Current Status'
+,p_plug_name=>'Report'
+,p_region_name=>'report'
,p_parent_plug_id=>wwv_flow_api.id(9907719837740528)
-,p_region_template_options=>'#DEFAULT#'
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
,p_component_template_options=>'#DEFAULT#'
-,p_plug_template=>wwv_flow_api.id(9763915989688019)
-,p_plug_display_sequence=>90
+,p_plug_template=>wwv_flow_api.id(9765042323688020)
+,p_plug_display_sequence=>130
,p_plug_display_point=>'BODY'
,p_query_type=>'SQL'
,p_plug_source=>wwv_flow_string.join(wwv_flow_t_varchar2(
@@ -10368,6 +10388,7 @@ wwv_flow_api.create_page_plug(
' else USG_CONSUMED_UNITS',
' end as USG_CONSUMED_UNITS, ',
' USG_CONSUMED_MEASURE,',
+' TAG_SPECIAL,',
' TAGS_DATA',
'from oci_usage',
'where ',
@@ -10379,8 +10400,9 @@ wwv_flow_api.create_page_plug(
' (:P2_PRODUCT_RESOURCE is null or prd_resource = :P2_PRODUCT_RESOURCE) and',
' (:P2_WINDOWS_OCPUS is null or prd_resource not like ''%WINDOW%'') and',
' (:P2_TENANT_ID is null or tenant_id = :P2_TENANT_ID) and',
+' (:P2_TAG_SPECIAL is null or tag_special = :P2_TAG_SPECIAL) and',
' (:P2_TAG_KEY is null or tags_data like ''%#'' || :P2_TAG_KEY || ''=%'') and',
-' (:P2_TAG_DATA is null or tags_data like ''%#'' || nvl(:P2_TAG_KEY,''%'') || ''=%'' || :P2_TAG_DATA || ''#'') and',
+' (:P2_TAG_DATA is null or tags_data like ''%#'' || nvl(:P2_TAG_KEY,''%'') || ''='' || :P2_TAG_DATA || ''#%'') and',
' USAGE_INTERVAL_START = to_date(:P2_DATE,''YYYY-MM-DD HH24:MI'') and',
' USG_BILLED_QUANTITY>0',
'group by ',
@@ -10394,7 +10416,8 @@ wwv_flow_api.create_page_plug(
' USG_CONSUMED_MEASURE,',
' USAGE_INTERVAL_START,',
' USAGE_INTERVAL_END,',
-' TAGS_DATA',
+' TAGS_DATA,',
+' TAG_SPECIAL',
'order by 1,2,3,4',
'',
'',
@@ -10443,7 +10466,7 @@ wwv_flow_api.create_worksheet(
,p_show_detail_link=>'N'
,p_show_rows_per_page=>'N'
,p_show_notify=>'Y'
-,p_download_formats=>'CSV:HTML:EMAIL:XLS:PDF:RTF'
+,p_download_formats=>'CSV:HTML:EMAIL:XLSX:PDF:RTF'
,p_owner=>'USAGE'
,p_internal_uid=>9905307857740504
);
@@ -10563,6 +10586,14 @@ wwv_flow_api.create_worksheet_column(
,p_column_label=>'Tenant Id'
,p_column_type=>'STRING'
);
+wwv_flow_api.create_worksheet_column(
+ p_id=>wwv_flow_api.id(11789105721177224)
+,p_db_column_name=>'TAG_SPECIAL'
+,p_display_order=>140
+,p_column_identifier=>'N'
+,p_column_label=>'Tag Special'
+,p_column_type=>'STRING'
+);
wwv_flow_api.create_worksheet_rpt(
p_id=>wwv_flow_api.id(9917472939935282)
,p_application_user=>'APXWS_DEFAULT'
@@ -10570,13 +10601,13 @@ wwv_flow_api.create_worksheet_rpt(
,p_report_alias=>'99175'
,p_status=>'PUBLIC'
,p_is_default=>'Y'
-,p_report_columns=>'TENANT_ID:PRD_COMPARTMENT_PATH:PRD_COMPARTMENT_NAME:PRD_REGION:PRD_SERVICE:PRD_RESOURCE:USG_BILLED_QUANTITY:USG_CONSUMED_UNITS:USG_CONSUMED_MEASURE:USAGE_INTERVAL_START:USAGE_INTERVAL_END:TAGS_DATA:'
+,p_report_columns=>'TENANT_ID:PRD_COMPARTMENT_PATH:PRD_COMPARTMENT_NAME:PRD_REGION:PRD_SERVICE:PRD_RESOURCE:USG_BILLED_QUANTITY:USG_CONSUMED_UNITS:USG_CONSUMED_MEASURE:USAGE_INTERVAL_START:USAGE_INTERVAL_END:TAG_SPECIAL:TAGS_DATA:'
);
wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(9906337017740514)
,p_plug_name=>'OCPUs Chart per Compartment'
,p_parent_plug_id=>wwv_flow_api.id(9907719837740528)
-,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
,p_escape_on_http_output=>'Y'
,p_plug_template=>wwv_flow_api.id(9765042323688020)
,p_plug_display_sequence=>70
@@ -10651,7 +10682,8 @@ wwv_flow_api.create_jet_chart_series(
' (:P2_TENANT_ID is null or tenant_id = :P2_TENANT_ID) and',
' (:P2_WINDOWS_OCPUS is null or prd_resource not like ''%WINDOW%'') and',
' (:P2_TAG_KEY is null or tags_data like ''%#'' || :P2_TAG_KEY || ''=%'') and',
-' (:P2_TAG_DATA is null or tags_data like ''%#'' || nvl(:P2_TAG_KEY,''%'') || ''=%'' || :P2_TAG_DATA || ''#'') and',
+' (:P2_TAG_DATA is null or tags_data like ''%#'' || nvl(:P2_TAG_KEY,''%'') || ''='' || :P2_TAG_DATA || ''#%'') and',
+' (:P2_TAG_SPECIAL is null or tag_special = :P2_TAG_SPECIAL) and',
' USG_BILLED_QUANTITY>0 and',
' USG_CONSUMED_MEASURE=''OCPUS''',
'group by ',
@@ -10718,10 +10750,10 @@ wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(9906821641740519)
,p_plug_name=>'Storage Chart per Compartment in TB'
,p_parent_plug_id=>wwv_flow_api.id(9907719837740528)
-,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
,p_escape_on_http_output=>'Y'
,p_plug_template=>wwv_flow_api.id(9765042323688020)
-,p_plug_display_sequence=>80
+,p_plug_display_sequence=>90
,p_plug_new_grid_row=>false
,p_plug_display_point=>'BODY'
,p_plug_source_type=>'NATIVE_JET_CHART'
@@ -10810,7 +10842,8 @@ wwv_flow_api.create_jet_chart_series(
' (:P2_TENANT_ID is null or tenant_id = :P2_TENANT_ID) and',
' (:P2_WINDOWS_OCPUS is null or prd_resource not like ''%WINDOW%'') and',
' (:P2_TAG_KEY is null or tags_data like ''%#'' || :P2_TAG_KEY || ''=%'') and',
-' (:P2_TAG_DATA is null or tags_data like ''%#'' || nvl(:P2_TAG_KEY,''%'') || ''=%'' || :P2_TAG_DATA || ''#'') and',
+' (:P2_TAG_DATA is null or tags_data like ''%#'' || nvl(:P2_TAG_KEY,''%'') || ''='' || :P2_TAG_DATA || ''#%'') and',
+' (:P2_TAG_SPECIAL is null or tag_special = :P2_TAG_SPECIAL) and',
' USAGE_INTERVAL_START = to_date(:P2_DATE,''YYYY-MM-DD HH24:MI'') and',
' USG_BILLED_QUANTITY>0 and',
' USG_CONSUMED_MEASURE=''STORAGE_SIZE''',
@@ -10881,7 +10914,7 @@ wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(9909405153740545)
,p_plug_name=>'OCPUs Resource Chart'
,p_parent_plug_id=>wwv_flow_api.id(9907719837740528)
-,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
,p_escape_on_http_output=>'Y'
,p_plug_template=>wwv_flow_api.id(9765042323688020)
,p_plug_display_sequence=>50
@@ -10954,7 +10987,8 @@ wwv_flow_api.create_jet_chart_series(
' (:P2_TENANT_ID is null or tenant_id = :P2_TENANT_ID) and',
' (:P2_WINDOWS_OCPUS is null or prd_resource not like ''%WINDOW%'') and',
' (:P2_TAG_KEY is null or tags_data like ''%#'' || :P2_TAG_KEY || ''=%'') and',
-' (:P2_TAG_DATA is null or tags_data like ''%#'' || nvl(:P2_TAG_KEY,''%'') || ''=%'' || :P2_TAG_DATA || ''#'') and',
+' (:P2_TAG_DATA is null or tags_data like ''%#'' || nvl(:P2_TAG_KEY,''%'') || ''='' || :P2_TAG_DATA || ''#%'') and',
+' (:P2_TAG_SPECIAL is null or tag_special = :P2_TAG_SPECIAL) and',
' USAGE_INTERVAL_START = to_date(:P2_DATE,''YYYY-MM-DD HH24:MI'') and',
' USG_BILLED_QUANTITY>0 and',
' USG_CONSUMED_MEASURE=''OCPUS''',
@@ -10975,18 +11009,17 @@ wwv_flow_api.create_jet_chart_series(
,p_items_label_font_size=>'10'
);
wwv_flow_api.create_jet_chart_axis(
- p_id=>wwv_flow_api.id(9909783516740548)
+ p_id=>wwv_flow_api.id(9909811381740549)
,p_chart_id=>wwv_flow_api.id(9909551743740546)
-,p_axis=>'x'
+,p_axis=>'y'
,p_is_rendered=>'on'
-,p_format_scaling=>'auto'
+,p_format_scaling=>'none'
,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'
-,p_tick_label_rotation=>'auto'
-,p_tick_label_position=>'outside'
,p_zoom_order_seconds=>false
,p_zoom_order_minutes=>false
,p_zoom_order_hours=>false
@@ -10997,17 +11030,18 @@ wwv_flow_api.create_jet_chart_axis(
,p_zoom_order_years=>false
);
wwv_flow_api.create_jet_chart_axis(
- p_id=>wwv_flow_api.id(9909811381740549)
+ p_id=>wwv_flow_api.id(9909783516740548)
,p_chart_id=>wwv_flow_api.id(9909551743740546)
-,p_axis=>'y'
+,p_axis=>'x'
,p_is_rendered=>'on'
-,p_format_scaling=>'none'
+,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'
+,p_tick_label_rotation=>'auto'
+,p_tick_label_position=>'outside'
,p_zoom_order_seconds=>false
,p_zoom_order_minutes=>false
,p_zoom_order_hours=>false
@@ -11021,7 +11055,7 @@ wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(9923029639716102)
,p_plug_name=>'OCPUs Product Chart'
,p_parent_plug_id=>wwv_flow_api.id(9907719837740528)
-,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
,p_escape_on_http_output=>'Y'
,p_plug_template=>wwv_flow_api.id(9765042323688020)
,p_plug_display_sequence=>10
@@ -11034,6 +11068,7 @@ wwv_flow_api.create_jet_chart(
p_id=>wwv_flow_api.id(9923190243716103)
,p_region_id=>wwv_flow_api.id(9923029639716102)
,p_chart_type=>'bar'
+,p_height=>'500'
,p_animation_on_display=>'auto'
,p_animation_on_data_change=>'auto'
,p_orientation=>'vertical'
@@ -11042,9 +11077,7 @@ wwv_flow_api.create_jet_chart(
,p_hide_and_show_behavior=>'none'
,p_hover_behavior=>'none'
,p_stack=>'off'
-,p_stack_label=>'off'
,p_connect_nulls=>'Y'
-,p_value_position=>'auto'
,p_sorting=>'label-asc'
,p_fill_multi_series_gaps=>true
,p_zoom_and_scroll=>'off'
@@ -11052,20 +11085,8 @@ 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=>'bottom'
-,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
);
wwv_flow_api.create_jet_chart_series(
p_id=>wwv_flow_api.id(9923297286716104)
@@ -11093,7 +11114,8 @@ wwv_flow_api.create_jet_chart_series(
' (:P2_PRODUCT_RESOURCE is null or prd_resource = :P2_PRODUCT_RESOURCE) and',
' (:P2_WINDOWS_OCPUS is null or prd_resource not like ''%WINDOW%'') and',
' (:P2_TAG_KEY is null or tags_data like ''%#'' || :P2_TAG_KEY || ''=%'') and',
-' (:P2_TAG_DATA is null or tags_data like ''%#'' || nvl(:P2_TAG_KEY,''%'') || ''=%'' || :P2_TAG_DATA || ''#'') and',
+' (:P2_TAG_DATA is null or tags_data like ''%#'' || nvl(:P2_TAG_KEY,''%'') || ''='' || :P2_TAG_DATA || ''#%'') and',
+' (:P2_TAG_SPECIAL is null or tag_special = :P2_TAG_SPECIAL) and',
' USAGE_INTERVAL_START = to_date(:P2_DATE,''YYYY-MM-DD HH24:MI'') and',
' USG_BILLED_QUANTITY>0 and',
' USG_CONSUMED_MEASURE=''OCPUS''',
@@ -11113,17 +11135,18 @@ wwv_flow_api.create_jet_chart_series(
,p_items_label_position=>'auto'
);
wwv_flow_api.create_jet_chart_axis(
- p_id=>wwv_flow_api.id(9923476916716106)
+ p_id=>wwv_flow_api.id(9923304855716105)
,p_chart_id=>wwv_flow_api.id(9923190243716103)
-,p_axis=>'y'
+,p_axis=>'x'
,p_is_rendered=>'on'
-,p_format_scaling=>'none'
+,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'
+,p_tick_label_rotation=>'auto'
+,p_tick_label_position=>'outside'
,p_zoom_order_seconds=>false
,p_zoom_order_minutes=>false
,p_zoom_order_hours=>false
@@ -11134,18 +11157,17 @@ wwv_flow_api.create_jet_chart_axis(
,p_zoom_order_years=>false
);
wwv_flow_api.create_jet_chart_axis(
- p_id=>wwv_flow_api.id(9923304855716105)
+ p_id=>wwv_flow_api.id(9923476916716106)
,p_chart_id=>wwv_flow_api.id(9923190243716103)
-,p_axis=>'x'
+,p_axis=>'y'
,p_is_rendered=>'on'
-,p_format_scaling=>'auto'
+,p_format_scaling=>'none'
,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'
-,p_tick_label_rotation=>'auto'
-,p_tick_label_position=>'outside'
,p_zoom_order_seconds=>false
,p_zoom_order_minutes=>false
,p_zoom_order_hours=>false
@@ -11159,7 +11181,7 @@ wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(9923541167716107)
,p_plug_name=>'Storage Chart in TB'
,p_parent_plug_id=>wwv_flow_api.id(9907719837740528)
-,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
,p_escape_on_http_output=>'Y'
,p_plug_template=>wwv_flow_api.id(9765042323688020)
,p_plug_display_sequence=>30
@@ -11173,6 +11195,7 @@ wwv_flow_api.create_jet_chart(
p_id=>wwv_flow_api.id(9923640328716108)
,p_region_id=>wwv_flow_api.id(9923541167716107)
,p_chart_type=>'bar'
+,p_height=>'500'
,p_animation_on_display=>'auto'
,p_animation_on_data_change=>'auto'
,p_orientation=>'vertical'
@@ -11181,9 +11204,7 @@ wwv_flow_api.create_jet_chart(
,p_hide_and_show_behavior=>'none'
,p_hover_behavior=>'none'
,p_stack=>'off'
-,p_stack_label=>'off'
,p_connect_nulls=>'Y'
-,p_value_position=>'auto'
,p_sorting=>'label-asc'
,p_fill_multi_series_gaps=>true
,p_zoom_and_scroll=>'off'
@@ -11191,20 +11212,8 @@ 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=>'bottom'
-,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
);
wwv_flow_api.create_jet_chart_series(
p_id=>wwv_flow_api.id(9923743722716109)
@@ -11248,7 +11257,8 @@ wwv_flow_api.create_jet_chart_series(
' (:P2_WINDOWS_OCPUS is null or prd_resource not like ''%WINDOW%'') and',
' (:P2_TENANT_ID is null or tenant_id = :P2_TENANT_ID) and',
' (:P2_TAG_KEY is null or tags_data like ''%#'' || :P2_TAG_KEY || ''=%'') and',
-' (:P2_TAG_DATA is null or tags_data like ''%#'' || nvl(:P2_TAG_KEY,''%'') || ''=%'' || :P2_TAG_DATA || ''#'') and',
+' (:P2_TAG_DATA is null or tags_data like ''%#'' || nvl(:P2_TAG_KEY,''%'') || ''='' || :P2_TAG_DATA || ''#%'') and',
+' (:P2_TAG_SPECIAL is null or tag_special = :P2_TAG_SPECIAL) and',
' USAGE_INTERVAL_START = to_date(:P2_DATE,''YYYY-MM-DD HH24:MI'') and',
' USG_BILLED_QUANTITY>0 and',
' USG_CONSUMED_MEASURE=''STORAGE_SIZE''',
@@ -11318,7 +11328,7 @@ wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(10813323429165705)
,p_plug_name=>'Storage Resource in TB'
,p_parent_plug_id=>wwv_flow_api.id(9907719837740528)
-,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
,p_escape_on_http_output=>'Y'
,p_plug_template=>wwv_flow_api.id(9765042323688020)
,p_plug_display_sequence=>60
@@ -11408,7 +11418,8 @@ wwv_flow_api.create_jet_chart_series(
' (:P2_WINDOWS_OCPUS is null or prd_resource not like ''%WINDOW%'') and',
' (:P2_TENANT_ID is null or tenant_id = :P2_TENANT_ID) and',
' (:P2_TAG_KEY is null or tags_data like ''%#'' || :P2_TAG_KEY || ''=%'') and',
-' (:P2_TAG_DATA is null or tags_data like ''%#'' || nvl(:P2_TAG_KEY,''%'') || ''=%'' || :P2_TAG_DATA || ''#'') and',
+' (:P2_TAG_DATA is null or tags_data like ''%#'' || nvl(:P2_TAG_KEY,''%'') || ''='' || :P2_TAG_DATA || ''#%'') and',
+' (:P2_TAG_SPECIAL is null or tag_special = :P2_TAG_SPECIAL) and',
' USAGE_INTERVAL_START = to_date(:P2_DATE,''YYYY-MM-DD HH24:MI'') and',
' USG_BILLED_QUANTITY>0 and',
' USG_CONSUMED_MEASURE=''STORAGE_SIZE''',
@@ -11473,121 +11484,59 @@ wwv_flow_api.create_jet_chart_axis(
,p_zoom_order_years=>false
);
wwv_flow_api.create_page_plug(
- p_id=>wwv_flow_api.id(9907890048740529)
-,p_plug_name=>'Choose Tenant'
-,p_region_template_options=>'#DEFAULT#:t-Region--removeHeader:t-Region--scrollBody'
+ p_id=>wwv_flow_api.id(11789267282177225)
+,p_plug_name=>'OCPUs Chart per Tag Special Data'
+,p_parent_plug_id=>wwv_flow_api.id(9907719837740528)
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
+,p_escape_on_http_output=>'Y'
,p_plug_template=>wwv_flow_api.id(9765042323688020)
-,p_plug_display_sequence=>20
-,p_include_in_reg_disp_sel_yn=>'Y'
+,p_plug_display_sequence=>110
,p_plug_display_point=>'BODY'
-,p_plug_source=>'No Data Found, Please Choose Tenant, Date and press Submit.'
+,p_plug_source_type=>'NATIVE_JET_CHART'
+,p_plug_query_num_rows=>15
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
-,p_attribute_01=>'N'
-,p_attribute_02=>'HTML'
-);
-wwv_flow_api.create_page_button(
- p_id=>wwv_flow_api.id(9907440231740525)
-,p_button_sequence=>120
-,p_button_plug_id=>wwv_flow_api.id(9905068422740501)
-,p_button_name=>'P2_SUBMIT'
-,p_button_action=>'SUBMIT'
-,p_button_template_options=>'#DEFAULT#:t-Button--large:t-Button--stretch:t-Button--gapTop'
-,p_button_template_id=>wwv_flow_api.id(9821119233688096)
-,p_button_is_hot=>'Y'
-,p_button_image_alt=>'Submit'
-,p_button_position=>'BODY'
-,p_grid_new_row=>'Y'
-,p_grid_column_span=>1
-);
-wwv_flow_api.create_page_item(
- p_id=>wwv_flow_api.id(9905170083740502)
-,p_name=>'P2_TENANT_NAME'
-,p_item_sequence=>10
-,p_item_plug_id=>wwv_flow_api.id(9905068422740501)
-,p_prompt=>'Tenant Name'
-,p_display_as=>'NATIVE_SELECT_LIST'
-,p_lov=>'select distinct tenant_name o, tenant_name r from oci_usage order by 1'
-,p_lov_display_null=>'YES'
-,p_lov_null_text=>'Please Choose...'
-,p_cHeight=>1
-,p_colspan=>2
-,p_field_template=>wwv_flow_api.id(9820028477688087)
-,p_item_template_options=>'#DEFAULT#'
-,p_lov_display_extra=>'NO'
-,p_attribute_01=>'NONE'
-,p_attribute_02=>'N'
-);
-wwv_flow_api.create_page_item(
- p_id=>wwv_flow_api.id(9906284166740513)
-,p_name=>'P2_COMPARTMENT_NAME'
-,p_item_sequence=>150
-,p_item_plug_id=>wwv_flow_api.id(9905068422740501)
-,p_prompt=>'Compartment'
-,p_display_as=>'NATIVE_SELECT_LIST'
-,p_lov=>wwv_flow_string.join(wwv_flow_t_varchar2(
-'select distinct prd_compartment_name o, prd_compartment_name r from ',
-'oci_usage ',
-'where',
-'tenant_name=:P2_TENANT_NAME',
-' and USAGE_INTERVAL_START = to_date(:P2_DATE,''YYYY-MM-DD HH24:MI'')',
-'order by 1'))
-,p_lov_display_null=>'YES'
-,p_lov_null_text=>'All'
-,p_lov_cascade_parent_items=>'P2_TENANT_NAME,P2_DATE'
-,p_ajax_optimize_refresh=>'Y'
-,p_cHeight=>1
-,p_begin_on_new_line=>'N'
-,p_colspan=>2
-,p_field_template=>wwv_flow_api.id(9820028477688087)
-,p_item_template_options=>'#DEFAULT#'
-,p_lov_display_extra=>'YES'
-,p_attribute_01=>'NONE'
-,p_attribute_02=>'N'
);
-wwv_flow_api.create_page_item(
- p_id=>wwv_flow_api.id(9907304843740524)
-,p_name=>'P2_COMPARTMENT_TOP'
-,p_item_sequence=>50
-,p_item_plug_id=>wwv_flow_api.id(9905068422740501)
-,p_prompt=>'Top Level Compartment'
-,p_display_as=>'NATIVE_SELECT_LIST'
-,p_lov=>wwv_flow_string.join(wwv_flow_t_varchar2(
-'select top_level_compartment o, top_level_compartment r',
-'from ',
-'(',
-' select distinct ',
-' case when prd_compartment_path like ''%/%'' then substr(prd_compartment_path,1,instr(prd_compartment_path,'' /'')-1) ',
-' else prd_compartment_path',
-' end top_level_compartment ',
-' from oci_usage',
-' where prd_compartment_path is not null and tenant_name=:P2_TENANT_NAME',
-' and USAGE_INTERVAL_START = to_date(:P2_DATE,''YYYY-MM-DD HH24:MI'')',
-') where top_level_compartment is not null order by 1',
-''))
-,p_lov_display_null=>'YES'
-,p_lov_null_text=>'All'
-,p_lov_cascade_parent_items=>'P2_TENANT_NAME,P2_DATE'
-,p_ajax_optimize_refresh=>'Y'
-,p_cHeight=>1
-,p_begin_on_new_line=>'N'
-,p_colspan=>2
-,p_field_template=>wwv_flow_api.id(9820028477688087)
-,p_item_template_options=>'#DEFAULT#'
-,p_lov_display_extra=>'YES'
-,p_attribute_01=>'NONE'
-,p_attribute_02=>'N'
+wwv_flow_api.create_jet_chart(
+ p_id=>wwv_flow_api.id(11789334170177226)
+,p_region_id=>wwv_flow_api.id(11789267282177225)
+,p_chart_type=>'bar'
+,p_height=>'500'
+,p_animation_on_display=>'auto'
+,p_animation_on_data_change=>'auto'
+,p_orientation=>'horizontal'
+,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=>'value-desc'
+,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=>'bottom'
);
-wwv_flow_api.create_page_item(
- p_id=>wwv_flow_api.id(9908424606740535)
-,p_name=>'P2_ROWS'
-,p_item_sequence=>110
-,p_item_plug_id=>wwv_flow_api.id(9905068422740501)
-,p_use_cache_before_default=>'NO'
-,p_prompt=>'Rows Filtered'
-,p_format_mask=>'999G999G999G999G999G999G990'
-,p_source=>wwv_flow_string.join(wwv_flow_t_varchar2(
+wwv_flow_api.create_jet_chart_series(
+ p_id=>wwv_flow_api.id(11789415051177227)
+,p_chart_id=>wwv_flow_api.id(11789334170177226)
+,p_seq=>10
+,p_name=>'OCPUs per Service'
+,p_data_source_type=>'SQL'
+,p_data_source=>wwv_flow_string.join(wwv_flow_t_varchar2(
'select ',
-' count(*) cnt',
+' tag_special,',
+' prd_service, ',
+' sum(',
+' case when USG_CONSUMED_UNITS like ''%MS%'' ',
+' then USG_BILLED_QUANTITY/((USAGE_INTERVAL_END-USAGE_INTERVAL_START)*24*60*60)/1000',
+' else USG_BILLED_QUANTITY',
+' end ',
+' ) as USG_BILLED_QUANTITY',
'from oci_usage',
'where ',
' tenant_name=:P2_TENANT_NAME and',
@@ -11595,26 +11544,336 @@ wwv_flow_api.create_page_item(
' (:P2_PRODUCT_SERVICE is null or prd_service = :P2_PRODUCT_SERVICE) and',
' (:P2_PRODUCT_REGION is null or prd_region = :P2_PRODUCT_REGION) and',
' (:P2_COMPARTMENT_TOP is null or prd_compartment_path like :P2_COMPARTMENT_TOP ||''%'') and',
+' USAGE_INTERVAL_START = to_date(:P2_DATE,''YYYY-MM-DD HH24:MI'') and',
' (:P2_PRODUCT_RESOURCE is null or prd_resource = :P2_PRODUCT_RESOURCE) and',
-' (:P2_WINDOWS_OCPUS is null or prd_resource not like ''%WINDOW%'') and ',
+' (:P2_TENANT_ID is null or tenant_id = :P2_TENANT_ID) and',
+' (:P2_WINDOWS_OCPUS is null or prd_resource not like ''%WINDOW%'') and',
' (:P2_TAG_KEY is null or tags_data like ''%#'' || :P2_TAG_KEY || ''=%'') and',
-' (:P2_TAG_DATA is null or tags_data like ''%#'' || nvl(:P2_TAG_KEY,''%'') || ''=%'' || :P2_TAG_DATA || ''#'') and',
-' USAGE_INTERVAL_START = to_date(:P2_DATE,''YYYY-MM-DD HH24:MI'') and',
-' USG_BILLED_QUANTITY>0'))
-,p_source_type=>'QUERY'
-,p_display_as=>'NATIVE_DISPLAY_ONLY'
+' (:P2_TAG_DATA is null or tags_data like ''%#'' || nvl(:P2_TAG_KEY,''%'') || ''='' || :P2_TAG_DATA || ''#%'') and',
+' (:P2_TAG_SPECIAL is null or tag_special = :P2_TAG_SPECIAL) and',
+' USG_BILLED_QUANTITY>0 and',
+' USG_CONSUMED_MEASURE=''OCPUS'' and',
+' tag_special is not null',
+'group by ',
+' tag_special, prd_service',
+'order by 3 desc',
+'',
+'',
+'',
+''))
+,p_series_name_column_name=>'PRD_SERVICE'
+,p_items_value_column_name=>'USG_BILLED_QUANTITY'
+,p_group_short_desc_column_name=>'USG_BILLED_QUANTITY'
+,p_items_label_column_name=>'TAG_SPECIAL'
+,p_assigned_to_y2=>'off'
+,p_items_label_rendered=>true
+,p_items_label_position=>'insideBarEdge'
+,p_items_label_font_style=>'normal'
+,p_items_label_font_size=>'8'
+);
+wwv_flow_api.create_jet_chart_axis(
+ p_id=>wwv_flow_api.id(11789569471177228)
+,p_chart_id=>wwv_flow_api.id(11789334170177226)
+,p_axis=>'y'
+,p_is_rendered=>'on'
+,p_format_scaling=>'none'
+,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(11789694843177229)
+,p_chart_id=>wwv_flow_api.id(11789334170177226)
+,p_axis=>'x'
+,p_is_rendered=>'on'
+,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(11789788701177230)
+,p_plug_name=>'Storage Chart per Tag Special Data TB'
+,p_parent_plug_id=>wwv_flow_api.id(9907719837740528)
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
+,p_escape_on_http_output=>'Y'
+,p_plug_template=>wwv_flow_api.id(9765042323688020)
+,p_plug_display_sequence=>120
+,p_plug_new_grid_row=>false
+,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(11789895535177231)
+,p_region_id=>wwv_flow_api.id(11789788701177230)
+,p_chart_type=>'bar'
+,p_height=>'500'
+,p_animation_on_display=>'auto'
+,p_animation_on_data_change=>'auto'
+,p_orientation=>'horizontal'
+,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=>'value-desc'
+,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=>'bottom'
+);
+wwv_flow_api.create_jet_chart_series(
+ p_id=>wwv_flow_api.id(11789946205177232)
+,p_chart_id=>wwv_flow_api.id(11789895535177231)
+,p_seq=>10
+,p_name=>'Storage per Service in TB'
+,p_data_source_type=>'SQL'
+,p_data_source=>wwv_flow_string.join(wwv_flow_t_varchar2(
+'select ',
+' tag_special,',
+' prd_service,',
+' round(sum(',
+' case ',
+' when USG_CONSUMED_UNITS = ''KB'' then USG_BILLED_QUANTITY/1000/1000/1000',
+' when USG_CONSUMED_UNITS = ''MB'' then USG_BILLED_QUANTITY/1000/1000',
+' when USG_CONSUMED_UNITS = ''GB'' then USG_BILLED_QUANTITY/1000',
+' when USG_CONSUMED_UNITS = ''TB'' then USG_BILLED_QUANTITY',
+' end',
+' ),2) as USG_BILLED_QUANTITY',
+'from ',
+'(',
+' select ',
+' tag_special,',
+' prd_service, ',
+' sum(',
+' case when USG_CONSUMED_UNITS like ''%MS%'' ',
+' then USG_BILLED_QUANTITY/((USAGE_INTERVAL_END-USAGE_INTERVAL_START)*24*60*60)/1000',
+' else USG_BILLED_QUANTITY',
+' end ',
+' ) as USG_BILLED_QUANTITY,',
+' case when USG_CONSUMED_UNITS like ''%MS%'' ',
+' then replace(replace(USG_CONSUMED_UNITS,''MS'',''''),''_'','''')',
+' else USG_CONSUMED_UNITS',
+' end as USG_CONSUMED_UNITS',
+' from oci_usage',
+' where ',
+' tenant_name=:P2_TENANT_NAME and',
+' (:P2_COMPARTMENT_NAME is null or prd_compartment_name = :P2_COMPARTMENT_NAME) and',
+' (:P2_PRODUCT_SERVICE is null or prd_service = :P2_PRODUCT_SERVICE) and',
+' (:P2_PRODUCT_REGION is null or prd_region = :P2_PRODUCT_REGION) and',
+' (:P2_COMPARTMENT_TOP is null or prd_compartment_path like :P2_COMPARTMENT_TOP ||''%'') and',
+' (:P2_PRODUCT_RESOURCE is null or prd_resource = :P2_PRODUCT_RESOURCE) and',
+' (:P2_TENANT_ID is null or tenant_id = :P2_TENANT_ID) and',
+' (:P2_WINDOWS_OCPUS is null or prd_resource not like ''%WINDOW%'') and',
+' (:P2_TAG_KEY is null or tags_data like ''%#'' || :P2_TAG_KEY || ''=%'') and',
+' (:P2_TAG_DATA is null or tags_data like ''%#'' || nvl(:P2_TAG_KEY,''%'') || ''='' || :P2_TAG_DATA || ''#%'') and',
+' (:P2_TAG_SPECIAL is null or tag_special = :P2_TAG_SPECIAL) and',
+' USAGE_INTERVAL_START = to_date(:P2_DATE,''YYYY-MM-DD HH24:MI'') and',
+' USG_BILLED_QUANTITY>0 and',
+' USG_CONSUMED_MEASURE=''STORAGE_SIZE'' and',
+' tag_special is not null',
+' group by ',
+' tag_special,',
+' prd_service,',
+' USG_CONSUMED_UNITS',
+')',
+'group by tag_special, prd_service order by 3 desc',
+'',
+'',
+''))
+,p_series_name_column_name=>'PRD_SERVICE'
+,p_items_value_column_name=>'USG_BILLED_QUANTITY'
+,p_group_short_desc_column_name=>'USG_BILLED_QUANTITY'
+,p_items_label_column_name=>'TAG_SPECIAL'
+,p_assigned_to_y2=>'off'
+,p_items_label_rendered=>true
+,p_items_label_position=>'insideBarEdge'
+,p_items_label_font_family=>'Arial'
+,p_items_label_font_style=>'normal'
+,p_items_label_font_size=>'8'
+);
+wwv_flow_api.create_jet_chart_axis(
+ p_id=>wwv_flow_api.id(11790068420177233)
+,p_chart_id=>wwv_flow_api.id(11789895535177231)
+,p_axis=>'y'
+,p_is_rendered=>'on'
+,p_format_scaling=>'none'
+,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(11790159375177234)
+,p_chart_id=>wwv_flow_api.id(11789895535177231)
+,p_axis=>'x'
+,p_is_rendered=>'on'
+,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(9907890048740529)
+,p_plug_name=>'Choose Tenant'
+,p_region_template_options=>'#DEFAULT#:t-Region--removeHeader:t-Region--scrollBody'
+,p_plug_template=>wwv_flow_api.id(9765042323688020)
+,p_plug_display_sequence=>20
+,p_include_in_reg_disp_sel_yn=>'Y'
+,p_plug_display_point=>'BODY'
+,p_plug_source=>'No Data Found, Please Choose Tenant, Date and press Submit.'
+,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
+,p_plug_display_condition_type=>'ITEM_IS_ZERO'
+,p_plug_display_when_condition=>'P2_ROWS'
+,p_attribute_01=>'N'
+,p_attribute_02=>'HTML'
+);
+wwv_flow_api.create_page_button(
+ p_id=>wwv_flow_api.id(9907440231740525)
+,p_button_sequence=>160
+,p_button_plug_id=>wwv_flow_api.id(9905068422740501)
+,p_button_name=>'P2_SUBMIT'
+,p_button_action=>'SUBMIT'
+,p_button_template_options=>'#DEFAULT#:t-Button--large:t-Button--stretch:t-Button--gapTop'
+,p_button_template_id=>wwv_flow_api.id(9821119233688096)
+,p_button_is_hot=>'Y'
+,p_button_image_alt=>'Submit'
+,p_button_position=>'BODY'
+,p_grid_new_row=>'Y'
+,p_grid_column_span=>2
+);
+wwv_flow_api.create_page_item(
+ p_id=>wwv_flow_api.id(9905170083740502)
+,p_name=>'P2_TENANT_NAME'
+,p_item_sequence=>10
+,p_item_plug_id=>wwv_flow_api.id(9905068422740501)
+,p_prompt=>'Tenant Name'
+,p_display_as=>'NATIVE_SELECT_LIST'
+,p_lov=>'select distinct tenant_name o, tenant_name r from oci_usage order by 1'
+,p_lov_display_null=>'YES'
+,p_lov_null_text=>'Please Choose...'
+,p_cHeight=>1
+,p_tag_attributes=>'style="background-color:#e0f0f0"'
+,p_colspan=>2
+,p_field_template=>wwv_flow_api.id(9820028477688087)
+,p_item_template_options=>'#DEFAULT#'
+,p_lov_display_extra=>'NO'
+,p_attribute_01=>'NONE'
+,p_attribute_02=>'N'
+);
+wwv_flow_api.create_page_item(
+ p_id=>wwv_flow_api.id(9906284166740513)
+,p_name=>'P2_COMPARTMENT_NAME'
+,p_item_sequence=>180
+,p_item_plug_id=>wwv_flow_api.id(9905068422740501)
+,p_prompt=>'Compartment'
+,p_display_as=>'NATIVE_SELECT_LIST'
+,p_lov=>wwv_flow_string.join(wwv_flow_t_varchar2(
+'select distinct prd_compartment_name o, prd_compartment_name r from ',
+'oci_usage ',
+'where',
+'tenant_name=:P2_TENANT_NAME',
+' and USAGE_INTERVAL_START = to_date(:P2_DATE,''YYYY-MM-DD HH24:MI'')',
+'order by 1'))
+,p_lov_display_null=>'YES'
+,p_lov_null_text=>'All'
+,p_lov_cascade_parent_items=>'P2_TENANT_NAME,P2_DATE'
+,p_ajax_optimize_refresh=>'Y'
+,p_cHeight=>1
,p_begin_on_new_line=>'N'
-,p_colspan=>1
+,p_colspan=>2
+,p_field_template=>wwv_flow_api.id(9820028477688087)
+,p_item_template_options=>'#DEFAULT#'
+,p_lov_display_extra=>'YES'
+,p_attribute_01=>'NONE'
+,p_attribute_02=>'N'
+);
+wwv_flow_api.create_page_item(
+ p_id=>wwv_flow_api.id(9907304843740524)
+,p_name=>'P2_COMPARTMENT_TOP'
+,p_item_sequence=>130
+,p_item_plug_id=>wwv_flow_api.id(9905068422740501)
+,p_prompt=>'Top Level Compartment'
+,p_display_as=>'NATIVE_SELECT_LIST'
+,p_lov=>wwv_flow_string.join(wwv_flow_t_varchar2(
+'select top_level_compartment o, top_level_compartment r',
+'from ',
+'(',
+' select distinct ',
+' case when prd_compartment_path like ''%/%'' then substr(prd_compartment_path,1,instr(prd_compartment_path,'' /'')-1) ',
+' else prd_compartment_path',
+' end top_level_compartment ',
+' from oci_usage',
+' where prd_compartment_path is not null and tenant_name=:P2_TENANT_NAME',
+' and USAGE_INTERVAL_START = to_date(:P2_DATE,''YYYY-MM-DD HH24:MI'')',
+') where top_level_compartment is not null order by 1',
+''))
+,p_lov_display_null=>'YES'
+,p_lov_null_text=>'All'
+,p_lov_cascade_parent_items=>'P2_TENANT_NAME,P2_DATE'
+,p_ajax_optimize_refresh=>'Y'
+,p_cHeight=>1
+,p_begin_on_new_line=>'N'
+,p_colspan=>2
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
+,p_lov_display_extra=>'YES'
+,p_attribute_01=>'NONE'
+,p_attribute_02=>'N'
+);
+wwv_flow_api.create_page_item(
+ p_id=>wwv_flow_api.id(9908424606740535)
+,p_name=>'P2_ROWS'
+,p_item_sequence=>90
+,p_item_plug_id=>wwv_flow_api.id(9905068422740501)
+,p_use_cache_before_default=>'NO'
+,p_format_mask=>'999G999G999G999G999G999G990'
+,p_source=>wwv_flow_string.join(wwv_flow_t_varchar2(
+'select ',
+' count(*) cnt',
+'from oci_usage',
+'where ',
+' tenant_name=:P2_TENANT_NAME and',
+' (:P2_COMPARTMENT_NAME is null or prd_compartment_name = :P2_COMPARTMENT_NAME) and',
+' (:P2_PRODUCT_SERVICE is null or prd_service = :P2_PRODUCT_SERVICE) and',
+' (:P2_PRODUCT_REGION is null or prd_region = :P2_PRODUCT_REGION) and',
+' (:P2_COMPARTMENT_TOP is null or prd_compartment_path like :P2_COMPARTMENT_TOP ||''%'') and',
+' (:P2_PRODUCT_RESOURCE is null or prd_resource = :P2_PRODUCT_RESOURCE) and',
+' (:P2_WINDOWS_OCPUS is null or prd_resource not like ''%WINDOW%'') and ',
+' (:P2_TAG_KEY is null or tags_data like ''%#'' || :P2_TAG_KEY || ''=%'') and',
+' (:P2_TAG_DATA is null or tags_data like ''%#'' || nvl(:P2_TAG_KEY,''%'') || ''='' || :P2_TAG_DATA || ''#%'') and',
+' (:P2_TAG_SPECIAL is null or tag_special = :P2_TAG_SPECIAL) and',
+' USAGE_INTERVAL_START = to_date(:P2_DATE,''YYYY-MM-DD HH24:MI'') and',
+' USG_BILLED_QUANTITY>0'))
+,p_source_type=>'QUERY'
+,p_display_as=>'NATIVE_HIDDEN'
,p_attribute_01=>'Y'
-,p_attribute_02=>'VALUE'
-,p_attribute_04=>'Y'
);
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(9922959205716101)
,p_name=>'P2_PRODUCT_SERVICE'
-,p_item_sequence=>70
+,p_item_sequence=>120
,p_item_plug_id=>wwv_flow_api.id(9905068422740501)
,p_prompt=>'Product Service'
,p_display_as=>'NATIVE_SELECT_LIST'
@@ -11642,7 +11901,7 @@ wwv_flow_api.create_page_item(
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(9924098385716112)
,p_name=>'P2_PRODUCT_REGION'
-,p_item_sequence=>140
+,p_item_sequence=>40
,p_item_plug_id=>wwv_flow_api.id(9905068422740501)
,p_prompt=>'Product Region'
,p_display_as=>'NATIVE_SELECT_LIST'
@@ -11707,6 +11966,7 @@ wwv_flow_api.create_page_item(
,p_lov_cascade_parent_items=>'P2_TENANT_NAME'
,p_ajax_optimize_refresh=>'Y'
,p_cHeight=>1
+,p_tag_attributes=>'style="background-color:#e0f0f0"'
,p_begin_on_new_line=>'N'
,p_colspan=>2
,p_field_template=>wwv_flow_api.id(9820028477688087)
@@ -11718,13 +11978,13 @@ wwv_flow_api.create_page_item(
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(10809491249953662)
,p_name=>'P2_TAG_DATA'
-,p_item_sequence=>170
+,p_item_sequence=>140
,p_item_plug_id=>wwv_flow_api.id(9905068422740501)
,p_prompt=>'Tag Data Filter'
,p_display_as=>'NATIVE_TEXT_FIELD'
,p_cSize=>30
,p_begin_on_new_line=>'N'
-,p_colspan=>2
+,p_colspan=>4
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
,p_attribute_01=>'N'
@@ -11735,7 +11995,7 @@ wwv_flow_api.create_page_item(
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(10813894822165710)
,p_name=>'P2_PRODUCT_RESOURCE'
-,p_item_sequence=>160
+,p_item_sequence=>170
,p_item_plug_id=>wwv_flow_api.id(9905068422740501)
,p_prompt=>'Product Resource'
,p_display_as=>'NATIVE_SELECT_LIST'
@@ -11764,7 +12024,7 @@ wwv_flow_api.create_page_item(
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(10814109748165713)
,p_name=>'P2_WINDOWS_OCPUS'
-,p_item_sequence=>100
+,p_item_sequence=>80
,p_item_plug_id=>wwv_flow_api.id(9905068422740501)
,p_prompt=>'Inc Win OCPUs ?'
,p_display_as=>'NATIVE_SELECT_LIST'
@@ -11773,7 +12033,7 @@ wwv_flow_api.create_page_item(
,p_lov_null_text=>'Yes'
,p_cHeight=>1
,p_begin_on_new_line=>'N'
-,p_colspan=>1
+,p_colspan=>2
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
,p_lov_display_extra=>'YES'
@@ -11783,7 +12043,7 @@ wwv_flow_api.create_page_item(
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(10814210740165714)
,p_name=>'P2_LAST_DATE_LOADED'
-,p_item_sequence=>180
+,p_item_sequence=>150
,p_item_plug_id=>wwv_flow_api.id(9905068422740501)
,p_use_cache_before_default=>'NO'
,p_prompt=>'Last Date Loaded'
@@ -11795,18 +12055,49 @@ wwv_flow_api.create_page_item(
' tenant_name=:P2_TENANT_NAME'))
,p_source_type=>'QUERY'
,p_display_as=>'NATIVE_DISPLAY_ONLY'
+,p_tag_attributes=>'style="background-color:#e8e8e8"'
,p_begin_on_new_line=>'N'
,p_colspan=>2
+,p_grid_column=>11
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
,p_attribute_01=>'Y'
,p_attribute_02=>'VALUE'
,p_attribute_04=>'Y'
);
+wwv_flow_api.create_page_item(
+ p_id=>wwv_flow_api.id(11790270500177235)
+,p_name=>'P2_TAG_SPECIAL'
+,p_item_sequence=>190
+,p_item_plug_id=>wwv_flow_api.id(9905068422740501)
+,p_prompt=>'Tag Special Data'
+,p_display_as=>'NATIVE_SELECT_LIST'
+,p_lov=>wwv_flow_string.join(wwv_flow_t_varchar2(
+'select distinct tag_special o, tag_special r ',
+'from ',
+' oci_usage ',
+'where',
+' tenant_name=:P2_TENANT_NAME',
+' and USAGE_INTERVAL_START = to_date(:P2_DATE,''YYYY-MM-DD HH24:MI'')',
+'and tag_special is not null',
+'order by 1'))
+,p_lov_display_null=>'YES'
+,p_lov_null_text=>'All'
+,p_lov_cascade_parent_items=>'P2_TENANT_NAME,P2_DATE'
+,p_ajax_optimize_refresh=>'Y'
+,p_cHeight=>1
+,p_begin_on_new_line=>'N'
+,p_colspan=>4
+,p_field_template=>wwv_flow_api.id(9820028477688087)
+,p_item_template_options=>'#DEFAULT#'
+,p_lov_display_extra=>'YES'
+,p_attribute_01=>'NONE'
+,p_attribute_02=>'N'
+);
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(11931232277191605)
,p_name=>'P2_TAG_KEY'
-,p_item_sequence=>90
+,p_item_sequence=>70
,p_item_plug_id=>wwv_flow_api.id(9905068422740501)
,p_prompt=>'Tag Key'
,p_display_as=>'NATIVE_SELECT_LIST'
@@ -11826,14 +12117,75 @@ wwv_flow_api.create_page_item(
,p_colspan=>2
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
-,p_lov_display_extra=>'YES'
-,p_attribute_01=>'NONE'
-,p_attribute_02=>'N'
+,p_lov_display_extra=>'YES'
+,p_attribute_01=>'NONE'
+,p_attribute_02=>'N'
+);
+wwv_flow_api.create_page_item(
+ p_id=>wwv_flow_api.id(11978661800439218)
+,p_name=>'P2_TAG_SPECIAL_KEY_DISPLAY'
+,p_item_sequence=>200
+,p_item_plug_id=>wwv_flow_api.id(9905068422740501)
+,p_use_cache_before_default=>'NO'
+,p_prompt=>'Tag Special Key'
+,p_source=>wwv_flow_string.join(wwv_flow_t_varchar2(
+'select MIN(ref_name) o',
+'from ',
+' OCI_COST_REFERENCE ',
+'where',
+' tenant_name=:P2_TENANT_NAME',
+' and ref_type=''TAG_SPECIAL_KEY''',
+'order by 1'))
+,p_source_type=>'QUERY'
+,p_display_as=>'NATIVE_DISPLAY_ONLY'
+,p_tag_attributes=>'style="background-color:#e8e8e8"'
+,p_begin_on_new_line=>'N'
+,p_colspan=>2
+,p_field_template=>wwv_flow_api.id(9820028477688087)
+,p_item_template_options=>'#DEFAULT#'
+,p_attribute_01=>'Y'
+,p_attribute_02=>'VALUE'
+,p_attribute_04=>'Y'
+);
+wwv_flow_api.create_page_item(
+ p_id=>wwv_flow_api.id(11979797429439229)
+,p_name=>'P2_ROWS_DISPLAY'
+,p_item_sequence=>100
+,p_item_plug_id=>wwv_flow_api.id(9905068422740501)
+,p_use_cache_before_default=>'NO'
+,p_prompt=>'Rows Filtered'
+,p_source=>wwv_flow_string.join(wwv_flow_t_varchar2(
+'select ',
+' to_char(count(*),''999,999,999'') cnt',
+'from oci_usage',
+'where ',
+' tenant_name=:P2_TENANT_NAME and',
+' (:P2_COMPARTMENT_NAME is null or prd_compartment_name = :P2_COMPARTMENT_NAME) and',
+' (:P2_PRODUCT_SERVICE is null or prd_service = :P2_PRODUCT_SERVICE) and',
+' (:P2_PRODUCT_REGION is null or prd_region = :P2_PRODUCT_REGION) and',
+' (:P2_COMPARTMENT_TOP is null or prd_compartment_path like :P2_COMPARTMENT_TOP ||''%'') and',
+' (:P2_PRODUCT_RESOURCE is null or prd_resource = :P2_PRODUCT_RESOURCE) and',
+' (:P2_WINDOWS_OCPUS is null or prd_resource not like ''%WINDOW%'') and ',
+' (:P2_TAG_KEY is null or tags_data like ''%#'' || :P2_TAG_KEY || ''=%'') and',
+' (:P2_TAG_DATA is null or tags_data like ''%#'' || nvl(:P2_TAG_KEY,''%'') || ''='' || :P2_TAG_DATA || ''#%'') and',
+' (:P2_TAG_SPECIAL is null or tag_special = :P2_TAG_SPECIAL) and',
+' USAGE_INTERVAL_START = to_date(:P2_DATE,''YYYY-MM-DD HH24:MI'') and',
+' USG_BILLED_QUANTITY>0'))
+,p_source_type=>'QUERY'
+,p_display_as=>'NATIVE_DISPLAY_ONLY'
+,p_tag_attributes=>'style="background-color:#e8e8e8"'
+,p_begin_on_new_line=>'N'
+,p_colspan=>2
+,p_field_template=>wwv_flow_api.id(9820028477688087)
+,p_item_template_options=>'#DEFAULT#'
+,p_attribute_01=>'Y'
+,p_attribute_02=>'VALUE'
+,p_attribute_04=>'Y'
);
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(12305652747574228)
,p_name=>'P2_TENANT_ID'
-,p_item_sequence=>130
+,p_item_sequence=>110
,p_item_plug_id=>wwv_flow_api.id(9905068422740501)
,p_prompt=>'Tenant Id'
,p_display_as=>'NATIVE_SELECT_LIST'
@@ -11851,8 +12203,7 @@ wwv_flow_api.create_page_item(
,p_lov_cascade_parent_items=>'P2_TENANT_NAME,P2_DATE'
,p_ajax_optimize_refresh=>'Y'
,p_cHeight=>1
-,p_begin_on_new_line=>'N'
-,p_colspan=>1
+,p_colspan=>2
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
,p_lov_display_extra=>'YES'
@@ -11869,6 +12220,9 @@ wwv_flow_api.create_page_computation(
,p_compute_when=>'P2_TENANT_NAME'
,p_compute_when_type=>'ITEM_IS_NULL'
);
+end;
+/
+begin
wwv_flow_api.create_page_computation(
p_id=>wwv_flow_api.id(9924897922716120)
,p_computation_sequence=>20
@@ -11889,58 +12243,7 @@ wwv_flow_api.create_page_computation(
,p_compute_when=>'P2_DATE'
,p_compute_when_type=>'ITEM_IS_NULL'
);
-wwv_flow_api.create_page_da_event(
- p_id=>wwv_flow_api.id(9907906098740530)
-,p_name=>'ShowGraphsOrNot'
-,p_event_sequence=>10
-,p_triggering_element_type=>'ITEM'
-,p_triggering_element=>'P2_ROWS'
-,p_condition_element=>'P2_ROWS'
-,p_triggering_condition_type=>'GREATER_THAN'
-,p_triggering_expression=>'0'
-,p_bind_type=>'bind'
-,p_bind_event_type=>'change'
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(9908088081740531)
-,p_event_id=>wwv_flow_api.id(9907906098740530)
-,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(9907719837740528)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(9908355357740534)
-,p_event_id=>wwv_flow_api.id(9907906098740530)
-,p_event_result=>'FALSE'
-,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(9907890048740529)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(9908189360740532)
-,p_event_id=>wwv_flow_api.id(9907906098740530)
-,p_event_result=>'FALSE'
-,p_action_sequence=>20
-,p_execute_on_page_init=>'Y'
-,p_action=>'NATIVE_HIDE'
-,p_affected_elements_type=>'REGION'
-,p_affected_region_id=>wwv_flow_api.id(9907719837740528)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(9908255995740533)
-,p_event_id=>wwv_flow_api.id(9907906098740530)
-,p_event_result=>'TRUE'
-,p_action_sequence=>20
-,p_execute_on_page_init=>'Y'
-,p_action=>'NATIVE_HIDE'
-,p_affected_elements_type=>'REGION'
-,p_affected_region_id=>wwv_flow_api.id(9907890048740529)
-);
+null;
end;
/
prompt --application/pages/page_00003
@@ -11954,7 +12257,7 @@ wwv_flow_api.create_page(
,p_autocomplete_on_off=>'OFF'
,p_page_template_options=>'#DEFAULT#'
,p_last_updated_by=>'ADIZOHAR'
-,p_last_upd_yyyymmddhh24miss=>'20201021143853'
+,p_last_upd_yyyymmddhh24miss=>'20210329143553'
);
wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(9908591071740536)
@@ -11966,6 +12269,8 @@ wwv_flow_api.create_page_plug(
,p_plug_display_point=>'BODY'
,p_plug_source=>'No Data Found, Please Choose Tenant, Date and press Submit.'
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
+,p_plug_display_condition_type=>'ITEM_IS_ZERO'
+,p_plug_display_when_condition=>'P3_ROWS'
,p_attribute_01=>'N'
,p_attribute_02=>'HTML'
);
@@ -11978,6 +12283,8 @@ wwv_flow_api.create_page_plug(
,p_include_in_reg_disp_sel_yn=>'Y'
,p_plug_display_point=>'BODY'
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
+,p_plug_display_condition_type=>'ITEM_IS_NOT_ZERO'
+,p_plug_display_when_condition=>'P3_ROWS'
,p_attribute_01=>'N'
,p_attribute_02=>'HTML'
);
@@ -11985,7 +12292,7 @@ wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(19898398982635585)
,p_plug_name=>'Daily OCPUs Chart'
,p_parent_plug_id=>wwv_flow_api.id(9908767434740538)
-,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
,p_escape_on_http_output=>'Y'
,p_plug_template=>wwv_flow_api.id(9765042323688020)
,p_plug_display_sequence=>10
@@ -12061,7 +12368,7 @@ wwv_flow_api.create_jet_chart_series(
' (:P3_TENANT_ID is null or tenant_id = :P3_TENANT_ID) and',
' (:P3_WINDOWS_OCPUS is null or prd_resource not like ''%WINDOW%'') and',
' (:P3_TAG_KEY is null or tags_data like ''%#'' || :P3_TAG_KEY || ''=%'') and',
-' (:P3_TAG_DATA is null or tags_data like ''%#'' || nvl(:P3_TAG_KEY,''%'') || ''=%'' || :P3_TAG_DATA || ''#'') and',
+' (:P3_TAG_DATA is null or tags_data like ''%#'' || nvl(:P3_TAG_KEY,''%'') || ''='' || :P3_TAG_DATA || ''#%'') and',
' USAGE_INTERVAL_START >= trunc(sysdate)-1-(nvl(:P3_TIMEFRAME,30)) and',
' (',
' (:P3_TIMEFRAME < 3)',
@@ -12101,17 +12408,18 @@ wwv_flow_api.create_jet_chart_series(
,p_items_label_position=>'auto'
);
wwv_flow_api.create_jet_chart_axis(
- p_id=>wwv_flow_api.id(9987437023919551)
+ p_id=>wwv_flow_api.id(9986886731919550)
,p_chart_id=>wwv_flow_api.id(9986341223919550)
-,p_axis=>'y'
+,p_axis=>'x'
,p_is_rendered=>'on'
-,p_format_scaling=>'none'
+,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'
+,p_tick_label_rotation=>'auto'
+,p_tick_label_position=>'outside'
,p_zoom_order_seconds=>false
,p_zoom_order_minutes=>false
,p_zoom_order_hours=>false
@@ -12122,18 +12430,17 @@ wwv_flow_api.create_jet_chart_axis(
,p_zoom_order_years=>false
);
wwv_flow_api.create_jet_chart_axis(
- p_id=>wwv_flow_api.id(9986886731919550)
+ p_id=>wwv_flow_api.id(9987437023919551)
,p_chart_id=>wwv_flow_api.id(9986341223919550)
-,p_axis=>'x'
+,p_axis=>'y'
,p_is_rendered=>'on'
-,p_format_scaling=>'auto'
+,p_format_scaling=>'none'
,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'
-,p_tick_label_rotation=>'auto'
-,p_tick_label_position=>'outside'
,p_zoom_order_seconds=>false
,p_zoom_order_minutes=>false
,p_zoom_order_hours=>false
@@ -12147,7 +12454,7 @@ wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(19898910510635590)
,p_plug_name=>'Daily Storage Chart in TB'
,p_parent_plug_id=>wwv_flow_api.id(9908767434740538)
-,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
,p_escape_on_http_output=>'Y'
,p_plug_template=>wwv_flow_api.id(9765042323688020)
,p_plug_display_sequence=>20
@@ -12240,7 +12547,7 @@ wwv_flow_api.create_jet_chart_series(
' (:P3_WINDOWS_OCPUS is null or prd_resource not like ''%WINDOW%'') and',
' (:P3_TENANT_ID is null or tenant_id = :P3_TENANT_ID) and',
' (:P3_TAG_KEY is null or tags_data like ''%#'' || :P3_TAG_KEY || ''=%'') and',
-' (:P3_TAG_DATA is null or tags_data like ''%#'' || nvl(:P3_TAG_KEY,''%'') || ''=%'' || :P3_TAG_DATA || ''#'') and',
+' (:P3_TAG_DATA is null or tags_data like ''%#'' || nvl(:P3_TAG_KEY,''%'') || ''='' || :P3_TAG_DATA || ''#%'') and',
' USAGE_INTERVAL_START >= trunc(sysdate)-1-nvl(:P3_TIMEFRAME,30) and',
' (',
' (:P3_TIMEFRAME < 3)',
@@ -12337,7 +12644,7 @@ wwv_flow_api.create_page_plug(
);
wwv_flow_api.create_page_button(
p_id=>wwv_flow_api.id(9907630617740527)
-,p_button_sequence=>90
+,p_button_sequence=>100
,p_button_plug_id=>wwv_flow_api.id(19880437765659984)
,p_button_name=>'P3_BUTTON'
,p_button_action=>'SUBMIT'
@@ -12355,7 +12662,6 @@ wwv_flow_api.create_page_item(
,p_item_sequence=>80
,p_item_plug_id=>wwv_flow_api.id(19880437765659984)
,p_use_cache_before_default=>'NO'
-,p_prompt=>'Rows Filtered'
,p_format_mask=>'999G999G999G999G999G999G990'
,p_source=>wwv_flow_string.join(wwv_flow_t_varchar2(
'select ',
@@ -12391,19 +12697,13 @@ wwv_flow_api.create_page_item(
' (:P3_TIMEFRAME >= 360 and mod(to_number(to_char(USAGE_INTERVAL_START,''DD'')),12) = 0) and USAGE_INTERVAL_START = trunc(USAGE_INTERVAL_START)',
' )'))
,p_source_type=>'QUERY'
-,p_display_as=>'NATIVE_DISPLAY_ONLY'
-,p_begin_on_new_line=>'N'
-,p_colspan=>1
-,p_field_template=>wwv_flow_api.id(9820028477688087)
-,p_item_template_options=>'#DEFAULT#'
+,p_display_as=>'NATIVE_HIDDEN'
,p_attribute_01=>'Y'
-,p_attribute_02=>'VALUE'
-,p_attribute_04=>'Y'
);
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(9909310480740544)
,p_name=>'P3_LAST_DATE_LOADED'
-,p_item_sequence=>150
+,p_item_sequence=>160
,p_item_plug_id=>wwv_flow_api.id(19880437765659984)
,p_use_cache_before_default=>'NO'
,p_prompt=>'Last Date Loaded'
@@ -12415,6 +12715,7 @@ wwv_flow_api.create_page_item(
' tenant_name=:P3_TENANT_NAME'))
,p_source_type=>'QUERY'
,p_display_as=>'NATIVE_DISPLAY_ONLY'
+,p_tag_attributes=>'style="background-color:#e8e8e8"'
,p_begin_on_new_line=>'N'
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
@@ -12432,6 +12733,7 @@ wwv_flow_api.create_page_item(
,p_display_as=>'NATIVE_SELECT_LIST'
,p_lov=>'STATIC2:1 Day;1,3 Days;3,7 Days;7,1 Month;30,2 Months;60,3 Months;90,6 Months;180,1 Year;365,2 Years;730'
,p_cHeight=>1
+,p_tag_attributes=>'style="background-color:#e0f0f0"'
,p_begin_on_new_line=>'N'
,p_colspan=>2
,p_field_template=>wwv_flow_api.id(9820028477688087)
@@ -12451,6 +12753,7 @@ wwv_flow_api.create_page_item(
,p_lov_display_null=>'YES'
,p_lov_null_text=>'Please Choose...'
,p_cHeight=>1
+,p_tag_attributes=>'style="background-color:#e0f0f0"'
,p_colspan=>2
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
@@ -12461,7 +12764,7 @@ wwv_flow_api.create_page_item(
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(9979740759919533)
,p_name=>'P3_PRODUCT_REGION'
-,p_item_sequence=>110
+,p_item_sequence=>120
,p_item_plug_id=>wwv_flow_api.id(19880437765659984)
,p_prompt=>'Product Region'
,p_display_as=>'NATIVE_SELECT_LIST'
@@ -12555,7 +12858,7 @@ wwv_flow_api.create_page_item(
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(9980531759919534)
,p_name=>'P3_COMPARTMENT_NAME'
-,p_item_sequence=>120
+,p_item_sequence=>130
,p_item_plug_id=>wwv_flow_api.id(19880437765659984)
,p_prompt=>'Compartment'
,p_display_as=>'NATIVE_SELECT_LIST'
@@ -12646,7 +12949,7 @@ wwv_flow_api.create_page_item(
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(10814336125165715)
,p_name=>'P3_TAG_DATA'
-,p_item_sequence=>140
+,p_item_sequence=>150
,p_item_plug_id=>wwv_flow_api.id(19880437765659984)
,p_prompt=>'Filter Tag Data'
,p_display_as=>'NATIVE_TEXT_FIELD'
@@ -12682,7 +12985,7 @@ wwv_flow_api.create_page_item(
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(10841724869362885)
,p_name=>'P3_PRODUCT_RESOURCE'
-,p_item_sequence=>130
+,p_item_sequence=>140
,p_item_plug_id=>wwv_flow_api.id(19880437765659984)
,p_prompt=>'Product Resource'
,p_display_as=>'NATIVE_SELECT_LIST'
@@ -12752,10 +13055,65 @@ wwv_flow_api.create_page_item(
,p_attribute_01=>'NONE'
,p_attribute_02=>'N'
);
+wwv_flow_api.create_page_item(
+ p_id=>wwv_flow_api.id(11979854855439230)
+,p_name=>'P3_ROWS_DISPLAY'
+,p_item_sequence=>90
+,p_item_plug_id=>wwv_flow_api.id(19880437765659984)
+,p_use_cache_before_default=>'NO'
+,p_prompt=>'Rows Filtered'
+,p_format_mask=>'999G999G999G999G999G999G990'
+,p_source=>wwv_flow_string.join(wwv_flow_t_varchar2(
+'select ',
+' to_char(count(*),''999,999,999'') cnt',
+'from oci_usage',
+'where ',
+' tenant_name=:P3_TENANT_NAME and',
+' (:P3_COMPARTMENT_NAME is null or prd_compartment_name = :P3_COMPARTMENT_NAME) and',
+' (:P3_COMPARTMENT_TOP is null or prd_compartment_path like :P3_COMPARTMENT_TOP ||''%'') and',
+' (:P3_PRODUCT_SERVICE is null or prd_service = :P3_PRODUCT_SERVICE) and',
+' (:P3_PRODUCT_REGION is null or prd_region = :P3_PRODUCT_REGION) and',
+' (:P3_PRODUCT_RESOURCE is null or prd_resource = :P3_PRODUCT_RESOURCE) and',
+' (:P3_WINDOWS_OCPUS is null or prd_resource not like ''%WINDOW%'') and',
+' (:P3_TAG_KEY is null or tags_data like ''%#'' || :P3_TAG_KEY || ''=%'') and',
+' (:P3_TAG_DATA is null or tags_data like ''%#'' || nvl(:P3_TAG_KEY,''%'') || ''=%'' || :P3_TAG_DATA || ''#'') and',
+' USAGE_INTERVAL_START >= trunc(sysdate)-1-(nvl(:P3_TIMEFRAME,3)) and',
+' USG_BILLED_QUANTITY>0',
+' and (',
+' (:P3_TIMEFRAME < 3)',
+' or',
+' (:P3_TIMEFRAME = 3 and mod(to_number(to_char(USAGE_INTERVAL_START,''HH24'')),3) = 0) ',
+' or',
+' (:P3_TIMEFRAME = 7 and mod(to_number(to_char(USAGE_INTERVAL_START,''HH24'')),6) = 0) ',
+' or',
+' (:P3_TIMEFRAME = 30 and mod(to_number(to_char(USAGE_INTERVAL_START,''DD'')),2) = 0) and USAGE_INTERVAL_START = trunc(USAGE_INTERVAL_START)',
+' or',
+' (:P3_TIMEFRAME = 60 and mod(to_number(to_char(USAGE_INTERVAL_START,''DD'')),3) = 0) and USAGE_INTERVAL_START = trunc(USAGE_INTERVAL_START)',
+' or',
+' (:P3_TIMEFRAME = 90 and mod(to_number(to_char(USAGE_INTERVAL_START,''DD'')),4) = 0) and USAGE_INTERVAL_START = trunc(USAGE_INTERVAL_START)',
+' or',
+' (:P3_TIMEFRAME = 180 and mod(to_number(to_char(USAGE_INTERVAL_START,''DD'')),6) = 0) and USAGE_INTERVAL_START = trunc(USAGE_INTERVAL_START)',
+' or',
+' (:P3_TIMEFRAME >= 360 and mod(to_number(to_char(USAGE_INTERVAL_START,''DD'')),12) = 0) and USAGE_INTERVAL_START = trunc(USAGE_INTERVAL_START)',
+' )'))
+,p_source_type=>'QUERY'
+,p_display_as=>'NATIVE_DISPLAY_ONLY'
+,p_tag_attributes=>'style="background-color:#e8e8e8"'
+,p_begin_on_new_line=>'N'
+,p_colspan=>1
+,p_field_template=>wwv_flow_api.id(9820028477688087)
+,p_item_template_options=>'#DEFAULT#'
+,p_attribute_01=>'Y'
+,p_attribute_02=>'VALUE'
+,p_attribute_04=>'Y'
+);
+end;
+/
+begin
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(12305899776574230)
,p_name=>'P3_TENANT_ID'
-,p_item_sequence=>100
+,p_item_sequence=>110
,p_item_plug_id=>wwv_flow_api.id(19880437765659984)
,p_prompt=>'Tenant Id'
,p_display_as=>'NATIVE_SELECT_LIST'
@@ -12799,9 +13157,6 @@ wwv_flow_api.create_page_item(
,p_attribute_01=>'NONE'
,p_attribute_02=>'N'
);
-end;
-/
-begin
wwv_flow_api.create_page_computation(
p_id=>wwv_flow_api.id(12278049021302647)
,p_computation_sequence=>10
@@ -12822,58 +13177,6 @@ wwv_flow_api.create_page_computation(
,p_compute_when=>'P3_TIMEFRAME'
,p_compute_when_type=>'ITEM_IS_NULL'
);
-wwv_flow_api.create_page_da_event(
- p_id=>wwv_flow_api.id(9908888877740539)
-,p_name=>'P3_ROWS_FOUND'
-,p_event_sequence=>10
-,p_triggering_element_type=>'ITEM'
-,p_triggering_element=>'P3_ROWS'
-,p_condition_element=>'P3_ROWS'
-,p_triggering_condition_type=>'GREATER_THAN'
-,p_triggering_expression=>'0'
-,p_bind_type=>'bind'
-,p_bind_event_type=>'change'
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(9908925647740540)
-,p_event_id=>wwv_flow_api.id(9908888877740539)
-,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(9908767434740538)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(9909224638740543)
-,p_event_id=>wwv_flow_api.id(9908888877740539)
-,p_event_result=>'FALSE'
-,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(9908591071740536)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(9909059391740541)
-,p_event_id=>wwv_flow_api.id(9908888877740539)
-,p_event_result=>'FALSE'
-,p_action_sequence=>20
-,p_execute_on_page_init=>'Y'
-,p_action=>'NATIVE_HIDE'
-,p_affected_elements_type=>'REGION'
-,p_affected_region_id=>wwv_flow_api.id(9908767434740538)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(9909101902740542)
-,p_event_id=>wwv_flow_api.id(9908888877740539)
-,p_event_result=>'TRUE'
-,p_action_sequence=>20
-,p_execute_on_page_init=>'Y'
-,p_action=>'NATIVE_HIDE'
-,p_affected_elements_type=>'REGION'
-,p_affected_region_id=>wwv_flow_api.id(9908591071740536)
-);
end;
/
prompt --application/pages/page_00004
@@ -12905,10 +13208,23 @@ wwv_flow_api.create_page(
'#P4_INFO_DISPLAY {',
' background-color: #FfFff0; font-size: 12px;',
'}',
-'#P4_REPORT_SELECTOR { background-color: #F5FBB4; font-weight: bold; font-size: 13px;}'))
+'#P4_REPORT_SELECTOR { background-color: #F5FBB4; font-weight: bold; font-size: 13px;}',
+'',
+'#cost_explorer .t-fht-thead{',
+' overflow: auto !important;',
+'}',
+'',
+'#resource_report .t-fht-thead{',
+' overflow: auto !important;',
+'}',
+'',
+'#cost_report .t-fht-thead{',
+' overflow: auto !important;',
+'}',
+''))
,p_page_template_options=>'#DEFAULT#'
,p_last_updated_by=>'ADIZOHAR'
-,p_last_upd_yyyymmddhh24miss=>'20201021150417'
+,p_last_upd_yyyymmddhh24miss=>'20210329152107'
);
wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(10816553122165737)
@@ -12917,7 +13233,7 @@ wwv_flow_api.create_page_plug(
,p_plug_template=>wwv_flow_api.id(9765042323688020)
,p_plug_display_sequence=>10
,p_include_in_reg_disp_sel_yn=>'Y'
-,p_plug_grid_column_span=>8
+,p_plug_grid_column_span=>9
,p_plug_display_point=>'BODY'
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
,p_attribute_01=>'N'
@@ -12931,7 +13247,7 @@ wwv_flow_api.create_page_plug(
,p_plug_display_sequence=>20
,p_include_in_reg_disp_sel_yn=>'Y'
,p_plug_new_grid_row=>false
-,p_plug_grid_column_span=>4
+,p_plug_grid_column_span=>3
,p_plug_display_point=>'BODY'
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
,p_attribute_01=>'N'
@@ -12946,6 +13262,8 @@ wwv_flow_api.create_page_plug(
,p_include_in_reg_disp_sel_yn=>'Y'
,p_plug_display_point=>'BODY'
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
+,p_plug_display_condition_type=>'ITEM_IS_NOT_ZERO'
+,p_plug_display_when_condition=>'P4_ROWS'
,p_attribute_01=>'N'
,p_attribute_02=>'HTML'
);
@@ -12953,7 +13271,7 @@ wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(10814860863165720)
,p_plug_name=>'Cost Per SKU'
,p_parent_plug_id=>wwv_flow_api.id(21608843544513693)
-,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
,p_escape_on_http_output=>'Y'
,p_plug_template=>wwv_flow_api.id(9765042323688020)
,p_plug_display_sequence=>60
@@ -12963,6 +13281,9 @@ wwv_flow_api.create_page_plug(
,p_plug_source_type=>'NATIVE_JET_CHART'
,p_plug_query_num_rows=>15
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
+,p_plug_display_condition_type=>'VAL_OF_ITEM_IN_COND_EQ_COND2'
+,p_plug_display_when_condition=>'P4_REPORT_SELECTOR'
+,p_plug_display_when_cond2=>'Cost Per SKU'
);
wwv_flow_api.create_jet_chart(
p_id=>wwv_flow_api.id(10814955580165721)
@@ -13025,7 +13346,8 @@ wwv_flow_api.create_jet_chart_series(
' (:P4_COST_PRODUCT_SKU is null or COST_PRODUCT_SKU = :P4_COST_PRODUCT_SKU) and',
' (:P4_TENANT_ID is null or tenant_id = :P4_TENANT_ID) and',
' (:P4_TAG_KEY is null or tags_data like ''%#'' || :P4_TAG_KEY || ''=%'') and',
-' (:P4_TAG_DATA is null or tags_data like ''%#'' || nvl(:P4_TAG_KEY,''%'') || ''=%'' || :P4_TAG_DATA || ''#'') and',
+' (:P4_TAG_SPECIAL is null or TAG_SPECIAL = :P4_TAG_SPECIAL) and',
+' (:P4_TAG_DATA is null or tags_data like ''%#'' || nvl(:P4_TAG_KEY,''%'') || ''='' || :P4_TAG_DATA || ''#%'') and',
' USAGE_INTERVAL_START >= to_date(:P4_DATE_FROM,''DD-MON-YYYY HH24:MI'') and USAGE_INTERVAL_START < to_date(:P4_DATE_TO,''DD-MON-YYYY HH24:MI'') and',
' COST_MY_COST > 0',
' and :P4_REPORT_SELECTOR = ''Cost Per SKU''',
@@ -13046,9 +13368,9 @@ wwv_flow_api.create_jet_chart_series(
);
wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(10815862618165730)
-,p_plug_name=>'Cost per Top Compartment'
+,p_plug_name=>'Cost Per Top Compartment'
,p_parent_plug_id=>wwv_flow_api.id(21608843544513693)
-,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
,p_escape_on_http_output=>'Y'
,p_plug_template=>wwv_flow_api.id(9765042323688020)
,p_plug_display_sequence=>70
@@ -13056,6 +13378,9 @@ wwv_flow_api.create_page_plug(
,p_plug_source_type=>'NATIVE_JET_CHART'
,p_plug_query_num_rows=>15
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
+,p_plug_display_condition_type=>'VAL_OF_ITEM_IN_COND_EQ_COND2'
+,p_plug_display_when_condition=>'P4_REPORT_SELECTOR'
+,p_plug_display_when_cond2=>'Cost Per Top Compartment'
);
wwv_flow_api.create_jet_chart(
p_id=>wwv_flow_api.id(10815918798165731)
@@ -13116,9 +13441,10 @@ wwv_flow_api.create_jet_chart_series(
' (:P4_PRODUCT_REGION is null or prd_region = :P4_PRODUCT_REGION) and',
' (:P4_COMPARTMENT_TOP is null or prd_compartment_path like :P4_COMPARTMENT_TOP ||''%'') and',
' (:P4_TENANT_ID is null or tenant_id = :P4_TENANT_ID) and',
+' (:P4_TAG_SPECIAL is null or TAG_SPECIAL = :P4_TAG_SPECIAL) and',
' USAGE_INTERVAL_START >= to_date(:P4_DATE_FROM,''DD-MON-YYYY HH24:MI'') and USAGE_INTERVAL_START < to_date(:P4_DATE_TO,''DD-MON-YYYY HH24:MI'') and',
' (:P4_TAG_KEY is null or tags_data like ''%#'' || :P4_TAG_KEY || ''=%'') and',
-' (:P4_TAG_DATA is null or tags_data like ''%#'' || nvl(:P4_TAG_KEY,''%'') || ''=%'' || :P4_TAG_DATA || ''#'') and',
+' (:P4_TAG_DATA is null or tags_data like ''%#'' || nvl(:P4_TAG_KEY,''%'') || ''='' || :P4_TAG_DATA || ''#%'') and',
' COST_MY_COST>0 ',
' and :P4_REPORT_SELECTOR = ''Cost Per Top Compartment''',
'group by ',
@@ -13142,19 +13468,18 @@ wwv_flow_api.create_jet_chart_series(
,p_items_label_font_size=>'8'
);
wwv_flow_api.create_jet_chart_axis(
- p_id=>wwv_flow_api.id(10816213077165734)
+ p_id=>wwv_flow_api.id(10816181831165733)
,p_chart_id=>wwv_flow_api.id(10815918798165731)
-,p_axis=>'y'
+,p_axis=>'x'
,p_is_rendered=>'on'
-,p_format_type=>'decimal'
-,p_decimal_places=>1
-,p_format_scaling=>'none'
+,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'
+,p_tick_label_rotation=>'auto'
+,p_tick_label_position=>'outside'
,p_zoom_order_seconds=>false
,p_zoom_order_minutes=>false
,p_zoom_order_hours=>false
@@ -13165,18 +13490,19 @@ wwv_flow_api.create_jet_chart_axis(
,p_zoom_order_years=>false
);
wwv_flow_api.create_jet_chart_axis(
- p_id=>wwv_flow_api.id(10816181831165733)
+ p_id=>wwv_flow_api.id(10816213077165734)
,p_chart_id=>wwv_flow_api.id(10815918798165731)
-,p_axis=>'x'
+,p_axis=>'y'
,p_is_rendered=>'on'
-,p_format_scaling=>'auto'
+,p_format_type=>'decimal'
+,p_decimal_places=>1
+,p_format_scaling=>'none'
,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'
-,p_tick_label_rotation=>'auto'
-,p_tick_label_position=>'outside'
,p_zoom_order_seconds=>false
,p_zoom_order_minutes=>false
,p_zoom_order_hours=>false
@@ -13190,7 +13516,7 @@ wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(11931816111191611)
,p_plug_name=>'Cost Per Day'
,p_parent_plug_id=>wwv_flow_api.id(21608843544513693)
-,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
,p_escape_on_http_output=>'Y'
,p_plug_template=>wwv_flow_api.id(9765042323688020)
,p_plug_display_sequence=>20
@@ -13198,6 +13524,9 @@ wwv_flow_api.create_page_plug(
,p_plug_source_type=>'NATIVE_JET_CHART'
,p_plug_query_num_rows=>15
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
+,p_plug_display_condition_type=>'VAL_OF_ITEM_IN_COND_EQ_COND2'
+,p_plug_display_when_condition=>'P4_REPORT_SELECTOR'
+,p_plug_display_when_cond2=>'Cost Per Day'
);
wwv_flow_api.create_jet_chart(
p_id=>wwv_flow_api.id(11931950151191612)
@@ -13255,10 +13584,12 @@ wwv_flow_api.create_jet_chart_series(
' (:P4_COST_PRODUCT_SKU is null or COST_PRODUCT_SKU = :P4_COST_PRODUCT_SKU) and',
' (:P4_TENANT_ID is null or tenant_id = :P4_TENANT_ID) and',
' (:P4_TAG_KEY is null or tags_data like ''%#'' || :P4_TAG_KEY || ''=%'') and',
-' (:P4_TAG_DATA is null or tags_data like ''%#'' || nvl(:P4_TAG_KEY,''%'') || ''=%'' || :P4_TAG_DATA || ''#'') and',
+' (:P4_TAG_DATA is null or tags_data like ''%#'' || nvl(:P4_TAG_KEY,''%'') || ''='' || :P4_TAG_DATA || ''#%'') and',
+' (:P4_TAG_SPECIAL is null or TAG_SPECIAL = :P4_TAG_SPECIAL) and',
' USAGE_INTERVAL_START >= to_date(:P4_DATE_FROM,''DD-MON-YYYY HH24:MI'') and USAGE_INTERVAL_START < to_date(:P4_DATE_TO,''DD-MON-YYYY HH24:MI'')',
' and COST_MY_COST > 0',
-' and not (:P4_TENANT_ID is null and :P4_COMPARTMENT_NAME is null and :P4_PRODUCT_SERVICE is null and :P4_PRODUCT_REGION is null and :P4_COMPARTMENT_TOP is null and :P4_TAG_KEY is null and :P4_TAG_DATA is null and :P4_COST_PRODUCT_SKU is null)',
+' and not (:P4_TENANT_ID is null and :P4_COMPARTMENT_NAME is null and :P4_PRODUCT_SERVICE is null and :P4_PRODUCT_REGION is null and :P4_COMPARTMENT_TOP is null and :P4_TAG_KEY is null and :P4_TAG_DATA is null and :P4_COST_PRODUCT_SKU is null and :'
+||'P4_TAG_SPECIAL is null)',
' and :P4_REPORT_SELECTOR = ''Cost Per Day''',
'group by ',
' to_char(USAGE_INTERVAL_START,''YYYY-MM-DD'')',
@@ -13271,7 +13602,8 @@ wwv_flow_api.create_jet_chart_series(
' tenant_name=:P4_TENANT_NAME and',
' USAGE_INTERVAL_START >= to_date(:P4_DATE_FROM,''DD-MON-YYYY HH24:MI'') and USAGE_INTERVAL_START < to_date(:P4_DATE_TO,''DD-MON-YYYY HH24:MI'')',
' and COST_MY_COST > 0',
-' and (:P4_TENANT_ID is null and :P4_COMPARTMENT_NAME is null and :P4_PRODUCT_SERVICE is null and :P4_PRODUCT_REGION is null and :P4_COMPARTMENT_TOP is null and :P4_TAG_KEY is null and :P4_TAG_DATA is null and :P4_COST_PRODUCT_SKU is null)',
+' and (:P4_TENANT_ID is null and :P4_COMPARTMENT_NAME is null and :P4_PRODUCT_SERVICE is null and :P4_PRODUCT_REGION is null and :P4_COMPARTMENT_TOP is null and :P4_TAG_KEY is null and :P4_TAG_DATA is null and :P4_COST_PRODUCT_SKU is null and :P4_T'
+||'AG_SPECIAL is null)',
' and :P4_REPORT_SELECTOR = ''Cost Per Day''',
'group by ',
' to_char(USAGE_INTERVAL_START,''YYYY-MM-DD'')',
@@ -13289,19 +13621,21 @@ wwv_flow_api.create_jet_chart_series(
,p_items_label_font_size=>'10'
);
wwv_flow_api.create_jet_chart_axis(
- p_id=>wwv_flow_api.id(11932208487191615)
+ p_id=>wwv_flow_api.id(11932199654191614)
,p_chart_id=>wwv_flow_api.id(11931950151191612)
-,p_axis=>'y'
+,p_axis=>'x'
,p_is_rendered=>'on'
-,p_format_type=>'decimal'
-,p_decimal_places=>1
-,p_format_scaling=>'none'
+,p_format_type=>'date-short'
+,p_numeric_pattern=>'DD-MON-YYYY'
+,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'
+,p_tick_label_rotation=>'auto'
+,p_tick_label_position=>'outside'
+,p_tick_label_font_size=>'10'
,p_zoom_order_seconds=>false
,p_zoom_order_minutes=>false
,p_zoom_order_hours=>false
@@ -13312,21 +13646,19 @@ wwv_flow_api.create_jet_chart_axis(
,p_zoom_order_years=>false
);
wwv_flow_api.create_jet_chart_axis(
- p_id=>wwv_flow_api.id(11932199654191614)
+ p_id=>wwv_flow_api.id(11932208487191615)
,p_chart_id=>wwv_flow_api.id(11931950151191612)
-,p_axis=>'x'
+,p_axis=>'y'
,p_is_rendered=>'on'
-,p_format_type=>'date-short'
-,p_numeric_pattern=>'DD-MON-YYYY'
-,p_format_scaling=>'auto'
+,p_format_type=>'decimal'
+,p_decimal_places=>1
+,p_format_scaling=>'none'
,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'
-,p_tick_label_rotation=>'auto'
-,p_tick_label_position=>'outside'
-,p_tick_label_font_size=>'10'
,p_zoom_order_seconds=>false
,p_zoom_order_minutes=>false
,p_zoom_order_hours=>false
@@ -13340,7 +13672,7 @@ wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(11932315365191616)
,p_plug_name=>'Cost Per Service'
,p_parent_plug_id=>wwv_flow_api.id(21608843544513693)
-,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
,p_escape_on_http_output=>'Y'
,p_plug_template=>wwv_flow_api.id(9765042323688020)
,p_plug_display_sequence=>50
@@ -13348,6 +13680,9 @@ wwv_flow_api.create_page_plug(
,p_plug_source_type=>'NATIVE_JET_CHART'
,p_plug_query_num_rows=>15
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
+,p_plug_display_condition_type=>'VAL_OF_ITEM_IN_COND_EQ_COND2'
+,p_plug_display_when_condition=>'P4_REPORT_SELECTOR'
+,p_plug_display_when_cond2=>'Cost Per Service'
);
wwv_flow_api.create_jet_chart(
p_id=>wwv_flow_api.id(11932427454191617)
@@ -13390,52 +13725,162 @@ wwv_flow_api.create_jet_chart(
,p_show_gauge_value=>true
);
wwv_flow_api.create_jet_chart_series(
- p_id=>wwv_flow_api.id(11932548617191618)
-,p_chart_id=>wwv_flow_api.id(11932427454191617)
+ p_id=>wwv_flow_api.id(11932548617191618)
+,p_chart_id=>wwv_flow_api.id(11932427454191617)
+,p_seq=>10
+,p_name=>'Cost Per Service'
+,p_data_source_type=>'SQL'
+,p_data_source=>wwv_flow_string.join(wwv_flow_t_varchar2(
+'select ',
+' replace(nvl(prd_service,COST_PRODUCT_SKU),''_'','' '') prd_service,',
+' sum(COST_MY_COST) as COST_MY_COST',
+'from oci_cost',
+'where ',
+' tenant_name=:P4_TENANT_NAME and',
+' (:P4_COMPARTMENT_NAME is null or prd_compartment_name = :P4_COMPARTMENT_NAME) and',
+' (:P4_COMPARTMENT_TOP is null or prd_compartment_path like :P4_COMPARTMENT_TOP ||''%'') and',
+' (:P4_PRODUCT_SERVICE is null or prd_service = :P4_PRODUCT_SERVICE) and',
+' (:P4_PRODUCT_REGION is null or prd_region = :P4_PRODUCT_REGION) and',
+' (:P4_COST_PRODUCT_SKU is null or COST_PRODUCT_SKU = :P4_COST_PRODUCT_SKU) and',
+' (:P4_TENANT_ID is null or tenant_id = :P4_TENANT_ID) and',
+' (:P4_TAG_KEY is null or tags_data like ''%#'' || :P4_TAG_KEY || ''=%'') and',
+' (:P4_TAG_SPECIAL is null or TAG_SPECIAL = :P4_TAG_SPECIAL) and',
+' (:P4_TAG_DATA is null or tags_data like ''%#'' || nvl(:P4_TAG_KEY,''%'') || ''='' || :P4_TAG_DATA || ''#%'') and',
+' USAGE_INTERVAL_START >= to_date(:P4_DATE_FROM,''DD-MON-YYYY HH24:MI'') and USAGE_INTERVAL_START < to_date(:P4_DATE_TO,''DD-MON-YYYY HH24:MI'') and',
+' COST_MY_COST > 0',
+' and :P4_REPORT_SELECTOR = ''Cost Per Service''',
+'',
+'group by ',
+' replace(nvl(prd_service,COST_PRODUCT_SKU),''_'','' '')',
+'order by 2 desc',
+'',
+'',
+'',
+''))
+,p_items_value_column_name=>'COST_MY_COST'
+,p_items_label_column_name=>'PRD_SERVICE'
+,p_items_label_rendered=>true
+,p_items_label_position=>'insideBarEdge'
+,p_items_label_display_as=>'LBL_VAL'
+,p_items_label_font_size=>'10'
+);
+wwv_flow_api.create_page_plug(
+ p_id=>wwv_flow_api.id(11978878827439220)
+,p_plug_name=>'Cost Per Tag Special'
+,p_parent_plug_id=>wwv_flow_api.id(21608843544513693)
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
+,p_escape_on_http_output=>'Y'
+,p_plug_template=>wwv_flow_api.id(9765042323688020)
+,p_plug_display_sequence=>90
+,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'
+,p_plug_display_condition_type=>'VAL_OF_ITEM_IN_COND_EQ_COND2'
+,p_plug_display_when_condition=>'P4_REPORT_SELECTOR'
+,p_plug_display_when_cond2=>'Cost Per Tag Special'
+);
+wwv_flow_api.create_jet_chart(
+ p_id=>wwv_flow_api.id(11978966613439221)
+,p_region_id=>wwv_flow_api.id(11978878827439220)
+,p_chart_type=>'bar'
+,p_height=>'700'
+,p_animation_on_display=>'auto'
+,p_animation_on_data_change=>'auto'
+,p_orientation=>'horizontal'
+,p_data_cursor=>'auto'
+,p_data_cursor_behavior=>'auto'
+,p_hover_behavior=>'none'
+,p_stack=>'on'
+,p_stack_label=>'on'
+,p_connect_nulls=>'Y'
+,p_sorting=>'value-desc'
+,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=>'off'
+);
+wwv_flow_api.create_jet_chart_series(
+ p_id=>wwv_flow_api.id(11979065634439222)
+,p_chart_id=>wwv_flow_api.id(11978966613439221)
,p_seq=>10
-,p_name=>'Cost Per Service'
+,p_name=>'Cost per Special Tag'
,p_data_source_type=>'SQL'
,p_data_source=>wwv_flow_string.join(wwv_flow_t_varchar2(
'select ',
-' replace(nvl(prd_service,COST_PRODUCT_SKU),''_'','' '') prd_service,',
+' nvl(tag_special,''No Tag'') as prd_compartment_name,',
' sum(COST_MY_COST) as COST_MY_COST',
'from oci_cost',
'where ',
' tenant_name=:P4_TENANT_NAME and',
' (:P4_COMPARTMENT_NAME is null or prd_compartment_name = :P4_COMPARTMENT_NAME) and',
-' (:P4_COMPARTMENT_TOP is null or prd_compartment_path like :P4_COMPARTMENT_TOP ||''%'') and',
' (:P4_PRODUCT_SERVICE is null or prd_service = :P4_PRODUCT_SERVICE) and',
' (:P4_PRODUCT_REGION is null or prd_region = :P4_PRODUCT_REGION) and',
-' (:P4_COST_PRODUCT_SKU is null or COST_PRODUCT_SKU = :P4_COST_PRODUCT_SKU) and',
+' (:P4_COMPARTMENT_TOP is null or prd_compartment_path like :P4_COMPARTMENT_TOP ||''%'') and',
' (:P4_TENANT_ID is null or tenant_id = :P4_TENANT_ID) and',
-' (:P4_TAG_KEY is null or tags_data like ''%#'' || :P4_TAG_KEY || ''=%'') and',
-' (:P4_TAG_DATA is null or tags_data like ''%#'' || nvl(:P4_TAG_KEY,''%'') || ''=%'' || :P4_TAG_DATA || ''#'') and',
' USAGE_INTERVAL_START >= to_date(:P4_DATE_FROM,''DD-MON-YYYY HH24:MI'') and USAGE_INTERVAL_START < to_date(:P4_DATE_TO,''DD-MON-YYYY HH24:MI'') and',
-' COST_MY_COST > 0',
-' and :P4_REPORT_SELECTOR = ''Cost Per Service''',
-'',
+' (:P4_TAG_KEY is null or tags_data like ''%#'' || :P4_TAG_KEY || ''=%'') and',
+' (:P4_TAG_SPECIAL is null or TAG_SPECIAL = :P4_TAG_SPECIAL) and',
+' (:P4_TAG_DATA is null or tags_data like ''%#'' || nvl(:P4_TAG_KEY,''%'') || ''='' || :P4_TAG_DATA || ''#%'') and',
+' COST_MY_COST>0 ',
+' and :P4_REPORT_SELECTOR = ''Cost Per Tag Special''',
'group by ',
-' replace(nvl(prd_service,COST_PRODUCT_SKU),''_'','' '')',
+' nvl(tag_special,''No Tag'')',
'order by 2 desc',
'',
'',
'',
''))
,p_items_value_column_name=>'COST_MY_COST'
-,p_items_label_column_name=>'PRD_SERVICE'
+,p_items_label_column_name=>'PRD_COMPARTMENT_NAME'
+,p_color=>'#34AADC'
+,p_assigned_to_y2=>'off'
,p_items_label_rendered=>true
,p_items_label_position=>'insideBarEdge'
-,p_items_label_display_as=>'LBL_VAL'
-,p_items_label_font_size=>'10'
+,p_items_label_font_style=>'normal'
+,p_items_label_font_size=>'8'
+);
+wwv_flow_api.create_jet_chart_axis(
+ p_id=>wwv_flow_api.id(11979188991439223)
+,p_chart_id=>wwv_flow_api.id(11978966613439221)
+,p_axis=>'x'
+,p_is_rendered=>'on'
+,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_jet_chart_axis(
+ p_id=>wwv_flow_api.id(11979240048439224)
+,p_chart_id=>wwv_flow_api.id(11978966613439221)
+,p_axis=>'y'
+,p_is_rendered=>'on'
+,p_format_type=>'decimal'
+,p_decimal_places=>1
+,p_format_scaling=>'none'
+,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_page_plug(
p_id=>wwv_flow_api.id(12303794643574209)
-,p_plug_name=>'Resource Report'
+,p_plug_name=>'Cost Resource Report'
+,p_region_name=>'resource_report'
,p_parent_plug_id=>wwv_flow_api.id(21608843544513693)
-,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,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=>100
+,p_plug_display_sequence=>110
,p_plug_display_point=>'BODY'
,p_query_type=>'SQL'
,p_plug_source=>wwv_flow_string.join(wwv_flow_t_varchar2(
@@ -13478,9 +13923,10 @@ wwv_flow_api.create_page_plug(
' (:P4_PRODUCT_SERVICE is null or prd_service = :P4_PRODUCT_SERVICE) and',
' (:P4_PRODUCT_REGION is null or prd_region = :P4_PRODUCT_REGION) and',
' (:P4_COMPARTMENT_TOP is null or prd_compartment_path like :P4_COMPARTMENT_TOP ||''%'') and',
+' (:P4_TAG_SPECIAL is null or TAG_SPECIAL = :P4_TAG_SPECIAL) and',
' (:P4_TENANT_ID is null or tenant_id = :P4_TENANT_ID) and',
' (:P4_TAG_KEY is null or tags_data like ''%#'' || :P4_TAG_KEY || ''=%'') and',
-' (:P4_TAG_DATA is null or tags_data like ''%#'' || nvl(:P4_TAG_KEY,''%'') || ''=%'' || :P4_TAG_DATA || ''#'') and',
+' (:P4_TAG_DATA is null or tags_data like ''%#'' || nvl(:P4_TAG_KEY,''%'') || ''='' || :P4_TAG_DATA || ''#%'') and',
' (:P4_COST_PRODUCT_SKU is null or a.COST_PRODUCT_SKU = :P4_COST_PRODUCT_SKU) and',
' USAGE_INTERVAL_START >= to_date(:P4_DATE_FROM,''DD-MON-YYYY HH24:MI'') and USAGE_INTERVAL_START < to_date(:P4_DATE_TO,''DD-MON-YYYY HH24:MI'')',
' and COST_MY_COST<>0',
@@ -13507,6 +13953,9 @@ wwv_flow_api.create_page_plug(
''))
,p_plug_source_type=>'NATIVE_IR'
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
+,p_plug_display_condition_type=>'VAL_OF_ITEM_IN_COND_EQ_COND2'
+,p_plug_display_when_condition=>'P4_REPORT_SELECTOR'
+,p_plug_display_when_cond2=>'Cost Resource Report'
,p_prn_content_disposition=>'ATTACHMENT'
,p_prn_document_header=>'APEX'
,p_prn_units=>'INCHES'
@@ -13549,7 +13998,7 @@ wwv_flow_api.create_worksheet(
,p_show_detail_link=>'N'
,p_show_rows_per_page=>'N'
,p_show_notify=>'Y'
-,p_download_formats=>'CSV:HTML:EMAIL:XLS:PDF:RTF'
+,p_download_formats=>'CSV:HTML:EMAIL:XLSX:PDF:RTF'
,p_owner=>'ADIZOHAR'
,p_internal_uid=>12303874435574210
);
@@ -13589,6 +14038,9 @@ wwv_flow_api.create_worksheet_column(
,p_column_alignment=>'RIGHT'
,p_format_mask=>'999G999G999G999G990D000'
);
+end;
+/
+begin
wwv_flow_api.create_worksheet_column(
p_id=>wwv_flow_api.id(12304936216574221)
,p_db_column_name=>'CURRENCY'
@@ -13671,11 +14123,12 @@ wwv_flow_api.create_worksheet_rpt(
wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(12317143055646735)
,p_plug_name=>'Cost Explorer'
+,p_region_name=>'cost_explorer'
,p_parent_plug_id=>wwv_flow_api.id(21608843544513693)
-,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,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=>110
+,p_plug_display_sequence=>120
,p_plug_display_point=>'BODY'
,p_query_type=>'SQL'
,p_plug_source=>wwv_flow_string.join(wwv_flow_t_varchar2(
@@ -13704,6 +14157,7 @@ wwv_flow_api.create_page_plug(
' COST_BILLING_UNIT ,',
' COST_OVERAGE_FLAG ,',
' decode(IS_CORRECTION,''True'',''Y'',''N'') IS_CORRECTION ,',
+' TAG_SPECIAL,',
' TAGS_DATA ',
'from oci_cost',
'where ',
@@ -13714,7 +14168,8 @@ wwv_flow_api.create_page_plug(
' (:P4_COMPARTMENT_TOP is null or prd_compartment_path like :P4_COMPARTMENT_TOP ||''%'') and',
' (:P4_TAG_KEY is null or tags_data like ''%#'' || :P4_TAG_KEY || ''=%'') and',
' (:P4_TENANT_ID is null or tenant_id = :P4_TENANT_ID) and',
-' (:P4_TAG_DATA is null or tags_data like ''%#'' || nvl(:P4_TAG_KEY,''%'') || ''=%'' || :P4_TAG_DATA || ''#'') and',
+' (:P4_TAG_SPECIAL is null or TAG_SPECIAL = :P4_TAG_SPECIAL) and',
+' (:P4_TAG_DATA is null or tags_data like ''%#'' || nvl(:P4_TAG_KEY,''%'') || ''='' || :P4_TAG_DATA || ''#%'') and',
' (:P4_COST_PRODUCT_SKU is null or COST_PRODUCT_SKU = :P4_COST_PRODUCT_SKU) and',
' USAGE_INTERVAL_START >= to_date(:P4_DATE_FROM,''DD-MON-YYYY HH24:MI'') and USAGE_INTERVAL_START < to_date(:P4_DATE_TO,''DD-MON-YYYY HH24:MI'')',
' and USG_BILLED_QUANTITY <> 0',
@@ -13726,6 +14181,9 @@ wwv_flow_api.create_page_plug(
''))
,p_plug_source_type=>'NATIVE_IR'
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
+,p_plug_display_condition_type=>'VAL_OF_ITEM_IN_COND_EQ_COND2'
+,p_plug_display_when_condition=>'P4_REPORT_SELECTOR'
+,p_plug_display_when_cond2=>'Cost Explorer'
,p_prn_content_disposition=>'ATTACHMENT'
,p_prn_document_header=>'APEX'
,p_prn_units=>'INCHES'
@@ -13755,9 +14213,6 @@ wwv_flow_api.create_page_plug(
,p_prn_page_header_alignment=>'CENTER'
,p_prn_page_footer_alignment=>'CENTER'
);
-end;
-/
-begin
wwv_flow_api.create_worksheet(
p_id=>wwv_flow_api.id(12317206225646736)
,p_max_row_count=>'1000000'
@@ -13771,7 +14226,7 @@ wwv_flow_api.create_worksheet(
,p_show_detail_link=>'N'
,p_show_rows_per_page=>'N'
,p_show_notify=>'Y'
-,p_download_formats=>'CSV:HTML:EMAIL:XLS:PDF:RTF'
+,p_download_formats=>'CSV:HTML:EMAIL:XLSX:PDF:RTF'
,p_owner=>'ADI.ZOHAR@ORACLE.COM'
,p_internal_uid=>12317206225646736
);
@@ -14016,6 +14471,14 @@ wwv_flow_api.create_worksheet_column(
,p_column_label=>'Tenant Id'
,p_column_type=>'STRING'
);
+wwv_flow_api.create_worksheet_column(
+ p_id=>wwv_flow_api.id(11790616588177239)
+,p_db_column_name=>'TAG_SPECIAL'
+,p_display_order=>280
+,p_column_identifier=>'AA'
+,p_column_label=>'Tag Special'
+,p_column_type=>'STRING'
+);
wwv_flow_api.create_worksheet_rpt(
p_id=>wwv_flow_api.id(12563360882328556)
,p_application_user=>'APXWS_DEFAULT'
@@ -14025,13 +14488,13 @@ wwv_flow_api.create_worksheet_rpt(
,p_is_default=>'Y'
,p_display_rows=>20
,p_report_columns=>'TENANT_ID:FILE_ID:USAGE_INTERVAL_START:USAGE_INTERVAL_END:PRD_COMPARTMENT_NAME:PRD_COMPARTMENT_PATH:PRD_AVAILABILITY_DOMAIN:PRD_REGION:PRD_SERVICE:COST_PRODUCT_SKU:PRD_DESCRIPTION:USG_BILLED_QUANTITY:USG_BILLED_QUANTITY_OVERAGE:COST_BILLING_UNIT:COST'
-||'_UNIT_PRICE:COST_UNIT_PRICE_OVERAGE:COST_MY_COST:COST_MY_COST_OVERAGE:COST_CURRENCY_CODE:COST_OVERAGE_FLAG:IS_CORRECTION:TAGS_DATA:'
+||'_UNIT_PRICE:COST_UNIT_PRICE_OVERAGE:COST_MY_COST:COST_MY_COST_OVERAGE:COST_CURRENCY_CODE:COST_OVERAGE_FLAG:IS_CORRECTION:TAG_SPECIAL:TAGS_DATA:USG_RESOURCE_ID:'
);
wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(13974097805041417)
,p_plug_name=>'Cost Per Day Accumulated'
,p_parent_plug_id=>wwv_flow_api.id(21608843544513693)
-,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
,p_escape_on_http_output=>'Y'
,p_plug_template=>wwv_flow_api.id(9765042323688020)
,p_plug_display_sequence=>30
@@ -14039,6 +14502,9 @@ wwv_flow_api.create_page_plug(
,p_plug_source_type=>'NATIVE_JET_CHART'
,p_plug_query_num_rows=>15
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
+,p_plug_display_condition_type=>'VAL_OF_ITEM_IN_COND_EQ_COND2'
+,p_plug_display_when_condition=>'P4_REPORT_SELECTOR'
+,p_plug_display_when_cond2=>'Cost Per Day Accumulated'
);
wwv_flow_api.create_jet_chart(
p_id=>wwv_flow_api.id(13974102550041418)
@@ -14101,11 +14567,13 @@ wwv_flow_api.create_jet_chart_series(
' (:P4_PRODUCT_REGION is null or prd_region = :P4_PRODUCT_REGION) and',
' (:P4_COST_PRODUCT_SKU is null or COST_PRODUCT_SKU = :P4_COST_PRODUCT_SKU) and',
' (:P4_TENANT_ID is null or tenant_id = :P4_TENANT_ID) and',
+' (:P4_TAG_SPECIAL is null or TAG_SPECIAL = :P4_TAG_SPECIAL) and',
' (:P4_TAG_KEY is null or tags_data like ''%#'' || :P4_TAG_KEY || ''=%'') and',
-' (:P4_TAG_DATA is null or tags_data like ''%#'' || nvl(:P4_TAG_KEY,''%'') || ''=%'' || :P4_TAG_DATA || ''#'') and',
+' (:P4_TAG_DATA is null or tags_data like ''%#'' || nvl(:P4_TAG_KEY,''%'') || ''='' || :P4_TAG_DATA || ''#%'') and',
' USAGE_INTERVAL_START >= to_date(:P4_DATE_FROM,''DD-MON-YYYY HH24:MI'') and USAGE_INTERVAL_START < to_date(:P4_DATE_TO,''DD-MON-YYYY HH24:MI'')',
' and COST_MY_COST > 0',
-' and not (:P4_TENANT_ID is null and :P4_COMPARTMENT_NAME is null and :P4_PRODUCT_SERVICE is null and :P4_PRODUCT_REGION is null and :P4_COMPARTMENT_TOP is null and :P4_TAG_KEY is null and :P4_TAG_DATA is null and :P4_COST_PRODUCT_SKU is null)',
+' and not (:P4_TENANT_ID is null and :P4_COMPARTMENT_NAME is null and :P4_PRODUCT_SERVICE is null and :P4_PRODUCT_REGION is null and :P4_COMPARTMENT_TOP is null and :P4_TAG_KEY is null and :P4_TAG_DATA is null and :P4_COST_PRODUCT_SKU is null a'
+||'nd :P4_TAG_SPECIAL is null )',
' and :P4_REPORT_SELECTOR = ''Cost Per Day Accumulated''',
' group by ',
' to_char(USAGE_INTERVAL_START,''YYYY-MM-DD'')',
@@ -14118,7 +14586,8 @@ wwv_flow_api.create_jet_chart_series(
' tenant_name=:P4_TENANT_NAME and',
' USAGE_INTERVAL_START >= to_date(:P4_DATE_FROM,''DD-MON-YYYY HH24:MI'') and USAGE_INTERVAL_START < to_date(:P4_DATE_TO,''DD-MON-YYYY HH24:MI'')',
' and COST_MY_COST > 0',
-' and (:P4_TENANT_ID is null and :P4_COMPARTMENT_NAME is null and :P4_PRODUCT_SERVICE is null and :P4_PRODUCT_REGION is null and :P4_COMPARTMENT_TOP is null and :P4_TAG_KEY is null and :P4_TAG_DATA is null and :P4_COST_PRODUCT_SKU is null)',
+' and (:P4_TENANT_ID is null and :P4_COMPARTMENT_NAME is null and :P4_PRODUCT_SERVICE is null and :P4_PRODUCT_REGION is null and :P4_COMPARTMENT_TOP is null and :P4_TAG_KEY is null and :P4_TAG_DATA is null and :P4_COST_PRODUCT_SKU is null and :'
+||'P4_TAG_SPECIAL is null)',
' and :P4_REPORT_SELECTOR = ''Cost Per Day Accumulated''',
' group by ',
' to_char(USAGE_INTERVAL_START,''YYYY-MM-DD'')',
@@ -14192,10 +14661,11 @@ wwv_flow_api.create_jet_chart_axis(
wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(21606421457513668)
,p_plug_name=>'Cost Report'
+,p_region_name=>'cost_report'
,p_parent_plug_id=>wwv_flow_api.id(21608843544513693)
-,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
,p_plug_template=>wwv_flow_api.id(9765042323688020)
-,p_plug_display_sequence=>90
+,p_plug_display_sequence=>100
,p_plug_display_point=>'BODY'
,p_query_type=>'SQL'
,p_plug_source=>wwv_flow_string.join(wwv_flow_t_varchar2(
@@ -14240,7 +14710,8 @@ wwv_flow_api.create_page_plug(
' (:P4_COMPARTMENT_TOP is null or prd_compartment_path like :P4_COMPARTMENT_TOP ||''%'') and',
' (:P4_TENANT_ID is null or tenant_id = :P4_TENANT_ID) and',
' (:P4_TAG_KEY is null or tags_data like ''%#'' || :P4_TAG_KEY || ''=%'') and',
-' (:P4_TAG_DATA is null or tags_data like ''%#'' || nvl(:P4_TAG_KEY,''%'') || ''=%'' || :P4_TAG_DATA || ''#'') and',
+' (:P4_TAG_SPECIAL is null or TAG_SPECIAL = :P4_TAG_SPECIAL) and',
+' (:P4_TAG_DATA is null or tags_data like ''%#'' || nvl(:P4_TAG_KEY,''%'') || ''='' || :P4_TAG_DATA || ''#%'') and',
' (:P4_COST_PRODUCT_SKU is null or a.COST_PRODUCT_SKU = :P4_COST_PRODUCT_SKU) and',
' USAGE_INTERVAL_START >= to_date(:P4_DATE_FROM,''DD-MON-YYYY HH24:MI'') and USAGE_INTERVAL_START < to_date(:P4_DATE_TO,''DD-MON-YYYY HH24:MI'')',
' and COST_MY_COST<>0',
@@ -14275,6 +14746,9 @@ wwv_flow_api.create_page_plug(
''))
,p_plug_source_type=>'NATIVE_IR'
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
+,p_plug_display_condition_type=>'VAL_OF_ITEM_IN_COND_EQ_COND2'
+,p_plug_display_when_condition=>'P4_REPORT_SELECTOR'
+,p_plug_display_when_cond2=>'Cost Report'
,p_prn_content_disposition=>'ATTACHMENT'
,p_prn_document_header=>'APEX'
,p_prn_units=>'INCHES'
@@ -14316,7 +14790,7 @@ wwv_flow_api.create_worksheet(
,p_show_detail_link=>'N'
,p_show_rows_per_page=>'N'
,p_show_notify=>'Y'
-,p_download_formats=>'CSV:HTML:EMAIL:XLS:PDF:RTF'
+,p_download_formats=>'CSV:HTML:EMAIL:XLSX:PDF:RTF'
,p_owner=>'ADI.ZOHAR@ORACLE.COM'
,p_internal_uid=>11934457225191637
);
@@ -14439,6 +14913,9 @@ wwv_flow_api.create_worksheet_column(
,p_column_alignment=>'RIGHT'
,p_format_mask=>'999G999G999G999G990D00'
);
+end;
+/
+begin
wwv_flow_api.create_worksheet_column(
p_id=>wwv_flow_api.id(11935491613191647)
,p_db_column_name=>'ESTIMATE_YEAR'
@@ -14456,7 +14933,7 @@ wwv_flow_api.create_worksheet_rpt(
,p_report_alias=>'122650'
,p_status=>'PUBLIC'
,p_is_default=>'Y'
-,p_report_columns=>'PRODUCT:COST_BILLING_UNIT:CURRENCY:PUBLIC_RATE:PCT_MONTH:RATE:SINGLE_QUANTITY:OVERAGE_COST:USAGE_COST:ESTIMATE_MONTH_31:ESTIMATE_YEAR'
+,p_report_columns=>'PRODUCT:COST_BILLING_UNIT:CURRENCY:PUBLIC_RATE:PCT_MONTH:RATE:SINGLE_QUANTITY:USAGE_COST:ESTIMATE_MONTH_31:ESTIMATE_YEAR:'
,p_sum_columns_on_break=>'OVERAGE_COST:USAGE_COST:ESTIMATE_MONTH_31:ESTIMATE_YEAR'
);
wwv_flow_api.create_worksheet_rpt(
@@ -14472,9 +14949,9 @@ wwv_flow_api.create_worksheet_rpt(
);
wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(21607460724513679)
-,p_plug_name=>'Cost per Single Compartment'
+,p_plug_name=>'Cost Per Single Compartment'
,p_parent_plug_id=>wwv_flow_api.id(21608843544513693)
-,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
,p_escape_on_http_output=>'Y'
,p_plug_template=>wwv_flow_api.id(9765042323688020)
,p_plug_display_sequence=>80
@@ -14482,12 +14959,15 @@ wwv_flow_api.create_page_plug(
,p_plug_source_type=>'NATIVE_JET_CHART'
,p_plug_query_num_rows=>15
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
+,p_plug_display_condition_type=>'VAL_OF_ITEM_IN_COND_EQ_COND2'
+,p_plug_display_when_condition=>'P4_REPORT_SELECTOR'
+,p_plug_display_when_cond2=>'Cost Per Single Compartment'
);
wwv_flow_api.create_jet_chart(
p_id=>wwv_flow_api.id(11710134020773204)
,p_region_id=>wwv_flow_api.id(21607460724513679)
,p_chart_type=>'bar'
-,p_height=>'500'
+,p_height=>'700'
,p_animation_on_display=>'auto'
,p_animation_on_data_change=>'auto'
,p_orientation=>'horizontal'
@@ -14497,7 +14977,6 @@ wwv_flow_api.create_jet_chart(
,p_stack=>'on'
,p_stack_label=>'on'
,p_connect_nulls=>'Y'
-,p_value_position=>'auto'
,p_sorting=>'value-desc'
,p_fill_multi_series_gaps=>true
,p_zoom_and_scroll=>'off'
@@ -14505,20 +14984,7 @@ 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=>'off'
-,p_legend_position=>'auto'
-,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
);
wwv_flow_api.create_jet_chart_series(
p_id=>wwv_flow_api.id(11711871269773205)
@@ -14540,7 +15006,8 @@ wwv_flow_api.create_jet_chart_series(
' (:P4_TENANT_ID is null or tenant_id = :P4_TENANT_ID) and',
' USAGE_INTERVAL_START >= to_date(:P4_DATE_FROM,''DD-MON-YYYY HH24:MI'') and USAGE_INTERVAL_START < to_date(:P4_DATE_TO,''DD-MON-YYYY HH24:MI'') and',
' (:P4_TAG_KEY is null or tags_data like ''%#'' || :P4_TAG_KEY || ''=%'') and',
-' (:P4_TAG_DATA is null or tags_data like ''%#'' || nvl(:P4_TAG_KEY,''%'') || ''=%'' || :P4_TAG_DATA || ''#'') and',
+' (:P4_TAG_SPECIAL is null or TAG_SPECIAL = :P4_TAG_SPECIAL) and',
+' (:P4_TAG_DATA is null or tags_data like ''%#'' || nvl(:P4_TAG_KEY,''%'') || ''='' || :P4_TAG_DATA || ''#%'') and',
' COST_MY_COST>0 ',
' and :P4_REPORT_SELECTOR = ''Cost Per Single Compartment''',
'group by ',
@@ -14560,19 +15027,18 @@ wwv_flow_api.create_jet_chart_series(
,p_items_label_font_size=>'8'
);
wwv_flow_api.create_jet_chart_axis(
- p_id=>wwv_flow_api.id(11710677057773204)
+ p_id=>wwv_flow_api.id(11711229189773204)
,p_chart_id=>wwv_flow_api.id(11710134020773204)
-,p_axis=>'y'
+,p_axis=>'x'
,p_is_rendered=>'on'
-,p_format_type=>'decimal'
-,p_decimal_places=>1
-,p_format_scaling=>'none'
+,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'
+,p_tick_label_rotation=>'auto'
+,p_tick_label_position=>'outside'
,p_zoom_order_seconds=>false
,p_zoom_order_minutes=>false
,p_zoom_order_hours=>false
@@ -14583,18 +15049,19 @@ wwv_flow_api.create_jet_chart_axis(
,p_zoom_order_years=>false
);
wwv_flow_api.create_jet_chart_axis(
- p_id=>wwv_flow_api.id(11711229189773204)
+ p_id=>wwv_flow_api.id(11710677057773204)
,p_chart_id=>wwv_flow_api.id(11710134020773204)
-,p_axis=>'x'
+,p_axis=>'y'
,p_is_rendered=>'on'
-,p_format_scaling=>'auto'
+,p_format_type=>'decimal'
+,p_decimal_places=>1
+,p_format_scaling=>'none'
,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'
-,p_tick_label_rotation=>'auto'
-,p_tick_label_position=>'outside'
,p_zoom_order_seconds=>false
,p_zoom_order_minutes=>false
,p_zoom_order_hours=>false
@@ -14608,7 +15075,7 @@ wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(21624153346489267)
,p_plug_name=>'Cost Per Region'
,p_parent_plug_id=>wwv_flow_api.id(21608843544513693)
-,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
,p_escape_on_http_output=>'Y'
,p_plug_template=>wwv_flow_api.id(9765042323688020)
,p_plug_display_sequence=>40
@@ -14617,6 +15084,9 @@ wwv_flow_api.create_page_plug(
,p_plug_source_type=>'NATIVE_JET_CHART'
,p_plug_query_num_rows=>15
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
+,p_plug_display_condition_type=>'VAL_OF_ITEM_IN_COND_EQ_COND2'
+,p_plug_display_when_condition=>'P4_REPORT_SELECTOR'
+,p_plug_display_when_cond2=>'Cost Per Region'
);
wwv_flow_api.create_jet_chart(
p_id=>wwv_flow_api.id(11715360383773208)
@@ -14658,9 +15128,6 @@ wwv_flow_api.create_jet_chart(
,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(11717080104773209)
,p_chart_id=>wwv_flow_api.id(11715360383773208)
@@ -14681,7 +15148,8 @@ wwv_flow_api.create_jet_chart_series(
' (:P4_COST_PRODUCT_SKU is null or COST_PRODUCT_SKU = :P4_COST_PRODUCT_SKU) and',
' (:P4_TENANT_ID is null or tenant_id = :P4_TENANT_ID) and',
' (:P4_TAG_KEY is null or tags_data like ''%#'' || :P4_TAG_KEY || ''=%'') and',
-' (:P4_TAG_DATA is null or tags_data like ''%#'' || nvl(:P4_TAG_KEY,''%'') || ''=%'' || :P4_TAG_DATA || ''#'') and',
+' (:P4_TAG_SPECIAL is null or TAG_SPECIAL = :P4_TAG_SPECIAL) and',
+' (:P4_TAG_DATA is null or tags_data like ''%#'' || nvl(:P4_TAG_KEY,''%'') || ''='' || :P4_TAG_DATA || ''#%'') and',
' USAGE_INTERVAL_START >= to_date(:P4_DATE_FROM,''DD-MON-YYYY HH24:MI'') and USAGE_INTERVAL_START < to_date(:P4_DATE_TO,''DD-MON-YYYY HH24:MI'') and',
' COST_MY_COST > 0',
' and :P4_REPORT_SELECTOR = ''Cost Per Region''',
@@ -14709,12 +15177,14 @@ wwv_flow_api.create_page_plug(
,p_plug_display_point=>'BODY'
,p_plug_source=>'No Data Found, Please Choose Tenant, Date and press Submit.'
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
+,p_plug_display_condition_type=>'ITEM_IS_ZERO'
+,p_plug_display_when_condition=>'P4_ROWS'
,p_attribute_01=>'N'
,p_attribute_02=>'HTML'
);
wwv_flow_api.create_page_button(
p_id=>wwv_flow_api.id(11702195950773187)
-,p_button_sequence=>110
+,p_button_sequence=>130
,p_button_plug_id=>wwv_flow_api.id(10816553122165737)
,p_button_name=>'P4_SUBMIT'
,p_button_action=>'SUBMIT'
@@ -14729,7 +15199,7 @@ wwv_flow_api.create_page_button(
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(10814789813165719)
,p_name=>'P4_COST_PRODUCT_SKU'
-,p_item_sequence=>90
+,p_item_sequence=>110
,p_item_plug_id=>wwv_flow_api.id(10816553122165737)
,p_prompt=>'Product SKU'
,p_display_as=>'NATIVE_SELECT_LIST'
@@ -14747,6 +15217,7 @@ wwv_flow_api.create_page_item(
,p_ajax_optimize_refresh=>'Y'
,p_cHeight=>1
,p_begin_on_new_line=>'N'
+,p_colspan=>2
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
,p_lov_display_extra=>'YES'
@@ -14763,6 +15234,7 @@ wwv_flow_api.create_page_item(
,p_format_mask=>'DD-MON-YYYY HH24:MI'
,p_display_as=>'NATIVE_DATE_PICKER'
,p_cSize=>30
+,p_tag_attributes=>'style="background-color:#e0f0f0"'
,p_begin_on_new_line=>'N'
,p_colspan=>3
,p_field_template=>wwv_flow_api.id(9820028477688087)
@@ -14777,12 +15249,13 @@ wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(10816408250165736)
,p_name=>'P4_DATE_TO'
,p_is_required=>true
-,p_item_sequence=>80
+,p_item_sequence=>90
,p_item_plug_id=>wwv_flow_api.id(10816553122165737)
,p_prompt=>'To Date (Not Inclusive)'
,p_format_mask=>'DD-MON-YYYY HH24:MI'
,p_display_as=>'NATIVE_DATE_PICKER'
,p_cSize=>30
+,p_tag_attributes=>'style="background-color:#e0f0f0"'
,p_begin_on_new_line=>'N'
,p_colspan=>3
,p_field_template=>wwv_flow_api.id(9820028477688087)
@@ -14796,7 +15269,7 @@ wwv_flow_api.create_page_item(
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(10817497071165746)
,p_name=>'P4_FULL_DAYS_BETWEEN'
-,p_item_sequence=>60
+,p_item_sequence=>70
,p_item_plug_id=>wwv_flow_api.id(10817046393165742)
,p_use_cache_before_default=>'NO'
,p_prompt=>'Days of Data'
@@ -14813,8 +15286,8 @@ wwv_flow_api.create_page_item(
')'))
,p_source_type=>'QUERY'
,p_display_as=>'NATIVE_DISPLAY_ONLY'
+,p_tag_attributes=>'style="background-color:#e8e8e8"'
,p_begin_on_new_line=>'N'
-,p_colspan=>4
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
,p_attribute_01=>'Y'
@@ -14832,6 +15305,7 @@ wwv_flow_api.create_page_item(
,p_lov_display_null=>'YES'
,p_lov_null_text=>'Please Choose...'
,p_cHeight=>1
+,p_tag_attributes=>'style="background-color:#e0f0f0"'
,p_colspan=>3
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
@@ -14842,7 +15316,7 @@ wwv_flow_api.create_page_item(
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(11703393658773192)
,p_name=>'P4_COMPARTMENT_TOP'
-,p_item_sequence=>50
+,p_item_sequence=>100
,p_item_plug_id=>wwv_flow_api.id(10816553122165737)
,p_prompt=>'Top Level Compartment'
,p_display_as=>'NATIVE_SELECT_LIST'
@@ -14860,7 +15334,7 @@ wwv_flow_api.create_page_item(
,p_ajax_optimize_refresh=>'Y'
,p_cHeight=>1
,p_begin_on_new_line=>'N'
-,p_colspan=>3
+,p_colspan=>2
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
,p_lov_display_extra=>'YES'
@@ -14870,7 +15344,7 @@ wwv_flow_api.create_page_item(
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(11703792963773193)
,p_name=>'P4_PRODUCT_SERVICE'
-,p_item_sequence=>40
+,p_item_sequence=>50
,p_item_plug_id=>wwv_flow_api.id(10816553122165737)
,p_prompt=>'Product Service'
,p_display_as=>'NATIVE_SELECT_LIST'
@@ -14888,7 +15362,7 @@ wwv_flow_api.create_page_item(
,p_ajax_optimize_refresh=>'Y'
,p_cHeight=>1
,p_begin_on_new_line=>'N'
-,p_colspan=>3
+,p_colspan=>2
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
,p_lov_display_extra=>'YES'
@@ -14900,50 +15374,14 @@ wwv_flow_api.create_page_item(
,p_name=>'P4_ROWS'
,p_item_sequence=>50
,p_item_plug_id=>wwv_flow_api.id(10817046393165742)
-,p_use_cache_before_default=>'NO'
-,p_prompt=>'Cost Rows Filtered'
,p_format_mask=>'999G999G999G999G999G999G990'
-,p_source=>wwv_flow_string.join(wwv_flow_t_varchar2(
-'select sum(cnt)',
-'from',
-'(',
-' select ',
-' count(*) cnt',
-' from oci_cost',
-' where ',
-' tenant_name=:P4_TENANT_NAME and',
-' (:P4_COMPARTMENT_NAME is null or prd_compartment_name = :P4_COMPARTMENT_NAME) and',
-' (:P4_PRODUCT_SERVICE is null or prd_service = :P4_PRODUCT_SERVICE) and',
-' (:P4_PRODUCT_REGION is null or prd_region = :P4_PRODUCT_REGION) and',
-' (:P4_TENANT_ID is null or tenant_id = :P4_TENANT_ID) and',
-' (:P4_COMPARTMENT_TOP is null or prd_compartment_path like :P4_COMPARTMENT_TOP ||''%'') and',
-' (:P4_TAG_KEY is null or tags_data like ''%#'' || :P4_TAG_KEY || ''=%'') and',
-' (:P4_TAG_DATA is null or tags_data like ''%#'' || nvl(:P4_TAG_KEY,''%'') || ''=%'' || :P4_TAG_DATA || ''#'') and',
-' (:P4_COST_PRODUCT_SKU is null or COST_PRODUCT_SKU = :P4_COST_PRODUCT_SKU) and',
-' USAGE_INTERVAL_START >= to_date(:P4_DATE_FROM,''DD-MON-YYYY HH24:MI'') and USAGE_INTERVAL_START < to_date(:P4_DATE_TO,''DD-MON-YYYY HH24:MI'') and',
-' not (:P4_TENANT_ID is null and :P4_COMPARTMENT_NAME is null and :P4_PRODUCT_SERVICE is null and :P4_PRODUCT_REGION is null and :P4_COMPARTMENT_TOP is null and :P4_TAG_KEY is null and :P4_TAG_DATA is null and :P4_COST_PRODUCT_SKU is null)',
-' union all',
-' select ',
-' sum(num_rows) cnt',
-' from oci_cost_stats',
-' where ',
-' tenant_name=:P4_TENANT_NAME and',
-' USAGE_INTERVAL_START >= to_date(:P4_DATE_FROM,''DD-MON-YYYY HH24:MI'') and USAGE_INTERVAL_START < to_date(:P4_DATE_TO,''DD-MON-YYYY HH24:MI'') and',
-' (:P4_TENANT_ID is null and :P4_COMPARTMENT_NAME is null and :P4_PRODUCT_SERVICE is null and :P4_PRODUCT_REGION is null and :P4_COMPARTMENT_TOP is null and :P4_TAG_KEY is null and :P4_TAG_DATA is null and :P4_COST_PRODUCT_SKU is null)',
-')'))
-,p_source_type=>'QUERY'
-,p_display_as=>'NATIVE_DISPLAY_ONLY'
-,p_colspan=>4
-,p_field_template=>wwv_flow_api.id(9820028477688087)
-,p_item_template_options=>'#DEFAULT#'
+,p_display_as=>'NATIVE_HIDDEN'
,p_attribute_01=>'Y'
-,p_attribute_02=>'VALUE'
-,p_attribute_04=>'Y'
);
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(11704902453773194)
,p_name=>'P4_PRODUCT_REGION'
-,p_item_sequence=>70
+,p_item_sequence=>30
,p_item_plug_id=>wwv_flow_api.id(10816553122165737)
,p_prompt=>'Product Region'
,p_display_as=>'NATIVE_SELECT_LIST'
@@ -14971,7 +15409,7 @@ wwv_flow_api.create_page_item(
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(11705301552773194)
,p_name=>'P4_COMPARTMENT_NAME'
-,p_item_sequence=>100
+,p_item_sequence=>150
,p_item_plug_id=>wwv_flow_api.id(10816553122165737)
,p_prompt=>'Compartment'
,p_display_as=>'NATIVE_SELECT_LIST'
@@ -14989,7 +15427,7 @@ wwv_flow_api.create_page_item(
,p_ajax_optimize_refresh=>'Y'
,p_cHeight=>1
,p_begin_on_new_line=>'N'
-,p_colspan=>3
+,p_colspan=>2
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
,p_lov_display_extra=>'YES'
@@ -14999,13 +15437,13 @@ wwv_flow_api.create_page_item(
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(11706169664773195)
,p_name=>'P4_TAG_DATA'
-,p_item_sequence=>140
+,p_item_sequence=>120
,p_item_plug_id=>wwv_flow_api.id(10816553122165737)
,p_prompt=>'Tag Data Filter'
,p_display_as=>'NATIVE_TEXT_FIELD'
,p_cSize=>30
,p_begin_on_new_line=>'N'
-,p_colspan=>3
+,p_colspan=>2
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
,p_attribute_01=>'N'
@@ -15016,7 +15454,7 @@ wwv_flow_api.create_page_item(
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(11706547559773195)
,p_name=>'P4_LAST_DATE_LOADED'
-,p_item_sequence=>90
+,p_item_sequence=>80
,p_item_plug_id=>wwv_flow_api.id(10817046393165742)
,p_use_cache_before_default=>'NO'
,p_prompt=>'Last Date Loaded'
@@ -15028,8 +15466,7 @@ wwv_flow_api.create_page_item(
' tenant_name=:P4_TENANT_NAME'))
,p_source_type=>'QUERY'
,p_display_as=>'NATIVE_DISPLAY_ONLY'
-,p_begin_on_new_line=>'N'
-,p_colspan=>4
+,p_tag_attributes=>'style="background-color:#e8e8e8"'
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
,p_attribute_01=>'Y'
@@ -15037,92 +15474,40 @@ wwv_flow_api.create_page_item(
,p_attribute_04=>'Y'
);
wwv_flow_api.create_page_item(
- p_id=>wwv_flow_api.id(11932857596191621)
-,p_name=>'P4_COST'
-,p_item_sequence=>10
-,p_item_plug_id=>wwv_flow_api.id(10817046393165742)
-,p_use_cache_before_default=>'NO'
-,p_prompt=>'Total Cost'
-,p_source=>wwv_flow_string.join(wwv_flow_t_varchar2(
-'select to_char(nvl(sum(COST_MY_COST),0),''999,999,999,990.00'')||'' ''||min(COST_CURRENCY_CODE) MY_COST',
-'from',
-'(',
-' select ',
-' sum(COST_MY_COST) COST_MY_COST,min(COST_CURRENCY_CODE) COST_CURRENCY_CODE',
-' from oci_cost',
-' where ',
-' tenant_name=:P4_TENANT_NAME and',
-' (:P4_COMPARTMENT_NAME is null or prd_compartment_name = :P4_COMPARTMENT_NAME) and',
-' (:P4_PRODUCT_SERVICE is null or prd_service = :P4_PRODUCT_SERVICE) and',
-' (:P4_PRODUCT_REGION is null or prd_region = :P4_PRODUCT_REGION) and',
-' (:P4_TENANT_ID is null or tenant_id = :P4_TENANT_ID) and',
-' (:P4_COMPARTMENT_TOP is null or prd_compartment_path like :P4_COMPARTMENT_TOP ||''%'') and',
-' (:P4_TAG_KEY is null or tags_data like ''%#'' || :P4_TAG_KEY || ''=%'') and',
-' (:P4_TAG_DATA is null or tags_data like ''%#'' || nvl(:P4_TAG_KEY,''%'') || ''=%'' || :P4_TAG_DATA || ''#'') and',
-' (:P4_COST_PRODUCT_SKU is null or COST_PRODUCT_SKU = :P4_COST_PRODUCT_SKU) and',
-' USAGE_INTERVAL_START >= to_date(:P4_DATE_FROM,''DD-MON-YYYY HH24:MI'') and USAGE_INTERVAL_START < to_date(:P4_DATE_TO,''DD-MON-YYYY HH24:MI'') and',
-' not (:P4_TENANT_ID is null and :P4_COMPARTMENT_NAME is null and :P4_PRODUCT_SERVICE is null and :P4_PRODUCT_REGION is null and :P4_COMPARTMENT_TOP is null and ',
-' :P4_TAG_KEY is null and :P4_TAG_DATA is null and :P4_COST_PRODUCT_SKU is null)',
-' union all',
-' select ',
-' sum(COST_MY_COST) COST_MY_COST,min(COST_CURRENCY_CODE) COST_CURRENCY_CODE',
-' from oci_cost_stats',
-' where ',
-' tenant_name=:P4_TENANT_NAME and',
-' USAGE_INTERVAL_START >= to_date(:P4_DATE_FROM,''DD-MON-YYYY HH24:MI'') and USAGE_INTERVAL_START < to_date(:P4_DATE_TO,''DD-MON-YYYY HH24:MI'') and',
-' (:P4_COMPARTMENT_NAME is null and :P4_PRODUCT_SERVICE is null and :P4_PRODUCT_REGION is null and :P4_COMPARTMENT_TOP is null and ',
-' :P4_TAG_KEY is null and :P4_TAG_DATA is null and :P4_COST_PRODUCT_SKU is null and :P4_TENANT_ID is null)',
-')'))
-,p_source_type=>'QUERY'
-,p_display_as=>'NATIVE_DISPLAY_ONLY'
-,p_colspan=>4
+ p_id=>wwv_flow_api.id(11790511673177238)
+,p_name=>'P4_TAG_SPECIAL'
+,p_item_sequence=>170
+,p_item_plug_id=>wwv_flow_api.id(10816553122165737)
+,p_prompt=>'Tag Special Data'
+,p_display_as=>'NATIVE_SELECT_LIST'
+,p_lov=>wwv_flow_string.join(wwv_flow_t_varchar2(
+'select ref_name o, ref_name r ',
+'from ',
+' OCI_COST_REFERENCE ',
+'where',
+' tenant_name=:P4_TENANT_NAME',
+' and ref_type=''TAG_SPECIAL''',
+'order by 1'))
+,p_lov_display_null=>'YES'
+,p_lov_null_text=>'All'
+,p_lov_cascade_parent_items=>'P4_TENANT_NAME,P4_DATE_FROM, P4_DATE_TO'
+,p_ajax_optimize_refresh=>'Y'
+,p_cHeight=>1
+,p_begin_on_new_line=>'N'
+,p_colspan=>2
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
-,p_attribute_01=>'Y'
-,p_attribute_02=>'VALUE'
-,p_attribute_04=>'Y'
+,p_lov_display_extra=>'YES'
+,p_attribute_01=>'NONE'
+,p_attribute_02=>'N'
);
wwv_flow_api.create_page_item(
- p_id=>wwv_flow_api.id(11932924392191622)
-,p_name=>'P4_OVERAGE'
-,p_item_sequence=>30
-,p_item_plug_id=>wwv_flow_api.id(10817046393165742)
-,p_use_cache_before_default=>'NO'
-,p_prompt=>'Total Overages'
-,p_source=>wwv_flow_string.join(wwv_flow_t_varchar2(
-'select to_char(nvl(sum(COST_MY_COST_OVERAGE),0),''999,999,999,990.00'')||'' ''||min(COST_CURRENCY_CODE) MY_COST',
-'from',
-'(',
-' select ',
-' sum(COST_MY_COST_OVERAGE) COST_MY_COST_OVERAGE,min(COST_CURRENCY_CODE) COST_CURRENCY_CODE',
-' from oci_cost',
-' where ',
-' tenant_name=:P4_TENANT_NAME and',
-' (:P4_COMPARTMENT_NAME is null or prd_compartment_name = :P4_COMPARTMENT_NAME) and',
-' (:P4_PRODUCT_SERVICE is null or prd_service = :P4_PRODUCT_SERVICE) and',
-' (:P4_PRODUCT_REGION is null or prd_region = :P4_PRODUCT_REGION) and',
-' (:P4_COMPARTMENT_TOP is null or prd_compartment_path like :P4_COMPARTMENT_TOP ||''%'') and',
-' (:P4_TAG_KEY is null or tags_data like ''%#'' || :P4_TAG_KEY || ''=%'') and',
-' (:P4_TENANT_ID is null or tenant_id = :P4_TENANT_ID) and',
-' (:P4_TAG_DATA is null or tags_data like ''%#'' || nvl(:P4_TAG_KEY,''%'') || ''=%'' || :P4_TAG_DATA || ''#'') and',
-' (:P4_COST_PRODUCT_SKU is null or COST_PRODUCT_SKU = :P4_COST_PRODUCT_SKU) and',
-' USAGE_INTERVAL_START >= to_date(:P4_DATE_FROM,''DD-MON-YYYY HH24:MI'') and USAGE_INTERVAL_START < to_date(:P4_DATE_TO,''DD-MON-YYYY HH24:MI'') and',
-' not (:P4_TENANT_ID is null and :P4_COMPARTMENT_NAME is null and :P4_PRODUCT_SERVICE is null and :P4_PRODUCT_REGION is null and :P4_COMPARTMENT_TOP is null and ',
-' :P4_TAG_KEY is null and :P4_TAG_DATA is null and :P4_COST_PRODUCT_SKU is null)',
-' union all',
-' select ',
-' sum(COST_MY_COST_OVERAGE) COST_MY_COST_OVERAGE,min(COST_CURRENCY_CODE) COST_CURRENCY_CODE',
-' from oci_cost_stats',
-' where ',
-' tenant_name=:P4_TENANT_NAME and',
-' USAGE_INTERVAL_START >= to_date(:P4_DATE_FROM,''DD-MON-YYYY HH24:MI'') and USAGE_INTERVAL_START < to_date(:P4_DATE_TO,''DD-MON-YYYY HH24:MI'') and',
-' (:P4_TENANT_ID is null and :P4_COMPARTMENT_NAME is null and :P4_PRODUCT_SERVICE is null and :P4_PRODUCT_REGION is null and :P4_COMPARTMENT_TOP is null and ',
-' :P4_TAG_KEY is null and :P4_TAG_DATA is null and :P4_COST_PRODUCT_SKU is null)',
-')'))
-,p_source_type=>'QUERY'
+ p_id=>wwv_flow_api.id(11932857596191621)
+,p_name=>'P4_COST'
+,p_item_sequence=>10
+,p_item_plug_id=>wwv_flow_api.id(10817046393165742)
+,p_prompt=>'Total Cost'
,p_display_as=>'NATIVE_DISPLAY_ONLY'
-,p_begin_on_new_line=>'N'
-,p_colspan=>4
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
,p_attribute_01=>'Y'
@@ -15132,7 +15517,7 @@ wwv_flow_api.create_page_item(
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(11933008339191623)
,p_name=>'P4_SUBSCRIPTION'
-,p_item_sequence=>70
+,p_item_sequence=>90
,p_item_plug_id=>wwv_flow_api.id(10817046393165742)
,p_use_cache_before_default=>'NO'
,p_prompt=>'Subscription Id'
@@ -15147,8 +15532,8 @@ wwv_flow_api.create_page_item(
'order by 1'))
,p_source_type=>'QUERY_COLON'
,p_display_as=>'NATIVE_DISPLAY_ONLY'
+,p_tag_attributes=>'style="background-color:#e8e8e8"'
,p_begin_on_new_line=>'N'
-,p_colspan=>4
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
,p_attribute_01=>'Y'
@@ -15158,7 +15543,7 @@ wwv_flow_api.create_page_item(
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(11963890951367066)
,p_name=>'P4_TAG_KEY'
-,p_item_sequence=>130
+,p_item_sequence=>70
,p_item_plug_id=>wwv_flow_api.id(10816553122165737)
,p_prompt=>'Tag Key'
,p_display_as=>'NATIVE_SELECT_LIST'
@@ -15175,17 +15560,58 @@ wwv_flow_api.create_page_item(
,p_ajax_optimize_refresh=>'Y'
,p_cHeight=>1
,p_begin_on_new_line=>'N'
-,p_colspan=>3
+,p_colspan=>2
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
,p_lov_display_extra=>'YES'
,p_attribute_01=>'NONE'
,p_attribute_02=>'N'
);
+wwv_flow_api.create_page_item(
+ p_id=>wwv_flow_api.id(11978704127439219)
+,p_name=>'P4_TAG_SPECIAL_KEY_DISPLAY'
+,p_item_sequence=>160
+,p_item_plug_id=>wwv_flow_api.id(10816553122165737)
+,p_use_cache_before_default=>'NO'
+,p_prompt=>'Tag Special Key'
+,p_format_mask=>'FML999G999G999G999G990D00'
+,p_source=>wwv_flow_string.join(wwv_flow_t_varchar2(
+'select ref_name o',
+'from ',
+' OCI_COST_REFERENCE ',
+'where',
+' tenant_name=:P4_TENANT_NAME',
+' and ref_type=''TAG_SPECIAL_KEY''',
+'order by 1'))
+,p_source_type=>'QUERY_COLON'
+,p_display_as=>'NATIVE_DISPLAY_ONLY'
+,p_tag_attributes=>'style="background-color:#e8e8e8"'
+,p_begin_on_new_line=>'N'
+,p_field_template=>wwv_flow_api.id(9820028477688087)
+,p_item_template_options=>'#DEFAULT#'
+,p_attribute_01=>'Y'
+,p_attribute_02=>'VALUE'
+,p_attribute_04=>'Y'
+);
+wwv_flow_api.create_page_item(
+ p_id=>wwv_flow_api.id(11979915795439231)
+,p_name=>'P4_ROWS_DISPLAY'
+,p_item_sequence=>60
+,p_item_plug_id=>wwv_flow_api.id(10817046393165742)
+,p_prompt=>'Cost Rows Filtered'
+,p_format_mask=>'999G999G999G999G999G999G990'
+,p_display_as=>'NATIVE_DISPLAY_ONLY'
+,p_tag_attributes=>'style="background-color:#e8e8e8"'
+,p_field_template=>wwv_flow_api.id(9820028477688087)
+,p_item_template_options=>'#DEFAULT#'
+,p_attribute_01=>'Y'
+,p_attribute_02=>'VALUE'
+,p_attribute_04=>'Y'
+);
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(12305919376574231)
,p_name=>'P4_TENANT_ID'
-,p_item_sequence=>60
+,p_item_sequence=>80
,p_item_plug_id=>wwv_flow_api.id(10816553122165737)
,p_prompt=>'Tenant Id'
,p_display_as=>'NATIVE_SELECT_LIST'
@@ -15202,39 +15628,22 @@ wwv_flow_api.create_page_item(
,p_lov_cascade_parent_items=>'P4_TENANT_NAME'
,p_ajax_optimize_refresh=>'Y'
,p_cHeight=>1
-,p_colspan=>1
+,p_colspan=>3
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
,p_lov_display_extra=>'YES'
,p_attribute_01=>'NONE'
,p_attribute_02=>'N'
);
-wwv_flow_api.create_page_item(
- p_id=>wwv_flow_api.id(12552627388313324)
-,p_name=>'P4_INFO'
-,p_item_sequence=>80
-,p_item_plug_id=>wwv_flow_api.id(10817046393165742)
-,p_prompt=>'First and Last two days are incomplete'
-,p_format_mask=>'FML999G999G999G999G990D00'
-,p_source=>'and should not be used for calculation'
-,p_source_type=>'STATIC'
-,p_display_as=>'NATIVE_DISPLAY_ONLY'
-,p_colspan=>8
-,p_field_template=>wwv_flow_api.id(9820028477688087)
-,p_item_template_options=>'#DEFAULT#'
-,p_attribute_01=>'Y'
-,p_attribute_02=>'VALUE'
-,p_attribute_04=>'Y'
-);
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(13968875950017111)
,p_name=>'P4_REPORT_SELECTOR'
-,p_item_sequence=>120
+,p_item_sequence=>140
,p_item_plug_id=>wwv_flow_api.id(10816553122165737)
,p_prompt=>'Chart/Report Selector'
,p_display_as=>'NATIVE_SELECT_LIST'
,p_lov=>'STATIC2:Cost Per Day;Cost Per Day,Cost Per Day Accumulated;Cost Per Day Accumulated,Cost Per Region;Cost Per Region,Cost Per Service;Cost Per Service,Cost Per SKU;Cost Per SKU,Cost Per Top Compartment;Cost Per Top Compartment,Cost Per Single Compartm'
-||'ent;Cost Per Single Compartment,Cost Report;Cost Report,Cost Explorer;Cost Explorer,Cost Resource Report;Cost Resource Report'
+||'ent;Cost Per Single Compartment,Cost Per Tag Special;Cost Per Tag Special,Cost Report;Cost Report,Cost Explorer;Cost Explorer,Cost Resource Report;Cost Resource Report'
,p_cHeight=>1
,p_begin_on_new_line=>'N'
,p_colspan=>3
@@ -15249,44 +15658,9 @@ wwv_flow_api.create_page_item(
,p_name=>'P4_YEARLY'
,p_item_sequence=>40
,p_item_plug_id=>wwv_flow_api.id(10817046393165742)
-,p_use_cache_before_default=>'NO'
,p_prompt=>'Yearly Prediction'
-,p_source=>wwv_flow_string.join(wwv_flow_t_varchar2(
-'select to_char(nvl(sum(COST_MY_COST),0),''999,999,999,990'')||'' ''||min(COST_CURRENCY_CODE) MY_COST',
-'from',
-'(',
-' select ',
-' sum(COST_MY_COST)*(24 * 365 / count(distinct USAGE_INTERVAL_START)) COST_MY_COST,',
-' min(COST_CURRENCY_CODE) COST_CURRENCY_CODE',
-' from oci_cost',
-' where ',
-' tenant_name=:P4_TENANT_NAME and',
-' (:P4_COMPARTMENT_NAME is null or prd_compartment_name = :P4_COMPARTMENT_NAME) and',
-' (:P4_PRODUCT_SERVICE is null or prd_service = :P4_PRODUCT_SERVICE) and',
-' (:P4_PRODUCT_REGION is null or prd_region = :P4_PRODUCT_REGION) and',
-' (:P4_COMPARTMENT_TOP is null or prd_compartment_path like :P4_COMPARTMENT_TOP ||''%'') and',
-' (:P4_TENANT_ID is null or tenant_id = :P4_TENANT_ID) and',
-' (:P4_TAG_KEY is null or tags_data like ''%#'' || :P4_TAG_KEY || ''=%'') and',
-' (:P4_TAG_DATA is null or tags_data like ''%#'' || nvl(:P4_TAG_KEY,''%'') || ''=%'' || :P4_TAG_DATA || ''#'') and',
-' (:P4_COST_PRODUCT_SKU is null or COST_PRODUCT_SKU = :P4_COST_PRODUCT_SKU) and',
-' USAGE_INTERVAL_START >= to_date(:P4_DATE_FROM,''DD-MON-YYYY HH24:MI'') and USAGE_INTERVAL_START < to_date(:P4_DATE_TO,''DD-MON-YYYY HH24:MI'') and',
-' not (:P4_TENANT_ID is null and :P4_COMPARTMENT_NAME is null and :P4_PRODUCT_SERVICE is null and :P4_PRODUCT_REGION is null and :P4_COMPARTMENT_TOP is null and ',
-' :P4_TAG_KEY is null and :P4_TAG_DATA is null and :P4_COST_PRODUCT_SKU is null)',
-' union all',
-' select ',
-' sum(COST_MY_COST)*(24 * 365 / count(distinct USAGE_INTERVAL_START)) COST_MY_COST,',
-' min(COST_CURRENCY_CODE) COST_CURRENCY_CODE',
-' from oci_cost_stats',
-' where ',
-' tenant_name=:P4_TENANT_NAME and',
-' USAGE_INTERVAL_START >= to_date(:P4_DATE_FROM,''DD-MON-YYYY HH24:MI'') and USAGE_INTERVAL_START < to_date(:P4_DATE_TO,''DD-MON-YYYY HH24:MI'') and',
-' (:P4_TENANT_ID is null and :P4_COMPARTMENT_NAME is null and :P4_PRODUCT_SERVICE is null and :P4_PRODUCT_REGION is null and :P4_COMPARTMENT_TOP is null and ',
-' :P4_TAG_KEY is null and :P4_TAG_DATA is null and :P4_COST_PRODUCT_SKU is null)',
-')'))
-,p_source_type=>'QUERY'
,p_display_as=>'NATIVE_DISPLAY_ONLY'
,p_begin_on_new_line=>'N'
-,p_colspan=>4
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
,p_attribute_01=>'Y'
@@ -15333,358 +15707,63 @@ wwv_flow_api.create_page_computation(
,p_compute_when=>'P4_REPORT_SELECTOR'
,p_compute_when_type=>'ITEM_IS_NULL'
);
-wwv_flow_api.create_page_da_event(
- p_id=>wwv_flow_api.id(11728911638773294)
-,p_name=>'ShowGraphsOrNot'
-,p_event_sequence=>10
-,p_condition_element=>'P4_ROWS'
-,p_triggering_condition_type=>'GREATER_THAN'
-,p_triggering_expression=>'0'
-,p_bind_type=>'bind'
-,p_bind_event_type=>'ready'
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(11729986341773296)
-,p_event_id=>wwv_flow_api.id(11728911638773294)
-,p_event_result=>'FALSE'
-,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(21609013755513694)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(11730439427773296)
-,p_event_id=>wwv_flow_api.id(11728911638773294)
-,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(21608843544513693)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(11729495425773295)
-,p_event_id=>wwv_flow_api.id(11728911638773294)
-,p_event_result=>'TRUE'
-,p_action_sequence=>20
-,p_execute_on_page_init=>'Y'
-,p_action=>'NATIVE_HIDE'
-,p_affected_elements_type=>'REGION'
-,p_affected_region_id=>wwv_flow_api.id(21609013755513694)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(11730957797773296)
-,p_event_id=>wwv_flow_api.id(11728911638773294)
-,p_event_result=>'FALSE'
-,p_action_sequence=>20
-,p_execute_on_page_init=>'Y'
-,p_action=>'NATIVE_HIDE'
-,p_affected_elements_type=>'REGION'
-,p_affected_region_id=>wwv_flow_api.id(21608843544513693)
-);
-wwv_flow_api.create_page_da_event(
- p_id=>wwv_flow_api.id(13354018153239137)
-,p_name=>'ShowCostPerDay'
-,p_event_sequence=>20
-,p_condition_element=>'P4_REPORT_SELECTOR'
-,p_triggering_condition_type=>'EQUALS'
-,p_triggering_expression=>'Cost Per Day'
-,p_bind_type=>'bind'
-,p_bind_event_type=>'ready'
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(13354561443239142)
-,p_event_id=>wwv_flow_api.id(13354018153239137)
-,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(11931816111191611)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(13354333047239140)
-,p_event_id=>wwv_flow_api.id(13354018153239137)
-,p_event_result=>'TRUE'
-,p_action_sequence=>20
-,p_execute_on_page_init=>'Y'
-,p_action=>'NATIVE_SHOW'
-,p_affected_elements_type=>'REGION'
-,p_affected_region_id=>wwv_flow_api.id(11931816111191611)
-);
-wwv_flow_api.create_page_da_event(
- p_id=>wwv_flow_api.id(13974528551041422)
-,p_name=>'ShowCostPerDayAccumulated'
-,p_event_sequence=>30
-,p_condition_element=>'P4_REPORT_SELECTOR'
-,p_triggering_condition_type=>'EQUALS'
-,p_triggering_expression=>'Cost Per Day Accumulated'
-,p_bind_type=>'bind'
-,p_bind_event_type=>'ready'
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(13974678486041423)
-,p_event_id=>wwv_flow_api.id(13974528551041422)
-,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(13974097805041417)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(13974764316041424)
-,p_event_id=>wwv_flow_api.id(13974528551041422)
-,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(13974097805041417)
-);
-wwv_flow_api.create_page_da_event(
- p_id=>wwv_flow_api.id(13354642131239143)
-,p_name=>'ShowCostPerRegion'
-,p_event_sequence=>40
-,p_condition_element=>'P4_REPORT_SELECTOR'
-,p_triggering_condition_type=>'EQUALS'
-,p_triggering_expression=>'Cost Per Region'
-,p_bind_type=>'bind'
-,p_bind_event_type=>'ready'
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(13354718022239144)
-,p_event_id=>wwv_flow_api.id(13354642131239143)
-,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(21624153346489267)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(13354827944239145)
-,p_event_id=>wwv_flow_api.id(13354642131239143)
-,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(21624153346489267)
-);
-wwv_flow_api.create_page_da_event(
- p_id=>wwv_flow_api.id(13354931445239146)
-,p_name=>'ShowCostPerService'
-,p_event_sequence=>50
-,p_condition_element=>'P4_REPORT_SELECTOR'
-,p_triggering_condition_type=>'EQUALS'
-,p_triggering_expression=>'Cost Per Service'
-,p_bind_type=>'bind'
-,p_bind_event_type=>'ready'
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(13355075678239147)
-,p_event_id=>wwv_flow_api.id(13354931445239146)
-,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(11932315365191616)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(13355197017239148)
-,p_event_id=>wwv_flow_api.id(13354931445239146)
-,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(11932315365191616)
-);
-wwv_flow_api.create_page_da_event(
- p_id=>wwv_flow_api.id(13355280508239149)
-,p_name=>'ShowCostPerTopCompartment'
-,p_event_sequence=>60
-,p_condition_element=>'P4_REPORT_SELECTOR'
-,p_triggering_condition_type=>'EQUALS'
-,p_triggering_expression=>'Cost Per Top Compartment'
-,p_bind_type=>'bind'
-,p_bind_event_type=>'ready'
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(13355340474239150)
-,p_event_id=>wwv_flow_api.id(13355280508239149)
-,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(10815862618165730)
-);
-end;
-/
-begin
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(13972467881041401)
-,p_event_id=>wwv_flow_api.id(13355280508239149)
-,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(10815862618165730)
-);
-wwv_flow_api.create_page_da_event(
- p_id=>wwv_flow_api.id(13972596116041402)
-,p_name=>'ShowCostPerCompartment'
-,p_event_sequence=>70
-,p_condition_element=>'P4_REPORT_SELECTOR'
-,p_triggering_condition_type=>'EQUALS'
-,p_triggering_expression=>'Cost Per Single Compartment'
-,p_bind_type=>'bind'
-,p_bind_event_type=>'ready'
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(13972610589041403)
-,p_event_id=>wwv_flow_api.id(13972596116041402)
-,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(21607460724513679)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(13972771000041404)
-,p_event_id=>wwv_flow_api.id(13972596116041402)
-,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(21607460724513679)
-);
-wwv_flow_api.create_page_da_event(
- p_id=>wwv_flow_api.id(13972897516041405)
-,p_name=>'ShowCostPerSKU'
-,p_event_sequence=>80
-,p_condition_element=>'P4_REPORT_SELECTOR'
-,p_triggering_condition_type=>'EQUALS'
-,p_triggering_expression=>'Cost Per SKU'
-,p_bind_type=>'bind'
-,p_bind_event_type=>'ready'
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(13972934228041406)
-,p_event_id=>wwv_flow_api.id(13972897516041405)
-,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(10814860863165720)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(13973016371041407)
-,p_event_id=>wwv_flow_api.id(13972897516041405)
-,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(10814860863165720)
-);
-wwv_flow_api.create_page_da_event(
- p_id=>wwv_flow_api.id(13973193720041408)
-,p_name=>'ShowCostReport'
-,p_event_sequence=>90
-,p_condition_element=>'P4_REPORT_SELECTOR'
-,p_triggering_condition_type=>'EQUALS'
-,p_triggering_expression=>'Cost Report'
-,p_bind_type=>'bind'
-,p_bind_event_type=>'ready'
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(13973234242041409)
-,p_event_id=>wwv_flow_api.id(13973193720041408)
-,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(21606421457513668)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(13973398065041410)
-,p_event_id=>wwv_flow_api.id(13973193720041408)
-,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(21606421457513668)
-);
-wwv_flow_api.create_page_da_event(
- p_id=>wwv_flow_api.id(12305326909574225)
-,p_name=>'ShowCostResourceReport'
-,p_event_sequence=>100
-,p_condition_element=>'P4_REPORT_SELECTOR'
-,p_triggering_condition_type=>'EQUALS'
-,p_triggering_expression=>'Cost Resource Report'
-,p_bind_type=>'bind'
-,p_bind_event_type=>'ready'
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(12305437016574226)
-,p_event_id=>wwv_flow_api.id(12305326909574225)
-,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(12303794643574209)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(12305508642574227)
-,p_event_id=>wwv_flow_api.id(12305326909574225)
-,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(12303794643574209)
-);
-wwv_flow_api.create_page_da_event(
- p_id=>wwv_flow_api.id(13973454480041411)
-,p_name=>'ShowCostExplorer'
-,p_event_sequence=>110
-,p_condition_element=>'P4_REPORT_SELECTOR'
-,p_triggering_condition_type=>'EQUALS'
-,p_triggering_expression=>'Cost Explorer'
-,p_bind_type=>'bind'
-,p_bind_event_type=>'ready'
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(13973516722041412)
-,p_event_id=>wwv_flow_api.id(13973454480041411)
-,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(12317143055646735)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(13973698350041413)
-,p_event_id=>wwv_flow_api.id(13973454480041411)
-,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(12317143055646735)
+wwv_flow_api.create_page_process(
+ p_id=>wwv_flow_api.id(11790470140177237)
+,p_process_sequence=>10
+,p_process_point=>'AFTER_HEADER'
+,p_process_type=>'NATIVE_PLSQL'
+,p_process_name=>'PreFill'
+,p_process_sql_clob=>wwv_flow_string.join(wwv_flow_t_varchar2(
+'begin',
+' select ',
+' to_char(nvl(sum(COST_MY_COST),0),''999,999,999,990.00'')||'' ''||min(COST_CURRENCY_CODE) MY_COST,',
+' to_char(nvl(sum(COST_MY_COST),0),''999,999,999,990'')||'' ''||min(COST_CURRENCY_CODE) MY_COST_YEAR,',
+' SUM(CNT) as TOTAL_ROWS,',
+' to_char(SUM(CNT),''999,999,999'') as TOTAL_ROWS',
+' into',
+' :P4_COST,',
+' :P4_YEARLY,',
+' :P4_ROWS,',
+' :P4_ROWS_DISPLAY',
+' from',
+' (',
+' select ',
+' sum(COST_MY_COST) COST_MY_COST,',
+' sum(COST_MY_COST)*(24 * 365 / count(distinct USAGE_INTERVAL_START)) COST_YEAR,',
+' min(COST_CURRENCY_CODE) COST_CURRENCY_CODE,',
+' count(*) cnt',
+' from oci_cost',
+' where ',
+' tenant_name=:P4_TENANT_NAME and',
+' (:P4_COMPARTMENT_NAME is null or prd_compartment_name = :P4_COMPARTMENT_NAME) and',
+' (:P4_PRODUCT_SERVICE is null or prd_service = :P4_PRODUCT_SERVICE) and',
+' (:P4_PRODUCT_REGION is null or prd_region = :P4_PRODUCT_REGION) and',
+' (:P4_TENANT_ID is null or tenant_id = :P4_TENANT_ID) and',
+' (:P4_COMPARTMENT_TOP is null or prd_compartment_path like :P4_COMPARTMENT_TOP ||''%'') and',
+' (:P4_TAG_KEY is null or tags_data like ''%#'' || :P4_TAG_KEY || ''=%'') and',
+' (:P4_TAG_DATA is null or tags_data like ''%#'' || nvl(:P4_TAG_KEY,''%'') || ''='' || :P4_TAG_DATA || ''#%'') and',
+' (:P4_COST_PRODUCT_SKU is null or COST_PRODUCT_SKU = :P4_COST_PRODUCT_SKU) and',
+' (:P4_TAG_SPECIAL is null or TAG_SPECIAL = :P4_TAG_SPECIAL) and',
+' USAGE_INTERVAL_START >= to_date(:P4_DATE_FROM,''DD-MON-YYYY HH24:MI'') and USAGE_INTERVAL_START < to_date(:P4_DATE_TO,''DD-MON-YYYY HH24:MI'') and',
+' not (:P4_TENANT_ID is null and :P4_COMPARTMENT_NAME is null and :P4_PRODUCT_SERVICE is null and :P4_PRODUCT_REGION is null and :P4_COMPARTMENT_TOP is null and ',
+' :P4_TAG_KEY is null and :P4_TAG_DATA is null and :P4_COST_PRODUCT_SKU is null and :P4_TAG_SPECIAL is null)',
+' union all',
+' select ',
+' sum(COST_MY_COST) COST_MY_COST,',
+' sum(COST_MY_COST)*(24 * 365 / count(distinct USAGE_INTERVAL_START)) COST_YEAR,',
+' min(COST_CURRENCY_CODE) COST_CURRENCY_CODE,',
+' sum(num_rows) cnt',
+' from oci_cost_stats',
+' where ',
+' tenant_name=:P4_TENANT_NAME and',
+' USAGE_INTERVAL_START >= to_date(:P4_DATE_FROM,''DD-MON-YYYY HH24:MI'') and USAGE_INTERVAL_START < to_date(:P4_DATE_TO,''DD-MON-YYYY HH24:MI'') and',
+' (:P4_COMPARTMENT_NAME is null and :P4_PRODUCT_SERVICE is null and :P4_PRODUCT_REGION is null and :P4_COMPARTMENT_TOP is null and ',
+' :P4_TAG_KEY is null and :P4_TAG_DATA is null and :P4_COST_PRODUCT_SKU is null and :P4_TENANT_ID is null and :P4_TAG_SPECIAL is null)',
+' );',
+'end;',
+''))
+,p_process_clob_language=>'PLSQL'
+,p_error_display_location=>'INLINE_IN_NOTIFICATION'
);
end;
/
@@ -15713,10 +15792,15 @@ wwv_flow_api.create_page(
'#P5_INFO_DISPLAY {',
' background-color: #FfFff0; font-size: 12px;',
'}',
-'#P5_REPORT_SELECTOR { background-color: #F5FBB4; font-weight: bold; font-size: 13px;}'))
+'#P5_REPORT_SELECTOR { background-color: #F5FBB4; font-weight: bold; font-size: 13px;}',
+'',
+'#report .t-fht-thead{',
+' overflow: auto !important;',
+'}',
+''))
,p_page_template_options=>'#DEFAULT#'
,p_last_updated_by=>'ADIZOHAR'
-,p_last_upd_yyyymmddhh24miss=>'20201103122726'
+,p_last_upd_yyyymmddhh24miss=>'20210329152118'
);
wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(22846551592241693)
@@ -15725,7 +15809,7 @@ wwv_flow_api.create_page_plug(
,p_plug_template=>wwv_flow_api.id(9765042323688020)
,p_plug_display_sequence=>10
,p_include_in_reg_disp_sel_yn=>'Y'
-,p_plug_grid_column_span=>8
+,p_plug_grid_column_span=>9
,p_plug_display_point=>'BODY'
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
,p_attribute_01=>'N'
@@ -15739,7 +15823,7 @@ wwv_flow_api.create_page_plug(
,p_plug_display_sequence=>20
,p_include_in_reg_disp_sel_yn=>'Y'
,p_plug_new_grid_row=>false
-,p_plug_grid_column_span=>4
+,p_plug_grid_column_span=>3
,p_plug_display_point=>'BODY'
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
,p_attribute_01=>'N'
@@ -15754,16 +15838,19 @@ wwv_flow_api.create_page_plug(
,p_include_in_reg_disp_sel_yn=>'Y'
,p_plug_display_point=>'BODY'
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
+,p_plug_display_condition_type=>'ITEM_IS_NOT_ZERO'
+,p_plug_display_when_condition=>'P5_ROWS'
,p_attribute_01=>'N'
,p_attribute_02=>'HTML'
);
wwv_flow_api.create_report_region(
p_id=>wwv_flow_api.id(9926750244716139)
-,p_name=>'Monthly Report'
+,p_name=>'Monthly Cost Report'
+,p_region_name=>'report'
,p_parent_plug_id=>wwv_flow_api.id(33638842014589649)
,p_template=>wwv_flow_api.id(9765042323688020)
,p_display_sequence=>90
-,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
,p_component_template_options=>'#DEFAULT#:t-Report--altRowsDefault:t-Report--rowHighlight'
,p_display_point=>'BODY'
,p_source_type=>'NATIVE_SQL_REPORT'
@@ -15773,6 +15860,7 @@ wwv_flow_api.create_report_region(
' case ',
' when :P5_REPORT_GROUP = ''Product'' or :P5_REPORT_GROUP is null then COST_PRODUCT_SKU || '' '' || replace(replace(PRD_DESCRIPTION,COST_PRODUCT_SKU||'' - '',''''),''Oracle Cloud Infrastructure'',''OCI'')',
' when :P5_REPORT_GROUP = ''Region'' then prd_region',
+' when :P5_REPORT_GROUP = ''Tag Special'' then tag_special',
' when :P5_REPORT_GROUP = ''Top Compartment'' then ',
' case ',
' when prd_compartment_path is null then ''No Compartment''',
@@ -15806,6 +15894,7 @@ wwv_flow_api.create_report_region(
' (: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_SPECIAL is null or :P5_TAG_SPECIAL = TAG_SPECIAL) and',
' (:P5_TENANT_ID is null or tenant_id = :P5_TENANT_ID) 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',
@@ -15814,6 +15903,7 @@ wwv_flow_api.create_report_region(
' case ',
' when :P5_REPORT_GROUP = ''Product'' or :P5_REPORT_GROUP is null then COST_PRODUCT_SKU || '' '' || replace(replace(PRD_DESCRIPTION,COST_PRODUCT_SKU||'' - '',''''),''Oracle Cloud Infrastructure'',''OCI'')',
' when :P5_REPORT_GROUP = ''Region'' then prd_region',
+' when :P5_REPORT_GROUP = ''Tag Special'' then tag_special',
' when :P5_REPORT_GROUP = ''Top Compartment'' then ',
' case ',
' when prd_compartment_path is null then ''No Compartment''',
@@ -15825,6 +15915,9 @@ wwv_flow_api.create_report_region(
' end',
'having sum(COST_MY_COST)>0;',
''))
+,p_display_when_condition=>'P5_REPORT_SELECTOR'
+,p_display_when_cond2=>'Monthly Cost Report'
+,p_display_condition_type=>'VAL_OF_ITEM_IN_COND_EQ_COND2'
,p_ajax_enabled=>'Y'
,p_query_row_template=>wwv_flow_api.id(9790776953688052)
,p_query_num_rows=>9999
@@ -16080,10 +16173,11 @@ wwv_flow_api.create_report_columns(
wwv_flow_api.create_report_region(
p_id=>wwv_flow_api.id(12092029867870221)
,p_name=>'Daily Cost Report'
+,p_region_name=>'report'
,p_parent_plug_id=>wwv_flow_api.id(33638842014589649)
,p_template=>wwv_flow_api.id(9765042323688020)
,p_display_sequence=>110
-,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
,p_component_template_options=>'#DEFAULT#:t-Report--altRowsDefault:t-Report--rowHighlight'
,p_display_point=>'BODY'
,p_source_type=>'NATIVE_SQL_REPORT'
@@ -16093,6 +16187,7 @@ wwv_flow_api.create_report_region(
' case ',
' when :P5_REPORT_GROUP = ''Product'' or :P5_REPORT_GROUP is null then COST_PRODUCT_SKU || '' '' || replace(replace(PRD_DESCRIPTION,COST_PRODUCT_SKU||'' - '',''''),''Oracle Cloud Infrastructure'',''OCI'')',
' when :P5_REPORT_GROUP = ''Region'' then prd_region',
+' when :P5_REPORT_GROUP = ''Tag Special'' then tag_special',
' when :P5_REPORT_GROUP = ''Top Compartment'' then ',
' case ',
' when prd_compartment_path is null then ''No Compartment''',
@@ -16145,6 +16240,7 @@ wwv_flow_api.create_report_region(
' (: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_SPECIAL is null or :P5_TAG_SPECIAL = TAG_SPECIAL) and',
' (:P5_TENANT_ID is null or tenant_id = :P5_TENANT_ID) 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',
@@ -16153,6 +16249,7 @@ wwv_flow_api.create_report_region(
' case ',
' when :P5_REPORT_GROUP = ''Product'' or :P5_REPORT_GROUP is null then COST_PRODUCT_SKU || '' '' || replace(replace(PRD_DESCRIPTION,COST_PRODUCT_SKU||'' - '',''''),''Oracle Cloud Infrastructure'',''OCI'')',
' when :P5_REPORT_GROUP = ''Region'' then prd_region',
+' when :P5_REPORT_GROUP = ''Tag Special'' then tag_special',
' when :P5_REPORT_GROUP = ''Top Compartment'' then ',
' case ',
' when prd_compartment_path is null then ''No Compartment''',
@@ -16163,6 +16260,9 @@ wwv_flow_api.create_report_region(
' when :P5_REPORT_GROUP = ''Tenant'' then nvl(tenant_id,''No TenantId'')',
' end',
'having sum(COST_MY_COST)>0;'))
+,p_display_when_condition=>'P5_REPORT_SELECTOR'
+,p_display_when_cond2=>'Daily Cost Report'
+,p_display_condition_type=>'VAL_OF_ITEM_IN_COND_EQ_COND2'
,p_ajax_enabled=>'Y'
,p_query_row_template=>wwv_flow_api.id(9790776953688052)
,p_query_num_rows=>9999
@@ -16535,6 +16635,9 @@ 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(12140258272985907)
,p_query_column_id=>23
@@ -16580,9 +16683,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(12140504386985910)
,p_query_column_id=>26
@@ -16705,11 +16805,12 @@ wwv_flow_api.create_report_columns(
);
wwv_flow_api.create_report_region(
p_id=>wwv_flow_api.id(12268418584281501)
-,p_name=>'Weekly Report'
+,p_name=>'Weekly Cost Report'
+,p_region_name=>'report'
,p_parent_plug_id=>wwv_flow_api.id(33638842014589649)
,p_template=>wwv_flow_api.id(9765042323688020)
,p_display_sequence=>160
-,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
,p_component_template_options=>'#DEFAULT#:t-Report--altRowsDefault:t-Report--rowHighlight'
,p_display_point=>'BODY'
,p_source_type=>'NATIVE_SQL_REPORT'
@@ -16719,6 +16820,7 @@ wwv_flow_api.create_report_region(
' case ',
' when :P5_REPORT_GROUP = ''Product'' or :P5_REPORT_GROUP is null then COST_PRODUCT_SKU || '' '' || replace(replace(PRD_DESCRIPTION,COST_PRODUCT_SKU||'' - '',''''),''Oracle Cloud Infrastructure'',''OCI'')',
' when :P5_REPORT_GROUP = ''Region'' then prd_region',
+' when :P5_REPORT_GROUP = ''Tag Special'' then tag_special',
' when :P5_REPORT_GROUP = ''Top Compartment'' then ',
' case ',
' when prd_compartment_path is null then ''No Compartment''',
@@ -16792,6 +16894,7 @@ wwv_flow_api.create_report_region(
' (: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_SPECIAL is null or :P5_TAG_SPECIAL = TAG_SPECIAL) and',
' (:P5_TAG_KEY is null or tags_data like ''%#'' || :P5_TAG_KEY || ''=%'') and',
' (:P5_TENANT_ID is null or tenant_id = :P5_TENANT_ID) and',
' (:P5_TAG_DATA is null or tags_data like ''%#'' || nvl(:P5_TAG_KEY,''%'') || ''=%'' || :P5_TAG_DATA || ''#'') and',
@@ -16800,6 +16903,7 @@ wwv_flow_api.create_report_region(
' case ',
' when :P5_REPORT_GROUP = ''Product'' or :P5_REPORT_GROUP is null then COST_PRODUCT_SKU || '' '' || replace(replace(PRD_DESCRIPTION,COST_PRODUCT_SKU||'' - '',''''),''Oracle Cloud Infrastructure'',''OCI'')',
' when :P5_REPORT_GROUP = ''Region'' then prd_region',
+' when :P5_REPORT_GROUP = ''Tag Special'' then tag_special',
' when :P5_REPORT_GROUP = ''Top Compartment'' then ',
' case ',
' when prd_compartment_path is null then ''No Compartment''',
@@ -16810,6 +16914,9 @@ wwv_flow_api.create_report_region(
' when :P5_REPORT_GROUP = ''Tenant'' then nvl(tenant_id,''No TenantId'')',
' end',
'having sum(COST_MY_COST)>0;'))
+,p_display_when_condition=>'P5_REPORT_SELECTOR'
+,p_display_when_cond2=>'Weekly Cost Report'
+,p_display_condition_type=>'VAL_OF_ITEM_IN_COND_EQ_COND2'
,p_ajax_enabled=>'Y'
,p_query_row_template=>wwv_flow_api.id(9790776953688052)
,p_query_num_rows=>9999
@@ -17480,6 +17587,9 @@ 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(12276461513302631)
,p_query_column_id=>49
@@ -17532,9 +17642,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(12276887785302635)
,p_query_column_id=>53
@@ -17564,10 +17671,11 @@ wwv_flow_api.create_report_columns(
wwv_flow_api.create_report_region(
p_id=>wwv_flow_api.id(12278275925302649)
,p_name=>'Daily Product Unit Report - Single'
+,p_region_name=>'report'
,p_parent_plug_id=>wwv_flow_api.id(33638842014589649)
,p_template=>wwv_flow_api.id(9765042323688020)
,p_display_sequence=>130
-,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
,p_component_template_options=>'#DEFAULT#:t-Report--altRowsDefault:t-Report--rowHighlight'
,p_display_point=>'BODY'
,p_source_type=>'NATIVE_SQL_REPORT'
@@ -17637,12 +17745,16 @@ wwv_flow_api.create_report_region(
' (:P5_PRODUCT_REGION is null or prd_region = :P5_PRODUCT_REGION) and',
' (:P5_TENANT_ID is null or tenant_id = :P5_TENANT_ID) and',
' (:P5_COST_PRODUCT_SKU is null or COST_PRODUCT_SKU = :P5_COST_PRODUCT_SKU) and',
+' (:P5_TAG_SPECIAL is null or :P5_TAG_SPECIAL = TAG_SPECIAL) 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_REPORT_SELECTOR = ''Daily Product Unit Report - Single''',
')',
'GROUP BY PRODUCT_NAME',
'having sum(SINGLE_QUANTITY)>0;'))
+,p_display_when_condition=>'P5_REPORT_SELECTOR'
+,p_display_when_cond2=>'Daily Product Unit Report - Single'
+,p_display_condition_type=>'VAL_OF_ITEM_IN_COND_EQ_COND2'
,p_ajax_enabled=>'Y'
,p_query_row_template=>wwv_flow_api.id(9790776953688052)
,p_query_num_rows=>9999
@@ -17692,7 +17804,7 @@ wwv_flow_api.create_report_columns(
,p_query_column_id=>1
,p_column_alias=>'PRODUCT_NAME'
,p_column_display_sequence=>1
-,p_column_heading=>'&P5_REPORT_GROUP.'
+,p_column_heading=>'Product'
,p_use_as_row_header=>'N'
,p_column_html_expression=>'#PRODUCT_NAME#'
,p_disable_sort_column=>'N'
@@ -18138,7 +18250,7 @@ wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(13976669023041443)
,p_plug_name=>'Cost Over Time - Total - &P5_PERIOD.'
,p_parent_plug_id=>wwv_flow_api.id(33638842014589649)
-,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
,p_escape_on_http_output=>'Y'
,p_plug_template=>wwv_flow_api.id(9765042323688020)
,p_plug_display_sequence=>30
@@ -18146,11 +18258,15 @@ wwv_flow_api.create_page_plug(
,p_plug_source_type=>'NATIVE_JET_CHART'
,p_plug_query_num_rows=>15
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
+,p_plug_display_condition_type=>'VALUE_OF_ITEM_IN_CONDITION_IN_COLON_DELIMITED_LIST'
+,p_plug_display_when_condition=>'P5_REPORT_SELECTOR'
+,p_plug_display_when_cond2=>'Hourly Cost Over Time - Total:Daily Cost Over Time - Total:Weekly Cost Over Time - Total:Monthly Cost Over Time - Total'
);
wwv_flow_api.create_jet_chart(
p_id=>wwv_flow_api.id(13976741456041444)
,p_region_id=>wwv_flow_api.id(13976669023041443)
,p_chart_type=>'bar'
+,p_height=>'500'
,p_animation_on_display=>'auto'
,p_animation_on_data_change=>'auto'
,p_orientation=>'vertical'
@@ -18161,7 +18277,6 @@ wwv_flow_api.create_jet_chart(
,p_stack=>'on'
,p_stack_label=>'off'
,p_connect_nulls=>'Y'
-,p_value_position=>'auto'
,p_sorting=>'label-asc'
,p_fill_multi_series_gaps=>true
,p_zoom_and_scroll=>'off'
@@ -18169,20 +18284,8 @@ 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=>'bottom'
-,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
);
wwv_flow_api.create_jet_chart_series(
p_id=>wwv_flow_api.id(13976866910041445)
@@ -18208,11 +18311,13 @@ wwv_flow_api.create_jet_chart_series(
' (: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_SPECIAL is null or :P5_TAG_SPECIAL = TAG_SPECIAL) and',
' (:P5_TENANT_ID is null or tenant_id = :P5_TENANT_ID) and',
' (:P5_TAG_DATA is null or tags_data like ''%#'' || nvl(:P5_TAG_KEY,''%'') || ''=%'' || :P5_TAG_DATA || ''#'') and',
' (:P5_PERIOD=''Hourly'' and to_char(USAGE_INTERVAL_START,''YYYY-MM-DD'') = :P5_PERIOD_RANGE or :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,''YY'
||'YY'') = :P5_PERIOD_RANGE) and',
-' not (:P5_TENANT_ID is null and :P5_COMPARTMENT_NAME is null and :P5_PRODUCT_SERVICE is null and :P5_PRODUCT_REGION is null and :P5_COMPARTMENT_TOP is null and :P5_TAG_KEY is null and :P5_TAG_DATA is null and :P5_COST_PRODUCT_SKU is null) and',
+' not (:P5_TAG_SPECIAL is null and :P5_TENANT_ID is null and :P5_COMPARTMENT_NAME is null and :P5_PRODUCT_SERVICE is null and :P5_PRODUCT_REGION is null and :P5_COMPARTMENT_TOP is null and :P5_TAG_KEY is null and :P5_TAG_DATA is null and :P5_COST_P'
+||'RODUCT_SKU is null) and',
' :P5_REPORT_SELECTOR in (''Hourly Cost Over Time - Total'',''Daily Cost Over Time - Total'',''Weekly Cost Over Time - Total'',''Monthly Cost Over Time - Total'') ',
' group by ',
' case ',
@@ -18235,7 +18340,8 @@ wwv_flow_api.create_jet_chart_series(
' tenant_name=:P5_TENANT_NAME and',
' (:P5_PERIOD=''Hourly'' and to_char(USAGE_INTERVAL_START,''YYYY-MM-DD'') = :P5_PERIOD_RANGE or :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,''YY'
||'YY'') = :P5_PERIOD_RANGE) and',
-' (:P5_TENANT_ID is null and :P5_COMPARTMENT_NAME is null and :P5_PRODUCT_SERVICE is null and :P5_PRODUCT_REGION is null and :P5_COMPARTMENT_TOP is null and :P5_TAG_KEY is null and :P5_TAG_DATA is null and :P5_COST_PRODUCT_SKU is null) and',
+' (:P5_TAG_SPECIAL is null and :P5_TENANT_ID is null and :P5_COMPARTMENT_NAME is null and :P5_PRODUCT_SERVICE is null and :P5_PRODUCT_REGION is null and :P5_COMPARTMENT_TOP is null and :P5_TAG_KEY is null and :P5_TAG_DATA is null and :P5_COST_PRODU'
+||'CT_SKU is null) and',
' :P5_REPORT_SELECTOR in (''Hourly Cost Over Time - Total'',''Daily Cost Over Time - Total'',''Weekly Cost Over Time - Total'',''Monthly Cost Over Time - Total'') ',
' group by ',
' case ',
@@ -18308,7 +18414,7 @@ wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(14186462781270005)
,p_plug_name=>'Cost By Region - &P5_PERIOD.'
,p_parent_plug_id=>wwv_flow_api.id(33638842014589649)
-,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
,p_escape_on_http_output=>'Y'
,p_plug_template=>wwv_flow_api.id(9765042323688020)
,p_plug_display_sequence=>70
@@ -18316,12 +18422,15 @@ wwv_flow_api.create_page_plug(
,p_plug_source_type=>'NATIVE_JET_CHART'
,p_plug_query_num_rows=>15
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
+,p_plug_display_condition_type=>'VALUE_OF_ITEM_IN_CONDITION_IN_COLON_DELIMITED_LIST'
+,p_plug_display_when_condition=>'P5_REPORT_SELECTOR'
+,p_plug_display_when_cond2=>'Hourly Cost By Region:Daily Cost By Region:Weekly Cost By Region:Monthly Cost By Region'
);
wwv_flow_api.create_jet_chart(
p_id=>wwv_flow_api.id(14186570488270006)
,p_region_id=>wwv_flow_api.id(14186462781270005)
,p_chart_type=>'bar'
-,p_height=>'450'
+,p_height=>'500'
,p_animation_on_display=>'auto'
,p_animation_on_data_change=>'auto'
,p_orientation=>'vertical'
@@ -18332,7 +18441,6 @@ wwv_flow_api.create_jet_chart(
,p_stack=>'on'
,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'
@@ -18340,20 +18448,8 @@ 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
);
wwv_flow_api.create_jet_chart_series(
p_id=>wwv_flow_api.id(14186672156270007)
@@ -18380,6 +18476,7 @@ wwv_flow_api.create_jet_chart_series(
' (: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_TENANT_ID is null or tenant_id = :P5_TENANT_ID) and',
+' (:P5_TAG_SPECIAL is null or :P5_TAG_SPECIAL = TAG_SPECIAL) 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=''Hourly'' and to_char(USAGE_INTERVAL_START,''YYYY-MM-DD'') = :P5_PERIOD_RANGE or :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,''YY'
@@ -18402,6 +18499,9 @@ wwv_flow_api.create_jet_chart_series(
,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(14186828501270009)
,p_chart_id=>wwv_flow_api.id(14186570488270006)
@@ -18426,9 +18526,6 @@ wwv_flow_api.create_jet_chart_axis(
,p_zoom_order_quarters=>false
,p_zoom_order_years=>false
);
-end;
-/
-begin
wwv_flow_api.create_jet_chart_axis(
p_id=>wwv_flow_api.id(14186775683270008)
,p_chart_id=>wwv_flow_api.id(14186570488270006)
@@ -18456,7 +18553,7 @@ wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(15050972044989901)
,p_plug_name=>'Cost By Service - &P5_PERIOD.'
,p_parent_plug_id=>wwv_flow_api.id(33638842014589649)
-,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
,p_escape_on_http_output=>'Y'
,p_plug_template=>wwv_flow_api.id(9765042323688020)
,p_plug_display_sequence=>40
@@ -18464,6 +18561,9 @@ wwv_flow_api.create_page_plug(
,p_plug_source_type=>'NATIVE_JET_CHART'
,p_plug_query_num_rows=>15
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
+,p_plug_display_condition_type=>'VALUE_OF_ITEM_IN_CONDITION_IN_COLON_DELIMITED_LIST'
+,p_plug_display_when_condition=>'P5_REPORT_SELECTOR'
+,p_plug_display_when_cond2=>'Hourly Cost By Service:Daily Cost By Service:Weekly Cost By Service:Monthly Cost By Service'
);
wwv_flow_api.create_jet_chart(
p_id=>wwv_flow_api.id(15051010405989902)
@@ -18514,6 +18614,7 @@ wwv_flow_api.create_jet_chart_series(
' (: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_SPECIAL is null or :P5_TAG_SPECIAL = TAG_SPECIAL) and',
' (:P5_TENANT_ID is null or tenant_id = :P5_TENANT_ID) 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',
@@ -18588,7 +18689,7 @@ wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(15051727286989909)
,p_plug_name=>'Cost By Compartment - &P5_PERIOD.'
,p_parent_plug_id=>wwv_flow_api.id(33638842014589649)
-,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
,p_escape_on_http_output=>'Y'
,p_plug_template=>wwv_flow_api.id(9765042323688020)
,p_plug_display_sequence=>60
@@ -18596,12 +18697,15 @@ wwv_flow_api.create_page_plug(
,p_plug_source_type=>'NATIVE_JET_CHART'
,p_plug_query_num_rows=>15
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
+,p_plug_display_condition_type=>'VALUE_OF_ITEM_IN_CONDITION_IN_COLON_DELIMITED_LIST'
+,p_plug_display_when_condition=>'P5_REPORT_SELECTOR'
+,p_plug_display_when_cond2=>'Hourly Cost By Compartment:Daily Cost By Compartment:Weekly Cost By Compartment:Monthly Cost By Compartment'
);
wwv_flow_api.create_jet_chart(
p_id=>wwv_flow_api.id(15051899660989910)
,p_region_id=>wwv_flow_api.id(15051727286989909)
,p_chart_type=>'bar'
-,p_height=>'600'
+,p_height=>'500'
,p_animation_on_display=>'auto'
,p_animation_on_data_change=>'auto'
,p_orientation=>'vertical'
@@ -18647,6 +18751,7 @@ wwv_flow_api.create_jet_chart_series(
' (: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_TENANT_ID is null or tenant_id = :P5_TENANT_ID) and',
+' (:P5_TAG_SPECIAL is null or :P5_TAG_SPECIAL = TAG_SPECIAL) 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=''Hourly'' and to_char(USAGE_INTERVAL_START,''YYYY-MM-DD'') = :P5_PERIOD_RANGE or :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,''YY'
@@ -18670,20 +18775,19 @@ wwv_flow_api.create_jet_chart_series(
,p_items_label_font_size=>'10'
);
wwv_flow_api.create_jet_chart_axis(
- p_id=>wwv_flow_api.id(15052126213989913)
+ p_id=>wwv_flow_api.id(15052096900989912)
,p_chart_id=>wwv_flow_api.id(15051899660989910)
-,p_axis=>'x'
+,p_axis=>'y'
,p_is_rendered=>'on'
-,p_format_type=>'date-short'
-,p_numeric_pattern=>'DD-MON-YYYY'
+,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'
-,p_tick_label_rotation=>'auto'
-,p_tick_label_position=>'outside'
,p_zoom_order_seconds=>false
,p_zoom_order_minutes=>false
,p_zoom_order_hours=>false
@@ -18694,19 +18798,20 @@ wwv_flow_api.create_jet_chart_axis(
,p_zoom_order_years=>false
);
wwv_flow_api.create_jet_chart_axis(
- p_id=>wwv_flow_api.id(15052096900989912)
+ p_id=>wwv_flow_api.id(15052126213989913)
,p_chart_id=>wwv_flow_api.id(15051899660989910)
-,p_axis=>'y'
+,p_axis=>'x'
,p_is_rendered=>'on'
-,p_format_type=>'decimal'
-,p_decimal_places=>1
+,p_format_type=>'date-short'
+,p_numeric_pattern=>'DD-MON-YYYY'
,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'
+,p_tick_label_rotation=>'auto'
+,p_tick_label_position=>'outside'
,p_zoom_order_seconds=>false
,p_zoom_order_minutes=>false
,p_zoom_order_hours=>false
@@ -18720,7 +18825,7 @@ wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(15052505519989917)
,p_plug_name=>'Cost By Top Compartment - &P5_PERIOD.'
,p_parent_plug_id=>wwv_flow_api.id(33638842014589649)
-,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
,p_escape_on_http_output=>'Y'
,p_plug_template=>wwv_flow_api.id(9765042323688020)
,p_plug_display_sequence=>80
@@ -18728,12 +18833,15 @@ wwv_flow_api.create_page_plug(
,p_plug_source_type=>'NATIVE_JET_CHART'
,p_plug_query_num_rows=>15
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
+,p_plug_display_condition_type=>'VALUE_OF_ITEM_IN_CONDITION_IN_COLON_DELIMITED_LIST'
+,p_plug_display_when_condition=>'P5_REPORT_SELECTOR'
+,p_plug_display_when_cond2=>'Hourly Cost By Top Compartment:Daily Cost By Top Compartment:Weekly Cost By Top Compartment:Monthly Cost By Top Compartment'
);
wwv_flow_api.create_jet_chart(
p_id=>wwv_flow_api.id(15052674611989918)
,p_region_id=>wwv_flow_api.id(15052505519989917)
,p_chart_type=>'bar'
-,p_height=>'450'
+,p_height=>'500'
,p_animation_on_display=>'auto'
,p_animation_on_data_change=>'auto'
,p_orientation=>'vertical'
@@ -18744,7 +18852,6 @@ wwv_flow_api.create_jet_chart(
,p_stack=>'on'
,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'
@@ -18752,20 +18859,8 @@ 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
);
wwv_flow_api.create_jet_chart_series(
p_id=>wwv_flow_api.id(15052776181989919)
@@ -18792,6 +18887,7 @@ wwv_flow_api.create_jet_chart_series(
' (: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_TENANT_ID is null or tenant_id = :P5_TENANT_ID) and',
+' (:P5_TAG_SPECIAL is null or :P5_TAG_SPECIAL = TAG_SPECIAL) 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=''Hourly'' and to_char(USAGE_INTERVAL_START,''YYYY-MM-DD'') = :P5_PERIOD_RANGE or :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,''YY'
@@ -18815,19 +18911,20 @@ wwv_flow_api.create_jet_chart_series(
,p_items_label_font_size=>'10'
);
wwv_flow_api.create_jet_chart_axis(
- p_id=>wwv_flow_api.id(15052897038989920)
+ p_id=>wwv_flow_api.id(15052900863989921)
,p_chart_id=>wwv_flow_api.id(15052674611989918)
-,p_axis=>'y'
+,p_axis=>'x'
,p_is_rendered=>'on'
-,p_format_type=>'decimal'
-,p_decimal_places=>1
+,p_format_type=>'date-short'
+,p_numeric_pattern=>'DD-MON-YYYY'
,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'
+,p_tick_label_rotation=>'auto'
+,p_tick_label_position=>'outside'
,p_zoom_order_seconds=>false
,p_zoom_order_minutes=>false
,p_zoom_order_hours=>false
@@ -18838,20 +18935,19 @@ wwv_flow_api.create_jet_chart_axis(
,p_zoom_order_years=>false
);
wwv_flow_api.create_jet_chart_axis(
- p_id=>wwv_flow_api.id(15052900863989921)
+ p_id=>wwv_flow_api.id(15052897038989920)
,p_chart_id=>wwv_flow_api.id(15052674611989918)
-,p_axis=>'x'
+,p_axis=>'y'
,p_is_rendered=>'on'
-,p_format_type=>'date-short'
-,p_numeric_pattern=>'DD-MON-YYYY'
+,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'
-,p_tick_label_rotation=>'auto'
-,p_tick_label_position=>'outside'
,p_zoom_order_seconds=>false
,p_zoom_order_minutes=>false
,p_zoom_order_hours=>false
@@ -18864,10 +18960,11 @@ wwv_flow_api.create_jet_chart_axis(
wwv_flow_api.create_report_region(
p_id=>wwv_flow_api.id(15053388277989925)
,p_name=>'Daily Product Unit Report - Total'
+,p_region_name=>'report'
,p_parent_plug_id=>wwv_flow_api.id(33638842014589649)
,p_template=>wwv_flow_api.id(9765042323688020)
,p_display_sequence=>140
-,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
,p_component_template_options=>'#DEFAULT#:t-Report--altRowsDefault:t-Report--rowHighlight'
,p_display_point=>'BODY'
,p_source_type=>'NATIVE_SQL_REPORT'
@@ -18923,6 +19020,7 @@ wwv_flow_api.create_report_region(
' (: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_SPECIAL is null or :P5_TAG_SPECIAL = TAG_SPECIAL) and',
' (:P5_TENANT_ID is null or tenant_id = :P5_TENANT_ID) 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',
@@ -18930,6 +19028,9 @@ wwv_flow_api.create_report_region(
')',
'GROUP BY PRODUCT_NAME',
'having sum(USG_BILLED_QUANTITY)>0;'))
+,p_display_when_condition=>'P5_REPORT_SELECTOR'
+,p_display_when_cond2=>'Daily Product Unit Report - Total'
+,p_display_condition_type=>'VAL_OF_ITEM_IN_COND_EQ_COND2'
,p_ajax_enabled=>'Y'
,p_query_row_template=>wwv_flow_api.id(9790776953688052)
,p_query_num_rows=>9999
@@ -18979,7 +19080,7 @@ wwv_flow_api.create_report_columns(
,p_query_column_id=>1
,p_column_alias=>'PRODUCT_NAME'
,p_column_display_sequence=>1
-,p_column_heading=>'&P5_REPORT_GROUP.'
+,p_column_heading=>'Product '
,p_use_as_row_header=>'N'
,p_column_html_expression=>'#PRODUCT_NAME#'
,p_disable_sort_column=>'N'
@@ -19225,6 +19326,9 @@ 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(15055299314989944)
,p_query_column_id=>19
@@ -19295,9 +19399,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(15055763819989949)
,p_query_column_id=>24
@@ -19427,10 +19528,11 @@ wwv_flow_api.create_report_columns(
wwv_flow_api.create_report_region(
p_id=>wwv_flow_api.id(15083635722497511)
,p_name=>'Weekly Product Unit Report'
+,p_region_name=>'report'
,p_parent_plug_id=>wwv_flow_api.id(33638842014589649)
,p_template=>wwv_flow_api.id(9765042323688020)
,p_display_sequence=>170
-,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
,p_component_template_options=>'#DEFAULT#:t-Report--altRowsDefault:t-Report--rowHighlight'
,p_display_point=>'BODY'
,p_source_type=>'NATIVE_SQL_REPORT'
@@ -19501,6 +19603,7 @@ wwv_flow_api.create_report_region(
' (: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_SPECIAL is null or :P5_TAG_SPECIAL = TAG_SPECIAL) and',
' (:P5_TENANT_ID is null or tenant_id = :P5_TENANT_ID) 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',
@@ -19508,6 +19611,9 @@ wwv_flow_api.create_report_region(
'GROUP BY ',
' COST_PRODUCT_SKU || '' '' || replace(replace(PRD_DESCRIPTION,COST_PRODUCT_SKU||'' - '',''''),''Oracle Cloud Infrastructure'',''OCI'')',
'having sum(USG_BILLED_QUANTITY)>0;'))
+,p_display_when_condition=>'P5_REPORT_SELECTOR'
+,p_display_when_cond2=>'Weekly Product Unit Report'
+,p_display_condition_type=>'VAL_OF_ITEM_IN_COND_EQ_COND2'
,p_ajax_enabled=>'Y'
,p_query_row_template=>wwv_flow_api.id(9790776953688052)
,p_query_num_rows=>9999
@@ -19557,7 +19663,7 @@ wwv_flow_api.create_report_columns(
,p_query_column_id=>1
,p_column_alias=>'PRODUCT_NAME'
,p_column_display_sequence=>1
-,p_column_heading=>'&P5_REPORT_GROUP.'
+,p_column_heading=>'Product'
,p_use_as_row_header=>'N'
,p_column_html_expression=>'#PRODUCT_NAME#'
,p_disable_sort_column=>'N'
@@ -20166,6 +20272,9 @@ 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(15101918299532007)
,p_query_column_id=>45
@@ -20250,9 +20359,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(15102519216532013)
,p_query_column_id=>51
@@ -20298,10 +20404,11 @@ wwv_flow_api.create_report_columns(
wwv_flow_api.create_report_region(
p_id=>wwv_flow_api.id(15102859636532016)
,p_name=>'Monthly Product Unit Report'
+,p_region_name=>'report'
,p_parent_plug_id=>wwv_flow_api.id(33638842014589649)
,p_template=>wwv_flow_api.id(9765042323688020)
,p_display_sequence=>100
-,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
,p_component_template_options=>'#DEFAULT#:t-Report--altRowsDefault:t-Report--rowHighlight'
,p_display_point=>'BODY'
,p_source_type=>'NATIVE_SQL_REPORT'
@@ -20329,6 +20436,7 @@ wwv_flow_api.create_report_region(
' to_char(USAGE_INTERVAL_START,''YYYY'') = :P5_PERIOD_RANGE 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_TAG_SPECIAL is null or :P5_TAG_SPECIAL = TAG_SPECIAL) 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_TENANT_ID is null or tenant_id = :P5_TENANT_ID) and',
@@ -20340,6 +20448,9 @@ wwv_flow_api.create_report_region(
' COST_PRODUCT_SKU || '' '' || replace(replace(PRD_DESCRIPTION,COST_PRODUCT_SKU||'' - '',''''),''Oracle Cloud Infrastructure'',''OCI'')',
'having sum(USG_BILLED_QUANTITY)>0;',
''))
+,p_display_when_condition=>'P5_REPORT_SELECTOR'
+,p_display_when_cond2=>'Monthly Product Unit Report'
+,p_display_condition_type=>'VAL_OF_ITEM_IN_COND_EQ_COND2'
,p_ajax_enabled=>'Y'
,p_query_row_template=>wwv_flow_api.id(9790776953688052)
,p_query_num_rows=>9999
@@ -20569,7 +20680,7 @@ 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_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
,p_escape_on_http_output=>'Y'
,p_plug_template=>wwv_flow_api.id(9765042323688020)
,p_plug_display_sequence=>50
@@ -20577,6 +20688,9 @@ wwv_flow_api.create_page_plug(
,p_plug_source_type=>'NATIVE_JET_CHART'
,p_plug_query_num_rows=>15
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
+,p_plug_display_condition_type=>'VALUE_OF_ITEM_IN_CONDITION_IN_COLON_DELIMITED_LIST'
+,p_plug_display_when_condition=>'P5_REPORT_SELECTOR'
+,p_plug_display_when_cond2=>'Hourly Cost By SKU:Daily Cost By SKU:Weekly Cost By SKU:Monthly Cost By SKU'
);
wwv_flow_api.create_jet_chart(
p_id=>wwv_flow_api.id(16360042364490325)
@@ -20627,6 +20741,7 @@ wwv_flow_api.create_jet_chart_series(
' (: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_SPECIAL is null or :P5_TAG_SPECIAL = TAG_SPECIAL) and',
' (:P5_TENANT_ID is null or tenant_id = :P5_TENANT_ID) 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',
@@ -20651,43 +20766,44 @@ wwv_flow_api.create_jet_chart_series(
,p_items_label_font_size=>'10'
);
wwv_flow_api.create_jet_chart_axis(
- p_id=>wwv_flow_api.id(16360351214490328)
+ p_id=>wwv_flow_api.id(16360289843490327)
,p_chart_id=>wwv_flow_api.id(16360042364490325)
-,p_axis=>'x'
+,p_axis=>'y'
,p_is_rendered=>'on'
-,p_format_type=>'date-short'
-,p_numeric_pattern=>'DD-MON-YYYY'
+,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'
-,p_tick_label_rotation=>'auto'
-,p_tick_label_position=>'outside'
);
wwv_flow_api.create_jet_chart_axis(
- p_id=>wwv_flow_api.id(16360289843490327)
+ p_id=>wwv_flow_api.id(16360351214490328)
,p_chart_id=>wwv_flow_api.id(16360042364490325)
-,p_axis=>'y'
+,p_axis=>'x'
,p_is_rendered=>'on'
-,p_format_type=>'decimal'
-,p_decimal_places=>1
+,p_format_type=>'date-short'
+,p_numeric_pattern=>'DD-MON-YYYY'
,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'
+,p_tick_label_rotation=>'auto'
+,p_tick_label_position=>'outside'
);
wwv_flow_api.create_report_region(
p_id=>wwv_flow_api.id(16361917406490344)
,p_name=>'Hourly Cost Report'
+,p_region_name=>'report'
,p_parent_plug_id=>wwv_flow_api.id(33638842014589649)
,p_template=>wwv_flow_api.id(9765042323688020)
,p_display_sequence=>120
-,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
,p_component_template_options=>'#DEFAULT#:t-Report--altRowsDefault:t-Report--rowHighlight'
,p_display_point=>'BODY'
,p_source_type=>'NATIVE_SQL_REPORT'
@@ -20697,6 +20813,7 @@ wwv_flow_api.create_report_region(
' case ',
' when :P5_REPORT_GROUP = ''Product'' or :P5_REPORT_GROUP is null then COST_PRODUCT_SKU || '' '' || replace(replace(PRD_DESCRIPTION,COST_PRODUCT_SKU||'' - '',''''),''Oracle Cloud Infrastructure'',''OCI'')',
' when :P5_REPORT_GROUP = ''Region'' then prd_region',
+' when :P5_REPORT_GROUP = ''Tag Special'' then tag_special',
' when :P5_REPORT_GROUP = ''Top Compartment'' then ',
' case ',
' when prd_compartment_path is null then ''No Compartment''',
@@ -20742,6 +20859,7 @@ wwv_flow_api.create_report_region(
' (: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_SPECIAL is null or :P5_TAG_SPECIAL = TAG_SPECIAL) and',
' (:P5_TENANT_ID is null or tenant_id = :P5_TENANT_ID) 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',
@@ -20750,6 +20868,7 @@ wwv_flow_api.create_report_region(
' case ',
' when :P5_REPORT_GROUP = ''Product'' or :P5_REPORT_GROUP is null then COST_PRODUCT_SKU || '' '' || replace(replace(PRD_DESCRIPTION,COST_PRODUCT_SKU||'' - '',''''),''Oracle Cloud Infrastructure'',''OCI'')',
' when :P5_REPORT_GROUP = ''Region'' then prd_region',
+' when :P5_REPORT_GROUP = ''Tag Special'' then tag_special',
' when :P5_REPORT_GROUP = ''Top Compartment'' then ',
' case ',
' when prd_compartment_path is null then ''No Compartment''',
@@ -20760,6 +20879,9 @@ wwv_flow_api.create_report_region(
' when :P5_REPORT_GROUP = ''Tenant'' then nvl(tenant_id,''No TenantId'')',
' end',
'having sum(COST_MY_COST)>0;'))
+,p_display_when_condition=>'P5_REPORT_SELECTOR'
+,p_display_when_cond2=>'Hourly Cost Report'
+,p_display_condition_type=>'VAL_OF_ITEM_IN_COND_EQ_COND2'
,p_ajax_enabled=>'Y'
,p_query_row_template=>wwv_flow_api.id(9790776953688052)
,p_query_num_rows=>9999
@@ -21014,6 +21136,9 @@ 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(16827224833029005)
,p_query_column_id=>17
@@ -21131,9 +21256,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(16828165381029014)
,p_query_column_id=>26
@@ -21150,10 +21272,11 @@ wwv_flow_api.create_report_columns(
wwv_flow_api.create_report_region(
p_id=>wwv_flow_api.id(16766903294841205)
,p_name=>'Hourly Product Unit Report'
+,p_region_name=>'report'
,p_parent_plug_id=>wwv_flow_api.id(33638842014589649)
,p_template=>wwv_flow_api.id(9765042323688020)
,p_display_sequence=>150
-,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
,p_component_template_options=>'#DEFAULT#:t-Report--altRowsDefault:t-Report--rowHighlight'
,p_display_point=>'BODY'
,p_source_type=>'NATIVE_SQL_REPORT'
@@ -21202,6 +21325,7 @@ wwv_flow_api.create_report_region(
' (: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_SPECIAL is null or :P5_TAG_SPECIAL = TAG_SPECIAL) and',
' (:P5_TENANT_ID is null or tenant_id = :P5_TENANT_ID) 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',
@@ -21209,6 +21333,9 @@ wwv_flow_api.create_report_region(
')',
'GROUP BY PRODUCT_NAME',
'having sum(USG_BILLED_QUANTITY)>0;'))
+,p_display_when_condition=>'P5_REPORT_SELECTOR'
+,p_display_when_cond2=>'Hourly Product Unit Report'
+,p_display_condition_type=>'VAL_OF_ITEM_IN_COND_EQ_COND2'
,p_ajax_enabled=>'Y'
,p_query_row_template=>wwv_flow_api.id(9790776953688052)
,p_query_num_rows=>9999
@@ -21258,7 +21385,7 @@ wwv_flow_api.create_report_columns(
,p_query_column_id=>1
,p_column_alias=>'PRODUCT_NAME'
,p_column_display_sequence=>1
-,p_column_heading=>'&P5_REPORT_GROUP.'
+,p_column_heading=>'Product'
,p_use_as_row_header=>'N'
,p_column_html_expression=>'#PRODUCT_NAME#'
,p_disable_sort_column=>'N'
@@ -21581,7 +21708,7 @@ wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(23961814581267567)
,p_plug_name=>'Cost Over Time - &P5_PERIOD.'
,p_parent_plug_id=>wwv_flow_api.id(33638842014589649)
-,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
,p_escape_on_http_output=>'Y'
,p_plug_template=>wwv_flow_api.id(9765042323688020)
,p_plug_display_sequence=>20
@@ -21589,11 +21716,15 @@ wwv_flow_api.create_page_plug(
,p_plug_source_type=>'NATIVE_JET_CHART'
,p_plug_query_num_rows=>15
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
+,p_plug_display_condition_type=>'VALUE_OF_ITEM_IN_CONDITION_IN_COLON_DELIMITED_LIST'
+,p_plug_display_when_condition=>'P5_REPORT_SELECTOR'
+,p_plug_display_when_cond2=>'Hourly Cost Over Time:Daily Cost Over Time:Weekly Cost Over Time:Monthly Cost Over Time'
);
wwv_flow_api.create_jet_chart(
p_id=>wwv_flow_api.id(12036462660075984)
,p_region_id=>wwv_flow_api.id(23961814581267567)
,p_chart_type=>'bar'
+,p_height=>'500'
,p_animation_on_display=>'auto'
,p_animation_on_data_change=>'auto'
,p_orientation=>'vertical'
@@ -21604,7 +21735,6 @@ wwv_flow_api.create_jet_chart(
,p_stack=>'on'
,p_stack_label=>'off'
,p_connect_nulls=>'Y'
-,p_value_position=>'auto'
,p_sorting=>'label-asc'
,p_fill_multi_series_gaps=>true
,p_zoom_and_scroll=>'off'
@@ -21612,20 +21742,8 @@ 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=>'bottom'
-,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
);
wwv_flow_api.create_jet_chart_series(
p_id=>wwv_flow_api.id(12038129542075985)
@@ -21652,10 +21770,12 @@ wwv_flow_api.create_jet_chart_series(
' (:P5_COST_PRODUCT_SKU is null or COST_PRODUCT_SKU = :P5_COST_PRODUCT_SKU) and',
' (:P5_TENANT_ID is null or tenant_id = :P5_TENANT_ID) and',
' (:P5_TAG_KEY is null or tags_data like ''%#'' || :P5_TAG_KEY || ''=%'') and',
+' (:P5_TAG_SPECIAL is null or :P5_TAG_SPECIAL = TAG_SPECIAL) and',
' (:P5_TAG_DATA is null or tags_data like ''%#'' || nvl(:P5_TAG_KEY,''%'') || ''=%'' || :P5_TAG_DATA || ''#'') and',
' (:P5_PERIOD=''Hourly'' and to_char(USAGE_INTERVAL_START,''YYYY-MM-DD'') = :P5_PERIOD_RANGE or :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,''YY'
||'YY'') = :P5_PERIOD_RANGE) and',
-' not (:P5_TENANT_ID is null and :P5_COMPARTMENT_NAME is null and :P5_PRODUCT_SERVICE is null and :P5_PRODUCT_REGION is null and :P5_COMPARTMENT_TOP is null and :P5_TAG_KEY is null and :P5_TAG_DATA is null and :P5_COST_PRODUCT_SKU is null) and',
+' not (:P5_TAG_SPECIAL is null and :P5_TENANT_ID is null and :P5_COMPARTMENT_NAME is null and :P5_PRODUCT_SERVICE is null and :P5_PRODUCT_REGION is null and :P5_COMPARTMENT_TOP is null and :P5_TAG_KEY is null and :P5_TAG_DATA is null and :P5_COST_P'
+||'RODUCT_SKU is null) and',
' :P5_REPORT_SELECTOR in (''Hourly Cost Over Time'',''Daily Cost Over Time'',''Weekly Cost Over Time'',''Monthly Cost Over Time'') ',
' group by ',
' case ',
@@ -21678,7 +21798,8 @@ wwv_flow_api.create_jet_chart_series(
' tenant_name=:P5_TENANT_NAME and',
' (:P5_PERIOD=''Hourly'' and to_char(USAGE_INTERVAL_START,''YYYY-MM-DD'') = :P5_PERIOD_RANGE or :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,''YY'
||'YY'') = :P5_PERIOD_RANGE) and',
-' (:P5_TENANT_ID is null and :P5_COMPARTMENT_NAME is null and :P5_PRODUCT_SERVICE is null and :P5_PRODUCT_REGION is null and :P5_COMPARTMENT_TOP is null and :P5_TAG_KEY is null and :P5_TAG_DATA is null and :P5_COST_PRODUCT_SKU is null) and',
+' (:P5_TAG_SPECIAL is null and :P5_TENANT_ID is null and :P5_COMPARTMENT_NAME is null and :P5_PRODUCT_SERVICE is null and :P5_PRODUCT_REGION is null and :P5_COMPARTMENT_TOP is null and :P5_TAG_KEY is null and :P5_TAG_DATA is null and :P5_COST_PRODU'
+||'CT_SKU is null) and',
' :P5_REPORT_SELECTOR in (''Hourly Cost Over Time'',''Daily Cost Over Time'',''Weekly Cost Over Time'',''Monthly Cost Over Time'') ',
' group by ',
' case ',
@@ -21725,10 +21846,12 @@ wwv_flow_api.create_jet_chart_series(
' (: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_TENANT_ID is null or tenant_id = :P5_TENANT_ID) and',
+' (:P5_TAG_SPECIAL is null or :P5_TAG_SPECIAL = TAG_SPECIAL) and',
' (:P5_TAG_DATA is null or tags_data like ''%#'' || nvl(:P5_TAG_KEY,''%'') || ''=%'' || :P5_TAG_DATA || ''#'') and',
' (:P5_PERIOD=''Hourly'' and to_char(USAGE_INTERVAL_START,''YYYY-MM-DD'') = :P5_PERIOD_RANGE or :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,''YY'
||'YY'') = :P5_PERIOD_RANGE) and',
-' not (:P5_TENANT_ID is null and :P5_COMPARTMENT_NAME is null and :P5_PRODUCT_SERVICE is null and :P5_PRODUCT_REGION is null and :P5_COMPARTMENT_TOP is null and :P5_TAG_KEY is null and :P5_TAG_DATA is null and :P5_COST_PRODUCT_SKU is null) and',
+' not (:P5_TAG_SPECIAL is null and :P5_TENANT_ID is null and :P5_COMPARTMENT_NAME is null and :P5_PRODUCT_SERVICE is null and :P5_PRODUCT_REGION is null and :P5_COMPARTMENT_TOP is null and :P5_TAG_KEY is null and :P5_TAG_DATA is null and :P5_COST_P'
+||'RODUCT_SKU is null) and',
' :P5_REPORT_SELECTOR in (''Hourly Cost Over Time'',''Daily Cost Over Time'',''Weekly Cost Over Time'',''Monthly Cost Over Time'') ',
' group by ',
' case ',
@@ -21751,7 +21874,8 @@ wwv_flow_api.create_jet_chart_series(
' tenant_name=:P5_TENANT_NAME and',
' (:P5_PERIOD=''Hourly'' and to_char(USAGE_INTERVAL_START,''YYYY-MM-DD'') = :P5_PERIOD_RANGE or :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,''YY'
||'YY'') = :P5_PERIOD_RANGE) and',
-' (:P5_TENANT_ID is null and :P5_COMPARTMENT_NAME is null and :P5_PRODUCT_SERVICE is null and :P5_PRODUCT_REGION is null and :P5_COMPARTMENT_TOP is null and :P5_TAG_KEY is null and :P5_TAG_DATA is null and :P5_COST_PRODUCT_SKU is null) and',
+' (:P5_TAG_SPECIAL is null and :P5_TENANT_ID is null and :P5_COMPARTMENT_NAME is null and :P5_PRODUCT_SERVICE is null and :P5_PRODUCT_REGION is null and :P5_COMPARTMENT_TOP is null and :P5_TAG_KEY is null and :P5_TAG_DATA is null and :P5_COST_PRODU'
+||'CT_SKU is null) and',
' :P5_REPORT_SELECTOR in (''Hourly Cost Over Time'',''Daily Cost Over Time'',''Weekly Cost Over Time'',''Monthly Cost Over Time'') ',
' group by ',
' case ',
@@ -21774,20 +21898,19 @@ wwv_flow_api.create_jet_chart_series(
,p_items_label_font_size=>'10'
);
wwv_flow_api.create_jet_chart_axis(
- p_id=>wwv_flow_api.id(12036986078075984)
+ p_id=>wwv_flow_api.id(12037572792075985)
,p_chart_id=>wwv_flow_api.id(12036462660075984)
-,p_axis=>'x'
+,p_axis=>'y'
,p_is_rendered=>'on'
-,p_format_type=>'date-short'
-,p_numeric_pattern=>'DD-MON-YYYY'
+,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'
-,p_tick_label_rotation=>'auto'
-,p_tick_label_position=>'outside'
,p_zoom_order_seconds=>false
,p_zoom_order_minutes=>false
,p_zoom_order_hours=>false
@@ -21798,19 +21921,20 @@ wwv_flow_api.create_jet_chart_axis(
,p_zoom_order_years=>false
);
wwv_flow_api.create_jet_chart_axis(
- p_id=>wwv_flow_api.id(12037572792075985)
+ p_id=>wwv_flow_api.id(12036986078075984)
,p_chart_id=>wwv_flow_api.id(12036462660075984)
-,p_axis=>'y'
+,p_axis=>'x'
,p_is_rendered=>'on'
-,p_format_type=>'decimal'
-,p_decimal_places=>1
+,p_format_type=>'date-short'
+,p_numeric_pattern=>'DD-MON-YYYY'
,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'
+,p_tick_label_rotation=>'auto'
+,p_tick_label_position=>'outside'
,p_zoom_order_seconds=>false
,p_zoom_order_minutes=>false
,p_zoom_order_hours=>false
@@ -21829,6 +21953,9 @@ wwv_flow_api.create_page_plug(
,p_plug_display_sequence=>10
,p_plug_display_point=>'BODY'
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
+,p_plug_display_condition_type=>'VALUE_OF_ITEM_IN_CONDITION_IN_COLON_DELIMITED_LIST'
+,p_plug_display_when_condition=>'P5_REPORT_SELECTOR'
+,p_plug_display_when_cond2=>'Daily Cost Report:Weekly Cost Report:Monthly Cost Report:Hourly Cost Report'
,p_attribute_01=>'N'
,p_attribute_02=>'HTML'
);
@@ -21842,12 +21969,17 @@ wwv_flow_api.create_page_plug(
,p_plug_display_point=>'BODY'
,p_plug_source=>'No Data Found, Please Choose Tenant, Date and press Submit.'
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
+,p_plug_display_condition_type=>'ITEM_IS_ZERO'
+,p_plug_display_when_condition=>'P5_ROWS'
,p_attribute_01=>'N'
,p_attribute_02=>'HTML'
);
+end;
+/
+begin
wwv_flow_api.create_page_button(
p_id=>wwv_flow_api.id(12048960742076060)
-,p_button_sequence=>100
+,p_button_sequence=>120
,p_button_plug_id=>wwv_flow_api.id(22846551592241693)
,p_button_name=>'P5_SUBMIT'
,p_button_action=>'SUBMIT'
@@ -21859,6 +21991,48 @@ wwv_flow_api.create_page_button(
,p_grid_new_row=>'Y'
,p_grid_column_span=>3
);
+wwv_flow_api.create_page_item(
+ p_id=>wwv_flow_api.id(11790776892177240)
+,p_name=>'P5_TAG_SPECIAL'
+,p_item_sequence=>160
+,p_item_plug_id=>wwv_flow_api.id(22846551592241693)
+,p_prompt=>'Tag Special Data'
+,p_display_as=>'NATIVE_SELECT_LIST'
+,p_lov=>wwv_flow_string.join(wwv_flow_t_varchar2(
+'select ref_name o, ref_name r ',
+'from ',
+' OCI_COST_REFERENCE ',
+'where',
+' tenant_name=:P5_TENANT_NAME',
+' and ref_type=''TAG_SPECIAL''',
+'order by 1'))
+,p_lov_display_null=>'YES'
+,p_lov_null_text=>'All'
+,p_lov_cascade_parent_items=>'P5_TENANT_NAME'
+,p_ajax_optimize_refresh=>'Y'
+,p_cHeight=>1
+,p_begin_on_new_line=>'N'
+,p_colspan=>2
+,p_field_template=>wwv_flow_api.id(9820028477688087)
+,p_item_template_options=>'#DEFAULT#'
+,p_lov_display_extra=>'YES'
+,p_attribute_01=>'NONE'
+,p_attribute_02=>'N'
+);
+wwv_flow_api.create_page_item(
+ p_id=>wwv_flow_api.id(11790835644177241)
+,p_name=>'P5_ROWS_DISPLAY'
+,p_item_sequence=>60
+,p_item_plug_id=>wwv_flow_api.id(22847044863241698)
+,p_prompt=>'Rows Filtered'
+,p_display_as=>'NATIVE_DISPLAY_ONLY'
+,p_tag_attributes=>'style="background-color:#e8e8e8"'
+,p_field_template=>wwv_flow_api.id(9820028477688087)
+,p_item_template_options=>'#DEFAULT#'
+,p_attribute_01=>'Y'
+,p_attribute_02=>'VALUE'
+,p_attribute_04=>'Y'
+);
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(11933331907191626)
,p_name=>'P5_PERIOD'
@@ -21870,6 +22044,7 @@ wwv_flow_api.create_page_item(
,p_lov_display_null=>'YES'
,p_lov_null_text=>'Please Choose'
,p_cHeight=>1
+,p_tag_attributes=>'style="background-color:#e0f0f0"'
,p_begin_on_new_line=>'N'
,p_colspan=>3
,p_field_template=>wwv_flow_api.id(9820028477688087)
@@ -21935,6 +22110,7 @@ wwv_flow_api.create_page_item(
,p_lov_cascade_parent_items=>'P5_PERIOD,P5_TENANT_NAME'
,p_ajax_optimize_refresh=>'Y'
,p_cHeight=>1
+,p_tag_attributes=>'style="background-color:#e0f0f0"'
,p_begin_on_new_line=>'N'
,p_colspan=>3
,p_field_template=>wwv_flow_api.id(9820028477688087)
@@ -21943,9 +22119,6 @@ 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(11933828594191631)
,p_name=>'P5_REPORT_GROUP'
@@ -21954,7 +22127,7 @@ wwv_flow_api.create_page_item(
,p_item_default=>'Product'
,p_prompt=>'Report Group Option'
,p_display_as=>'NATIVE_SELECT_LIST'
-,p_lov=>'STATIC2:Product;Product,Region;Region,Top Compartment;Top Compartment,Compartment;Compartment,Tenant;Tenant'
+,p_lov=>'STATIC2:Product;Product,Region;Region,Top Compartment;Top Compartment,Compartment;Compartment,Tenant;Tenant,Tag Special;Tag Special'
,p_cHeight=>1
,p_begin_on_new_line=>'N'
,p_colspan=>2
@@ -21964,6 +22137,32 @@ wwv_flow_api.create_page_item(
,p_attribute_01=>'SUBMIT'
,p_attribute_03=>'Y'
);
+wwv_flow_api.create_page_item(
+ p_id=>wwv_flow_api.id(11979657320439228)
+,p_name=>'P5_TAG_SPECIAL_KEY'
+,p_item_sequence=>150
+,p_item_plug_id=>wwv_flow_api.id(22846551592241693)
+,p_use_cache_before_default=>'NO'
+,p_prompt=>'Tag Special Key'
+,p_format_mask=>'FML999G999G999G999G990D00'
+,p_source=>wwv_flow_string.join(wwv_flow_t_varchar2(
+'select ref_name o',
+'from ',
+' OCI_COST_REFERENCE ',
+'where',
+' tenant_name=:P5_TENANT_NAME',
+' and ref_type=''TAG_SPECIAL_KEY''',
+'order by 1'))
+,p_source_type=>'QUERY_COLON'
+,p_display_as=>'NATIVE_DISPLAY_ONLY'
+,p_tag_attributes=>'style="background-color:#e8e8e8"'
+,p_begin_on_new_line=>'N'
+,p_field_template=>wwv_flow_api.id(9820028477688087)
+,p_item_template_options=>'#DEFAULT#'
+,p_attribute_01=>'Y'
+,p_attribute_02=>'VALUE'
+,p_attribute_04=>'Y'
+);
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(12049317069076061)
,p_name=>'P5_TENANT_NAME'
@@ -21975,6 +22174,7 @@ wwv_flow_api.create_page_item(
,p_lov_display_null=>'YES'
,p_lov_null_text=>'Please Choose...'
,p_cHeight=>1
+,p_tag_attributes=>'style="background-color:#e0f0f0"'
,p_colspan=>3
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
@@ -21985,7 +22185,7 @@ wwv_flow_api.create_page_item(
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(12050196618076063)
,p_name=>'P5_PRODUCT_SERVICE'
-,p_item_sequence=>30
+,p_item_sequence=>40
,p_item_plug_id=>wwv_flow_api.id(22846551592241693)
,p_prompt=>'Product Service'
,p_display_as=>'NATIVE_SELECT_LIST'
@@ -22003,7 +22203,7 @@ wwv_flow_api.create_page_item(
,p_ajax_optimize_refresh=>'Y'
,p_cHeight=>1
,p_begin_on_new_line=>'N'
-,p_colspan=>3
+,p_colspan=>2
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
,p_lov_display_extra=>'YES'
@@ -22013,7 +22213,7 @@ wwv_flow_api.create_page_item(
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(12050537615076064)
,p_name=>'P5_COMPARTMENT_TOP'
-,p_item_sequence=>40
+,p_item_sequence=>80
,p_item_plug_id=>wwv_flow_api.id(22846551592241693)
,p_prompt=>'Top Level Compartment'
,p_display_as=>'NATIVE_SELECT_LIST'
@@ -22031,7 +22231,7 @@ wwv_flow_api.create_page_item(
,p_ajax_optimize_refresh=>'Y'
,p_cHeight=>1
,p_begin_on_new_line=>'N'
-,p_colspan=>3
+,p_colspan=>2
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
,p_lov_display_extra=>'YES'
@@ -22041,7 +22241,7 @@ wwv_flow_api.create_page_item(
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(12050935981076064)
,p_name=>'P5_PRODUCT_REGION'
-,p_item_sequence=>60
+,p_item_sequence=>30
,p_item_plug_id=>wwv_flow_api.id(22846551592241693)
,p_prompt=>'Product Region'
,p_display_as=>'NATIVE_SELECT_LIST'
@@ -22069,7 +22269,7 @@ wwv_flow_api.create_page_item(
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(12051779019076065)
,p_name=>'P5_COST_PRODUCT_SKU'
-,p_item_sequence=>80
+,p_item_sequence=>90
,p_item_plug_id=>wwv_flow_api.id(22846551592241693)
,p_prompt=>'Product SKU'
,p_display_as=>'NATIVE_SELECT_LIST'
@@ -22087,6 +22287,7 @@ wwv_flow_api.create_page_item(
,p_ajax_optimize_refresh=>'Y'
,p_cHeight=>1
,p_begin_on_new_line=>'N'
+,p_colspan=>2
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
,p_lov_display_extra=>'YES'
@@ -22096,7 +22297,7 @@ wwv_flow_api.create_page_item(
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(12052102329076065)
,p_name=>'P5_COMPARTMENT_NAME'
-,p_item_sequence=>90
+,p_item_sequence=>140
,p_item_plug_id=>wwv_flow_api.id(22846551592241693)
,p_prompt=>'Compartment'
,p_display_as=>'NATIVE_SELECT_LIST'
@@ -22114,7 +22315,7 @@ wwv_flow_api.create_page_item(
,p_ajax_optimize_refresh=>'Y'
,p_cHeight=>1
,p_begin_on_new_line=>'N'
-,p_colspan=>3
+,p_colspan=>2
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
,p_lov_display_extra=>'YES'
@@ -22124,7 +22325,7 @@ wwv_flow_api.create_page_item(
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(12052925060076066)
,p_name=>'P5_TAG_KEY'
-,p_item_sequence=>120
+,p_item_sequence=>50
,p_item_plug_id=>wwv_flow_api.id(22846551592241693)
,p_prompt=>'Tag Key'
,p_display_as=>'NATIVE_SELECT_LIST'
@@ -22141,7 +22342,7 @@ wwv_flow_api.create_page_item(
,p_ajax_optimize_refresh=>'Y'
,p_cHeight=>1
,p_begin_on_new_line=>'N'
-,p_colspan=>3
+,p_colspan=>2
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
,p_lov_display_extra=>'YES'
@@ -22151,13 +22352,13 @@ wwv_flow_api.create_page_item(
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(12053398346076066)
,p_name=>'P5_TAG_DATA'
-,p_item_sequence=>130
+,p_item_sequence=>110
,p_item_plug_id=>wwv_flow_api.id(22846551592241693)
,p_prompt=>'Tag Data Filter'
,p_display_as=>'NATIVE_TEXT_FIELD'
,p_cSize=>30
,p_begin_on_new_line=>'N'
-,p_colspan=>3
+,p_colspan=>2
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
,p_attribute_01=>'N'
@@ -22170,87 +22371,8 @@ wwv_flow_api.create_page_item(
,p_name=>'P5_COST'
,p_item_sequence=>10
,p_item_plug_id=>wwv_flow_api.id(22847044863241698)
-,p_use_cache_before_default=>'NO'
,p_prompt=>'Total Cost'
-,p_source=>wwv_flow_string.join(wwv_flow_t_varchar2(
-'select ',
-' to_char(nvl(sum(COST_MY_COST),0),''999,999,999,990.00'')||'' ''||min(COST_CURRENCY_CODE) MY_COST',
-'from ',
-'(',
-' select sum(COST_MY_COST) COST_MY_COST, min(COST_CURRENCY_CODE) COST_CURRENCY_CODE',
-' from oci_cost',
-' where ',
-' tenant_name=:P5_TENANT_NAME and',
-' (:P5_COMPARTMENT_NAME is null or prd_compartment_name = :P5_COMPARTMENT_NAME) 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_TENANT_ID is null or tenant_id = :P5_TENANT_ID) and',
-' (:P5_COMPARTMENT_TOP is null or prd_compartment_path like :P5_COMPARTMENT_TOP ||''%'') 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_COST_PRODUCT_SKU is null or COST_PRODUCT_SKU = :P5_COST_PRODUCT_SKU) and',
-' (:P5_PERIOD=''Hourly'' and to_char(USAGE_INTERVAL_START,''YYYY-MM-DD'') = :P5_PERIOD_RANGE or :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',
-' not (:P5_TENANT_ID is null and :P5_COMPARTMENT_NAME is null and :P5_PRODUCT_SERVICE is null and :P5_PRODUCT_REGION is null and :P5_COMPARTMENT_TOP is null and :P5_TAG_KEY is null and :P5_TAG_DATA is null and :P5_COST_PRODUCT_SKU is null)',
-' union all',
-' select sum(COST_MY_COST) COST_MY_COST, min(COST_CURRENCY_CODE) COST_CURRENCY_CODE',
-' from oci_cost_stats',
-' where ',
-' tenant_name=:P5_TENANT_NAME and',
-' (:P5_PERIOD=''Hourly'' and to_char(USAGE_INTERVAL_START,''YYYY-MM-DD'') = :P5_PERIOD_RANGE or :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_COMPARTMENT_NAME is null and :P5_PRODUCT_SERVICE is null and :P5_PRODUCT_REGION is null and :P5_COMPARTMENT_TOP is null and :P5_TAG_KEY is null and :P5_TAG_DATA is null and :P5_COST_PRODUCT_SKU is null and :P5_TENANT_ID is null)',
-')'))
-,p_source_type=>'QUERY'
-,p_display_as=>'NATIVE_DISPLAY_ONLY'
-,p_colspan=>4
-,p_field_template=>wwv_flow_api.id(9820028477688087)
-,p_item_template_options=>'#DEFAULT#'
-,p_attribute_01=>'Y'
-,p_attribute_02=>'VALUE'
-,p_attribute_04=>'Y'
-);
-wwv_flow_api.create_page_item(
- p_id=>wwv_flow_api.id(12054499496076067)
-,p_name=>'P5_OVERAGE'
-,p_item_sequence=>30
-,p_item_plug_id=>wwv_flow_api.id(22847044863241698)
-,p_use_cache_before_default=>'NO'
-,p_prompt=>'Total Overage'
-,p_format_mask=>'FML999G999G999G999G990D00'
-,p_source=>wwv_flow_string.join(wwv_flow_t_varchar2(
-'select ',
-' to_char(nvl(sum(COST_MY_COST_OVERAGE),0),''999,999,999,990.00'')||'' ''||min(COST_CURRENCY_CODE) MY_COST',
-'from ',
-'(',
-' select sum(COST_MY_COST_OVERAGE) COST_MY_COST_OVERAGE, min(COST_CURRENCY_CODE) COST_CURRENCY_CODE',
-' from oci_cost',
-' where ',
-' tenant_name=:P5_TENANT_NAME and',
-' (:P5_COMPARTMENT_NAME is null or prd_compartment_name = :P5_COMPARTMENT_NAME) 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_COMPARTMENT_TOP is null or prd_compartment_path like :P5_COMPARTMENT_TOP ||''%'') and',
-' (:P5_TENANT_ID is null or tenant_id = :P5_TENANT_ID) 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_COST_PRODUCT_SKU is null or COST_PRODUCT_SKU = :P5_COST_PRODUCT_SKU) and',
-' (:P5_PERIOD=''Hourly'' and to_char(USAGE_INTERVAL_START,''YYYY-MM-DD'') = :P5_PERIOD_RANGE or :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',
-' not (:P5_TENANT_ID is null and :P5_COMPARTMENT_NAME is null and :P5_PRODUCT_SERVICE is null and :P5_PRODUCT_REGION is null and :P5_COMPARTMENT_TOP is null and :P5_TAG_KEY is null and :P5_TAG_DATA is null and :P5_COST_PRODUCT_SKU is null)',
-' union all',
-' select sum(COST_MY_COST_OVERAGE) COST_MY_COST_OVERAGE, min(COST_CURRENCY_CODE) COST_CURRENCY_CODE',
-' from oci_cost_stats',
-' where ',
-' tenant_name=:P5_TENANT_NAME and',
-' (:P5_PERIOD=''Hourly'' and to_char(USAGE_INTERVAL_START,''YYYY-MM-DD'') = :P5_PERIOD_RANGE or :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_TENANT_ID is null and :P5_COMPARTMENT_NAME is null and :P5_PRODUCT_SERVICE is null and :P5_PRODUCT_REGION is null and :P5_COMPARTMENT_TOP is null and :P5_TAG_KEY is null and :P5_TAG_DATA is null and :P5_COST_PRODUCT_SKU is null)',
-')'))
-,p_source_type=>'QUERY'
,p_display_as=>'NATIVE_DISPLAY_ONLY'
-,p_begin_on_new_line=>'N'
-,p_colspan=>4
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
,p_attribute_01=>'Y'
@@ -22259,55 +22381,16 @@ wwv_flow_api.create_page_item(
);
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(12054885234076067)
-,p_name=>'P5_ROWS'
-,p_item_sequence=>50
-,p_item_plug_id=>wwv_flow_api.id(22847044863241698)
-,p_use_cache_before_default=>'NO'
-,p_prompt=>'Rows Filtered'
-,p_format_mask=>'999G999G999G999G999G999G990'
-,p_source=>wwv_flow_string.join(wwv_flow_t_varchar2(
-'select sum(cnt) ',
-'from',
-'(',
-' select ',
-' count(*) cnt',
-' from oci_cost',
-' where ',
-' tenant_name=:P5_TENANT_NAME and',
-' (:P5_COMPARTMENT_NAME is null or prd_compartment_name = :P5_COMPARTMENT_NAME) 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_COMPARTMENT_TOP is null or prd_compartment_path like :P5_COMPARTMENT_TOP ||''%'') and',
-' (:P5_TAG_KEY is null or tags_data like ''%#'' || :P5_TAG_KEY || ''=%'') and',
-' (:P5_TENANT_ID is null or tenant_id = :P5_TENANT_ID) and',
-' (:P5_TAG_DATA is null or tags_data like ''%#'' || nvl(:P5_TAG_KEY,''%'') || ''=%'' || :P5_TAG_DATA || ''#'') and',
-' (:P5_COST_PRODUCT_SKU is null or COST_PRODUCT_SKU = :P5_COST_PRODUCT_SKU) and',
-' (:P5_PERIOD=''Hourly'' and to_char(USAGE_INTERVAL_START,''YYYY-MM-DD'') = :P5_PERIOD_RANGE or :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',
-' not (:P5_TENANT_ID is null and :P5_COMPARTMENT_NAME is null and :P5_PRODUCT_SERVICE is null and :P5_PRODUCT_REGION is null and :P5_COMPARTMENT_TOP is null and :P5_TAG_KEY is null and :P5_TAG_DATA is null and :P5_COST_PRODUCT_SKU is null)',
-' union all',
-' select ',
-' sum(num_rows) cnt',
-' from oci_cost_stats',
-' where ',
-' tenant_name=:P5_TENANT_NAME and',
-' (:P5_PERIOD=''Hourly'' and to_char(USAGE_INTERVAL_START,''YYYY-MM-DD'') = :P5_PERIOD_RANGE or :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_TENANT_ID is null and :P5_COMPARTMENT_NAME is null and :P5_PRODUCT_SERVICE is null and :P5_PRODUCT_REGION is null and :P5_COMPARTMENT_TOP is null and :P5_TAG_KEY is null and :P5_TAG_DATA is null and :P5_COST_PRODUCT_SKU is null)',
-')'))
-,p_source_type=>'QUERY'
-,p_display_as=>'NATIVE_DISPLAY_ONLY'
-,p_colspan=>4
-,p_field_template=>wwv_flow_api.id(9820028477688087)
-,p_item_template_options=>'#DEFAULT#'
+,p_name=>'P5_ROWS'
+,p_item_sequence=>50
+,p_item_plug_id=>wwv_flow_api.id(22847044863241698)
+,p_display_as=>'NATIVE_HIDDEN'
,p_attribute_01=>'Y'
-,p_attribute_02=>'VALUE'
-,p_attribute_04=>'Y'
);
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(12055265653076068)
,p_name=>'P5_SUBSCRIPTION'
-,p_item_sequence=>70
+,p_item_sequence=>90
,p_item_plug_id=>wwv_flow_api.id(22847044863241698)
,p_use_cache_before_default=>'NO'
,p_prompt=>'Subscription Id'
@@ -22322,8 +22405,8 @@ wwv_flow_api.create_page_item(
'order by 1'))
,p_source_type=>'QUERY_COLON'
,p_display_as=>'NATIVE_DISPLAY_ONLY'
+,p_tag_attributes=>'style="background-color:#e8e8e8"'
,p_begin_on_new_line=>'N'
-,p_colspan=>4
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
,p_attribute_01=>'Y'
@@ -22333,7 +22416,7 @@ wwv_flow_api.create_page_item(
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(12306112237574233)
,p_name=>'P5_TENANT_ID'
-,p_item_sequence=>50
+,p_item_sequence=>60
,p_item_plug_id=>wwv_flow_api.id(22846551592241693)
,p_prompt=>'Tenant Id'
,p_display_as=>'NATIVE_SELECT_LIST'
@@ -22350,44 +22433,27 @@ wwv_flow_api.create_page_item(
,p_lov_cascade_parent_items=>'P5_TENANT_NAME'
,p_ajax_optimize_refresh=>'Y'
,p_cHeight=>1
-,p_colspan=>1
+,p_colspan=>3
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
,p_lov_display_extra=>'YES'
,p_attribute_01=>'NONE'
,p_attribute_02=>'N'
);
-wwv_flow_api.create_page_item(
- p_id=>wwv_flow_api.id(12552781677313325)
-,p_name=>'P5_INFO'
-,p_item_sequence=>80
-,p_item_plug_id=>wwv_flow_api.id(22847044863241698)
-,p_prompt=>'First and Last two days are incomplete'
-,p_format_mask=>'FML999G999G999G999G990D00'
-,p_source=>'and should not be used for calculation'
-,p_source_type=>'STATIC'
-,p_display_as=>'NATIVE_DISPLAY_ONLY'
-,p_colspan=>8
-,p_field_template=>wwv_flow_api.id(9820028477688087)
-,p_item_template_options=>'#DEFAULT#'
-,p_attribute_01=>'Y'
-,p_attribute_02=>'VALUE'
-,p_attribute_04=>'Y'
-);
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(14166029459944674)
,p_name=>'P5_REPORT_SELECTOR'
-,p_item_sequence=>110
+,p_item_sequence=>130
,p_item_plug_id=>wwv_flow_api.id(22846551592241693)
,p_prompt=>'Chart/Report Selector'
,p_display_as=>'NATIVE_SELECT_LIST'
,p_lov=>wwv_flow_string.join(wwv_flow_t_varchar2(
'with data as',
'(',
-' select ''Hourly Cost Over Time'' report_name from dual where :P5_PERIOD=''Hourly''',
-' union all',
' select ''Hourly Cost Over Time - Total'' report_name from dual where :P5_PERIOD=''Hourly''',
' union all',
+' select ''Hourly Cost Over Time'' report_name from dual where :P5_PERIOD=''Hourly''',
+' union all',
' select ''Hourly Cost By Service'' report_name from dual where :P5_PERIOD=''Hourly''',
' union all',
' select ''Hourly Cost By SKU'' report_name from dual where :P5_PERIOD=''Hourly''',
@@ -22402,10 +22468,10 @@ wwv_flow_api.create_page_item(
' union all',
' select ''Hourly Product Unit Report'' report_name from dual where :P5_PERIOD=''Hourly''',
' union all',
-' select ''Daily Cost Over Time'' report_name from dual where :P5_PERIOD=''Daily''',
-' union all',
' select ''Daily Cost Over Time - Total'' report_name from dual where :P5_PERIOD=''Daily''',
' union all',
+' select ''Daily Cost Over Time'' report_name from dual where :P5_PERIOD=''Daily''',
+' 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''',
@@ -22422,9 +22488,9 @@ wwv_flow_api.create_page_item(
' union all',
' select ''Daily Product Unit Report - Total'' report_name from dual where :P5_PERIOD=''Daily''',
' union all',
-' select ''Weekly Cost Over Time'' report_name from dual where :P5_PERIOD=''Weekly''',
+' select ''Weekly Cost Over Time - Total'' report_name from dual where :P5_PERIOD=''Weekly''',
' union all',
-' select ''Weekly Over Time - Total'' report_name from dual where :P5_PERIOD=''Weekly''',
+' select ''Weekly Cost Over Time'' report_name from dual where :P5_PERIOD=''Weekly''',
' union all',
' select ''Weekly Cost By Service'' report_name from dual where :P5_PERIOD=''Weekly''',
' union all',
@@ -22440,6 +22506,8 @@ wwv_flow_api.create_page_item(
' union all',
' select ''Weekly Product Unit Report'' report_name from dual where :P5_PERIOD=''Weekly''',
' union all',
+' select ''Monthly Cost Over Time - Total'' report_name from dual where :P5_PERIOD=''Monthly''',
+' union all',
' select ''Monthly Cost Over Time'' report_name from dual where :P5_PERIOD=''Monthly''',
' union all',
' select ''Monthly Cost By Service'' report_name from dual where :P5_PERIOD=''Monthly''',
@@ -22452,8 +22520,6 @@ wwv_flow_api.create_page_item(
' union all',
' select ''Monthly Cost By Top Compartment'' report_name from dual where :P5_PERIOD=''Monthly''',
' union all',
-' select ''Monthly Cost Over Time - Total'' report_name from dual where :P5_PERIOD=''Monthly''',
-' union all',
' select ''Monthly Cost Report'' report_name from dual where :P5_PERIOD=''Monthly''',
' union all',
' select ''Monthly Product Unit Report'' report_name from dual where :P5_PERIOD=''Monthly''',
@@ -22477,45 +22543,9 @@ wwv_flow_api.create_page_item(
,p_name=>'P5_YEARLY'
,p_item_sequence=>40
,p_item_plug_id=>wwv_flow_api.id(22847044863241698)
-,p_use_cache_before_default=>'NO'
,p_prompt=>'Yearly Prediction'
-,p_source=>wwv_flow_string.join(wwv_flow_t_varchar2(
-'select ',
-' to_char(nvl(sum(ESTIMATE_YEAR),0),''999,999,999,990'')||'' ''||min(COST_CURRENCY_CODE) MY_COST',
-'from ',
-'(',
-' select ',
-' sum(COST_MY_COST)*(24 * 365 / count(distinct USAGE_INTERVAL_START)) ESTIMATE_YEAR,',
-' min(COST_CURRENCY_CODE) COST_CURRENCY_CODE',
-' from oci_cost',
-' where ',
-' tenant_name=:P5_TENANT_NAME and',
-' (:P5_COMPARTMENT_NAME is null or prd_compartment_name = :P5_COMPARTMENT_NAME) 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_COMPARTMENT_TOP is null or prd_compartment_path like :P5_COMPARTMENT_TOP ||''%'') and',
-' (:P5_TENANT_ID is null or tenant_id = :P5_TENANT_ID) 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_COST_PRODUCT_SKU is null or COST_PRODUCT_SKU = :P5_COST_PRODUCT_SKU) and',
-' (:P5_PERIOD=''Hourly'' and to_char(USAGE_INTERVAL_START,''YYYY-MM-DD'') = :P5_PERIOD_RANGE or :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',
-' not (:P5_TENANT_ID is null and :P5_COMPARTMENT_NAME is null and :P5_PRODUCT_SERVICE is null and :P5_PRODUCT_REGION is null and :P5_COMPARTMENT_TOP is null and :P5_TAG_KEY is null and :P5_TAG_DATA is null and :P5_COST_PRODUCT_SKU is null)',
-' union all',
-' select ',
-' sum(COST_MY_COST)*(24 * 365 / count(distinct USAGE_INTERVAL_START)) ESTIMATE_YEAR,',
-' min(COST_CURRENCY_CODE) COST_CURRENCY_CODE',
-' from oci_cost_stats',
-' where ',
-' tenant_name=:P5_TENANT_NAME and',
-' (:P5_PERIOD=''Hourly'' and to_char(USAGE_INTERVAL_START,''YYYY-MM-DD'') = :P5_PERIOD_RANGE or :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_TENANT_ID is null and :P5_COMPARTMENT_NAME is null and :P5_PRODUCT_SERVICE is null and :P5_PRODUCT_REGION is null and :P5_COMPARTMENT_TOP is null and :P5_TAG_KEY is null and :P5_TAG_DATA is null and :P5_COST_PRODUCT_SKU is null)',
-')'))
-,p_source_type=>'QUERY'
,p_display_as=>'NATIVE_DISPLAY_ONLY'
,p_begin_on_new_line=>'N'
-,p_colspan=>4
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
,p_attribute_01=>'Y'
@@ -22525,7 +22555,7 @@ wwv_flow_api.create_page_item(
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(15475859577450204)
,p_name=>'P5_LAST_DATE_LOADED'
-,p_item_sequence=>90
+,p_item_sequence=>80
,p_item_plug_id=>wwv_flow_api.id(22847044863241698)
,p_use_cache_before_default=>'NO'
,p_prompt=>'Last Date Loaded'
@@ -22537,8 +22567,7 @@ wwv_flow_api.create_page_item(
' tenant_name=:P5_TENANT_NAME'))
,p_source_type=>'QUERY'
,p_display_as=>'NATIVE_DISPLAY_ONLY'
-,p_begin_on_new_line=>'N'
-,p_colspan=>4
+,p_tag_attributes=>'style="background-color:#e8e8e8"'
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
,p_attribute_01=>'Y'
@@ -22548,7 +22577,7 @@ wwv_flow_api.create_page_item(
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(15476787556464715)
,p_name=>'P5_DAYS_DATA'
-,p_item_sequence=>60
+,p_item_sequence=>70
,p_item_plug_id=>wwv_flow_api.id(22847044863241698)
,p_use_cache_before_default=>'NO'
,p_prompt=>'Days of Data'
@@ -22582,8 +22611,8 @@ wwv_flow_api.create_page_item(
')'))
,p_source_type=>'QUERY'
,p_display_as=>'NATIVE_DISPLAY_ONLY'
+,p_tag_attributes=>'style="background-color:#e8e8e8"'
,p_begin_on_new_line=>'N'
-,p_colspan=>4
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
,p_attribute_01=>'Y'
@@ -22616,7 +22645,7 @@ wwv_flow_api.create_page_computation(
,p_computation_item=>'P5_REPORT_SELECTOR'
,p_computation_point=>'AFTER_HEADER'
,p_computation_type=>'STATIC_ASSIGNMENT'
-,p_computation=>'Daily Cost Over Time'
+,p_computation=>'Daily Cost Over Time - Total'
,p_compute_when=>'P5_REPORT_SELECTOR'
,p_compute_when_type=>'ITEM_IS_NULL'
);
@@ -22645,570 +22674,64 @@ wwv_flow_api.create_page_computation(
,p_compute_when=>'P5_PERIOD'
,p_compute_when_type=>'ITEM_IS_NULL'
);
-wwv_flow_api.create_page_da_event(
- p_id=>wwv_flow_api.id(12056031796076072)
-,p_name=>'ShowGraphsOrNot'
-,p_event_sequence=>10
-,p_triggering_element_type=>'ITEM'
-,p_triggering_element=>'P5_ROWS'
-,p_condition_element=>'P5_ROWS'
-,p_triggering_condition_type=>'GREATER_THAN'
-,p_triggering_expression=>'0'
-,p_bind_type=>'bind'
-,p_bind_event_type=>'change'
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(12057068282076074)
-,p_event_id=>wwv_flow_api.id(12056031796076072)
-,p_event_result=>'FALSE'
-,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(33639012225589650)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(12057571185076074)
-,p_event_id=>wwv_flow_api.id(12056031796076072)
-,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(33638842014589649)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(12056590627076074)
-,p_event_id=>wwv_flow_api.id(12056031796076072)
-,p_event_result=>'TRUE'
-,p_action_sequence=>20
-,p_execute_on_page_init=>'Y'
-,p_action=>'NATIVE_HIDE'
-,p_affected_elements_type=>'REGION'
-,p_affected_region_id=>wwv_flow_api.id(33639012225589650)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(12058045976076075)
-,p_event_id=>wwv_flow_api.id(12056031796076072)
-,p_event_result=>'FALSE'
-,p_action_sequence=>20
-,p_execute_on_page_init=>'Y'
-,p_action=>'NATIVE_HIDE'
-,p_affected_elements_type=>'REGION'
-,p_affected_region_id=>wwv_flow_api.id(33638842014589649)
-);
-wwv_flow_api.create_page_da_event(
- p_id=>wwv_flow_api.id(14170929538086679)
-,p_name=>'ShowCostOverTime'
-,p_event_sequence=>60
-,p_condition_element=>'P5_REPORT_SELECTOR'
-,p_triggering_condition_type=>'IN_LIST'
-,p_triggering_expression=>'Hourly Cost Over Time,Daily Cost Over Time,Weekly Cost Over Time,Monthly Cost Over Time'
-,p_bind_type=>'bind'
-,p_bind_event_type=>'ready'
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(14171878088086684)
-,p_event_id=>wwv_flow_api.id(14170929538086679)
-,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(23961814581267567)
-);
-end;
-/
-begin
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(14171343211086683)
-,p_event_id=>wwv_flow_api.id(14170929538086679)
-,p_event_result=>'TRUE'
-,p_action_sequence=>20
-,p_execute_on_page_init=>'Y'
-,p_action=>'NATIVE_SHOW'
-,p_affected_elements_type=>'REGION'
-,p_affected_region_id=>wwv_flow_api.id(23961814581267567)
-);
-wwv_flow_api.create_page_da_event(
- p_id=>wwv_flow_api.id(13977250360041449)
-,p_name=>'ShowCostOverTimeTotal'
-,p_event_sequence=>70
-,p_condition_element=>'P5_REPORT_SELECTOR'
-,p_triggering_condition_type=>'IN_LIST'
-,p_triggering_expression=>'Hourly Cost Over Time - Total,Daily Cost Over Time - Total,Weekly Cost Over Time - Total,Monthly Cost Over Time - Total'
-,p_bind_type=>'bind'
-,p_bind_event_type=>'ready'
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(13977370765041450)
-,p_event_id=>wwv_flow_api.id(13977250360041449)
-,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(13976669023041443)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(14186075782270001)
-,p_event_id=>wwv_flow_api.id(13977250360041449)
-,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(13976669023041443)
-);
-wwv_flow_api.create_page_da_event(
- p_id=>wwv_flow_api.id(15051443371989906)
-,p_name=>'ShowCostByService'
-,p_event_sequence=>80
-,p_condition_element=>'P5_REPORT_SELECTOR'
-,p_triggering_condition_type=>'IN_LIST'
-,p_triggering_expression=>'Hourly Cost By Service,Daily Cost By Service,Weekly Cost By Service,Monthly Cost By Service'
-,p_bind_type=>'bind'
-,p_bind_event_type=>'ready'
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(15051547846989907)
-,p_event_id=>wwv_flow_api.id(15051443371989906)
-,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(15050972044989901)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(15051654533989908)
-,p_event_id=>wwv_flow_api.id(15051443371989906)
-,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(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=>'Hourly Cost By SKU,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=>100
-,p_condition_element=>'P5_REPORT_SELECTOR'
-,p_triggering_condition_type=>'IN_LIST'
-,p_triggering_expression=>'Hourly Cost By Compartment,Daily Cost By Compartment,Weekly Cost By Compartment,Monthly Cost By Compartment'
-,p_bind_type=>'bind'
-,p_bind_event_type=>'ready'
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(15052351447989915)
-,p_event_id=>wwv_flow_api.id(15052224625989914)
-,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(15051727286989909)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(15052498513989916)
-,p_event_id=>wwv_flow_api.id(15052224625989914)
-,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(15051727286989909)
-);
-wwv_flow_api.create_page_da_event(
- p_id=>wwv_flow_api.id(14186923617270010)
-,p_name=>'ShowCostByRegion'
-,p_event_sequence=>110
-,p_condition_element=>'P5_REPORT_SELECTOR'
-,p_triggering_condition_type=>'IN_LIST'
-,p_triggering_expression=>'Hourly Cost By Region,Daily Cost By Region,Weekly Cost By Region,Monthly Cost By Region'
-,p_bind_type=>'bind'
-,p_bind_event_type=>'ready'
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(14187079283270011)
-,p_event_id=>wwv_flow_api.id(14186923617270010)
-,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(14186462781270005)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(14187141686270012)
-,p_event_id=>wwv_flow_api.id(14186923617270010)
-,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(14186462781270005)
-);
-wwv_flow_api.create_page_da_event(
- p_id=>wwv_flow_api.id(15053003375989922)
-,p_name=>'ShowCostByTopCompartment'
-,p_event_sequence=>120
-,p_condition_element=>'P5_REPORT_SELECTOR'
-,p_triggering_condition_type=>'IN_LIST'
-,p_triggering_expression=>'Hourly Cost By Top Compartment,Daily Cost By Top Compartment,Weekly Cost By Top Compartment,Monthly Cost By Top Compartment'
-,p_bind_type=>'bind'
-,p_bind_event_type=>'ready'
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(15053197892989923)
-,p_event_id=>wwv_flow_api.id(15053003375989922)
-,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(15052505519989917)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(15053215915989924)
-,p_event_id=>wwv_flow_api.id(15053003375989922)
-,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(15052505519989917)
-);
-wwv_flow_api.create_page_da_event(
- p_id=>wwv_flow_api.id(16766694642841202)
-,p_name=>'ShowHourlyCostReport'
-,p_event_sequence=>125
-,p_condition_element=>'P5_REPORT_SELECTOR'
-,p_triggering_condition_type=>'EQUALS'
-,p_triggering_expression=>'Hourly Cost Report'
-,p_bind_type=>'bind'
-,p_bind_event_type=>'ready'
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(16766754682841203)
-,p_event_id=>wwv_flow_api.id(16766694642841202)
-,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(16361917406490344)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(16766823504841204)
-,p_event_id=>wwv_flow_api.id(16766694642841202)
-,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(16361917406490344)
-);
-wwv_flow_api.create_page_da_event(
- p_id=>wwv_flow_api.id(16770229606841238)
-,p_name=>'ShowHourlyProductUnitReport'
-,p_event_sequence=>126
-,p_condition_element=>'P5_REPORT_SELECTOR'
-,p_triggering_condition_type=>'EQUALS'
-,p_triggering_expression=>'Hourly Product Unit Report'
-,p_bind_type=>'bind'
-,p_bind_event_type=>'ready'
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(16770332721841239)
-,p_event_id=>wwv_flow_api.id(16770229606841238)
-,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(16766903294841205)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(16770414224841240)
-,p_event_id=>wwv_flow_api.id(16770229606841238)
-,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(16766903294841205)
-);
-wwv_flow_api.create_page_da_event(
- p_id=>wwv_flow_api.id(13975055917041427)
-,p_name=>'ShowDailyCostReport'
-,p_event_sequence=>130
-,p_condition_element=>'P5_REPORT_SELECTOR'
-,p_triggering_condition_type=>'EQUALS'
-,p_triggering_expression=>'Daily Cost Report'
-,p_bind_type=>'bind'
-,p_bind_event_type=>'ready'
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(13975179124041428)
-,p_event_id=>wwv_flow_api.id(13975055917041427)
-,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(12092029867870221)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(13975255485041429)
-,p_event_id=>wwv_flow_api.id(13975055917041427)
-,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(12092029867870221)
-);
-wwv_flow_api.create_page_da_event(
- p_id=>wwv_flow_api.id(13975348835041430)
-,p_name=>'ShowDailyProductUnitReportSingle'
-,p_event_sequence=>150
-,p_condition_element=>'P5_REPORT_SELECTOR'
-,p_triggering_condition_type=>'EQUALS'
-,p_triggering_expression=>'Daily Product Unit Report - Single'
-,p_bind_type=>'bind'
-,p_bind_event_type=>'ready'
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(13975479031041431)
-,p_event_id=>wwv_flow_api.id(13975348835041430)
-,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(12278275925302649)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(13975557636041432)
-,p_event_id=>wwv_flow_api.id(13975348835041430)
-,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(12278275925302649)
-);
-wwv_flow_api.create_page_da_event(
- p_id=>wwv_flow_api.id(15083319206497508)
-,p_name=>'ShowDailyProductUnitReportTotal'
-,p_event_sequence=>170
-,p_condition_element=>'P5_REPORT_SELECTOR'
-,p_triggering_condition_type=>'EQUALS'
-,p_triggering_expression=>'Daily Product Unit Report - Total'
-,p_bind_type=>'bind'
-,p_bind_event_type=>'ready'
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(15083479381497509)
-,p_event_id=>wwv_flow_api.id(15083319206497508)
-,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(15053388277989925)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(15083553170497510)
-,p_event_id=>wwv_flow_api.id(15083319206497508)
-,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(15053388277989925)
-);
-wwv_flow_api.create_page_da_event(
- p_id=>wwv_flow_api.id(13975688110041433)
-,p_name=>'ShowWeeklyCostReport'
-,p_event_sequence=>180
-,p_condition_element=>'P5_REPORT_SELECTOR'
-,p_triggering_condition_type=>'EQUALS'
-,p_triggering_expression=>'Weekly Cost Report'
-,p_bind_type=>'bind'
-,p_bind_event_type=>'ready'
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(13975711992041434)
-,p_event_id=>wwv_flow_api.id(13975688110041433)
-,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(12268418584281501)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(13975895546041435)
-,p_event_id=>wwv_flow_api.id(13975688110041433)
-,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(12268418584281501)
-);
-wwv_flow_api.create_page_da_event(
- p_id=>wwv_flow_api.id(15104375728532031)
-,p_name=>'ShowWeeklyProductUnitReport'
-,p_event_sequence=>190
-,p_condition_element=>'P5_REPORT_SELECTOR'
-,p_triggering_condition_type=>'EQUALS'
-,p_triggering_expression=>'Weekly Product Unit Report'
-,p_bind_type=>'bind'
-,p_bind_event_type=>'ready'
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(15104453797532032)
-,p_event_id=>wwv_flow_api.id(15104375728532031)
-,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(15083635722497511)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(15104550244532033)
-,p_event_id=>wwv_flow_api.id(15104375728532031)
-,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(15083635722497511)
-);
-wwv_flow_api.create_page_da_event(
- p_id=>wwv_flow_api.id(15104677803532034)
-,p_name=>'ShowMonthlyProductUnitReport'
-,p_event_sequence=>200
-,p_condition_element=>'P5_REPORT_SELECTOR'
-,p_triggering_condition_type=>'EQUALS'
-,p_triggering_expression=>'Monthly Product Unit Report'
-,p_bind_type=>'bind'
-,p_bind_event_type=>'ready'
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(15104735437532035)
-,p_event_id=>wwv_flow_api.id(15104677803532034)
-,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(15102859636532016)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(15104898721532036)
-,p_event_id=>wwv_flow_api.id(15104677803532034)
-,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(15102859636532016)
-);
-wwv_flow_api.create_page_da_event(
- p_id=>wwv_flow_api.id(13975972745041436)
-,p_name=>'ShowMonthlyCostReport'
-,p_event_sequence=>210
-,p_condition_element=>'P5_REPORT_SELECTOR'
-,p_triggering_condition_type=>'EQUALS'
-,p_triggering_expression=>'Monthly Cost Report'
-,p_bind_type=>'bind'
-,p_bind_event_type=>'ready'
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(13976007299041437)
-,p_event_id=>wwv_flow_api.id(13975972745041436)
-,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(9926750244716139)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(13976156513041438)
-,p_event_id=>wwv_flow_api.id(13975972745041436)
-,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(9926750244716139)
-);
-wwv_flow_api.create_page_da_event(
- p_id=>wwv_flow_api.id(13976243106041439)
-,p_name=>'ShowReportGroupOption'
-,p_event_sequence=>220
-,p_condition_element=>'P5_REPORT_SELECTOR'
-,p_triggering_condition_type=>'IN_LIST'
-,p_triggering_expression=>'Daily Cost Report,Weekly Cost Report,Monthly Cost Report,Hourly Cost Report'
-,p_bind_type=>'bind'
-,p_bind_event_type=>'ready'
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(13976344183041440)
-,p_event_id=>wwv_flow_api.id(13976243106041439)
-,p_event_result=>'TRUE'
-,p_action_sequence=>10
-,p_execute_on_page_init=>'Y'
-,p_action=>'NATIVE_SHOW'
-,p_affected_elements_type=>'ITEM'
-,p_affected_elements=>'P5_REPORT_GROUP'
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(13976514292041442)
-,p_event_id=>wwv_flow_api.id(13976243106041439)
-,p_event_result=>'FALSE'
-,p_action_sequence=>10
-,p_execute_on_page_init=>'Y'
-,p_action=>'NATIVE_HIDE'
-,p_affected_elements_type=>'ITEM'
-,p_affected_elements=>'P5_REPORT_GROUP'
+wwv_flow_api.create_page_process(
+ p_id=>wwv_flow_api.id(11790922385177242)
+,p_process_sequence=>10
+,p_process_point=>'AFTER_HEADER'
+,p_process_type=>'NATIVE_PLSQL'
+,p_process_name=>'PreFill'
+,p_process_sql_clob=>wwv_flow_string.join(wwv_flow_t_varchar2(
+'begin',
+'select ',
+' to_char(nvl(sum(COST_MY_COST),0),''999,999,999,990.00'')||'' ''||min(COST_CURRENCY_CODE) MY_COST,',
+' to_char(nvl(sum(ESTIMATE_YEAR),0),''999,999,999,990'')||'' ''||min(COST_CURRENCY_CODE) MY_COST_YEAR,',
+' to_char(sum(cnt),''999,999,999,999'') NUM_ROWS,',
+' sum(cnt) NUM_ROWS_DISPLAY',
+'into',
+' :P5_COST,',
+' :P5_YEARLY,',
+' :P5_ROWS_DISPLAY,',
+' :P5_ROWS',
+'from ',
+'(',
+' select ',
+' sum(COST_MY_COST) COST_MY_COST, ',
+' min(COST_CURRENCY_CODE) COST_CURRENCY_CODE,',
+' sum(COST_MY_COST)*(24 * 365 / count(distinct USAGE_INTERVAL_START)) ESTIMATE_YEAR,',
+' count(*) CNT',
+' from oci_cost',
+' where ',
+' tenant_name=:P5_TENANT_NAME and',
+' (:P5_COMPARTMENT_NAME is null or prd_compartment_name = :P5_COMPARTMENT_NAME) 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_TENANT_ID is null or tenant_id = :P5_TENANT_ID) and',
+' (:P5_COMPARTMENT_TOP is null or prd_compartment_path like :P5_COMPARTMENT_TOP ||''%'') 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_TAG_SPECIAL is null or :P5_TAG_SPECIAL = TAG_SPECIAL) and',
+' (:P5_COST_PRODUCT_SKU is null or COST_PRODUCT_SKU = :P5_COST_PRODUCT_SKU) and',
+' (:P5_PERIOD=''Hourly'' and to_char(USAGE_INTERVAL_START,''YYYY-MM-DD'') = :P5_PERIOD_RANGE or :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',
+' not (:P5_TENANT_ID is null and :P5_COMPARTMENT_NAME is null and :P5_PRODUCT_SERVICE is null and :P5_PRODUCT_REGION is null and :P5_COMPARTMENT_TOP is null and :P5_TAG_KEY is null and :P5_TAG_DATA is null and :P5_COST_PRODUCT_SKU is null and :'
+||'P5_TAG_SPECIAL is null)',
+' union all',
+' select',
+' sum(COST_MY_COST) COST_MY_COST, ',
+' min(COST_CURRENCY_CODE) COST_CURRENCY_CODE,',
+' sum(COST_MY_COST)*(24 * 365 / count(distinct USAGE_INTERVAL_START)) ESTIMATE_YEAR,',
+' sum(num_rows) cnt',
+' from oci_cost_stats',
+' where ',
+' tenant_name=:P5_TENANT_NAME and',
+' (:P5_PERIOD=''Hourly'' and to_char(USAGE_INTERVAL_START,''YYYY-MM-DD'') = :P5_PERIOD_RANGE or :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_COMPARTMENT_NAME is null and :P5_PRODUCT_SERVICE is null and :P5_PRODUCT_REGION is null and :P5_COMPARTMENT_TOP is null and :P5_TAG_KEY is null and :P5_TAG_DATA is null and :P5_COST_PRODUCT_SKU is null and :P5_TENANT_ID is null and :P5_T'
+||'AG_SPECIAL is null)',
+');',
+'end;'))
+,p_process_clob_language=>'PLSQL'
+,p_error_display_location=>'INLINE_IN_NOTIFICATION'
);
end;
/
@@ -24452,7 +23975,7 @@ wwv_flow_api.create_page(
''))
,p_page_template_options=>'#DEFAULT#'
,p_last_updated_by=>'ADIZOHAR'
-,p_last_upd_yyyymmddhh24miss=>'20201021161755'
+,p_last_upd_yyyymmddhh24miss=>'20210329140201'
);
wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(72369311697812384)
@@ -24483,8 +24006,8 @@ wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(61791178689852192)
,p_plug_name=>'Rate Card Report'
,p_parent_plug_id=>wwv_flow_api.id(83161602120160340)
-,p_region_template_options=>'#DEFAULT#'
-,p_plug_template=>wwv_flow_api.id(9763915989688019)
+,p_region_template_options=>'#DEFAULT#:t-Region--accent15:t-Region--scrollBody'
+,p_plug_template=>wwv_flow_api.id(9765042323688020)
,p_plug_display_sequence=>60
,p_plug_display_point=>'BODY'
,p_query_type=>'SQL'
@@ -24550,7 +24073,7 @@ wwv_flow_api.create_worksheet(
,p_show_detail_link=>'N'
,p_show_rows_per_page=>'N'
,p_show_notify=>'Y'
-,p_download_formats=>'CSV:HTML:EMAIL:XLS:PDF:RTF'
+,p_download_formats=>'CSV:HTML:EMAIL:XLSX:PDF:RTF'
,p_owner=>'ADIZOHAR'
,p_internal_uid=>16358400984490309
);
@@ -24671,6 +24194,21 @@ wwv_flow_api.create_worksheet_rpt(
,p_is_default=>'Y'
,p_report_columns=>'SKU:PRODUCT:CURRENCY:RATE_MONTHLY:PCT_MONTH:COST_PRICE:RATE_DESCRIPTION:RATE_UPDATE_DATE:'
);
+wwv_flow_api.create_page_button(
+ p_id=>wwv_flow_api.id(23803495716503351)
+,p_button_sequence=>30
+,p_button_plug_id=>wwv_flow_api.id(72369311697812384)
+,p_button_name=>'P7_SUBMIT'
+,p_button_action=>'SUBMIT'
+,p_button_template_options=>'#DEFAULT#:t-Button--large:t-Button--stretch:t-Button--gapTop'
+,p_button_template_id=>wwv_flow_api.id(9821119233688096)
+,p_button_is_hot=>'Y'
+,p_button_image_alt=>'Submit'
+,p_button_position=>'BODY'
+,p_grid_new_row=>'N'
+,p_grid_new_column=>'Y'
+,p_grid_column_span=>2
+);
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(12306254467574234)
,p_name=>'P7_TENANT_ID'
@@ -24688,8 +24226,8 @@ wwv_flow_api.create_page_item(
,p_item_template_options=>'#DEFAULT#'
,p_warn_on_unsaved_changes=>'I'
,p_lov_display_extra=>'NO'
-,p_attribute_01=>'SUBMIT'
-,p_attribute_03=>'Y'
+,p_attribute_01=>'NONE'
+,p_attribute_02=>'N'
);
wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(16372411599522248)
@@ -24702,13 +24240,14 @@ wwv_flow_api.create_page_item(
,p_lov_display_null=>'YES'
,p_lov_null_text=>'Please Choose...'
,p_cHeight=>1
+,p_tag_attributes=>'style="background-color:#e0f0f0"'
,p_colspan=>2
,p_field_template=>wwv_flow_api.id(9820028477688087)
,p_item_template_options=>'#DEFAULT#'
,p_warn_on_unsaved_changes=>'I'
,p_lov_display_extra=>'NO'
-,p_attribute_01=>'SUBMIT'
-,p_attribute_03=>'Y'
+,p_attribute_01=>'NONE'
+,p_attribute_02=>'N'
);
wwv_flow_api.create_page_computation(
p_id=>wwv_flow_api.id(16378387657522263)
@@ -24730,37 +24269,279 @@ wwv_flow_api.create_page_computation(
,p_compute_when=>'P7_TENANT_ID'
,p_compute_when_type=>'ITEM_IS_NULL'
);
-wwv_flow_api.create_page_da_event(
- p_id=>wwv_flow_api.id(16378604995522264)
-,p_name=>'ShowGraphsOrNot'
-,p_event_sequence=>10
-,p_triggering_element_type=>'ITEM'
-,p_triggering_element=>'P7_ROWS'
-,p_condition_element=>'P7_ROWS'
-,p_triggering_condition_type=>'GREATER_THAN'
-,p_triggering_expression=>'0'
-,p_bind_type=>'bind'
-,p_bind_event_type=>'change'
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(16379183002522265)
-,p_event_id=>wwv_flow_api.id(16378604995522264)
-,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(83161602120160340)
-);
-wwv_flow_api.create_page_da_action(
- p_id=>wwv_flow_api.id(16379612138522266)
-,p_event_id=>wwv_flow_api.id(16378604995522264)
-,p_event_result=>'FALSE'
-,p_action_sequence=>20
-,p_execute_on_page_init=>'Y'
-,p_action=>'NATIVE_HIDE'
-,p_affected_elements_type=>'REGION'
-,p_affected_region_id=>wwv_flow_api.id(83161602120160340)
+end;
+/
+prompt --application/pages/page_00008
+begin
+wwv_flow_api.create_page(
+ p_id=>8
+,p_user_interface_id=>wwv_flow_api.id(9843694399688199)
+,p_name=>'FormNW'
+,p_alias=>'FORMNW'
+,p_step_title=>'FormNW'
+,p_autocomplete_on_off=>'OFF'
+,p_javascript_code=>'var htmldb_delete_message=''"DELETE_CONFIRM_MSG"'';'
+,p_page_template_options=>'#DEFAULT#'
+,p_protection_level=>'C'
+,p_last_updated_by=>'ADIZOHAR'
+,p_last_upd_yyyymmddhh24miss=>'20201113141739'
+);
+wwv_flow_api.create_page_plug(
+ p_id=>wwv_flow_api.id(23720678853456669)
+,p_plug_name=>'FormNW'
+,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
+,p_plug_template=>wwv_flow_api.id(9765042323688020)
+,p_plug_display_sequence=>10
+,p_plug_display_point=>'BODY'
+,p_query_type=>'TABLE'
+,p_query_table=>'ADI_COST'
+,p_include_rowid_column=>false
+,p_is_editable=>true
+,p_edit_operations=>'i:u:d'
+,p_lost_update_check_type=>'VALUES'
+,p_plug_source_type=>'NATIVE_FORM'
+);
+wwv_flow_api.create_page_button(
+ p_id=>wwv_flow_api.id(23727005473456739)
+,p_button_sequence=>30
+,p_button_plug_id=>wwv_flow_api.id(23720678853456669)
+,p_button_name=>'SAVE'
+,p_button_action=>'SUBMIT'
+,p_button_template_options=>'#DEFAULT#'
+,p_button_template_id=>wwv_flow_api.id(9821119233688096)
+,p_button_is_hot=>'Y'
+,p_button_image_alt=>'Apply Changes'
+,p_button_position=>'REGION_TEMPLATE_CHANGE'
+,p_button_condition=>'P8_ID'
+,p_button_condition_type=>'ITEM_IS_NOT_NULL'
+,p_database_action=>'UPDATE'
+);
+wwv_flow_api.create_page_button(
+ p_id=>wwv_flow_api.id(23725807138456731)
+,p_button_sequence=>10
+,p_button_plug_id=>wwv_flow_api.id(23720678853456669)
+,p_button_name=>'CANCEL'
+,p_button_action=>'REDIRECT_PAGE'
+,p_button_template_options=>'#DEFAULT#'
+,p_button_template_id=>wwv_flow_api.id(9821119233688096)
+,p_button_image_alt=>'Cancel'
+,p_button_position=>'REGION_TEMPLATE_CLOSE'
+,p_button_redirect_url=>'f?p=&APP_ID.:1:&SESSION.::&DEBUG.:::'
+);
+wwv_flow_api.create_page_button(
+ p_id=>wwv_flow_api.id(23727462949456739)
+,p_button_sequence=>40
+,p_button_plug_id=>wwv_flow_api.id(23720678853456669)
+,p_button_name=>'CREATE'
+,p_button_action=>'SUBMIT'
+,p_button_template_options=>'#DEFAULT#'
+,p_button_template_id=>wwv_flow_api.id(9821119233688096)
+,p_button_is_hot=>'Y'
+,p_button_image_alt=>'Create'
+,p_button_position=>'REGION_TEMPLATE_CREATE'
+,p_button_condition=>'P8_ID'
+,p_button_condition_type=>'ITEM_IS_NULL'
+,p_database_action=>'INSERT'
+);
+wwv_flow_api.create_page_button(
+ p_id=>wwv_flow_api.id(23726651722456738)
+,p_button_sequence=>20
+,p_button_plug_id=>wwv_flow_api.id(23720678853456669)
+,p_button_name=>'DELETE'
+,p_button_action=>'REDIRECT_URL'
+,p_button_template_options=>'#DEFAULT#'
+,p_button_template_id=>wwv_flow_api.id(9821119233688096)
+,p_button_image_alt=>'Delete'
+,p_button_position=>'REGION_TEMPLATE_DELETE'
+,p_button_redirect_url=>'javascript:apex.confirm(htmldb_delete_message,''DELETE'');'
+,p_button_execute_validations=>'N'
+,p_button_condition=>'P8_ID'
+,p_button_condition_type=>'ITEM_IS_NOT_NULL'
+,p_database_action=>'DELETE'
+);
+wwv_flow_api.create_page_branch(
+ p_id=>wwv_flow_api.id(23727701505456739)
+,p_branch_action=>'f?p=&APP_ID.:2:&SESSION.::&DEBUG.&success_msg=#SUCCESS_MSG#'
+,p_branch_point=>'AFTER_PROCESSING'
+,p_branch_type=>'REDIRECT_URL'
+,p_branch_sequence=>1
+);
+wwv_flow_api.create_page_item(
+ p_id=>wwv_flow_api.id(23720995918456680)
+,p_name=>'P8_ID'
+,p_source_data_type=>'NUMBER'
+,p_is_primary_key=>true
+,p_is_query_only=>true
+,p_item_sequence=>10
+,p_item_plug_id=>wwv_flow_api.id(23720678853456669)
+,p_item_source_plug_id=>wwv_flow_api.id(23720678853456669)
+,p_use_cache_before_default=>'NO'
+,p_prompt=>'Id'
+,p_source=>'ID'
+,p_source_type=>'REGION_SOURCE_COLUMN'
+,p_display_as=>'NATIVE_HIDDEN'
+,p_label_alignment=>'RIGHT'
+,p_field_template=>wwv_flow_api.id(9820028477688087)
+,p_item_template_options=>'#DEFAULT#'
+,p_is_persistent=>'N'
+,p_protection_level=>'S'
+,p_attribute_01=>'Y'
+);
+wwv_flow_api.create_page_item(
+ p_id=>wwv_flow_api.id(23721311097456712)
+,p_name=>'P8_PRD_SERVICE'
+,p_source_data_type=>'VARCHAR2'
+,p_item_sequence=>20
+,p_item_plug_id=>wwv_flow_api.id(23720678853456669)
+,p_item_source_plug_id=>wwv_flow_api.id(23720678853456669)
+,p_prompt=>'Prd Service'
+,p_source=>'PRD_SERVICE'
+,p_source_type=>'REGION_SOURCE_COLUMN'
+,p_display_as=>'NATIVE_SELECT_LIST'
+,p_lov=>'STATIC:Display1;Return1,Display2;Return2'
+,p_lov_display_null=>'YES'
+,p_cHeight=>1
+,p_field_template=>wwv_flow_api.id(9820028477688087)
+,p_item_template_options=>'#DEFAULT#'
+,p_is_persistent=>'N'
+,p_lov_display_extra=>'YES'
+,p_attribute_01=>'NONE'
+,p_attribute_02=>'N'
+);
+wwv_flow_api.create_page_item(
+ p_id=>wwv_flow_api.id(23721766788456721)
+,p_name=>'P8_PRD_RESOURCE'
+,p_source_data_type=>'VARCHAR2'
+,p_item_sequence=>30
+,p_item_plug_id=>wwv_flow_api.id(23720678853456669)
+,p_item_source_plug_id=>wwv_flow_api.id(23720678853456669)
+,p_prompt=>'Prd Resource'
+,p_source=>'PRD_RESOURCE'
+,p_source_type=>'REGION_SOURCE_COLUMN'
+,p_display_as=>'NATIVE_TEXTAREA'
+,p_cSize=>60
+,p_cMaxlength=>255
+,p_cHeight=>4
+,p_begin_on_new_line=>'N'
+,p_field_template=>wwv_flow_api.id(9820028477688087)
+,p_item_template_options=>'#DEFAULT#'
+,p_is_persistent=>'N'
+,p_attribute_01=>'Y'
+,p_attribute_02=>'N'
+,p_attribute_03=>'N'
+,p_attribute_04=>'BOTH'
+);
+wwv_flow_api.create_page_item(
+ p_id=>wwv_flow_api.id(23722165787456722)
+,p_name=>'P8_COST_PRODUCT_SKU'
+,p_source_data_type=>'VARCHAR2'
+,p_item_sequence=>40
+,p_item_plug_id=>wwv_flow_api.id(23720678853456669)
+,p_item_source_plug_id=>wwv_flow_api.id(23720678853456669)
+,p_prompt=>'Cost Product Sku'
+,p_source=>'COST_PRODUCT_SKU'
+,p_source_type=>'REGION_SOURCE_COLUMN'
+,p_display_as=>'NATIVE_TEXT_FIELD'
+,p_cSize=>32
+,p_cMaxlength=>50
+,p_begin_on_new_line=>'N'
+,p_field_template=>wwv_flow_api.id(9820028477688087)
+,p_item_template_options=>'#DEFAULT#'
+,p_is_persistent=>'N'
+,p_attribute_01=>'N'
+,p_attribute_02=>'N'
+,p_attribute_04=>'TEXT'
+,p_attribute_05=>'NONE'
+);
+wwv_flow_api.create_page_item(
+ p_id=>wwv_flow_api.id(23722538075456723)
+,p_name=>'P8_PRD_DESCRIPTION'
+,p_source_data_type=>'VARCHAR2'
+,p_item_sequence=>50
+,p_item_plug_id=>wwv_flow_api.id(23720678853456669)
+,p_item_source_plug_id=>wwv_flow_api.id(23720678853456669)
+,p_use_cache_before_default=>'NO'
+,p_prompt=>'Prd Description'
+,p_source=>'PRD_DESCRIPTION'
+,p_source_type=>'REGION_SOURCE_COLUMN'
+,p_display_as=>'NATIVE_TEXTAREA'
+,p_cSize=>60
+,p_cMaxlength=>4000
+,p_cHeight=>4
+,p_label_alignment=>'RIGHT'
+,p_field_template=>wwv_flow_api.id(9820028477688087)
+,p_item_template_options=>'#DEFAULT#'
+,p_is_persistent=>'N'
+,p_attribute_01=>'Y'
+,p_attribute_02=>'N'
+,p_attribute_03=>'N'
+,p_attribute_04=>'BOTH'
+);
+wwv_flow_api.create_page_item(
+ p_id=>wwv_flow_api.id(23722935349456724)
+,p_name=>'P8_COST_UNIT_PRICE'
+,p_source_data_type=>'NUMBER'
+,p_item_sequence=>60
+,p_item_plug_id=>wwv_flow_api.id(23720678853456669)
+,p_item_source_plug_id=>wwv_flow_api.id(23720678853456669)
+,p_use_cache_before_default=>'NO'
+,p_prompt=>'Cost Unit Price'
+,p_source=>'COST_UNIT_PRICE'
+,p_source_type=>'REGION_SOURCE_COLUMN'
+,p_display_as=>'NATIVE_NUMBER_FIELD'
+,p_cSize=>32
+,p_cMaxlength=>255
+,p_cHeight=>1
+,p_label_alignment=>'RIGHT'
+,p_field_template=>wwv_flow_api.id(9820028477688087)
+,p_item_template_options=>'#DEFAULT#'
+,p_is_persistent=>'N'
+,p_attribute_03=>'right'
+);
+wwv_flow_api.create_page_item(
+ p_id=>wwv_flow_api.id(23723323523456725)
+,p_name=>'P8_COST_BILLING_UNIT'
+,p_source_data_type=>'VARCHAR2'
+,p_item_sequence=>70
+,p_item_plug_id=>wwv_flow_api.id(23720678853456669)
+,p_item_source_plug_id=>wwv_flow_api.id(23720678853456669)
+,p_use_cache_before_default=>'NO'
+,p_prompt=>'Cost Billing Unit'
+,p_source=>'COST_BILLING_UNIT'
+,p_source_type=>'REGION_SOURCE_COLUMN'
+,p_display_as=>'NATIVE_TEXT_FIELD'
+,p_cSize=>32
+,p_cMaxlength=>50
+,p_label_alignment=>'RIGHT'
+,p_field_template=>wwv_flow_api.id(9820028477688087)
+,p_item_template_options=>'#DEFAULT#'
+,p_is_persistent=>'N'
+,p_attribute_01=>'N'
+,p_attribute_02=>'N'
+,p_attribute_03=>'N'
+,p_attribute_04=>'TEXT'
+,p_attribute_05=>'NONE'
+);
+wwv_flow_api.create_page_process(
+ p_id=>wwv_flow_api.id(23728692356456745)
+,p_process_sequence=>10
+,p_process_point=>'AFTER_SUBMIT'
+,p_region_id=>wwv_flow_api.id(23720678853456669)
+,p_process_type=>'NATIVE_FORM_DML'
+,p_process_name=>'Process form FormNW'
+,p_attribute_01=>'REGION_SOURCE'
+,p_attribute_05=>'Y'
+,p_attribute_06=>'Y'
+,p_attribute_08=>'Y'
+,p_error_display_location=>'INLINE_IN_NOTIFICATION'
+);
+wwv_flow_api.create_page_process(
+ p_id=>wwv_flow_api.id(23728218987456743)
+,p_process_sequence=>10
+,p_process_point=>'BEFORE_HEADER'
+,p_region_id=>wwv_flow_api.id(23720678853456669)
+,p_process_type=>'NATIVE_FORM_INIT'
+,p_process_name=>'Initialize form FormNW'
);
end;
/
@@ -24898,6 +24679,7 @@ wwv_flow_api.create_page_process(
'apex_authentication.send_login_username_cookie (',
' p_username => lower(:P9999_USERNAME),',
' p_consent => :P9999_REMEMBER = ''Y'' );'))
+,p_process_clob_language=>'PLSQL'
,p_error_display_location=>'INLINE_IN_NOTIFICATION'
);
wwv_flow_api.create_page_process(
@@ -24910,6 +24692,7 @@ wwv_flow_api.create_page_process(
'apex_authentication.login(',
' p_username => :P9999_USERNAME,',
' p_password => :P9999_PASSWORD );'))
+,p_process_clob_language=>'PLSQL'
,p_error_display_location=>'INLINE_IN_NOTIFICATION'
);
wwv_flow_api.create_page_process(
@@ -24930,6 +24713,7 @@ wwv_flow_api.create_page_process(
,p_process_sql_clob=>wwv_flow_string.join(wwv_flow_t_varchar2(
':P9999_USERNAME := apex_authentication.get_login_username_cookie;',
':P9999_REMEMBER := case when :P9999_USERNAME is not null then ''Y'' end;'))
+,p_process_clob_language=>'PLSQL'
);
end;
/
diff --git a/examples/usage_reports_to_adw/readme.md b/examples/usage_reports_to_adw/readme.md
index be3a63a656..d2f3fd982d 100755
--- a/examples/usage_reports_to_adw/readme.md
+++ b/examples/usage_reports_to_adw/readme.md
@@ -138,23 +138,26 @@ Execute
```
$ ./usage2adw.py
-usage: usage2adw.py [-h] [-c CONFIG] [-t PROFILE] [-f FILEID] [-d FILEDATE] [-p PROXY] [-su] [-sc] [-sr] [-ip] [-du DUSER] [-dp DPASS] [-dn DNAME] [--version]
+usage: usage2adw.py [-h] [-c CONFIG] [-t PROFILE] [-f FILEID] [-ts TAGSPECIAL]
+ [-d FILEDATE] [-p PROXY] [-su] [-sc] [-sr] [-ip]
+ [-du DUSER] [-dp DPASS] [-dn DNAME] [--version]
optional arguments:
- -h, --help show this help message and exit
- -c CONFIG Config File
- -t PROFILE Config file section to use (tenancy profile)
- -f FILEID File Id to load
- -d FILEDATE Minimum File Date to load (i.e. yyyy-mm-dd)
- -p PROXY Set Proxy (i.e. www-proxy-server.com:80)
- -su Skip Load Usage Files
- -sc Skip Load Cost Files
- -sr Skip Public Rate API
- -ip Use Instance Principals for Authentication
- -du DUSER ADB User
- -dp DPASS ADB Password
- -dn DNAME ADB Name
- --version show program's version number and exit
+ -h, --help show this help message and exit
+ -c CONFIG Config File
+ -t PROFILE Config file section to use (tenancy profile)
+ -f FILEID File Id to load
+ -ts TAGSPECIAL tag special key to load the data to TAG_SPECIAL column
+ -d FILEDATE Minimum File Date to load (i.e. yyyy-mm-dd)
+ -p PROXY Set Proxy (i.e. www-proxy-server.com:80)
+ -su Skip Load Usage Files
+ -sc Skip Load Cost Files
+ -sr Skip Public Rate API
+ -ip Use Instance Principals for Authentication
+ -du DUSER ADB User
+ -dp DPASS ADB Password
+ -dn DNAME ADB Name
+ --version show program's version number and exit
```
## Below example of execution
diff --git a/examples/usage_reports_to_adw/setup/create_tables.sql b/examples/usage_reports_to_adw/setup/create_tables.sql
index aca6baa81b..a51f25d442 100755
--- a/examples/usage_reports_to_adw/setup/create_tables.sql
+++ b/examples/usage_reports_to_adw/setup/create_tables.sql
@@ -21,7 +21,8 @@ create table OCI_USAGE (
USG_CONSUMED_UNITS VARCHAR2(100),
USG_CONSUMED_MEASURE VARCHAR2(100),
IS_CORRECTION VARCHAR2(10),
- TAGS_DATA VARCHAR2(4000)
+ TAGS_DATA VARCHAR2(4000),
+ TAG_SPECIAL VARCHAR2(4000)
) COMPRESS;
CREATE INDEX OCI_USAGE_1IX ON OCI_USAGE(TENANT_NAME,USAGE_INTERVAL_START);
@@ -78,7 +79,8 @@ create table OCI_COST (
COST_BILLING_UNIT VARCHAR2(1000),
COST_OVERAGE_FLAG VARCHAR2(10),
IS_CORRECTION VARCHAR2(10),
- TAGS_DATA VARCHAR2(4000)
+ TAGS_DATA VARCHAR2(4000),
+ TAG_SPECIAL VARCHAR2(4000)
) COMPRESS;
CREATE INDEX OCI_COST_1IX ON OCI_COST(TENANT_NAME,USAGE_INTERVAL_START);
diff --git a/examples/usage_reports_to_adw/setup/setup_credentials.sh b/examples/usage_reports_to_adw/setup/setup_credentials.sh
index 0ef0a1fedc..26f07c964c 100755
--- a/examples/usage_reports_to_adw/setup/setup_credentials.sh
+++ b/examples/usage_reports_to_adw/setup/setup_credentials.sh
@@ -7,7 +7,7 @@
# Written by Adi Zohar, October 2020
# Git Location = https://github.com/oracle/oci-python-sdk/tree/master/examples/usage_reports_to_adw
#
-# Version 2020-10-22
+# Version 2021-04-04
#
#########################################################################################################################
@@ -30,12 +30,18 @@ printf "Please Enter Database Name : "; read DATABASE_NAME
printf "Please Enter ADB Admin Password: "; read DATABASE_ADMIN
printf "Please Enter ADB Application Password (Min 12 Chars, One Upper, One Lower, One Digits): "; read DATABASE_PASS
printf "Please Enter Extract Start Date (Format YYYY-MM i.e. 2020-10): "; read EXTRACT_DATE
+printf "Please Enter Tag Key to extract as Special Tag (Oracle-Tags.CreatedBy): "; read TAG_SPECIAL
-echo "DATABASE_USER=USAGE" > $CREDFILE
+if [ -z "$TAG_SPECIAL" ]; then
+ TAG_SPECIAL="Oracle-Tags.CreatedBy"
+fi
+
+echo "DATABASE_USER=USAGE" > $CREDFILE
echo "DATABASE_NAME=${DATABASE_NAME}_low" >> $CREDFILE
echo "DATABASE_PASS=${DATABASE_PASS}" >> $CREDFILE
echo "DATABASE_ADMIN=${DATABASE_ADMIN}" >> $CREDFILE
echo "EXTRACT_DATE=${EXTRACT_DATE}" >> $CREDFILE
+echo "TAG_SPECIAL=${TAG_SPECIAL}" >> $CREDFILE
echo "" | tee -a $LOG
echo "Below Data written to $CREDFILE:" | tee -a $LOG
cat $CREDFILE | tee -a $LOG
diff --git a/examples/usage_reports_to_adw/setup/setup_usage2adw.sh b/examples/usage_reports_to_adw/setup/setup_usage2adw.sh
index 82804ccf36..befd74d14a 100755
--- a/examples/usage_reports_to_adw/setup/setup_usage2adw.sh
+++ b/examples/usage_reports_to_adw/setup/setup_usage2adw.sh
@@ -51,6 +51,7 @@ db_db_name=`grep "^DATABASE_NAME" $CREDFILE | awk -F= '{ print $2 }'`
db_app_password=`grep "^DATABASE_PASS" $CREDFILE | awk -F= '{ print $2 }'`
db_admin_password=`grep "^DATABASE_ADMIN" $CREDFILE| awk -F= '{ print $2 }'`
extract_from_date=`grep "^EXTRACT_DATE" $CREDFILE | awk -F= '{ print $2 }'`
+extract_tag_special_key=`grep "^TAG_SPECIAL" $CREDFILE | awk -F= '{ print $2 }'`
###########################################
# Extract Wallet from wallet.zip
@@ -164,10 +165,10 @@ echo "###############################################################" | tee -a
echo "# Running Initial usage2adw.py extract" | tee -a $LOG
echo "###############################################################" | tee -a $LOG
echo " Command line: " | tee -a $LOG
-echo " python3 usage2adw.py -ip -du USAGE -dp ${db_app_password} -dn ${db_db_name} -d ${extract_from_date}" | tee -a $LOG
+echo " python3 usage2adw.py -ip -du USAGE -dp ${db_app_password} -dn ${db_db_name} -d ${extract_from_date}" -ts "${extract_tag_special_key}" | tee -a $LOG
echo "" | tee -a $LOG | tee -a $LOG
cd $APPDIR
-python3 usage2adw.py -ip -du USAGE -dp ${db_app_password} -dn ${db_db_name} -d ${extract_from_date} | tee -a $LOG
+python3 usage2adw.py -ip -du USAGE -dp ${db_app_password} -dn ${db_db_name} -d ${extract_from_date} -ts "${extract_tag_special_key}" | tee -a $LOG
echo "" | tee -a $LOG
echo "############################################################################################" | tee -a $LOG
diff --git a/examples/usage_reports_to_adw/shell_scripts/run_multi_daily_usage2adw.sh b/examples/usage_reports_to_adw/shell_scripts/run_multi_daily_usage2adw.sh
index f8876395a4..2320119f56 100755
--- a/examples/usage_reports_to_adw/shell_scripts/run_multi_daily_usage2adw.sh
+++ b/examples/usage_reports_to_adw/shell_scripts/run_multi_daily_usage2adw.sh
@@ -29,6 +29,7 @@ cd $APPDIR
export DATABASE_USER=`grep "^DATABASE_USER" $CREDFILE | awk -F= '{ print $2 }'`
export DATABASE_PASS=`grep "^DATABASE_PASS" $CREDFILE | awk -F= '{ print $2 }'`
export DATABASE_NAME=`grep "^DATABASE_NAME" $CREDFILE | awk -F= '{ print $2 }'`
+export TAG_SPECIAL=`grep "^TAG_SPECIAL" $CREDFILE | awk -F= '{ print $2 }'`
export MIN_DATE=`grep "^EXTRACT_DATE" $CREDFILE | awk -F= '{ print $2 }'`
# Fixed variables
@@ -51,7 +52,7 @@ run_report()
OUTPUT_FILE=${DIR}/${DATE}_${NAME}.txt
mkdir -p $DIR
echo "Running $NAME... to $OUTPUT_FILE "
- python3 $APPDIR/usage2adw.py -t $NAME -du $DATABASE_USER -dp $DATABASE_PASS -dn $DATABASE_NAME -d $MIN_DATE > $OUTPUT_FILE
+ python3 $APPDIR/usage2adw.py -t $NAME -du $DATABASE_USER -dp $DATABASE_PASS -dn $DATABASE_NAME -d $MIN_DATE -ts "${TAG_SPECIAL}" > $OUTPUT_FILE
grep -i "Error" $OUTPUT_FILE
ERROR=""
diff --git a/examples/usage_reports_to_adw/shell_scripts/run_single_daily_usage2adw.sh b/examples/usage_reports_to_adw/shell_scripts/run_single_daily_usage2adw.sh
index 9e5d5797e0..3dab2902da 100755
--- a/examples/usage_reports_to_adw/shell_scripts/run_single_daily_usage2adw.sh
+++ b/examples/usage_reports_to_adw/shell_scripts/run_single_daily_usage2adw.sh
@@ -26,6 +26,7 @@ cd $APPDIR
export DATABASE_USER=`grep "^DATABASE_USER" $CREDFILE | awk -F= '{ print $2 }'`
export DATABASE_PASS=`grep "^DATABASE_PASS" $CREDFILE | awk -F= '{ print $2 }'`
export DATABASE_NAME=`grep "^DATABASE_NAME" $CREDFILE | awk -F= '{ print $2 }'`
+export TAG_SPECIAL=`grep "^TAG_SPECIAL" $CREDFILE | awk -F= '{ print $2 }'`
export MIN_DATE=`grep "^EXTRACT_DATE" $CREDFILE | awk -F= '{ print $2 }'`
# Fixed variables
@@ -37,7 +38,7 @@ export OUTPUT_FILE=${REPORT_DIR}/${DATE}.txt
# execute using instance principles
echo "Running ... to $OUTPUT_FILE and screen"
-python3 $APPDIR/usage2adw.py -ip -du $DATABASE_USER -dp $DATABASE_PASS -dn $DATABASE_NAME -d $MIN_DATE | tee -a $OUTPUT_FILE
+python3 $APPDIR/usage2adw.py -ip -du $DATABASE_USER -dp $DATABASE_PASS -dn $DATABASE_NAME -d $MIN_DATE -ts "${TAG_SPECIAL}" | tee -a $OUTPUT_FILE
grep -i "Error" $OUTPUT_FILE
echo "Finished at `date` "
diff --git a/examples/usage_reports_to_adw/usage2adw.py b/examples/usage_reports_to_adw/usage2adw.py
index 41940d9239..fe924d0e0a 100755
--- a/examples/usage_reports_to_adw/usage2adw.py
+++ b/examples/usage_reports_to_adw/usage2adw.py
@@ -70,7 +70,7 @@
import time
-version = "20.12.03"
+version = "21.04.04"
usage_report_namespace = "bling"
work_report_dir = os.curdir + "/work_report_dir"
@@ -208,6 +208,7 @@ def set_parser_arguments():
parser.add_argument('-c', type=argparse.FileType('r'), dest='config', help="Config File")
parser.add_argument('-t', default="", dest='profile', help='Config file section to use (tenancy profile)')
parser.add_argument('-f', default="", dest='fileid', help='File Id to load')
+ parser.add_argument('-ts', default="", dest='tagspecial', help='tag special key to load the data to TAG_SPECIAL column')
parser.add_argument('-d', default="", dest='filedate', help='Minimum File Date to load (i.e. yyyy-mm-dd)')
parser.add_argument('-p', default="", dest='proxy', help='Set Proxy (i.e. www-proxy-server.com:80) ')
parser.add_argument('-su', action='store_true', default=False, dest='skip_usage', help='Skip Load Usage Files')
@@ -293,6 +294,17 @@ def check_database_table_structure_usage(connection):
sql = "alter table OCI_USAGE add (TENANT_ID VARCHAR2(100))"
cursor.execute(sql)
+ # check if TAG_SPECIAL columns exist in OCI_USAGE table, if not create
+ sql = "select count(*) from user_tab_columns where table_name = 'OCI_USAGE' and column_name='TAG_SPECIAL'"
+ cursor.execute(sql)
+ val, = cursor.fetchone()
+
+ # if columns not exist, create it
+ if val == 0:
+ print(" Column TAG_SPECIAL does not exist in the table OCI_USAGE, adding...")
+ sql = "alter table OCI_USAGE add (TAG_SPECIAL VARCHAR2(4000))"
+ cursor.execute(sql)
+
# check if OCI_USAGE_TAG_KEYS table exist, if not create
sql = "select count(*) from user_tables where table_name = 'OCI_USAGE_TAG_KEYS'"
cursor.execute(sql)
@@ -514,14 +526,14 @@ def update_price_list(connection):
##########################################################################
# update_cost_reference
##########################################################################
-def update_cost_reference(connection):
+def update_cost_reference(connection, tag_special_key, tenant_name):
try:
# open cursor
cursor = connection.cursor()
print("\nMerging statistics into OCI_COST_REFERENCE...")
- # run merge to oci_update_stats
+ # run merge to OCI_COST_REFERENCE
sql = "merge into OCI_COST_REFERENCE a "
sql += "using "
sql += "( "
@@ -543,6 +555,8 @@ def update_cost_reference(connection):
sql += " union all "
sql += " select distinct TENANT_NAME, 'COST_SUBSCRIPTION_ID' as REF_TYPE, to_char(COST_SUBSCRIPTION_ID) as ref_name from OCI_COST "
sql += " union all "
+ sql += " select distinct TENANT_NAME, 'TAG_SPECIAL' as REF_TYPE, TAG_SPECIAL as ref_name from OCI_COST "
+ sql += " union all "
sql += " select distinct TENANT_NAME, 'COST_PRODUCT_SKU' as REF_TYPE, COST_PRODUCT_SKU || ' '||min(PRD_DESCRIPTION) as ref_name from OCI_COST "
sql += " group by TENANT_NAME, COST_PRODUCT_SKU "
sql += " ) where ref_name is not null "
@@ -554,6 +568,26 @@ def update_cost_reference(connection):
cursor.execute(sql)
connection.commit()
print(" Merge Completed, " + str(cursor.rowcount) + " rows merged")
+
+ if tag_special_key:
+
+ # run merge to OCI_COST_REFERENCE for the tag special key
+ print(" Handling Tag Special Key '" + tag_special_key + "'")
+
+ sql = "merge into OCI_COST_REFERENCE a "
+ sql += "using "
+ sql += "( "
+ sql += " select :tenant_name as TENANT_NAME, 'TAG_SPECIAL_KEY' as REF_TYPE, :tag_special_key as ref_name from DUAL "
+ sql += ") b "
+ sql += "on (a.TENANT_NAME=b.TENANT_NAME and a.REF_TYPE=b.REF_TYPE) "
+ sql += "when matched then update set a.ref_name = b.ref_name "
+ sql += "when not matched then insert (TENANT_NAME,REF_TYPE,REF_NAME) "
+ sql += "values (b.TENANT_NAME,b.REF_TYPE,b.REF_NAME)"
+
+ cursor.execute(sql, {"tenant_name": tenant_name, "tag_special_key": tag_special_key})
+ connection.commit()
+ print(" Merge Completed, " + str(cursor.rowcount) + " rows merged")
+
cursor.close()
except cx_Oracle.DatabaseError as e:
@@ -804,6 +838,17 @@ def check_database_table_structure_cost(connection):
sql = "alter table OCI_COST add (TENANT_ID VARCHAR2(100))"
cursor.execute(sql)
+ # check if TAG_SPECIAL column exist in OCI_COST table, if not create
+ sql = "select count(*) from user_tab_columns where table_name = 'OCI_COST' and column_name='TAG_SPECIAL'"
+ cursor.execute(sql)
+ val, = cursor.fetchone()
+
+ # if column not exist, create it
+ if val == 0:
+ print(" Column TAG_SPECIAL does not exist in the table OCI_COST, adding...")
+ sql = "alter table OCI_COST add (TAG_SPECIAL VARCHAR2(4000))"
+ cursor.execute(sql)
+
# check if OCI_COST_TAG_KEYS table exist, if not create
sql = "select count(*) from user_tables where table_name = 'OCI_COST_TAG_KEYS'"
cursor.execute(sql)
@@ -1039,13 +1084,14 @@ def load_cost_file(connection, object_storage, object_file, max_file_id, cmd, te
sql += "COST_OVERAGE_FLAG,"
sql += "IS_CORRECTION, "
sql += "TAGS_DATA, "
- sql += "TENANT_ID "
+ sql += "TENANT_ID, "
+ sql += "TAG_SPECIAL "
sql += ") VALUES ("
sql += ":1, :2, to_date(:3,'YYYY-MM-DD HH24:MI'), to_date(:4,'YYYY-MM-DD HH24:MI'), :5, "
sql += ":6, :7, :8, :9, :10, "
sql += ":11, to_number(:12), to_number(:13) ,:14, :15, "
sql += ":16, to_number(:17), to_number(:18), to_number(:19), to_number(:20), "
- sql += ":21, :22, :23, :24, :25, :26"
+ sql += ":21, :22, :23, :24, :25, :26, :27"
sql += ") "
# insert bulk to database
@@ -1064,6 +1110,7 @@ def load_cost_file(connection, object_storage, object_file, max_file_id, cmd, te
compartment_path = c['path']
# Handle Tags up to 4000 chars with # seperator
+ tag_special = ""
tags_data = ""
for (key, value) in row.items():
if 'tags' in key and len(value) > 0:
@@ -1072,6 +1119,12 @@ def load_cost_file(connection, object_storage, object_file, max_file_id, cmd, te
keyadj = str(key).replace("tags/", "").replace("#", "").replace("=", "")
valueadj = str(value).replace("#", "").replace("=", "")
+ # if tagspecial
+ if cmd.tagspecial:
+ if keyadj == cmd.tagspecial:
+ if len(valueadj) < 4000:
+ tag_special = valueadj
+
# check if length < 4000 to avoid overflow database column
if len(tags_data) + len(keyadj) + len(valueadj) + 2 < 4000:
tags_data += ("#" if tags_data == "" else "") + keyadj + "=" + valueadj + "#"
@@ -1185,7 +1238,8 @@ def load_cost_file(connection, object_storage, object_file, max_file_id, cmd, te
cost_overageFlag,
lineItem_isCorrection,
tags_data,
- lineItem_tenantId[-6:]
+ lineItem_tenantId[-6:],
+ tag_special
)
data.append(row_data)
num_rows += 1
@@ -1287,11 +1341,11 @@ def load_usage_file(connection, object_storage, object_file, max_file_id, cmd, t
# sql statement
sql = "INSERT INTO OCI_USAGE (TENANT_NAME, FILE_ID, USAGE_INTERVAL_START, USAGE_INTERVAL_END, PRD_SERVICE, PRD_RESOURCE, "
sql += "PRD_COMPARTMENT_ID, PRD_COMPARTMENT_NAME, PRD_COMPARTMENT_PATH, PRD_REGION, PRD_AVAILABILITY_DOMAIN, USG_RESOURCE_ID, "
- sql += "USG_BILLED_QUANTITY, USG_CONSUMED_QUANTITY, USG_CONSUMED_UNITS, USG_CONSUMED_MEASURE, IS_CORRECTION, TAGS_DATA, TENANT_ID "
+ sql += "USG_BILLED_QUANTITY, USG_CONSUMED_QUANTITY, USG_CONSUMED_UNITS, USG_CONSUMED_MEASURE, IS_CORRECTION, TAGS_DATA, TENANT_ID, TAG_SPECIAL "
sql += ") VALUES ("
sql += ":1, :2, to_date(:3,'YYYY-MM-DD HH24:MI'), to_date(:4,'YYYY-MM-DD HH24:MI'), :5, :6, "
sql += ":7, :8, :9, :10, :11, :12, "
- sql += "to_number(:13), to_number(:14), :15, :16, :17 ,:18, :19 "
+ sql += "to_number(:13), to_number(:14), :15, :16, :17 ,:18, :19, :20 "
sql += ") "
# Adjust the batch size to meet memory and performance requirements
@@ -1315,6 +1369,7 @@ def load_usage_file(connection, object_storage, object_file, max_file_id, cmd, t
# Handle Tags up to 3500 chars with # seperator
tags_data = ""
+ tag_special = ""
for (key, value) in row.items():
if 'tags' in key and len(value) > 0:
@@ -1322,6 +1377,12 @@ def load_usage_file(connection, object_storage, object_file, max_file_id, cmd, t
keyadj = str(key).replace("tags/", "").replace("#", "").replace("=", "")
valueadj = str(value).replace("#", "").replace("=", "")
+ # if tagspecial
+ if cmd.tagspecial:
+ if keyadj == cmd.tagspecial:
+ if len(valueadj) < 4000:
+ tag_special = valueadj
+
# check if length < 3500 to avoid overflow database column
if len(tags_data) + len(keyadj) + len(valueadj) + 2 < 3500:
tags_data += ("#" if tags_data == "" else "") + keyadj + "=" + valueadj + "#"
@@ -1367,7 +1428,8 @@ def load_usage_file(connection, object_storage, object_file, max_file_id, cmd, t
usage_consumedQuantityMeasure,
lineItem_isCorrection,
tags_data,
- lineItem_tenantId[-6:]
+ lineItem_tenantId[-6:],
+ tag_special
)
data.append(row_data)
num_rows += 1
@@ -1571,8 +1633,8 @@ def main_process():
update_usage_stats(connection)
if cost_num > 0:
update_cost_stats(connection)
- update_cost_reference(connection)
update_price_list(connection)
+ update_cost_reference(connection, cmd.tagspecial, tenancy.name)
if not cmd.skip_rate:
update_public_rates(connection, tenancy.name)
update_tenant_id_if_null(connection, tenancy.name, short_tenant_id)
diff --git a/src/oci/apigateway/api_gateway_client.py b/src/oci/apigateway/api_gateway_client.py
index b2c0f348ef..014223d397 100644
--- a/src/oci/apigateway/api_gateway_client.py
+++ b/src/oci/apigateway/api_gateway_client.py
@@ -435,6 +435,82 @@ def create_certificate(self, create_certificate_details, **kwargs):
body=create_certificate_details,
response_type="Certificate")
+ def create_sdk(self, create_sdk_details, **kwargs):
+ """
+ Creates a new SDK.
+
+
+ :param oci.apigateway.models.CreateSdkDetails create_sdk_details: (required)
+ Details for the new SDK.
+
+ :param str opc_retry_token: (optional)
+ A token that uniquely identifies a request so it can be retried in case of a timeout or
+ server error without risk of executing that same action again. Retry tokens expire after 24
+ hours, but can be invalidated before then due to conflicting operations. For example, if a resource
+ has been deleted and purged from the system, then a retry of the original creation request
+ might be rejected.
+
+ :param str opc_request_id: (optional)
+ The client request id for tracing.
+
+ :param obj retry_strategy: (optional)
+ A retry strategy to apply to this specific operation/call. This will override any retry strategy set at the client-level.
+
+ This should be one of the strategies available in the :py:mod:`~oci.retry` module. A convenience :py:data:`~oci.retry.DEFAULT_RETRY_STRATEGY`
+ is also available. The specifics of the default retry strategy are described `here `__.
+
+ To have this operation explicitly not perform any retries, pass an instance of :py:class:`~oci.retry.NoneRetryStrategy`.
+
+ :return: A :class:`~oci.response.Response` object with data of type :class:`~oci.apigateway.models.Sdk`
+ :rtype: :class:`~oci.response.Response`
+
+ :example:
+ Click `here `__ to see an example of how to use create_sdk API.
+ """
+ resource_path = "/sdks"
+ method = "POST"
+
+ # Don't accept unknown kwargs
+ expected_kwargs = [
+ "retry_strategy",
+ "opc_retry_token",
+ "opc_request_id"
+ ]
+ extra_kwargs = [_key for _key in six.iterkeys(kwargs) if _key not in expected_kwargs]
+ if extra_kwargs:
+ raise ValueError(
+ "create_sdk got unknown kwargs: {!r}".format(extra_kwargs))
+
+ header_params = {
+ "accept": "application/json",
+ "content-type": "application/json",
+ "opc-retry-token": kwargs.get("opc_retry_token", missing),
+ "opc-request-id": kwargs.get("opc_request_id", missing)
+ }
+ header_params = {k: v for (k, v) in six.iteritems(header_params) if v is not missing and v is not None}
+
+ retry_strategy = self.retry_strategy
+ if kwargs.get('retry_strategy'):
+ retry_strategy = kwargs.get('retry_strategy')
+
+ if retry_strategy:
+ if not isinstance(retry_strategy, retry.NoneRetryStrategy):
+ self.base_client.add_opc_retry_token_if_needed(header_params)
+ return retry_strategy.make_retrying_call(
+ self.base_client.call_api,
+ resource_path=resource_path,
+ method=method,
+ header_params=header_params,
+ body=create_sdk_details,
+ response_type="Sdk")
+ else:
+ return self.base_client.call_api(
+ resource_path=resource_path,
+ method=method,
+ header_params=header_params,
+ body=create_sdk_details,
+ response_type="Sdk")
+
def delete_api(self, api_id, **kwargs):
"""
Deletes the API with the given identifier.
@@ -599,6 +675,88 @@ def delete_certificate(self, certificate_id, **kwargs):
path_params=path_params,
header_params=header_params)
+ def delete_sdk(self, sdk_id, **kwargs):
+ """
+ Deletes provided SDK.
+
+
+ :param str sdk_id: (required)
+ The ocid of the SDK.
+
+ :param str opc_request_id: (optional)
+ The client request id for tracing.
+
+ :param str if_match: (optional)
+ For optimistic concurrency control. In the PUT or DELETE call
+ for a resource, set the `if-match` parameter to the value of the
+ etag from a previous GET or POST response for that resource.
+ The resource will be updated or deleted only if the etag you
+ provide matches the resource's current etag value.
+
+ :param obj retry_strategy: (optional)
+ A retry strategy to apply to this specific operation/call. This will override any retry strategy set at the client-level.
+
+ This should be one of the strategies available in the :py:mod:`~oci.retry` module. A convenience :py:data:`~oci.retry.DEFAULT_RETRY_STRATEGY`
+ is also available. The specifics of the default retry strategy are described `here `__.
+
+ To have this operation explicitly not perform any retries, pass an instance of :py:class:`~oci.retry.NoneRetryStrategy`.
+
+ :return: A :class:`~oci.response.Response` object with data of type None
+ :rtype: :class:`~oci.response.Response`
+
+ :example:
+ Click `here `__ to see an example of how to use delete_sdk API.
+ """
+ resource_path = "/sdks/{sdkId}"
+ method = "DELETE"
+
+ # Don't accept unknown kwargs
+ expected_kwargs = [
+ "retry_strategy",
+ "opc_request_id",
+ "if_match"
+ ]
+ extra_kwargs = [_key for _key in six.iterkeys(kwargs) if _key not in expected_kwargs]
+ if extra_kwargs:
+ raise ValueError(
+ "delete_sdk got unknown kwargs: {!r}".format(extra_kwargs))
+
+ path_params = {
+ "sdkId": sdk_id
+ }
+
+ path_params = {k: v for (k, v) in six.iteritems(path_params) if v is not missing}
+
+ for (k, v) in six.iteritems(path_params):
+ if v is None or (isinstance(v, six.string_types) and len(v.strip()) == 0):
+ raise ValueError('Parameter {} cannot be None, whitespace or empty string'.format(k))
+
+ header_params = {
+ "accept": "application/json",
+ "content-type": "application/json",
+ "opc-request-id": kwargs.get("opc_request_id", missing),
+ "if-match": kwargs.get("if_match", missing)
+ }
+ header_params = {k: v for (k, v) in six.iteritems(header_params) if v is not missing and v is not None}
+
+ retry_strategy = self.retry_strategy
+ if kwargs.get('retry_strategy'):
+ retry_strategy = kwargs.get('retry_strategy')
+
+ if retry_strategy:
+ return retry_strategy.make_retrying_call(
+ self.base_client.call_api,
+ resource_path=resource_path,
+ method=method,
+ path_params=path_params,
+ header_params=header_params)
+ else:
+ return self.base_client.call_api(
+ resource_path=resource_path,
+ method=method,
+ path_params=path_params,
+ header_params=header_params)
+
def get_api(self, api_id, **kwargs):
"""
Gets an API by identifier.
@@ -1001,6 +1159,81 @@ def get_certificate(self, certificate_id, **kwargs):
header_params=header_params,
response_type="Certificate")
+ def get_sdk(self, sdk_id, **kwargs):
+ """
+ Return object store downloadable URL and metadata.
+
+
+ :param str sdk_id: (required)
+ The ocid of the SDK.
+
+ :param str opc_request_id: (optional)
+ The client request id for tracing.
+
+ :param obj retry_strategy: (optional)
+ A retry strategy to apply to this specific operation/call. This will override any retry strategy set at the client-level.
+
+ This should be one of the strategies available in the :py:mod:`~oci.retry` module. A convenience :py:data:`~oci.retry.DEFAULT_RETRY_STRATEGY`
+ is also available. The specifics of the default retry strategy are described `here `__.
+
+ To have this operation explicitly not perform any retries, pass an instance of :py:class:`~oci.retry.NoneRetryStrategy`.
+
+ :return: A :class:`~oci.response.Response` object with data of type :class:`~oci.apigateway.models.Sdk`
+ :rtype: :class:`~oci.response.Response`
+
+ :example:
+ Click `here `__ to see an example of how to use get_sdk API.
+ """
+ resource_path = "/sdks/{sdkId}"
+ method = "GET"
+
+ # Don't accept unknown kwargs
+ expected_kwargs = [
+ "retry_strategy",
+ "opc_request_id"
+ ]
+ extra_kwargs = [_key for _key in six.iterkeys(kwargs) if _key not in expected_kwargs]
+ if extra_kwargs:
+ raise ValueError(
+ "get_sdk got unknown kwargs: {!r}".format(extra_kwargs))
+
+ path_params = {
+ "sdkId": sdk_id
+ }
+
+ path_params = {k: v for (k, v) in six.iteritems(path_params) if v is not missing}
+
+ for (k, v) in six.iteritems(path_params):
+ if v is None or (isinstance(v, six.string_types) and len(v.strip()) == 0):
+ raise ValueError('Parameter {} cannot be None, whitespace or empty string'.format(k))
+
+ header_params = {
+ "accept": "application/json",
+ "content-type": "application/json",
+ "opc-request-id": kwargs.get("opc_request_id", missing)
+ }
+ header_params = {k: v for (k, v) in six.iteritems(header_params) if v is not missing and v is not None}
+
+ retry_strategy = self.retry_strategy
+ if kwargs.get('retry_strategy'):
+ retry_strategy = kwargs.get('retry_strategy')
+
+ if retry_strategy:
+ return retry_strategy.make_retrying_call(
+ self.base_client.call_api,
+ resource_path=resource_path,
+ method=method,
+ path_params=path_params,
+ header_params=header_params,
+ response_type="Sdk")
+ else:
+ return self.base_client.call_api(
+ resource_path=resource_path,
+ method=method,
+ path_params=path_params,
+ header_params=header_params,
+ response_type="Sdk")
+
def list_apis(self, compartment_id, **kwargs):
"""
Returns a list of APIs.
@@ -1269,6 +1502,264 @@ def list_certificates(self, compartment_id, **kwargs):
header_params=header_params,
response_type="CertificateCollection")
+ def list_sdk_language_types(self, compartment_id, **kwargs):
+ """
+ Lists programming languages in which SDK can be generated.
+
+
+ :param str compartment_id: (required)
+ The ocid of the compartment in which to list resources.
+
+ :param str display_name: (optional)
+ A user-friendly name. Does not have to be unique, and it's changeable.
+
+ Example: `My new resource`
+
+ :param int limit: (optional)
+ The maximum number of items to return.
+
+ :param str page: (optional)
+ The page token representing the page at which to start retrieving results. This is usually retrieved from a previous list call.
+
+ :param str sort_order: (optional)
+ The sort order to use, either 'asc' or 'desc'. The default order depends on the sortBy value.
+
+ Allowed values are: "ASC", "DESC"
+
+ :param str sort_by: (optional)
+ The field to sort by. You can provide one sort order (`sortOrder`).
+ Default order for `timeCreated` is descending. Default order for
+ `displayName` is ascending. The `displayName` sort order is case
+ sensitive.
+
+ Allowed values are: "timeCreated", "displayName"
+
+ :param str opc_request_id: (optional)
+ The client request id for tracing.
+
+ :param obj retry_strategy: (optional)
+ A retry strategy to apply to this specific operation/call. This will override any retry strategy set at the client-level.
+
+ This should be one of the strategies available in the :py:mod:`~oci.retry` module. A convenience :py:data:`~oci.retry.DEFAULT_RETRY_STRATEGY`
+ is also available. The specifics of the default retry strategy are described `here `__.
+
+ To have this operation explicitly not perform any retries, pass an instance of :py:class:`~oci.retry.NoneRetryStrategy`.
+
+ :return: A :class:`~oci.response.Response` object with data of type :class:`~oci.apigateway.models.SdkLanguageTypeCollection`
+ :rtype: :class:`~oci.response.Response`
+
+ :example:
+ Click `here `__ to see an example of how to use list_sdk_language_types API.
+ """
+ resource_path = "/sdkLanguageTypes"
+ method = "GET"
+
+ # Don't accept unknown kwargs
+ expected_kwargs = [
+ "retry_strategy",
+ "display_name",
+ "limit",
+ "page",
+ "sort_order",
+ "sort_by",
+ "opc_request_id"
+ ]
+ extra_kwargs = [_key for _key in six.iterkeys(kwargs) if _key not in expected_kwargs]
+ if extra_kwargs:
+ raise ValueError(
+ "list_sdk_language_types got unknown kwargs: {!r}".format(extra_kwargs))
+
+ if 'sort_order' in kwargs:
+ sort_order_allowed_values = ["ASC", "DESC"]
+ if kwargs['sort_order'] not in sort_order_allowed_values:
+ raise ValueError(
+ "Invalid value for `sort_order`, must be one of {0}".format(sort_order_allowed_values)
+ )
+
+ if 'sort_by' in kwargs:
+ sort_by_allowed_values = ["timeCreated", "displayName"]
+ if kwargs['sort_by'] not in sort_by_allowed_values:
+ raise ValueError(
+ "Invalid value for `sort_by`, must be one of {0}".format(sort_by_allowed_values)
+ )
+
+ query_params = {
+ "displayName": kwargs.get("display_name", missing),
+ "limit": kwargs.get("limit", missing),
+ "page": kwargs.get("page", missing),
+ "sortOrder": kwargs.get("sort_order", missing),
+ "sortBy": kwargs.get("sort_by", missing),
+ "compartmentId": compartment_id
+ }
+ query_params = {k: v for (k, v) in six.iteritems(query_params) if v is not missing and v is not None}
+
+ header_params = {
+ "accept": "application/json",
+ "content-type": "application/json",
+ "opc-request-id": kwargs.get("opc_request_id", missing)
+ }
+ header_params = {k: v for (k, v) in six.iteritems(header_params) if v is not missing and v is not None}
+
+ retry_strategy = self.retry_strategy
+ if kwargs.get('retry_strategy'):
+ retry_strategy = kwargs.get('retry_strategy')
+
+ if retry_strategy:
+ return retry_strategy.make_retrying_call(
+ self.base_client.call_api,
+ resource_path=resource_path,
+ method=method,
+ query_params=query_params,
+ header_params=header_params,
+ response_type="SdkLanguageTypeCollection")
+ else:
+ return self.base_client.call_api(
+ resource_path=resource_path,
+ method=method,
+ query_params=query_params,
+ header_params=header_params,
+ response_type="SdkLanguageTypeCollection")
+
+ def list_sdks(self, **kwargs):
+ """
+ Returns list of generated SDKs.
+
+
+ :param str sdk_id: (optional)
+ The ocid of the SDK.
+
+ :param str display_name: (optional)
+ A user-friendly name. Does not have to be unique, and it's changeable.
+
+ Example: `My new resource`
+
+ :param str lifecycle_state: (optional)
+ A filter to return only resources that match the given lifecycle state.
+
+ Example: `ACTIVE` or `DELETED`
+
+ Allowed values are: "CREATING", "ACTIVE", "FAILED", "DELETING", "DELETED"
+
+ :param int limit: (optional)
+ The maximum number of items to return.
+
+ :param str page: (optional)
+ The page token representing the page at which to start retrieving results. This is usually retrieved from a previous list call.
+
+ :param str sort_order: (optional)
+ The sort order to use, either 'asc' or 'desc'. The default order depends on the sortBy value.
+
+ Allowed values are: "ASC", "DESC"
+
+ :param str sort_by: (optional)
+ The field to sort by. You can provide one sort order (`sortOrder`).
+ Default order for `timeCreated` is descending. Default order for
+ `displayName` is ascending. The `displayName` sort order is case
+ sensitive.
+
+ Allowed values are: "timeCreated", "displayName"
+
+ :param str api_id: (optional)
+ The ocid of the API.
+
+ :param str opc_request_id: (optional)
+ The client request id for tracing.
+
+ :param obj retry_strategy: (optional)
+ A retry strategy to apply to this specific operation/call. This will override any retry strategy set at the client-level.
+
+ This should be one of the strategies available in the :py:mod:`~oci.retry` module. A convenience :py:data:`~oci.retry.DEFAULT_RETRY_STRATEGY`
+ is also available. The specifics of the default retry strategy are described `here `__.
+
+ To have this operation explicitly not perform any retries, pass an instance of :py:class:`~oci.retry.NoneRetryStrategy`.
+
+ :return: A :class:`~oci.response.Response` object with data of type :class:`~oci.apigateway.models.SdkCollection`
+ :rtype: :class:`~oci.response.Response`
+
+ :example:
+ Click `here `__ to see an example of how to use list_sdks API.
+ """
+ resource_path = "/sdks"
+ method = "GET"
+
+ # Don't accept unknown kwargs
+ expected_kwargs = [
+ "retry_strategy",
+ "sdk_id",
+ "display_name",
+ "lifecycle_state",
+ "limit",
+ "page",
+ "sort_order",
+ "sort_by",
+ "api_id",
+ "opc_request_id"
+ ]
+ extra_kwargs = [_key for _key in six.iterkeys(kwargs) if _key not in expected_kwargs]
+ if extra_kwargs:
+ raise ValueError(
+ "list_sdks got unknown kwargs: {!r}".format(extra_kwargs))
+
+ if 'lifecycle_state' in kwargs:
+ lifecycle_state_allowed_values = ["CREATING", "ACTIVE", "FAILED", "DELETING", "DELETED"]
+ if kwargs['lifecycle_state'] not in lifecycle_state_allowed_values:
+ raise ValueError(
+ "Invalid value for `lifecycle_state`, must be one of {0}".format(lifecycle_state_allowed_values)
+ )
+
+ if 'sort_order' in kwargs:
+ sort_order_allowed_values = ["ASC", "DESC"]
+ if kwargs['sort_order'] not in sort_order_allowed_values:
+ raise ValueError(
+ "Invalid value for `sort_order`, must be one of {0}".format(sort_order_allowed_values)
+ )
+
+ if 'sort_by' in kwargs:
+ sort_by_allowed_values = ["timeCreated", "displayName"]
+ if kwargs['sort_by'] not in sort_by_allowed_values:
+ raise ValueError(
+ "Invalid value for `sort_by`, must be one of {0}".format(sort_by_allowed_values)
+ )
+
+ query_params = {
+ "sdkId": kwargs.get("sdk_id", missing),
+ "displayName": kwargs.get("display_name", missing),
+ "lifecycleState": kwargs.get("lifecycle_state", missing),
+ "limit": kwargs.get("limit", missing),
+ "page": kwargs.get("page", missing),
+ "sortOrder": kwargs.get("sort_order", missing),
+ "sortBy": kwargs.get("sort_by", missing),
+ "apiId": kwargs.get("api_id", missing)
+ }
+ query_params = {k: v for (k, v) in six.iteritems(query_params) if v is not missing and v is not None}
+
+ header_params = {
+ "accept": "application/json",
+ "content-type": "application/json",
+ "opc-request-id": kwargs.get("opc_request_id", missing)
+ }
+ header_params = {k: v for (k, v) in six.iteritems(header_params) if v is not missing and v is not None}
+
+ retry_strategy = self.retry_strategy
+ if kwargs.get('retry_strategy'):
+ retry_strategy = kwargs.get('retry_strategy')
+
+ if retry_strategy:
+ return retry_strategy.make_retrying_call(
+ self.base_client.call_api,
+ resource_path=resource_path,
+ method=method,
+ query_params=query_params,
+ header_params=header_params,
+ response_type="SdkCollection")
+ else:
+ return self.base_client.call_api(
+ resource_path=resource_path,
+ method=method,
+ query_params=query_params,
+ header_params=header_params,
+ response_type="SdkCollection")
+
def update_api(self, api_id, update_api_details, **kwargs):
"""
Updates the API with the given identifier.
@@ -1442,3 +1933,90 @@ def update_certificate(self, certificate_id, update_certificate_details, **kwarg
path_params=path_params,
header_params=header_params,
body=update_certificate_details)
+
+ def update_sdk(self, sdk_id, update_sdk_details, **kwargs):
+ """
+ Updates the SDK with the given identifier.
+
+
+ :param str sdk_id: (required)
+ The ocid of the SDK.
+
+ :param oci.apigateway.models.UpdateSdkDetails update_sdk_details: (required)
+ The information to be updated.
+
+ :param str if_match: (optional)
+ For optimistic concurrency control. In the PUT or DELETE call
+ for a resource, set the `if-match` parameter to the value of the
+ etag from a previous GET or POST response for that resource.
+ The resource will be updated or deleted only if the etag you
+ provide matches the resource's current etag value.
+
+ :param str opc_request_id: (optional)
+ The client request id for tracing.
+
+ :param obj retry_strategy: (optional)
+ A retry strategy to apply to this specific operation/call. This will override any retry strategy set at the client-level.
+
+ This should be one of the strategies available in the :py:mod:`~oci.retry` module. A convenience :py:data:`~oci.retry.DEFAULT_RETRY_STRATEGY`
+ is also available. The specifics of the default retry strategy are described `here `__.
+
+ To have this operation explicitly not perform any retries, pass an instance of :py:class:`~oci.retry.NoneRetryStrategy`.
+
+ :return: A :class:`~oci.response.Response` object with data of type None
+ :rtype: :class:`~oci.response.Response`
+
+ :example:
+ Click `here `__ to see an example of how to use update_sdk API.
+ """
+ resource_path = "/sdks/{sdkId}"
+ method = "PUT"
+
+ # Don't accept unknown kwargs
+ expected_kwargs = [
+ "retry_strategy",
+ "if_match",
+ "opc_request_id"
+ ]
+ extra_kwargs = [_key for _key in six.iterkeys(kwargs) if _key not in expected_kwargs]
+ if extra_kwargs:
+ raise ValueError(
+ "update_sdk got unknown kwargs: {!r}".format(extra_kwargs))
+
+ path_params = {
+ "sdkId": sdk_id
+ }
+
+ path_params = {k: v for (k, v) in six.iteritems(path_params) if v is not missing}
+
+ for (k, v) in six.iteritems(path_params):
+ if v is None or (isinstance(v, six.string_types) and len(v.strip()) == 0):
+ raise ValueError('Parameter {} cannot be None, whitespace or empty string'.format(k))
+
+ header_params = {
+ "accept": "application/json",
+ "content-type": "application/json",
+ "if-match": kwargs.get("if_match", missing),
+ "opc-request-id": kwargs.get("opc_request_id", missing)
+ }
+ header_params = {k: v for (k, v) in six.iteritems(header_params) if v is not missing and v is not None}
+
+ retry_strategy = self.retry_strategy
+ if kwargs.get('retry_strategy'):
+ retry_strategy = kwargs.get('retry_strategy')
+
+ if retry_strategy:
+ return 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=update_sdk_details)
+ else:
+ return self.base_client.call_api(
+ resource_path=resource_path,
+ method=method,
+ path_params=path_params,
+ header_params=header_params,
+ body=update_sdk_details)
diff --git a/src/oci/apigateway/api_gateway_client_composite_operations.py b/src/oci/apigateway/api_gateway_client_composite_operations.py
index ad78ddc25d..b9dafc9019 100644
--- a/src/oci/apigateway/api_gateway_client_composite_operations.py
+++ b/src/oci/apigateway/api_gateway_client_composite_operations.py
@@ -140,6 +140,44 @@ def create_certificate_and_wait_for_state(self, create_certificate_details, wait
except Exception as e:
raise oci.exceptions.CompositeOperationError(partial_results=[operation_result], cause=e)
+ def create_sdk_and_wait_for_state(self, create_sdk_details, wait_for_states=[], operation_kwargs={}, waiter_kwargs={}):
+ """
+ Calls :py:func:`~oci.apigateway.ApiGatewayClient.create_sdk` and waits for the :py:class:`~oci.apigateway.models.WorkRequest`
+ to enter the given state(s).
+
+ :param oci.apigateway.models.CreateSdkDetails create_sdk_details: (required)
+ Details for the new SDK.
+
+ :param list[str] wait_for_states:
+ An array of states to wait on. These should be valid values for :py:attr:`~oci.apigateway.models.WorkRequest.status`
+
+ :param dict operation_kwargs:
+ A dictionary of keyword arguments to pass to :py:func:`~oci.apigateway.ApiGatewayClient.create_sdk`
+
+ :param dict waiter_kwargs:
+ A dictionary of keyword arguments to pass to the :py:func:`oci.wait_until` function. For example, you could pass ``max_interval_seconds`` or ``max_interval_seconds``
+ as dictionary keys to modify how long the waiter function will wait between retries and the maximum amount of time it will wait
+ """
+ operation_result = self.client.create_sdk(create_sdk_details, **operation_kwargs)
+ if not wait_for_states:
+ return operation_result
+
+ lowered_wait_for_states = [w.lower() for w in wait_for_states]
+ wait_for_resource_id = operation_result.headers['opc-work-request-id']
+
+ try:
+ waiter_result = oci.wait_until(
+ self.client,
+ self.client.get_work_request(wait_for_resource_id),
+ evaluate_response=lambda r: getattr(r.data, 'status') and getattr(r.data, 'status').lower() in lowered_wait_for_states,
+ **waiter_kwargs
+ )
+ result_to_return = waiter_result
+
+ return result_to_return
+ except Exception as e:
+ raise oci.exceptions.CompositeOperationError(partial_results=[operation_result], cause=e)
+
def delete_api_and_wait_for_state(self, api_id, wait_for_states=[], operation_kwargs={}, waiter_kwargs={}):
"""
Calls :py:func:`~oci.apigateway.ApiGatewayClient.delete_api` and waits for the :py:class:`~oci.apigateway.models.WorkRequest`
@@ -232,6 +270,52 @@ def delete_certificate_and_wait_for_state(self, certificate_id, wait_for_states=
except Exception as e:
raise oci.exceptions.CompositeOperationError(partial_results=[operation_result], cause=e)
+ def delete_sdk_and_wait_for_state(self, sdk_id, wait_for_states=[], operation_kwargs={}, waiter_kwargs={}):
+ """
+ Calls :py:func:`~oci.apigateway.ApiGatewayClient.delete_sdk` and waits for the :py:class:`~oci.apigateway.models.WorkRequest`
+ to enter the given state(s).
+
+ :param str sdk_id: (required)
+ The ocid of the SDK.
+
+ :param list[str] wait_for_states:
+ An array of states to wait on. These should be valid values for :py:attr:`~oci.apigateway.models.WorkRequest.status`
+
+ :param dict operation_kwargs:
+ A dictionary of keyword arguments to pass to :py:func:`~oci.apigateway.ApiGatewayClient.delete_sdk`
+
+ :param dict waiter_kwargs:
+ A dictionary of keyword arguments to pass to the :py:func:`oci.wait_until` function. For example, you could pass ``max_interval_seconds`` or ``max_interval_seconds``
+ as dictionary keys to modify how long the waiter function will wait between retries and the maximum amount of time it will wait
+ """
+ operation_result = None
+ try:
+ operation_result = self.client.delete_sdk(sdk_id, **operation_kwargs)
+ except oci.exceptions.ServiceError as e:
+ if e.status == 404:
+ return WAIT_RESOURCE_NOT_FOUND
+ else:
+ raise e
+
+ if not wait_for_states:
+ return operation_result
+
+ lowered_wait_for_states = [w.lower() for w in wait_for_states]
+ wait_for_resource_id = operation_result.headers['opc-work-request-id']
+
+ try:
+ waiter_result = oci.wait_until(
+ self.client,
+ self.client.get_work_request(wait_for_resource_id),
+ evaluate_response=lambda r: getattr(r.data, 'status') and getattr(r.data, 'status').lower() in lowered_wait_for_states,
+ **waiter_kwargs
+ )
+ result_to_return = waiter_result
+
+ return result_to_return
+ except Exception as e:
+ raise oci.exceptions.CompositeOperationError(partial_results=[operation_result], cause=e)
+
def update_api_and_wait_for_state(self, api_id, update_api_details, wait_for_states=[], operation_kwargs={}, waiter_kwargs={}):
"""
Calls :py:func:`~oci.apigateway.ApiGatewayClient.update_api` and waits for the :py:class:`~oci.apigateway.models.WorkRequest`
diff --git a/src/oci/apigateway/models/__init__.py b/src/oci/apigateway/models/__init__.py
index 44ae9cfbb1..f76bcc9a3b 100644
--- a/src/oci/apigateway/models/__init__.py
+++ b/src/oci/apigateway/models/__init__.py
@@ -35,6 +35,7 @@
from .create_certificate_details import CreateCertificateDetails
from .create_deployment_details import CreateDeploymentDetails
from .create_gateway_details import CreateGatewayDetails
+from .create_sdk_details import CreateSdkDetails
from .custom_authentication_policy import CustomAuthenticationPolicy
from .deployment import Deployment
from .deployment_collection import DeploymentCollection
@@ -65,6 +66,14 @@
from .rename_query_parameter_policy import RenameQueryParameterPolicy
from .rename_query_parameter_policy_item import RenameQueryParameterPolicyItem
from .route_authorization_policy import RouteAuthorizationPolicy
+from .sdk import Sdk
+from .sdk_collection import SdkCollection
+from .sdk_language_optional_parameters import SdkLanguageOptionalParameters
+from .sdk_language_optional_parameters_allowed_value import SdkLanguageOptionalParametersAllowedValue
+from .sdk_language_type_collection import SdkLanguageTypeCollection
+from .sdk_language_type_summary import SdkLanguageTypeSummary
+from .sdk_language_types import SdkLanguageTypes
+from .sdk_summary import SdkSummary
from .set_header_policy import SetHeaderPolicy
from .set_header_policy_item import SetHeaderPolicyItem
from .set_query_parameter_policy import SetQueryParameterPolicy
@@ -76,6 +85,7 @@
from .update_certificate_details import UpdateCertificateDetails
from .update_deployment_details import UpdateDeploymentDetails
from .update_gateway_details import UpdateGatewayDetails
+from .update_sdk_details import UpdateSdkDetails
from .work_request import WorkRequest
from .work_request_collection import WorkRequestCollection
from .work_request_error import WorkRequestError
@@ -118,6 +128,7 @@
"CreateCertificateDetails": CreateCertificateDetails,
"CreateDeploymentDetails": CreateDeploymentDetails,
"CreateGatewayDetails": CreateGatewayDetails,
+ "CreateSdkDetails": CreateSdkDetails,
"CustomAuthenticationPolicy": CustomAuthenticationPolicy,
"Deployment": Deployment,
"DeploymentCollection": DeploymentCollection,
@@ -148,6 +159,14 @@
"RenameQueryParameterPolicy": RenameQueryParameterPolicy,
"RenameQueryParameterPolicyItem": RenameQueryParameterPolicyItem,
"RouteAuthorizationPolicy": RouteAuthorizationPolicy,
+ "Sdk": Sdk,
+ "SdkCollection": SdkCollection,
+ "SdkLanguageOptionalParameters": SdkLanguageOptionalParameters,
+ "SdkLanguageOptionalParametersAllowedValue": SdkLanguageOptionalParametersAllowedValue,
+ "SdkLanguageTypeCollection": SdkLanguageTypeCollection,
+ "SdkLanguageTypeSummary": SdkLanguageTypeSummary,
+ "SdkLanguageTypes": SdkLanguageTypes,
+ "SdkSummary": SdkSummary,
"SetHeaderPolicy": SetHeaderPolicy,
"SetHeaderPolicyItem": SetHeaderPolicyItem,
"SetQueryParameterPolicy": SetQueryParameterPolicy,
@@ -159,6 +178,7 @@
"UpdateCertificateDetails": UpdateCertificateDetails,
"UpdateDeploymentDetails": UpdateDeploymentDetails,
"UpdateGatewayDetails": UpdateGatewayDetails,
+ "UpdateSdkDetails": UpdateSdkDetails,
"WorkRequest": WorkRequest,
"WorkRequestCollection": WorkRequestCollection,
"WorkRequestError": WorkRequestError,
diff --git a/src/oci/apigateway/models/create_deployment_details.py b/src/oci/apigateway/models/create_deployment_details.py
index de65a48208..f9996e6650 100644
--- a/src/oci/apigateway/models/create_deployment_details.py
+++ b/src/oci/apigateway/models/create_deployment_details.py
@@ -200,7 +200,7 @@ def path_prefix(self, path_prefix):
@property
def specification(self):
"""
- **[Required]** Gets the specification of this CreateDeploymentDetails.
+ Gets the specification of this CreateDeploymentDetails.
:return: The specification of this CreateDeploymentDetails.
:rtype: oci.apigateway.models.ApiSpecification
diff --git a/src/oci/apigateway/models/create_sdk_details.py b/src/oci/apigateway/models/create_sdk_details.py
new file mode 100644
index 0000000000..81acab0bf6
--- /dev/null
+++ b/src/oci/apigateway/models/create_sdk_details.py
@@ -0,0 +1,265 @@
+# coding: utf-8
+# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
+# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+
+
+from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401
+from oci.decorators import init_model_state_from_kwargs
+
+
+@init_model_state_from_kwargs
+class CreateSdkDetails(object):
+ """
+ Information about the new SDK.
+ """
+
+ def __init__(self, **kwargs):
+ """
+ Initializes a new CreateSdkDetails object with values from keyword arguments.
+ The following keyword arguments are supported (corresponding to the getters/setters of this class):
+
+ :param display_name:
+ The value to assign to the display_name property of this CreateSdkDetails.
+ :type display_name: str
+
+ :param target_language:
+ The value to assign to the target_language property of this CreateSdkDetails.
+ :type target_language: str
+
+ :param api_id:
+ The value to assign to the api_id property of this CreateSdkDetails.
+ :type api_id: str
+
+ :param freeform_tags:
+ The value to assign to the freeform_tags property of this CreateSdkDetails.
+ :type freeform_tags: dict(str, str)
+
+ :param defined_tags:
+ The value to assign to the defined_tags property of this CreateSdkDetails.
+ :type defined_tags: dict(str, dict(str, object))
+
+ :param parameters:
+ The value to assign to the parameters property of this CreateSdkDetails.
+ :type parameters: dict(str, str)
+
+ """
+ self.swagger_types = {
+ 'display_name': 'str',
+ 'target_language': 'str',
+ 'api_id': 'str',
+ 'freeform_tags': 'dict(str, str)',
+ 'defined_tags': 'dict(str, dict(str, object))',
+ 'parameters': 'dict(str, str)'
+ }
+
+ self.attribute_map = {
+ 'display_name': 'displayName',
+ 'target_language': 'targetLanguage',
+ 'api_id': 'apiId',
+ 'freeform_tags': 'freeformTags',
+ 'defined_tags': 'definedTags',
+ 'parameters': 'parameters'
+ }
+
+ self._display_name = None
+ self._target_language = None
+ self._api_id = None
+ self._freeform_tags = None
+ self._defined_tags = None
+ self._parameters = None
+
+ @property
+ def display_name(self):
+ """
+ Gets the display_name of this CreateSdkDetails.
+ A user-friendly name. Does not have to be unique, and it's changeable.
+ Avoid entering confidential information.
+
+ Example: `My new resource`
+
+
+ :return: The display_name of this CreateSdkDetails.
+ :rtype: str
+ """
+ return self._display_name
+
+ @display_name.setter
+ def display_name(self, display_name):
+ """
+ Sets the display_name of this CreateSdkDetails.
+ A user-friendly name. Does not have to be unique, and it's changeable.
+ Avoid entering confidential information.
+
+ Example: `My new resource`
+
+
+ :param display_name: The display_name of this CreateSdkDetails.
+ :type: str
+ """
+ self._display_name = display_name
+
+ @property
+ def target_language(self):
+ """
+ **[Required]** Gets the target_language of this CreateSdkDetails.
+ The string representing the target programming language for generating the SDK.
+
+
+ :return: The target_language of this CreateSdkDetails.
+ :rtype: str
+ """
+ return self._target_language
+
+ @target_language.setter
+ def target_language(self, target_language):
+ """
+ Sets the target_language of this CreateSdkDetails.
+ The string representing the target programming language for generating the SDK.
+
+
+ :param target_language: The target_language of this CreateSdkDetails.
+ :type: str
+ """
+ self._target_language = target_language
+
+ @property
+ def api_id(self):
+ """
+ **[Required]** Gets the api_id of this CreateSdkDetails.
+ The `OCID`__ of API resource
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :return: The api_id of this CreateSdkDetails.
+ :rtype: str
+ """
+ return self._api_id
+
+ @api_id.setter
+ def api_id(self, api_id):
+ """
+ Sets the api_id of this CreateSdkDetails.
+ The `OCID`__ of API resource
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :param api_id: The api_id of this CreateSdkDetails.
+ :type: str
+ """
+ self._api_id = api_id
+
+ @property
+ def freeform_tags(self):
+ """
+ Gets the freeform_tags of this CreateSdkDetails.
+ Free-form tags for this resource. Each tag is a simple key-value pair
+ with no predefined name, type, or namespace. For more information, see
+ `Resource Tags`__.
+
+ Example: `{\"Department\": \"Finance\"}`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm
+
+
+ :return: The freeform_tags of this CreateSdkDetails.
+ :rtype: dict(str, str)
+ """
+ return self._freeform_tags
+
+ @freeform_tags.setter
+ def freeform_tags(self, freeform_tags):
+ """
+ Sets the freeform_tags of this CreateSdkDetails.
+ Free-form tags for this resource. Each tag is a simple key-value pair
+ with no predefined name, type, or namespace. For more information, see
+ `Resource Tags`__.
+
+ Example: `{\"Department\": \"Finance\"}`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm
+
+
+ :param freeform_tags: The freeform_tags of this CreateSdkDetails.
+ :type: dict(str, str)
+ """
+ self._freeform_tags = freeform_tags
+
+ @property
+ def defined_tags(self):
+ """
+ Gets the defined_tags of this CreateSdkDetails.
+ Defined tags for this resource. Each key is predefined and scoped to a
+ namespace. For more information, see
+ `Resource Tags`__.
+
+ Example: `{\"Operations\": {\"CostCenter\": \"42\"}}`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm
+
+
+ :return: The defined_tags of this CreateSdkDetails.
+ :rtype: dict(str, dict(str, object))
+ """
+ return self._defined_tags
+
+ @defined_tags.setter
+ def defined_tags(self, defined_tags):
+ """
+ Sets the defined_tags of this CreateSdkDetails.
+ Defined tags for this resource. Each key is predefined and scoped to a
+ namespace. For more information, see
+ `Resource Tags`__.
+
+ Example: `{\"Operations\": {\"CostCenter\": \"42\"}}`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm
+
+
+ :param defined_tags: The defined_tags of this CreateSdkDetails.
+ :type: dict(str, dict(str, object))
+ """
+ self._defined_tags = defined_tags
+
+ @property
+ def parameters(self):
+ """
+ Gets the parameters of this CreateSdkDetails.
+ Additional optional configurations that can be passed to generate SDK Api.
+ The applicable parameters are listed under \"parameters\" when \"/sdkLanguageTypes\" is called.
+
+ Example: `{\"configName\": \"configValue\"}`
+
+
+ :return: The parameters of this CreateSdkDetails.
+ :rtype: dict(str, str)
+ """
+ return self._parameters
+
+ @parameters.setter
+ def parameters(self, parameters):
+ """
+ Sets the parameters of this CreateSdkDetails.
+ Additional optional configurations that can be passed to generate SDK Api.
+ The applicable parameters are listed under \"parameters\" when \"/sdkLanguageTypes\" is called.
+
+ Example: `{\"configName\": \"configValue\"}`
+
+
+ :param parameters: The parameters of this CreateSdkDetails.
+ :type: dict(str, str)
+ """
+ self._parameters = parameters
+
+ def __repr__(self):
+ return formatted_flat_dict(self)
+
+ def __eq__(self, other):
+ if other is None:
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not self == other
diff --git a/src/oci/apigateway/models/deployment.py b/src/oci/apigateway/models/deployment.py
index 667bfa9b5e..8e853de71e 100644
--- a/src/oci/apigateway/models/deployment.py
+++ b/src/oci/apigateway/models/deployment.py
@@ -324,7 +324,7 @@ def endpoint(self, endpoint):
@property
def specification(self):
"""
- **[Required]** Gets the specification of this Deployment.
+ Gets the specification of this Deployment.
:return: The specification of this Deployment.
:rtype: oci.apigateway.models.ApiSpecification
diff --git a/src/oci/apigateway/models/sdk.py b/src/oci/apigateway/models/sdk.py
new file mode 100644
index 0000000000..46ac30eb09
--- /dev/null
+++ b/src/oci/apigateway/models/sdk.py
@@ -0,0 +1,565 @@
+# coding: utf-8
+# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
+# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+
+
+from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401
+from oci.decorators import init_model_state_from_kwargs
+
+
+@init_model_state_from_kwargs
+class Sdk(object):
+ """
+ Information about the SDK.
+ """
+
+ #: A constant which can be used with the lifecycle_state property of a Sdk.
+ #: This constant has a value of "CREATING"
+ LIFECYCLE_STATE_CREATING = "CREATING"
+
+ #: A constant which can be used with the lifecycle_state property of a Sdk.
+ #: This constant has a value of "ACTIVE"
+ LIFECYCLE_STATE_ACTIVE = "ACTIVE"
+
+ #: A constant which can be used with the lifecycle_state property of a Sdk.
+ #: This constant has a value of "FAILED"
+ LIFECYCLE_STATE_FAILED = "FAILED"
+
+ #: A constant which can be used with the lifecycle_state property of a Sdk.
+ #: This constant has a value of "DELETING"
+ LIFECYCLE_STATE_DELETING = "DELETING"
+
+ #: A constant which can be used with the lifecycle_state property of a Sdk.
+ #: This constant has a value of "DELETED"
+ LIFECYCLE_STATE_DELETED = "DELETED"
+
+ def __init__(self, **kwargs):
+ """
+ Initializes a new Sdk object with values from keyword arguments.
+ The following keyword arguments are supported (corresponding to the getters/setters of this class):
+
+ :param id:
+ The value to assign to the id property of this Sdk.
+ :type id: str
+
+ :param api_id:
+ The value to assign to the api_id property of this Sdk.
+ :type api_id: str
+
+ :param compartment_id:
+ The value to assign to the compartment_id property of this Sdk.
+ :type compartment_id: str
+
+ :param time_created:
+ The value to assign to the time_created property of this Sdk.
+ :type time_created: datetime
+
+ :param time_updated:
+ The value to assign to the time_updated property of this Sdk.
+ :type time_updated: datetime
+
+ :param display_name:
+ The value to assign to the display_name property of this Sdk.
+ :type display_name: str
+
+ :param target_language:
+ The value to assign to the target_language property of this Sdk.
+ :type target_language: str
+
+ :param artifact_url:
+ The value to assign to the artifact_url property of this Sdk.
+ :type artifact_url: str
+
+ :param time_artifact_url_expires_at:
+ The value to assign to the time_artifact_url_expires_at property of this Sdk.
+ :type time_artifact_url_expires_at: datetime
+
+ :param lifecycle_state:
+ The value to assign to the lifecycle_state property of this Sdk.
+ Allowed values for this property are: "CREATING", "ACTIVE", "FAILED", "DELETING", "DELETED", 'UNKNOWN_ENUM_VALUE'.
+ Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
+ :type lifecycle_state: str
+
+ :param lifecycle_details:
+ The value to assign to the lifecycle_details property of this Sdk.
+ :type lifecycle_details: str
+
+ :param freeform_tags:
+ The value to assign to the freeform_tags property of this Sdk.
+ :type freeform_tags: dict(str, str)
+
+ :param defined_tags:
+ The value to assign to the defined_tags property of this Sdk.
+ :type defined_tags: dict(str, dict(str, object))
+
+ :param parameters:
+ The value to assign to the parameters property of this Sdk.
+ :type parameters: dict(str, str)
+
+ """
+ self.swagger_types = {
+ 'id': 'str',
+ 'api_id': 'str',
+ 'compartment_id': 'str',
+ 'time_created': 'datetime',
+ 'time_updated': 'datetime',
+ 'display_name': 'str',
+ 'target_language': 'str',
+ 'artifact_url': 'str',
+ 'time_artifact_url_expires_at': 'datetime',
+ 'lifecycle_state': 'str',
+ 'lifecycle_details': 'str',
+ 'freeform_tags': 'dict(str, str)',
+ 'defined_tags': 'dict(str, dict(str, object))',
+ 'parameters': 'dict(str, str)'
+ }
+
+ self.attribute_map = {
+ 'id': 'id',
+ 'api_id': 'apiId',
+ 'compartment_id': 'compartmentId',
+ 'time_created': 'timeCreated',
+ 'time_updated': 'timeUpdated',
+ 'display_name': 'displayName',
+ 'target_language': 'targetLanguage',
+ 'artifact_url': 'artifactUrl',
+ 'time_artifact_url_expires_at': 'timeArtifactUrlExpiresAt',
+ 'lifecycle_state': 'lifecycleState',
+ 'lifecycle_details': 'lifecycleDetails',
+ 'freeform_tags': 'freeformTags',
+ 'defined_tags': 'definedTags',
+ 'parameters': 'parameters'
+ }
+
+ self._id = None
+ self._api_id = None
+ self._compartment_id = None
+ self._time_created = None
+ self._time_updated = None
+ self._display_name = None
+ self._target_language = None
+ self._artifact_url = None
+ self._time_artifact_url_expires_at = None
+ self._lifecycle_state = None
+ self._lifecycle_details = None
+ self._freeform_tags = None
+ self._defined_tags = None
+ self._parameters = None
+
+ @property
+ def id(self):
+ """
+ **[Required]** Gets the id of this Sdk.
+ The `OCID`__ of the resource.
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :return: The id of this Sdk.
+ :rtype: str
+ """
+ return self._id
+
+ @id.setter
+ def id(self, id):
+ """
+ Sets the id of this Sdk.
+ The `OCID`__ of the resource.
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :param id: The id of this Sdk.
+ :type: str
+ """
+ self._id = id
+
+ @property
+ def api_id(self):
+ """
+ **[Required]** Gets the api_id of this Sdk.
+ The `OCID`__ of API resource
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :return: The api_id of this Sdk.
+ :rtype: str
+ """
+ return self._api_id
+
+ @api_id.setter
+ def api_id(self, api_id):
+ """
+ Sets the api_id of this Sdk.
+ The `OCID`__ of API resource
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :param api_id: The api_id of this Sdk.
+ :type: str
+ """
+ self._api_id = api_id
+
+ @property
+ def compartment_id(self):
+ """
+ Gets the compartment_id of this Sdk.
+ The `OCID`__ of the compartment in which the
+ resource is created.
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :return: The compartment_id of this Sdk.
+ :rtype: str
+ """
+ return self._compartment_id
+
+ @compartment_id.setter
+ def compartment_id(self, compartment_id):
+ """
+ Sets the compartment_id of this Sdk.
+ The `OCID`__ of the compartment in which the
+ resource is created.
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :param compartment_id: The compartment_id of this Sdk.
+ :type: str
+ """
+ self._compartment_id = compartment_id
+
+ @property
+ def time_created(self):
+ """
+ Gets the time_created of this Sdk.
+ The time this resource was created. An RFC3339 formatted datetime string.
+
+
+ :return: The time_created of this Sdk.
+ :rtype: datetime
+ """
+ return self._time_created
+
+ @time_created.setter
+ def time_created(self, time_created):
+ """
+ Sets the time_created of this Sdk.
+ The time this resource was created. An RFC3339 formatted datetime string.
+
+
+ :param time_created: The time_created of this Sdk.
+ :type: datetime
+ """
+ self._time_created = time_created
+
+ @property
+ def time_updated(self):
+ """
+ Gets the time_updated of this Sdk.
+ The time this resource was last updated. An RFC3339 formatted datetime string.
+
+
+ :return: The time_updated of this Sdk.
+ :rtype: datetime
+ """
+ return self._time_updated
+
+ @time_updated.setter
+ def time_updated(self, time_updated):
+ """
+ Sets the time_updated of this Sdk.
+ The time this resource was last updated. An RFC3339 formatted datetime string.
+
+
+ :param time_updated: The time_updated of this Sdk.
+ :type: datetime
+ """
+ self._time_updated = time_updated
+
+ @property
+ def display_name(self):
+ """
+ **[Required]** Gets the display_name of this Sdk.
+ A user-friendly name. Does not have to be unique, and it's changeable.
+ Avoid entering confidential information.
+
+ Example: `My new resource`
+
+
+ :return: The display_name of this Sdk.
+ :rtype: str
+ """
+ return self._display_name
+
+ @display_name.setter
+ def display_name(self, display_name):
+ """
+ Sets the display_name of this Sdk.
+ A user-friendly name. Does not have to be unique, and it's changeable.
+ Avoid entering confidential information.
+
+ Example: `My new resource`
+
+
+ :param display_name: The display_name of this Sdk.
+ :type: str
+ """
+ self._display_name = display_name
+
+ @property
+ def target_language(self):
+ """
+ **[Required]** Gets the target_language of this Sdk.
+ The string representing the target programming language for generating the SDK.
+
+
+ :return: The target_language of this Sdk.
+ :rtype: str
+ """
+ return self._target_language
+
+ @target_language.setter
+ def target_language(self, target_language):
+ """
+ Sets the target_language of this Sdk.
+ The string representing the target programming language for generating the SDK.
+
+
+ :param target_language: The target_language of this Sdk.
+ :type: str
+ """
+ self._target_language = target_language
+
+ @property
+ def artifact_url(self):
+ """
+ Gets the artifact_url of this Sdk.
+ File location for generated SDK.
+
+
+ :return: The artifact_url of this Sdk.
+ :rtype: str
+ """
+ return self._artifact_url
+
+ @artifact_url.setter
+ def artifact_url(self, artifact_url):
+ """
+ Sets the artifact_url of this Sdk.
+ File location for generated SDK.
+
+
+ :param artifact_url: The artifact_url of this Sdk.
+ :type: str
+ """
+ self._artifact_url = artifact_url
+
+ @property
+ def time_artifact_url_expires_at(self):
+ """
+ Gets the time_artifact_url_expires_at of this Sdk.
+ Expiry of artifact url.
+
+
+ :return: The time_artifact_url_expires_at of this Sdk.
+ :rtype: datetime
+ """
+ return self._time_artifact_url_expires_at
+
+ @time_artifact_url_expires_at.setter
+ def time_artifact_url_expires_at(self, time_artifact_url_expires_at):
+ """
+ Sets the time_artifact_url_expires_at of this Sdk.
+ Expiry of artifact url.
+
+
+ :param time_artifact_url_expires_at: The time_artifact_url_expires_at of this Sdk.
+ :type: datetime
+ """
+ self._time_artifact_url_expires_at = time_artifact_url_expires_at
+
+ @property
+ def lifecycle_state(self):
+ """
+ Gets the lifecycle_state of this Sdk.
+ The current state of the SDK.
+ - The SDK will be in CREATING state if the SDK creation is in progress.
+ - The SDK will be in ACTIVE state if create is successful.
+ - The SDK will be in FAILED state if the create, or delete fails.
+ - The SDK will be in DELETING state if the deletion in in progress.
+ - The SDK will be in DELETED state if the delete is successful.
+
+ Allowed values for this property are: "CREATING", "ACTIVE", "FAILED", "DELETING", "DELETED", 'UNKNOWN_ENUM_VALUE'.
+ Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
+
+
+ :return: The lifecycle_state of this Sdk.
+ :rtype: str
+ """
+ return self._lifecycle_state
+
+ @lifecycle_state.setter
+ def lifecycle_state(self, lifecycle_state):
+ """
+ Sets the lifecycle_state of this Sdk.
+ The current state of the SDK.
+ - The SDK will be in CREATING state if the SDK creation is in progress.
+ - The SDK will be in ACTIVE state if create is successful.
+ - The SDK will be in FAILED state if the create, or delete fails.
+ - The SDK will be in DELETING state if the deletion in in progress.
+ - The SDK will be in DELETED state if the delete is successful.
+
+
+ :param lifecycle_state: The lifecycle_state of this Sdk.
+ :type: str
+ """
+ allowed_values = ["CREATING", "ACTIVE", "FAILED", "DELETING", "DELETED"]
+ if not value_allowed_none_or_none_sentinel(lifecycle_state, allowed_values):
+ lifecycle_state = 'UNKNOWN_ENUM_VALUE'
+ self._lifecycle_state = lifecycle_state
+
+ @property
+ def lifecycle_details(self):
+ """
+ Gets the lifecycle_details of this Sdk.
+ A message describing the current state in more detail.
+ For example, can be used to provide actionable information for a
+ resource in a Failed state.
+
+
+ :return: The lifecycle_details of this Sdk.
+ :rtype: str
+ """
+ return self._lifecycle_details
+
+ @lifecycle_details.setter
+ def lifecycle_details(self, lifecycle_details):
+ """
+ Sets the lifecycle_details of this Sdk.
+ A message describing the current state in more detail.
+ For example, can be used to provide actionable information for a
+ resource in a Failed state.
+
+
+ :param lifecycle_details: The lifecycle_details of this Sdk.
+ :type: str
+ """
+ self._lifecycle_details = lifecycle_details
+
+ @property
+ def freeform_tags(self):
+ """
+ Gets the freeform_tags of this Sdk.
+ Free-form tags for this resource. Each tag is a simple key-value pair
+ with no predefined name, type, or namespace. For more information, see
+ `Resource Tags`__.
+
+ Example: `{\"Department\": \"Finance\"}`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm
+
+
+ :return: The freeform_tags of this Sdk.
+ :rtype: dict(str, str)
+ """
+ return self._freeform_tags
+
+ @freeform_tags.setter
+ def freeform_tags(self, freeform_tags):
+ """
+ Sets the freeform_tags of this Sdk.
+ Free-form tags for this resource. Each tag is a simple key-value pair
+ with no predefined name, type, or namespace. For more information, see
+ `Resource Tags`__.
+
+ Example: `{\"Department\": \"Finance\"}`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm
+
+
+ :param freeform_tags: The freeform_tags of this Sdk.
+ :type: dict(str, str)
+ """
+ self._freeform_tags = freeform_tags
+
+ @property
+ def defined_tags(self):
+ """
+ Gets the defined_tags of this Sdk.
+ Defined tags for this resource. Each key is predefined and scoped to a
+ namespace. For more information, see
+ `Resource Tags`__.
+
+ Example: `{\"Operations\": {\"CostCenter\": \"42\"}}`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm
+
+
+ :return: The defined_tags of this Sdk.
+ :rtype: dict(str, dict(str, object))
+ """
+ return self._defined_tags
+
+ @defined_tags.setter
+ def defined_tags(self, defined_tags):
+ """
+ Sets the defined_tags of this Sdk.
+ Defined tags for this resource. Each key is predefined and scoped to a
+ namespace. For more information, see
+ `Resource Tags`__.
+
+ Example: `{\"Operations\": {\"CostCenter\": \"42\"}}`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm
+
+
+ :param defined_tags: The defined_tags of this Sdk.
+ :type: dict(str, dict(str, object))
+ """
+ self._defined_tags = defined_tags
+
+ @property
+ def parameters(self):
+ """
+ Gets the parameters of this Sdk.
+ Additional optional configurations passed.
+ The applicable config keys are listed under \"parameters\" when \"/sdkLanguageTypes\" is called.
+
+ Example: `{\"configName\": \"configValue\"}`
+
+
+ :return: The parameters of this Sdk.
+ :rtype: dict(str, str)
+ """
+ return self._parameters
+
+ @parameters.setter
+ def parameters(self, parameters):
+ """
+ Sets the parameters of this Sdk.
+ Additional optional configurations passed.
+ The applicable config keys are listed under \"parameters\" when \"/sdkLanguageTypes\" is called.
+
+ Example: `{\"configName\": \"configValue\"}`
+
+
+ :param parameters: The parameters of this Sdk.
+ :type: dict(str, str)
+ """
+ self._parameters = parameters
+
+ def __repr__(self):
+ return formatted_flat_dict(self)
+
+ def __eq__(self, other):
+ if other is None:
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not self == other
diff --git a/src/oci/apigateway/models/sdk_collection.py b/src/oci/apigateway/models/sdk_collection.py
new file mode 100644
index 0000000000..2f935435b5
--- /dev/null
+++ b/src/oci/apigateway/models/sdk_collection.py
@@ -0,0 +1,70 @@
+# coding: utf-8
+# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
+# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+
+
+from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401
+from oci.decorators import init_model_state_from_kwargs
+
+
+@init_model_state_from_kwargs
+class SdkCollection(object):
+ """
+ Collection of the existing SDKs.
+ """
+
+ def __init__(self, **kwargs):
+ """
+ Initializes a new SdkCollection object with values from keyword arguments.
+ The following keyword arguments are supported (corresponding to the getters/setters of this class):
+
+ :param items:
+ The value to assign to the items property of this SdkCollection.
+ :type items: list[oci.apigateway.models.SdkSummary]
+
+ """
+ self.swagger_types = {
+ 'items': 'list[SdkSummary]'
+ }
+
+ self.attribute_map = {
+ 'items': 'items'
+ }
+
+ self._items = None
+
+ @property
+ def items(self):
+ """
+ **[Required]** Gets the items of this SdkCollection.
+ SDK summaries.
+
+
+ :return: The items of this SdkCollection.
+ :rtype: list[oci.apigateway.models.SdkSummary]
+ """
+ return self._items
+
+ @items.setter
+ def items(self, items):
+ """
+ Sets the items of this SdkCollection.
+ SDK summaries.
+
+
+ :param items: The items of this SdkCollection.
+ :type: list[oci.apigateway.models.SdkSummary]
+ """
+ self._items = items
+
+ def __repr__(self):
+ return formatted_flat_dict(self)
+
+ def __eq__(self, other):
+ if other is None:
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not self == other
diff --git a/src/oci/apigateway/models/sdk_language_optional_parameters.py b/src/oci/apigateway/models/sdk_language_optional_parameters.py
new file mode 100644
index 0000000000..1c882b7551
--- /dev/null
+++ b/src/oci/apigateway/models/sdk_language_optional_parameters.py
@@ -0,0 +1,290 @@
+# coding: utf-8
+# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
+# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+
+
+from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401
+from oci.decorators import init_model_state_from_kwargs
+
+
+@init_model_state_from_kwargs
+class SdkLanguageOptionalParameters(object):
+ """
+ List of additional applicable parameters for any given target language.
+ """
+
+ #: A constant which can be used with the input_type property of a SdkLanguageOptionalParameters.
+ #: This constant has a value of "ENUM"
+ INPUT_TYPE_ENUM = "ENUM"
+
+ #: A constant which can be used with the input_type property of a SdkLanguageOptionalParameters.
+ #: This constant has a value of "EMAIL"
+ INPUT_TYPE_EMAIL = "EMAIL"
+
+ #: A constant which can be used with the input_type property of a SdkLanguageOptionalParameters.
+ #: This constant has a value of "URI"
+ INPUT_TYPE_URI = "URI"
+
+ #: A constant which can be used with the input_type property of a SdkLanguageOptionalParameters.
+ #: This constant has a value of "STRING"
+ INPUT_TYPE_STRING = "STRING"
+
+ def __init__(self, **kwargs):
+ """
+ Initializes a new SdkLanguageOptionalParameters object with values from keyword arguments.
+ The following keyword arguments are supported (corresponding to the getters/setters of this class):
+
+ :param param_name:
+ The value to assign to the param_name property of this SdkLanguageOptionalParameters.
+ :type param_name: str
+
+ :param display_name:
+ The value to assign to the display_name property of this SdkLanguageOptionalParameters.
+ :type display_name: str
+
+ :param description:
+ The value to assign to the description property of this SdkLanguageOptionalParameters.
+ :type description: str
+
+ :param is_required:
+ The value to assign to the is_required property of this SdkLanguageOptionalParameters.
+ :type is_required: bool
+
+ :param max_size:
+ The value to assign to the max_size property of this SdkLanguageOptionalParameters.
+ :type max_size: float
+
+ :param input_type:
+ The value to assign to the input_type property of this SdkLanguageOptionalParameters.
+ Allowed values for this property are: "ENUM", "EMAIL", "URI", "STRING", 'UNKNOWN_ENUM_VALUE'.
+ Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
+ :type input_type: str
+
+ :param allowed_values:
+ The value to assign to the allowed_values property of this SdkLanguageOptionalParameters.
+ :type allowed_values: list[oci.apigateway.models.SdkLanguageOptionalParametersAllowedValue]
+
+ """
+ self.swagger_types = {
+ 'param_name': 'str',
+ 'display_name': 'str',
+ 'description': 'str',
+ 'is_required': 'bool',
+ 'max_size': 'float',
+ 'input_type': 'str',
+ 'allowed_values': 'list[SdkLanguageOptionalParametersAllowedValue]'
+ }
+
+ self.attribute_map = {
+ 'param_name': 'paramName',
+ 'display_name': 'displayName',
+ 'description': 'description',
+ 'is_required': 'isRequired',
+ 'max_size': 'maxSize',
+ 'input_type': 'inputType',
+ 'allowed_values': 'allowedValues'
+ }
+
+ self._param_name = None
+ self._display_name = None
+ self._description = None
+ self._is_required = None
+ self._max_size = None
+ self._input_type = None
+ self._allowed_values = None
+
+ @property
+ def param_name(self):
+ """
+ **[Required]** Gets the param_name of this SdkLanguageOptionalParameters.
+ Name of the parameter.
+
+
+ :return: The param_name of this SdkLanguageOptionalParameters.
+ :rtype: str
+ """
+ return self._param_name
+
+ @param_name.setter
+ def param_name(self, param_name):
+ """
+ Sets the param_name of this SdkLanguageOptionalParameters.
+ Name of the parameter.
+
+
+ :param param_name: The param_name of this SdkLanguageOptionalParameters.
+ :type: str
+ """
+ self._param_name = param_name
+
+ @property
+ def display_name(self):
+ """
+ Gets the display_name of this SdkLanguageOptionalParameters.
+ Display name of the parameter.
+
+
+ :return: The display_name of this SdkLanguageOptionalParameters.
+ :rtype: str
+ """
+ return self._display_name
+
+ @display_name.setter
+ def display_name(self, display_name):
+ """
+ Sets the display_name of this SdkLanguageOptionalParameters.
+ Display name of the parameter.
+
+
+ :param display_name: The display_name of this SdkLanguageOptionalParameters.
+ :type: str
+ """
+ self._display_name = display_name
+
+ @property
+ def description(self):
+ """
+ Gets the description of this SdkLanguageOptionalParameters.
+ Description for the parameter.
+
+
+ :return: The description of this SdkLanguageOptionalParameters.
+ :rtype: str
+ """
+ return self._description
+
+ @description.setter
+ def description(self, description):
+ """
+ Sets the description of this SdkLanguageOptionalParameters.
+ Description for the parameter.
+
+
+ :param description: The description of this SdkLanguageOptionalParameters.
+ :type: str
+ """
+ self._description = description
+
+ @property
+ def is_required(self):
+ """
+ Gets the is_required of this SdkLanguageOptionalParameters.
+ Information on whether the parameter is required or not.
+
+
+ :return: The is_required of this SdkLanguageOptionalParameters.
+ :rtype: bool
+ """
+ return self._is_required
+
+ @is_required.setter
+ def is_required(self, is_required):
+ """
+ Sets the is_required of this SdkLanguageOptionalParameters.
+ Information on whether the parameter is required or not.
+
+
+ :param is_required: The is_required of this SdkLanguageOptionalParameters.
+ :type: bool
+ """
+ self._is_required = is_required
+
+ @property
+ def max_size(self):
+ """
+ Gets the max_size of this SdkLanguageOptionalParameters.
+ Maximum size as input value for this parameter.
+
+
+ :return: The max_size of this SdkLanguageOptionalParameters.
+ :rtype: float
+ """
+ return self._max_size
+
+ @max_size.setter
+ def max_size(self, max_size):
+ """
+ Sets the max_size of this SdkLanguageOptionalParameters.
+ Maximum size as input value for this parameter.
+
+
+ :param max_size: The max_size of this SdkLanguageOptionalParameters.
+ :type: float
+ """
+ self._max_size = max_size
+
+ @property
+ def input_type(self):
+ """
+ Gets the input_type of this SdkLanguageOptionalParameters.
+ The input type for this param.
+ - Input type is ENUM when only specific list of input strings are allowed.
+ - Input type is EMAIL when input type is an email ID.
+ - Input type is URI when input type is an URI.
+ - Input type is STRING in all other cases.
+
+ Allowed values for this property are: "ENUM", "EMAIL", "URI", "STRING", 'UNKNOWN_ENUM_VALUE'.
+ Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
+
+
+ :return: The input_type of this SdkLanguageOptionalParameters.
+ :rtype: str
+ """
+ return self._input_type
+
+ @input_type.setter
+ def input_type(self, input_type):
+ """
+ Sets the input_type of this SdkLanguageOptionalParameters.
+ The input type for this param.
+ - Input type is ENUM when only specific list of input strings are allowed.
+ - Input type is EMAIL when input type is an email ID.
+ - Input type is URI when input type is an URI.
+ - Input type is STRING in all other cases.
+
+
+ :param input_type: The input_type of this SdkLanguageOptionalParameters.
+ :type: str
+ """
+ allowed_values = ["ENUM", "EMAIL", "URI", "STRING"]
+ if not value_allowed_none_or_none_sentinel(input_type, allowed_values):
+ input_type = 'UNKNOWN_ENUM_VALUE'
+ self._input_type = input_type
+
+ @property
+ def allowed_values(self):
+ """
+ Gets the allowed_values of this SdkLanguageOptionalParameters.
+ List of allowed input values.
+ Example: `[{\"name\": \"name1\", \"description\": \"description1\"}, ...]`
+
+
+ :return: The allowed_values of this SdkLanguageOptionalParameters.
+ :rtype: list[oci.apigateway.models.SdkLanguageOptionalParametersAllowedValue]
+ """
+ return self._allowed_values
+
+ @allowed_values.setter
+ def allowed_values(self, allowed_values):
+ """
+ Sets the allowed_values of this SdkLanguageOptionalParameters.
+ List of allowed input values.
+ Example: `[{\"name\": \"name1\", \"description\": \"description1\"}, ...]`
+
+
+ :param allowed_values: The allowed_values of this SdkLanguageOptionalParameters.
+ :type: list[oci.apigateway.models.SdkLanguageOptionalParametersAllowedValue]
+ """
+ self._allowed_values = allowed_values
+
+ def __repr__(self):
+ return formatted_flat_dict(self)
+
+ def __eq__(self, other):
+ if other is None:
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not self == other
diff --git a/src/oci/apigateway/models/sdk_language_optional_parameters_allowed_value.py b/src/oci/apigateway/models/sdk_language_optional_parameters_allowed_value.py
new file mode 100644
index 0000000000..9ea0c82da9
--- /dev/null
+++ b/src/oci/apigateway/models/sdk_language_optional_parameters_allowed_value.py
@@ -0,0 +1,101 @@
+# coding: utf-8
+# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
+# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+
+
+from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401
+from oci.decorators import init_model_state_from_kwargs
+
+
+@init_model_state_from_kwargs
+class SdkLanguageOptionalParametersAllowedValue(object):
+ """
+ Allowed value object.
+ """
+
+ def __init__(self, **kwargs):
+ """
+ Initializes a new SdkLanguageOptionalParametersAllowedValue object with values from keyword arguments.
+ The following keyword arguments are supported (corresponding to the getters/setters of this class):
+
+ :param name:
+ The value to assign to the name property of this SdkLanguageOptionalParametersAllowedValue.
+ :type name: str
+
+ :param description:
+ The value to assign to the description property of this SdkLanguageOptionalParametersAllowedValue.
+ :type description: str
+
+ """
+ self.swagger_types = {
+ 'name': 'str',
+ 'description': 'str'
+ }
+
+ self.attribute_map = {
+ 'name': 'name',
+ 'description': 'description'
+ }
+
+ self._name = None
+ self._description = None
+
+ @property
+ def name(self):
+ """
+ Gets the name of this SdkLanguageOptionalParametersAllowedValue.
+ Name of the allowed value.
+
+
+ :return: The name of this SdkLanguageOptionalParametersAllowedValue.
+ :rtype: str
+ """
+ return self._name
+
+ @name.setter
+ def name(self, name):
+ """
+ Sets the name of this SdkLanguageOptionalParametersAllowedValue.
+ Name of the allowed value.
+
+
+ :param name: The name of this SdkLanguageOptionalParametersAllowedValue.
+ :type: str
+ """
+ self._name = name
+
+ @property
+ def description(self):
+ """
+ Gets the description of this SdkLanguageOptionalParametersAllowedValue.
+ Description for the allowed value.
+
+
+ :return: The description of this SdkLanguageOptionalParametersAllowedValue.
+ :rtype: str
+ """
+ return self._description
+
+ @description.setter
+ def description(self, description):
+ """
+ Sets the description of this SdkLanguageOptionalParametersAllowedValue.
+ Description for the allowed value.
+
+
+ :param description: The description of this SdkLanguageOptionalParametersAllowedValue.
+ :type: str
+ """
+ self._description = description
+
+ def __repr__(self):
+ return formatted_flat_dict(self)
+
+ def __eq__(self, other):
+ if other is None:
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not self == other
diff --git a/src/oci/apigateway/models/sdk_language_type_collection.py b/src/oci/apigateway/models/sdk_language_type_collection.py
new file mode 100644
index 0000000000..5b809d791a
--- /dev/null
+++ b/src/oci/apigateway/models/sdk_language_type_collection.py
@@ -0,0 +1,70 @@
+# coding: utf-8
+# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
+# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+
+
+from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401
+from oci.decorators import init_model_state_from_kwargs
+
+
+@init_model_state_from_kwargs
+class SdkLanguageTypeCollection(object):
+ """
+ Collection of available SDK target languages.
+ """
+
+ def __init__(self, **kwargs):
+ """
+ Initializes a new SdkLanguageTypeCollection object with values from keyword arguments.
+ The following keyword arguments are supported (corresponding to the getters/setters of this class):
+
+ :param items:
+ The value to assign to the items property of this SdkLanguageTypeCollection.
+ :type items: list[oci.apigateway.models.SdkLanguageTypeSummary]
+
+ """
+ self.swagger_types = {
+ 'items': 'list[SdkLanguageTypeSummary]'
+ }
+
+ self.attribute_map = {
+ 'items': 'items'
+ }
+
+ self._items = None
+
+ @property
+ def items(self):
+ """
+ **[Required]** Gets the items of this SdkLanguageTypeCollection.
+ SDK target language details.
+
+
+ :return: The items of this SdkLanguageTypeCollection.
+ :rtype: list[oci.apigateway.models.SdkLanguageTypeSummary]
+ """
+ return self._items
+
+ @items.setter
+ def items(self, items):
+ """
+ Sets the items of this SdkLanguageTypeCollection.
+ SDK target language details.
+
+
+ :param items: The items of this SdkLanguageTypeCollection.
+ :type: list[oci.apigateway.models.SdkLanguageTypeSummary]
+ """
+ self._items = items
+
+ def __repr__(self):
+ return formatted_flat_dict(self)
+
+ def __eq__(self, other):
+ if other is None:
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not self == other
diff --git a/src/oci/apigateway/models/sdk_language_type_summary.py b/src/oci/apigateway/models/sdk_language_type_summary.py
new file mode 100644
index 0000000000..aea0554c81
--- /dev/null
+++ b/src/oci/apigateway/models/sdk_language_type_summary.py
@@ -0,0 +1,194 @@
+# coding: utf-8
+# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
+# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+
+
+from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401
+from oci.decorators import init_model_state_from_kwargs
+
+
+@init_model_state_from_kwargs
+class SdkLanguageTypeSummary(object):
+ """
+ SDK target language details.
+ """
+
+ def __init__(self, **kwargs):
+ """
+ Initializes a new SdkLanguageTypeSummary object with values from keyword arguments.
+ The following keyword arguments are supported (corresponding to the getters/setters of this class):
+
+ :param name:
+ The value to assign to the name property of this SdkLanguageTypeSummary.
+ :type name: str
+
+ :param display_name:
+ The value to assign to the display_name property of this SdkLanguageTypeSummary.
+ :type display_name: str
+
+ :param version:
+ The value to assign to the version property of this SdkLanguageTypeSummary.
+ :type version: str
+
+ :param description:
+ The value to assign to the description property of this SdkLanguageTypeSummary.
+ :type description: str
+
+ :param parameters:
+ The value to assign to the parameters property of this SdkLanguageTypeSummary.
+ :type parameters: list[oci.apigateway.models.SdkLanguageOptionalParameters]
+
+ """
+ self.swagger_types = {
+ 'name': 'str',
+ 'display_name': 'str',
+ 'version': 'str',
+ 'description': 'str',
+ 'parameters': 'list[SdkLanguageOptionalParameters]'
+ }
+
+ self.attribute_map = {
+ 'name': 'name',
+ 'display_name': 'displayName',
+ 'version': 'version',
+ 'description': 'description',
+ 'parameters': 'parameters'
+ }
+
+ self._name = None
+ self._display_name = None
+ self._version = None
+ self._description = None
+ self._parameters = None
+
+ @property
+ def name(self):
+ """
+ **[Required]** Gets the name of this SdkLanguageTypeSummary.
+ Name of the programming language.
+
+
+ :return: The name of this SdkLanguageTypeSummary.
+ :rtype: str
+ """
+ return self._name
+
+ @name.setter
+ def name(self, name):
+ """
+ Sets the name of this SdkLanguageTypeSummary.
+ Name of the programming language.
+
+
+ :param name: The name of this SdkLanguageTypeSummary.
+ :type: str
+ """
+ self._name = name
+
+ @property
+ def display_name(self):
+ """
+ Gets the display_name of this SdkLanguageTypeSummary.
+ Display name of the target programming language.
+
+
+ :return: The display_name of this SdkLanguageTypeSummary.
+ :rtype: str
+ """
+ return self._display_name
+
+ @display_name.setter
+ def display_name(self, display_name):
+ """
+ Sets the display_name of this SdkLanguageTypeSummary.
+ Display name of the target programming language.
+
+
+ :param display_name: The display_name of this SdkLanguageTypeSummary.
+ :type: str
+ """
+ self._display_name = display_name
+
+ @property
+ def version(self):
+ """
+ **[Required]** Gets the version of this SdkLanguageTypeSummary.
+ Version string of the programming language defined in name.
+
+
+ :return: The version of this SdkLanguageTypeSummary.
+ :rtype: str
+ """
+ return self._version
+
+ @version.setter
+ def version(self, version):
+ """
+ Sets the version of this SdkLanguageTypeSummary.
+ Version string of the programming language defined in name.
+
+
+ :param version: The version of this SdkLanguageTypeSummary.
+ :type: str
+ """
+ self._version = version
+
+ @property
+ def description(self):
+ """
+ Gets the description of this SdkLanguageTypeSummary.
+ Additional details.
+
+
+ :return: The description of this SdkLanguageTypeSummary.
+ :rtype: str
+ """
+ return self._description
+
+ @description.setter
+ def description(self, description):
+ """
+ Sets the description of this SdkLanguageTypeSummary.
+ Additional details.
+
+
+ :param description: The description of this SdkLanguageTypeSummary.
+ :type: str
+ """
+ self._description = description
+
+ @property
+ def parameters(self):
+ """
+ Gets the parameters of this SdkLanguageTypeSummary.
+ List of optional configurations that can be used while generating SDK for the given target language.
+
+
+ :return: The parameters of this SdkLanguageTypeSummary.
+ :rtype: list[oci.apigateway.models.SdkLanguageOptionalParameters]
+ """
+ return self._parameters
+
+ @parameters.setter
+ def parameters(self, parameters):
+ """
+ Sets the parameters of this SdkLanguageTypeSummary.
+ List of optional configurations that can be used while generating SDK for the given target language.
+
+
+ :param parameters: The parameters of this SdkLanguageTypeSummary.
+ :type: list[oci.apigateway.models.SdkLanguageOptionalParameters]
+ """
+ self._parameters = parameters
+
+ def __repr__(self):
+ return formatted_flat_dict(self)
+
+ def __eq__(self, other):
+ if other is None:
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not self == other
diff --git a/src/oci/apigateway/models/sdk_language_types.py b/src/oci/apigateway/models/sdk_language_types.py
new file mode 100644
index 0000000000..495ae54c59
--- /dev/null
+++ b/src/oci/apigateway/models/sdk_language_types.py
@@ -0,0 +1,194 @@
+# coding: utf-8
+# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
+# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+
+
+from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401
+from oci.decorators import init_model_state_from_kwargs
+
+
+@init_model_state_from_kwargs
+class SdkLanguageTypes(object):
+ """
+ SDK target language details.
+ """
+
+ def __init__(self, **kwargs):
+ """
+ Initializes a new SdkLanguageTypes object with values from keyword arguments.
+ The following keyword arguments are supported (corresponding to the getters/setters of this class):
+
+ :param name:
+ The value to assign to the name property of this SdkLanguageTypes.
+ :type name: str
+
+ :param display_name:
+ The value to assign to the display_name property of this SdkLanguageTypes.
+ :type display_name: str
+
+ :param version:
+ The value to assign to the version property of this SdkLanguageTypes.
+ :type version: str
+
+ :param description:
+ The value to assign to the description property of this SdkLanguageTypes.
+ :type description: str
+
+ :param parameters:
+ The value to assign to the parameters property of this SdkLanguageTypes.
+ :type parameters: list[oci.apigateway.models.SdkLanguageOptionalParameters]
+
+ """
+ self.swagger_types = {
+ 'name': 'str',
+ 'display_name': 'str',
+ 'version': 'str',
+ 'description': 'str',
+ 'parameters': 'list[SdkLanguageOptionalParameters]'
+ }
+
+ self.attribute_map = {
+ 'name': 'name',
+ 'display_name': 'displayName',
+ 'version': 'version',
+ 'description': 'description',
+ 'parameters': 'parameters'
+ }
+
+ self._name = None
+ self._display_name = None
+ self._version = None
+ self._description = None
+ self._parameters = None
+
+ @property
+ def name(self):
+ """
+ **[Required]** Gets the name of this SdkLanguageTypes.
+ Name of the programming language.
+
+
+ :return: The name of this SdkLanguageTypes.
+ :rtype: str
+ """
+ return self._name
+
+ @name.setter
+ def name(self, name):
+ """
+ Sets the name of this SdkLanguageTypes.
+ Name of the programming language.
+
+
+ :param name: The name of this SdkLanguageTypes.
+ :type: str
+ """
+ self._name = name
+
+ @property
+ def display_name(self):
+ """
+ Gets the display_name of this SdkLanguageTypes.
+ Display name of the target programming language.
+
+
+ :return: The display_name of this SdkLanguageTypes.
+ :rtype: str
+ """
+ return self._display_name
+
+ @display_name.setter
+ def display_name(self, display_name):
+ """
+ Sets the display_name of this SdkLanguageTypes.
+ Display name of the target programming language.
+
+
+ :param display_name: The display_name of this SdkLanguageTypes.
+ :type: str
+ """
+ self._display_name = display_name
+
+ @property
+ def version(self):
+ """
+ **[Required]** Gets the version of this SdkLanguageTypes.
+ Version string of the programming language defined in name.
+
+
+ :return: The version of this SdkLanguageTypes.
+ :rtype: str
+ """
+ return self._version
+
+ @version.setter
+ def version(self, version):
+ """
+ Sets the version of this SdkLanguageTypes.
+ Version string of the programming language defined in name.
+
+
+ :param version: The version of this SdkLanguageTypes.
+ :type: str
+ """
+ self._version = version
+
+ @property
+ def description(self):
+ """
+ Gets the description of this SdkLanguageTypes.
+ Additional details.
+
+
+ :return: The description of this SdkLanguageTypes.
+ :rtype: str
+ """
+ return self._description
+
+ @description.setter
+ def description(self, description):
+ """
+ Sets the description of this SdkLanguageTypes.
+ Additional details.
+
+
+ :param description: The description of this SdkLanguageTypes.
+ :type: str
+ """
+ self._description = description
+
+ @property
+ def parameters(self):
+ """
+ Gets the parameters of this SdkLanguageTypes.
+ List of optional configurations that can be used while generating SDK for the given target language.
+
+
+ :return: The parameters of this SdkLanguageTypes.
+ :rtype: list[oci.apigateway.models.SdkLanguageOptionalParameters]
+ """
+ return self._parameters
+
+ @parameters.setter
+ def parameters(self, parameters):
+ """
+ Sets the parameters of this SdkLanguageTypes.
+ List of optional configurations that can be used while generating SDK for the given target language.
+
+
+ :param parameters: The parameters of this SdkLanguageTypes.
+ :type: list[oci.apigateway.models.SdkLanguageOptionalParameters]
+ """
+ self._parameters = parameters
+
+ def __repr__(self):
+ return formatted_flat_dict(self)
+
+ def __eq__(self, other):
+ if other is None:
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not self == other
diff --git a/src/oci/apigateway/models/sdk_summary.py b/src/oci/apigateway/models/sdk_summary.py
new file mode 100644
index 0000000000..b5e3f2b1db
--- /dev/null
+++ b/src/oci/apigateway/models/sdk_summary.py
@@ -0,0 +1,358 @@
+# coding: utf-8
+# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
+# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+
+
+from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401
+from oci.decorators import init_model_state_from_kwargs
+
+
+@init_model_state_from_kwargs
+class SdkSummary(object):
+ """
+ A summary of the SDK.
+ """
+
+ def __init__(self, **kwargs):
+ """
+ Initializes a new SdkSummary object with values from keyword arguments.
+ The following keyword arguments are supported (corresponding to the getters/setters of this class):
+
+ :param id:
+ The value to assign to the id property of this SdkSummary.
+ :type id: str
+
+ :param compartment_id:
+ The value to assign to the compartment_id property of this SdkSummary.
+ :type compartment_id: str
+
+ :param time_created:
+ The value to assign to the time_created property of this SdkSummary.
+ :type time_created: datetime
+
+ :param time_updated:
+ The value to assign to the time_updated property of this SdkSummary.
+ :type time_updated: datetime
+
+ :param display_name:
+ The value to assign to the display_name property of this SdkSummary.
+ :type display_name: str
+
+ :param target_language:
+ The value to assign to the target_language property of this SdkSummary.
+ :type target_language: str
+
+ :param lifecycle_state:
+ The value to assign to the lifecycle_state property of this SdkSummary.
+ :type lifecycle_state: str
+
+ :param freeform_tags:
+ The value to assign to the freeform_tags property of this SdkSummary.
+ :type freeform_tags: dict(str, str)
+
+ :param defined_tags:
+ The value to assign to the defined_tags property of this SdkSummary.
+ :type defined_tags: dict(str, dict(str, object))
+
+ """
+ self.swagger_types = {
+ 'id': 'str',
+ 'compartment_id': 'str',
+ 'time_created': 'datetime',
+ 'time_updated': 'datetime',
+ 'display_name': 'str',
+ 'target_language': 'str',
+ 'lifecycle_state': 'str',
+ 'freeform_tags': 'dict(str, str)',
+ 'defined_tags': 'dict(str, dict(str, object))'
+ }
+
+ self.attribute_map = {
+ 'id': 'id',
+ 'compartment_id': 'compartmentId',
+ 'time_created': 'timeCreated',
+ 'time_updated': 'timeUpdated',
+ 'display_name': 'displayName',
+ 'target_language': 'targetLanguage',
+ 'lifecycle_state': 'lifecycleState',
+ 'freeform_tags': 'freeformTags',
+ 'defined_tags': 'definedTags'
+ }
+
+ self._id = None
+ self._compartment_id = None
+ self._time_created = None
+ self._time_updated = None
+ self._display_name = None
+ self._target_language = None
+ self._lifecycle_state = None
+ self._freeform_tags = None
+ self._defined_tags = None
+
+ @property
+ def id(self):
+ """
+ **[Required]** Gets the id of this SdkSummary.
+ The `OCID`__ of the resource.
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :return: The id of this SdkSummary.
+ :rtype: str
+ """
+ return self._id
+
+ @id.setter
+ def id(self, id):
+ """
+ Sets the id of this SdkSummary.
+ The `OCID`__ of the resource.
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :param id: The id of this SdkSummary.
+ :type: str
+ """
+ self._id = id
+
+ @property
+ def compartment_id(self):
+ """
+ Gets the compartment_id of this SdkSummary.
+ The `OCID`__ of the compartment in which the
+ resource is created.
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :return: The compartment_id of this SdkSummary.
+ :rtype: str
+ """
+ return self._compartment_id
+
+ @compartment_id.setter
+ def compartment_id(self, compartment_id):
+ """
+ Sets the compartment_id of this SdkSummary.
+ The `OCID`__ of the compartment in which the
+ resource is created.
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :param compartment_id: The compartment_id of this SdkSummary.
+ :type: str
+ """
+ self._compartment_id = compartment_id
+
+ @property
+ def time_created(self):
+ """
+ **[Required]** Gets the time_created of this SdkSummary.
+ The time this resource was created. An RFC3339 formatted datetime string.
+
+
+ :return: The time_created of this SdkSummary.
+ :rtype: datetime
+ """
+ return self._time_created
+
+ @time_created.setter
+ def time_created(self, time_created):
+ """
+ Sets the time_created of this SdkSummary.
+ The time this resource was created. An RFC3339 formatted datetime string.
+
+
+ :param time_created: The time_created of this SdkSummary.
+ :type: datetime
+ """
+ self._time_created = time_created
+
+ @property
+ def time_updated(self):
+ """
+ Gets the time_updated of this SdkSummary.
+ The time this resource was last updated. An RFC3339 formatted datetime string.
+
+
+ :return: The time_updated of this SdkSummary.
+ :rtype: datetime
+ """
+ return self._time_updated
+
+ @time_updated.setter
+ def time_updated(self, time_updated):
+ """
+ Sets the time_updated of this SdkSummary.
+ The time this resource was last updated. An RFC3339 formatted datetime string.
+
+
+ :param time_updated: The time_updated of this SdkSummary.
+ :type: datetime
+ """
+ self._time_updated = time_updated
+
+ @property
+ def display_name(self):
+ """
+ **[Required]** Gets the display_name of this SdkSummary.
+ A user-friendly name. Does not have to be unique, and it's changeable.
+ Avoid entering confidential information.
+
+ Example: `My new resource`
+
+
+ :return: The display_name of this SdkSummary.
+ :rtype: str
+ """
+ return self._display_name
+
+ @display_name.setter
+ def display_name(self, display_name):
+ """
+ Sets the display_name of this SdkSummary.
+ A user-friendly name. Does not have to be unique, and it's changeable.
+ Avoid entering confidential information.
+
+ Example: `My new resource`
+
+
+ :param display_name: The display_name of this SdkSummary.
+ :type: str
+ """
+ self._display_name = display_name
+
+ @property
+ def target_language(self):
+ """
+ **[Required]** Gets the target_language of this SdkSummary.
+ The string representing the target programming language for generating the SDK.
+
+
+ :return: The target_language of this SdkSummary.
+ :rtype: str
+ """
+ return self._target_language
+
+ @target_language.setter
+ def target_language(self, target_language):
+ """
+ Sets the target_language of this SdkSummary.
+ The string representing the target programming language for generating the SDK.
+
+
+ :param target_language: The target_language of this SdkSummary.
+ :type: str
+ """
+ self._target_language = target_language
+
+ @property
+ def lifecycle_state(self):
+ """
+ Gets the lifecycle_state of this SdkSummary.
+ The current state of the SDK.
+
+
+ :return: The lifecycle_state of this SdkSummary.
+ :rtype: str
+ """
+ return self._lifecycle_state
+
+ @lifecycle_state.setter
+ def lifecycle_state(self, lifecycle_state):
+ """
+ Sets the lifecycle_state of this SdkSummary.
+ The current state of the SDK.
+
+
+ :param lifecycle_state: The lifecycle_state of this SdkSummary.
+ :type: str
+ """
+ self._lifecycle_state = lifecycle_state
+
+ @property
+ def freeform_tags(self):
+ """
+ Gets the freeform_tags of this SdkSummary.
+ Free-form tags for this resource. Each tag is a simple key-value pair
+ with no predefined name, type, or namespace. For more information, see
+ `Resource Tags`__.
+
+ Example: `{\"Department\": \"Finance\"}`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm
+
+
+ :return: The freeform_tags of this SdkSummary.
+ :rtype: dict(str, str)
+ """
+ return self._freeform_tags
+
+ @freeform_tags.setter
+ def freeform_tags(self, freeform_tags):
+ """
+ Sets the freeform_tags of this SdkSummary.
+ Free-form tags for this resource. Each tag is a simple key-value pair
+ with no predefined name, type, or namespace. For more information, see
+ `Resource Tags`__.
+
+ Example: `{\"Department\": \"Finance\"}`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm
+
+
+ :param freeform_tags: The freeform_tags of this SdkSummary.
+ :type: dict(str, str)
+ """
+ self._freeform_tags = freeform_tags
+
+ @property
+ def defined_tags(self):
+ """
+ Gets the defined_tags of this SdkSummary.
+ Defined tags for this resource. Each key is predefined and scoped to a
+ namespace. For more information, see
+ `Resource Tags`__.
+
+ Example: `{\"Operations\": {\"CostCenter\": \"42\"}}`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm
+
+
+ :return: The defined_tags of this SdkSummary.
+ :rtype: dict(str, dict(str, object))
+ """
+ return self._defined_tags
+
+ @defined_tags.setter
+ def defined_tags(self, defined_tags):
+ """
+ Sets the defined_tags of this SdkSummary.
+ Defined tags for this resource. Each key is predefined and scoped to a
+ namespace. For more information, see
+ `Resource Tags`__.
+
+ Example: `{\"Operations\": {\"CostCenter\": \"42\"}}`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm
+
+
+ :param defined_tags: The defined_tags of this SdkSummary.
+ :type: dict(str, dict(str, object))
+ """
+ self._defined_tags = defined_tags
+
+ def __repr__(self):
+ return formatted_flat_dict(self)
+
+ def __eq__(self, other):
+ if other is None:
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not self == other
diff --git a/src/oci/apigateway/models/update_sdk_details.py b/src/oci/apigateway/models/update_sdk_details.py
new file mode 100644
index 0000000000..9951351897
--- /dev/null
+++ b/src/oci/apigateway/models/update_sdk_details.py
@@ -0,0 +1,162 @@
+# coding: utf-8
+# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
+# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+
+
+from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401
+from oci.decorators import init_model_state_from_kwargs
+
+
+@init_model_state_from_kwargs
+class UpdateSdkDetails(object):
+ """
+ The information to be updated.
+ """
+
+ def __init__(self, **kwargs):
+ """
+ Initializes a new UpdateSdkDetails object with values from keyword arguments.
+ The following keyword arguments are supported (corresponding to the getters/setters of this class):
+
+ :param display_name:
+ The value to assign to the display_name property of this UpdateSdkDetails.
+ :type display_name: str
+
+ :param freeform_tags:
+ The value to assign to the freeform_tags property of this UpdateSdkDetails.
+ :type freeform_tags: dict(str, str)
+
+ :param defined_tags:
+ The value to assign to the defined_tags property of this UpdateSdkDetails.
+ :type defined_tags: dict(str, dict(str, object))
+
+ """
+ self.swagger_types = {
+ 'display_name': 'str',
+ 'freeform_tags': 'dict(str, str)',
+ 'defined_tags': 'dict(str, dict(str, object))'
+ }
+
+ self.attribute_map = {
+ 'display_name': 'displayName',
+ 'freeform_tags': 'freeformTags',
+ 'defined_tags': 'definedTags'
+ }
+
+ self._display_name = None
+ self._freeform_tags = None
+ self._defined_tags = None
+
+ @property
+ def display_name(self):
+ """
+ Gets the display_name of this UpdateSdkDetails.
+ A user-friendly name. Does not have to be unique, and it's changeable.
+ Avoid entering confidential information.
+
+ Example: `My new resource`
+
+
+ :return: The display_name of this UpdateSdkDetails.
+ :rtype: str
+ """
+ return self._display_name
+
+ @display_name.setter
+ def display_name(self, display_name):
+ """
+ Sets the display_name of this UpdateSdkDetails.
+ A user-friendly name. Does not have to be unique, and it's changeable.
+ Avoid entering confidential information.
+
+ Example: `My new resource`
+
+
+ :param display_name: The display_name of this UpdateSdkDetails.
+ :type: str
+ """
+ self._display_name = display_name
+
+ @property
+ def freeform_tags(self):
+ """
+ Gets the freeform_tags of this UpdateSdkDetails.
+ Free-form tags for this resource. Each tag is a simple key-value pair
+ with no predefined name, type, or namespace. For more information, see
+ `Resource Tags`__.
+
+ Example: `{\"Department\": \"Finance\"}`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm
+
+
+ :return: The freeform_tags of this UpdateSdkDetails.
+ :rtype: dict(str, str)
+ """
+ return self._freeform_tags
+
+ @freeform_tags.setter
+ def freeform_tags(self, freeform_tags):
+ """
+ Sets the freeform_tags of this UpdateSdkDetails.
+ Free-form tags for this resource. Each tag is a simple key-value pair
+ with no predefined name, type, or namespace. For more information, see
+ `Resource Tags`__.
+
+ Example: `{\"Department\": \"Finance\"}`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm
+
+
+ :param freeform_tags: The freeform_tags of this UpdateSdkDetails.
+ :type: dict(str, str)
+ """
+ self._freeform_tags = freeform_tags
+
+ @property
+ def defined_tags(self):
+ """
+ Gets the defined_tags of this UpdateSdkDetails.
+ Defined tags for this resource. Each key is predefined and scoped to a
+ namespace. For more information, see
+ `Resource Tags`__.
+
+ Example: `{\"Operations\": {\"CostCenter\": \"42\"}}`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm
+
+
+ :return: The defined_tags of this UpdateSdkDetails.
+ :rtype: dict(str, dict(str, object))
+ """
+ return self._defined_tags
+
+ @defined_tags.setter
+ def defined_tags(self, defined_tags):
+ """
+ Sets the defined_tags of this UpdateSdkDetails.
+ Defined tags for this resource. Each key is predefined and scoped to a
+ namespace. For more information, see
+ `Resource Tags`__.
+
+ Example: `{\"Operations\": {\"CostCenter\": \"42\"}}`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm
+
+
+ :param defined_tags: The defined_tags of this UpdateSdkDetails.
+ :type: dict(str, dict(str, object))
+ """
+ self._defined_tags = defined_tags
+
+ def __repr__(self):
+ return formatted_flat_dict(self)
+
+ def __eq__(self, other):
+ if other is None:
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not self == other
diff --git a/src/oci/apigateway/models/work_request.py b/src/oci/apigateway/models/work_request.py
index 08a1bfd846..7ac9a94ecb 100644
--- a/src/oci/apigateway/models/work_request.py
+++ b/src/oci/apigateway/models/work_request.py
@@ -65,6 +65,14 @@ class WorkRequest(object):
#: This constant has a value of "VALIDATE_API"
OPERATION_TYPE_VALIDATE_API = "VALIDATE_API"
+ #: A constant which can be used with the operation_type property of a WorkRequest.
+ #: This constant has a value of "CREATE_SDK"
+ OPERATION_TYPE_CREATE_SDK = "CREATE_SDK"
+
+ #: A constant which can be used with the operation_type property of a WorkRequest.
+ #: This constant has a value of "DELETE_SDK"
+ OPERATION_TYPE_DELETE_SDK = "DELETE_SDK"
+
#: A constant which can be used with the status property of a WorkRequest.
#: This constant has a value of "ACCEPTED"
STATUS_ACCEPTED = "ACCEPTED"
@@ -100,7 +108,7 @@ def __init__(self, **kwargs):
:param operation_type:
The value to assign to the operation_type property of this WorkRequest.
- Allowed values for this property are: "CREATE_GATEWAY", "UPDATE_GATEWAY", "DELETE_GATEWAY", "CREATE_DEPLOYMENT", "UPDATE_DEPLOYMENT", "DELETE_DEPLOYMENT", "CREATE_CERTIFICATE", "UPDATE_CERTIFICATE", "DELETE_CERTIFICATE", "CREATE_API", "UPDATE_API", "DELETE_API", "VALIDATE_API", 'UNKNOWN_ENUM_VALUE'.
+ Allowed values for this property are: "CREATE_GATEWAY", "UPDATE_GATEWAY", "DELETE_GATEWAY", "CREATE_DEPLOYMENT", "UPDATE_DEPLOYMENT", "DELETE_DEPLOYMENT", "CREATE_CERTIFICATE", "UPDATE_CERTIFICATE", "DELETE_CERTIFICATE", "CREATE_API", "UPDATE_API", "DELETE_API", "VALIDATE_API", "CREATE_SDK", "DELETE_SDK", 'UNKNOWN_ENUM_VALUE'.
Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
:type operation_type: str
@@ -203,7 +211,7 @@ def operation_type(self):
**[Required]** Gets the operation_type of this WorkRequest.
The type of the work request.
- Allowed values for this property are: "CREATE_GATEWAY", "UPDATE_GATEWAY", "DELETE_GATEWAY", "CREATE_DEPLOYMENT", "UPDATE_DEPLOYMENT", "DELETE_DEPLOYMENT", "CREATE_CERTIFICATE", "UPDATE_CERTIFICATE", "DELETE_CERTIFICATE", "CREATE_API", "UPDATE_API", "DELETE_API", "VALIDATE_API", 'UNKNOWN_ENUM_VALUE'.
+ Allowed values for this property are: "CREATE_GATEWAY", "UPDATE_GATEWAY", "DELETE_GATEWAY", "CREATE_DEPLOYMENT", "UPDATE_DEPLOYMENT", "DELETE_DEPLOYMENT", "CREATE_CERTIFICATE", "UPDATE_CERTIFICATE", "DELETE_CERTIFICATE", "CREATE_API", "UPDATE_API", "DELETE_API", "VALIDATE_API", "CREATE_SDK", "DELETE_SDK", 'UNKNOWN_ENUM_VALUE'.
Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
@@ -222,7 +230,7 @@ def operation_type(self, operation_type):
:param operation_type: The operation_type of this WorkRequest.
:type: str
"""
- allowed_values = ["CREATE_GATEWAY", "UPDATE_GATEWAY", "DELETE_GATEWAY", "CREATE_DEPLOYMENT", "UPDATE_DEPLOYMENT", "DELETE_DEPLOYMENT", "CREATE_CERTIFICATE", "UPDATE_CERTIFICATE", "DELETE_CERTIFICATE", "CREATE_API", "UPDATE_API", "DELETE_API", "VALIDATE_API"]
+ allowed_values = ["CREATE_GATEWAY", "UPDATE_GATEWAY", "DELETE_GATEWAY", "CREATE_DEPLOYMENT", "UPDATE_DEPLOYMENT", "DELETE_DEPLOYMENT", "CREATE_CERTIFICATE", "UPDATE_CERTIFICATE", "DELETE_CERTIFICATE", "CREATE_API", "UPDATE_API", "DELETE_API", "VALIDATE_API", "CREATE_SDK", "DELETE_SDK"]
if not value_allowed_none_or_none_sentinel(operation_type, allowed_values):
operation_type = 'UNKNOWN_ENUM_VALUE'
self._operation_type = operation_type
diff --git a/src/oci/application_migration/models/__init__.py b/src/oci/application_migration/models/__init__.py
index bbc6c1aa17..82494b1d98 100644
--- a/src/oci/application_migration/models/__init__.py
+++ b/src/oci/application_migration/models/__init__.py
@@ -20,6 +20,7 @@
from .occ_authorization_details import OccAuthorizationDetails
from .occ_source_details import OccSourceDetails
from .ocic_authorization_details import OcicAuthorizationDetails
+from .ocic_authorization_token_details import OcicAuthorizationTokenDetails
from .ocic_source_details import OcicSourceDetails
from .oic_discovery_details import OicDiscoveryDetails
from .pcs_discovery_details import PcsDiscoveryDetails
@@ -56,6 +57,7 @@
"OccAuthorizationDetails": OccAuthorizationDetails,
"OccSourceDetails": OccSourceDetails,
"OcicAuthorizationDetails": OcicAuthorizationDetails,
+ "OcicAuthorizationTokenDetails": OcicAuthorizationTokenDetails,
"OcicSourceDetails": OcicSourceDetails,
"OicDiscoveryDetails": OicDiscoveryDetails,
"PcsDiscoveryDetails": PcsDiscoveryDetails,
diff --git a/src/oci/application_migration/models/authorization_details.py b/src/oci/application_migration/models/authorization_details.py
index 5fb864347f..e9651e2f36 100644
--- a/src/oci/application_migration/models/authorization_details.py
+++ b/src/oci/application_migration/models/authorization_details.py
@@ -26,6 +26,10 @@ class AuthorizationDetails(object):
#: This constant has a value of "OCC"
TYPE_OCC = "OCC"
+ #: A constant which can be used with the type property of a AuthorizationDetails.
+ #: This constant has a value of "OCIC_IDCS"
+ TYPE_OCIC_IDCS = "OCIC_IDCS"
+
def __init__(self, **kwargs):
"""
Initializes a new AuthorizationDetails object with values from keyword arguments. This class has the following subclasses and if you are using this class as input
@@ -33,13 +37,14 @@ def __init__(self, **kwargs):
* :class:`~oci.application_migration.models.OccAuthorizationDetails`
* :class:`~oci.application_migration.models.InternalAuthorizationDetails`
+ * :class:`~oci.application_migration.models.OcicAuthorizationTokenDetails`
* :class:`~oci.application_migration.models.OcicAuthorizationDetails`
The following keyword arguments are supported (corresponding to the getters/setters of this class):
:param type:
The value to assign to the type property of this AuthorizationDetails.
- Allowed values for this property are: "OCIC", "INTERNAL_COMPUTE", "OCC"
+ Allowed values for this property are: "OCIC", "INTERNAL_COMPUTE", "OCC", "OCIC_IDCS"
:type type: str
"""
@@ -67,6 +72,9 @@ def get_subtype(object_dictionary):
if type == 'INTERNAL_COMPUTE':
return 'InternalAuthorizationDetails'
+ if type == 'OCIC_IDCS':
+ return 'OcicAuthorizationTokenDetails'
+
if type == 'OCIC':
return 'OcicAuthorizationDetails'
else:
@@ -78,7 +86,7 @@ def type(self):
**[Required]** Gets the type of this AuthorizationDetails.
Type of the source environment from which you are migrating applications to Oracle Cloud Infrastructure.
- Allowed values for this property are: "OCIC", "INTERNAL_COMPUTE", "OCC"
+ Allowed values for this property are: "OCIC", "INTERNAL_COMPUTE", "OCC", "OCIC_IDCS"
:return: The type of this AuthorizationDetails.
@@ -96,7 +104,7 @@ def type(self, type):
:param type: The type of this AuthorizationDetails.
:type: str
"""
- allowed_values = ["OCIC", "INTERNAL_COMPUTE", "OCC"]
+ allowed_values = ["OCIC", "INTERNAL_COMPUTE", "OCC", "OCIC_IDCS"]
if not value_allowed_none_or_none_sentinel(type, allowed_values):
raise ValueError(
"Invalid value for `type`, must be None or one of {0}"
diff --git a/src/oci/application_migration/models/create_migration_details.py b/src/oci/application_migration/models/create_migration_details.py
index 480ded72eb..46f8be8214 100644
--- a/src/oci/application_migration/models/create_migration_details.py
+++ b/src/oci/application_migration/models/create_migration_details.py
@@ -281,7 +281,7 @@ def pre_created_target_database_type(self):
"""
Gets the pre_created_target_database_type of this CreateMigrationDetails.
The pre-existing database type to be used in this migration. Currently, Application migration only supports Oracle Cloud
- Infrastrure databases and this option is currently available only for `JAVA_CLOUD_SERVICE` and `WEBLOGIC_CLOUD_SERVICE` target instance types.
+ Infrastructure databases and this option is currently available only for `JAVA_CLOUD_SERVICE` and `WEBLOGIC_CLOUD_SERVICE` target instance types.
Allowed values for this property are: "DATABASE_SYSTEM", "NOT_SET"
@@ -296,7 +296,7 @@ def pre_created_target_database_type(self, pre_created_target_database_type):
"""
Sets the pre_created_target_database_type of this CreateMigrationDetails.
The pre-existing database type to be used in this migration. Currently, Application migration only supports Oracle Cloud
- Infrastrure databases and this option is currently available only for `JAVA_CLOUD_SERVICE` and `WEBLOGIC_CLOUD_SERVICE` target instance types.
+ Infrastructure databases and this option is currently available only for `JAVA_CLOUD_SERVICE` and `WEBLOGIC_CLOUD_SERVICE` target instance types.
:param pre_created_target_database_type: The pre_created_target_database_type of this CreateMigrationDetails.
diff --git a/src/oci/application_migration/models/internal_authorization_details.py b/src/oci/application_migration/models/internal_authorization_details.py
index dcf945c4bc..8f12ec505e 100644
--- a/src/oci/application_migration/models/internal_authorization_details.py
+++ b/src/oci/application_migration/models/internal_authorization_details.py
@@ -21,7 +21,7 @@ def __init__(self, **kwargs):
:param type:
The value to assign to the type property of this InternalAuthorizationDetails.
- Allowed values for this property are: "OCIC", "INTERNAL_COMPUTE", "OCC"
+ Allowed values for this property are: "OCIC", "INTERNAL_COMPUTE", "OCC", "OCIC_IDCS"
:type type: str
:param username:
diff --git a/src/oci/application_migration/models/internal_source_details.py b/src/oci/application_migration/models/internal_source_details.py
index 51c49111a5..7478b706f9 100644
--- a/src/oci/application_migration/models/internal_source_details.py
+++ b/src/oci/application_migration/models/internal_source_details.py
@@ -21,7 +21,7 @@ def __init__(self, **kwargs):
:param type:
The value to assign to the type property of this InternalSourceDetails.
- Allowed values for this property are: "OCIC", "INTERNAL_COMPUTE", "OCC"
+ Allowed values for this property are: "OCIC", "INTERNAL_COMPUTE", "OCC", "OCIC_IDCS"
:type type: str
:param account_name:
diff --git a/src/oci/application_migration/models/migration.py b/src/oci/application_migration/models/migration.py
index 3c157094a2..066c37799a 100644
--- a/src/oci/application_migration/models/migration.py
+++ b/src/oci/application_migration/models/migration.py
@@ -465,7 +465,7 @@ def pre_created_target_database_type(self):
"""
Gets the pre_created_target_database_type of this Migration.
The pre-existing database type to be used in this migration. Currently, Application migration only supports Oracle Cloud
- Infrastrure databases and this option is currently available only for `JAVA_CLOUD_SERVICE` and `WEBLOGIC_CLOUD_SERVICE` target instance types.
+ Infrastructure databases and this option is currently available only for `JAVA_CLOUD_SERVICE` and `WEBLOGIC_CLOUD_SERVICE` target instance types.
Allowed values for this property are: "DATABASE_SYSTEM", "NOT_SET", 'UNKNOWN_ENUM_VALUE'.
Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
@@ -481,7 +481,7 @@ def pre_created_target_database_type(self, pre_created_target_database_type):
"""
Sets the pre_created_target_database_type of this Migration.
The pre-existing database type to be used in this migration. Currently, Application migration only supports Oracle Cloud
- Infrastrure databases and this option is currently available only for `JAVA_CLOUD_SERVICE` and `WEBLOGIC_CLOUD_SERVICE` target instance types.
+ Infrastructure databases and this option is currently available only for `JAVA_CLOUD_SERVICE` and `WEBLOGIC_CLOUD_SERVICE` target instance types.
:param pre_created_target_database_type: The pre_created_target_database_type of this Migration.
@@ -496,7 +496,7 @@ def pre_created_target_database_type(self, pre_created_target_database_type):
def is_selective_migration(self):
"""
Gets the is_selective_migration of this Migration.
- If set to `true`, Application Migration migrates the application resources selectively depending on the source.
+ If set to `true`, Application Migration migrates only the application resources that you specify. If set to `false`, Application Migration migrates the entire application. When you migrate the entire application, all the application resources are migrated to the target environment. You can selectively migrate resources only for the Oracle Integration Cloud and Oracle Integration Cloud Service applications.
:return: The is_selective_migration of this Migration.
@@ -508,7 +508,7 @@ def is_selective_migration(self):
def is_selective_migration(self, is_selective_migration):
"""
Sets the is_selective_migration of this Migration.
- If set to `true`, Application Migration migrates the application resources selectively depending on the source.
+ If set to `true`, Application Migration migrates only the application resources that you specify. If set to `false`, Application Migration migrates the entire application. When you migrate the entire application, all the application resources are migrated to the target environment. You can selectively migrate resources only for the Oracle Integration Cloud and Oracle Integration Cloud Service applications.
:param is_selective_migration: The is_selective_migration of this Migration.
diff --git a/src/oci/application_migration/models/occ_authorization_details.py b/src/oci/application_migration/models/occ_authorization_details.py
index 1fc6205a34..068f0a4fa3 100644
--- a/src/oci/application_migration/models/occ_authorization_details.py
+++ b/src/oci/application_migration/models/occ_authorization_details.py
@@ -10,7 +10,7 @@
@init_model_state_from_kwargs
class OccAuthorizationDetails(AuthorizationDetails):
"""
- Credentials to access Oracle Cloud @ Customer, which is the source environment from which you want to migrate the application.
+ Credentials to access Oracle Cloud@Customer, which is the source environment from which you want to migrate the application.
"""
def __init__(self, **kwargs):
@@ -21,7 +21,7 @@ def __init__(self, **kwargs):
:param type:
The value to assign to the type property of this OccAuthorizationDetails.
- Allowed values for this property are: "OCIC", "INTERNAL_COMPUTE", "OCC"
+ Allowed values for this property are: "OCIC", "INTERNAL_COMPUTE", "OCC", "OCIC_IDCS"
:type type: str
:param username:
@@ -54,7 +54,7 @@ def __init__(self, **kwargs):
def username(self):
"""
**[Required]** Gets the username of this OccAuthorizationDetails.
- User with Compute Operations role in Oracle Cloud @ Customer.
+ User with Compute Operations role in Oracle Cloud@Customer.
:return: The username of this OccAuthorizationDetails.
@@ -66,7 +66,7 @@ def username(self):
def username(self, username):
"""
Sets the username of this OccAuthorizationDetails.
- User with Compute Operations role in Oracle Cloud @ Customer.
+ User with Compute Operations role in Oracle Cloud@Customer.
:param username: The username of this OccAuthorizationDetails.
diff --git a/src/oci/application_migration/models/occ_source_details.py b/src/oci/application_migration/models/occ_source_details.py
index 78c705312b..5a22a7d6b6 100644
--- a/src/oci/application_migration/models/occ_source_details.py
+++ b/src/oci/application_migration/models/occ_source_details.py
@@ -10,7 +10,7 @@
@init_model_state_from_kwargs
class OccSourceDetails(SourceDetails):
"""
- Details about the Oracle Cloud @ Customer account, the source environment from which you want to migrate the application.
+ Details about the Oracle Cloud@Customer account, the source environment from which you want to migrate the application.
"""
def __init__(self, **kwargs):
@@ -21,7 +21,7 @@ def __init__(self, **kwargs):
:param type:
The value to assign to the type property of this OccSourceDetails.
- Allowed values for this property are: "OCIC", "INTERNAL_COMPUTE", "OCC"
+ Allowed values for this property are: "OCIC", "INTERNAL_COMPUTE", "OCC", "OCIC_IDCS"
:type type: str
:param compute_account:
@@ -47,8 +47,8 @@ def __init__(self, **kwargs):
def compute_account(self):
"""
**[Required]** Gets the compute_account of this OccSourceDetails.
- If you are using a Oracle Cloud @ Customer account with Identity Cloud Service (IDCS), enter the service instance ID.
- For example, if Compute-567890123 is the account name of your Oracle Cloud @ Customer Compute service entitlement,
+ If you are using an Oracle Cloud@Customer account with Identity Cloud Service (IDCS), enter the service instance ID.
+ For example, if Compute-567890123 is the account name of your Oracle Cloud@Customer Compute service entitlement,
then enter 567890123.
@@ -61,8 +61,8 @@ def compute_account(self):
def compute_account(self, compute_account):
"""
Sets the compute_account of this OccSourceDetails.
- If you are using a Oracle Cloud @ Customer account with Identity Cloud Service (IDCS), enter the service instance ID.
- For example, if Compute-567890123 is the account name of your Oracle Cloud @ Customer Compute service entitlement,
+ If you are using an Oracle Cloud@Customer account with Identity Cloud Service (IDCS), enter the service instance ID.
+ For example, if Compute-567890123 is the account name of your Oracle Cloud@Customer Compute service entitlement,
then enter 567890123.
diff --git a/src/oci/application_migration/models/ocic_authorization_details.py b/src/oci/application_migration/models/ocic_authorization_details.py
index 45f4a725c4..565f45cae9 100644
--- a/src/oci/application_migration/models/ocic_authorization_details.py
+++ b/src/oci/application_migration/models/ocic_authorization_details.py
@@ -21,7 +21,7 @@ def __init__(self, **kwargs):
:param type:
The value to assign to the type property of this OcicAuthorizationDetails.
- Allowed values for this property are: "OCIC", "INTERNAL_COMPUTE", "OCC"
+ Allowed values for this property are: "OCIC", "INTERNAL_COMPUTE", "OCC", "OCIC_IDCS"
:type type: str
:param username:
diff --git a/src/oci/application_migration/models/ocic_authorization_token_details.py b/src/oci/application_migration/models/ocic_authorization_token_details.py
new file mode 100644
index 0000000000..a7ce6ad605
--- /dev/null
+++ b/src/oci/application_migration/models/ocic_authorization_token_details.py
@@ -0,0 +1,111 @@
+# coding: utf-8
+# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
+# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+
+from .authorization_details import AuthorizationDetails
+from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401
+from oci.decorators import init_model_state_from_kwargs
+
+
+@init_model_state_from_kwargs
+class OcicAuthorizationTokenDetails(AuthorizationDetails):
+ """
+ Auth Token and endpoint to access Oracle Cloud Infrastructure - Classic, which is the source environment from which you want to migrate the application.
+ """
+
+ def __init__(self, **kwargs):
+ """
+ Initializes a new OcicAuthorizationTokenDetails object with values from keyword arguments. The default value of the :py:attr:`~oci.application_migration.models.OcicAuthorizationTokenDetails.type` attribute
+ of this class is ``OCIC_IDCS`` and it should not be changed.
+ The following keyword arguments are supported (corresponding to the getters/setters of this class):
+
+ :param type:
+ The value to assign to the type property of this OcicAuthorizationTokenDetails.
+ Allowed values for this property are: "OCIC", "INTERNAL_COMPUTE", "OCC", "OCIC_IDCS"
+ :type type: str
+
+ :param client_app_url:
+ The value to assign to the client_app_url property of this OcicAuthorizationTokenDetails.
+ :type client_app_url: str
+
+ :param access_token:
+ The value to assign to the access_token property of this OcicAuthorizationTokenDetails.
+ :type access_token: str
+
+ """
+ self.swagger_types = {
+ 'type': 'str',
+ 'client_app_url': 'str',
+ 'access_token': 'str'
+ }
+
+ self.attribute_map = {
+ 'type': 'type',
+ 'client_app_url': 'clientAppUrl',
+ 'access_token': 'accessToken'
+ }
+
+ self._type = None
+ self._client_app_url = None
+ self._access_token = None
+ self._type = 'OCIC_IDCS'
+
+ @property
+ def client_app_url(self):
+ """
+ **[Required]** Gets the client_app_url of this OcicAuthorizationTokenDetails.
+ AuthClient app url resource that the accesstoken is for.
+
+
+ :return: The client_app_url of this OcicAuthorizationTokenDetails.
+ :rtype: str
+ """
+ return self._client_app_url
+
+ @client_app_url.setter
+ def client_app_url(self, client_app_url):
+ """
+ Sets the client_app_url of this OcicAuthorizationTokenDetails.
+ AuthClient app url resource that the accesstoken is for.
+
+
+ :param client_app_url: The client_app_url of this OcicAuthorizationTokenDetails.
+ :type: str
+ """
+ self._client_app_url = client_app_url
+
+ @property
+ def access_token(self):
+ """
+ **[Required]** Gets the access_token of this OcicAuthorizationTokenDetails.
+ AccessToken to access the app endpoint.
+
+
+ :return: The access_token of this OcicAuthorizationTokenDetails.
+ :rtype: str
+ """
+ return self._access_token
+
+ @access_token.setter
+ def access_token(self, access_token):
+ """
+ Sets the access_token of this OcicAuthorizationTokenDetails.
+ AccessToken to access the app endpoint.
+
+
+ :param access_token: The access_token of this OcicAuthorizationTokenDetails.
+ :type: str
+ """
+ self._access_token = access_token
+
+ def __repr__(self):
+ return formatted_flat_dict(self)
+
+ def __eq__(self, other):
+ if other is None:
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not self == other
diff --git a/src/oci/application_migration/models/ocic_source_details.py b/src/oci/application_migration/models/ocic_source_details.py
index d30eafd263..f305a44f03 100644
--- a/src/oci/application_migration/models/ocic_source_details.py
+++ b/src/oci/application_migration/models/ocic_source_details.py
@@ -21,7 +21,7 @@ def __init__(self, **kwargs):
:param type:
The value to assign to the type property of this OcicSourceDetails.
- Allowed values for this property are: "OCIC", "INTERNAL_COMPUTE", "OCC"
+ Allowed values for this property are: "OCIC", "INTERNAL_COMPUTE", "OCC", "OCIC_IDCS"
:type type: str
:param region:
@@ -78,7 +78,7 @@ def region(self, region):
def compute_account(self):
"""
**[Required]** Gets the compute_account of this OcicSourceDetails.
- If you are using a Oracle Cloud Infrastructure - Classic account with Identity Cloud Service (IDCS), enter the service instance ID.
+ If you are using an Oracle Cloud Infrastructure - Classic account with Identity Cloud Service (IDCS), enter the service instance ID.
For example, if Compute-567890123 is the account name of your Oracle Cloud Infrastructure Classic Compute service entitlement,
then enter 567890123.
@@ -94,7 +94,7 @@ def compute_account(self):
def compute_account(self, compute_account):
"""
Sets the compute_account of this OcicSourceDetails.
- If you are using a Oracle Cloud Infrastructure - Classic account with Identity Cloud Service (IDCS), enter the service instance ID.
+ If you are using an Oracle Cloud Infrastructure - Classic account with Identity Cloud Service (IDCS), enter the service instance ID.
For example, if Compute-567890123 is the account name of your Oracle Cloud Infrastructure Classic Compute service entitlement,
then enter 567890123.
diff --git a/src/oci/application_migration/models/source_details.py b/src/oci/application_migration/models/source_details.py
index 51d2599061..f9e5825558 100644
--- a/src/oci/application_migration/models/source_details.py
+++ b/src/oci/application_migration/models/source_details.py
@@ -18,7 +18,7 @@ class SourceDetails(object):
Specify `INTERNAL_COMPUTE` if you have a traditional Oracle Cloud Infrastructure - Classic account and you want to migrate Oracle
Process Cloud Service or Oracle Integration Cloud Service applications.
- Specify `OCC` if you have an Oracle Cloud @ Customer account.
+ Specify `OCC` if you want to migrate applications from Oracle Cloud@Customer.
"""
#: A constant which can be used with the type property of a SourceDetails.
@@ -33,6 +33,10 @@ class SourceDetails(object):
#: This constant has a value of "OCC"
TYPE_OCC = "OCC"
+ #: A constant which can be used with the type property of a SourceDetails.
+ #: This constant has a value of "OCIC_IDCS"
+ TYPE_OCIC_IDCS = "OCIC_IDCS"
+
def __init__(self, **kwargs):
"""
Initializes a new SourceDetails object with values from keyword arguments. This class has the following subclasses and if you are using this class as input
@@ -46,7 +50,7 @@ def __init__(self, **kwargs):
:param type:
The value to assign to the type property of this SourceDetails.
- Allowed values for this property are: "OCIC", "INTERNAL_COMPUTE", "OCC", 'UNKNOWN_ENUM_VALUE'.
+ Allowed values for this property are: "OCIC", "INTERNAL_COMPUTE", "OCC", "OCIC_IDCS", 'UNKNOWN_ENUM_VALUE'.
Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
:type type: str
@@ -86,7 +90,7 @@ def type(self):
**[Required]** Gets the type of this SourceDetails.
The type of source environment.
- Allowed values for this property are: "OCIC", "INTERNAL_COMPUTE", "OCC", 'UNKNOWN_ENUM_VALUE'.
+ Allowed values for this property are: "OCIC", "INTERNAL_COMPUTE", "OCC", "OCIC_IDCS", 'UNKNOWN_ENUM_VALUE'.
Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
@@ -105,7 +109,7 @@ def type(self, type):
:param type: The type of this SourceDetails.
:type: str
"""
- allowed_values = ["OCIC", "INTERNAL_COMPUTE", "OCC"]
+ allowed_values = ["OCIC", "INTERNAL_COMPUTE", "OCC", "OCIC_IDCS"]
if not value_allowed_none_or_none_sentinel(type, allowed_values):
type = 'UNKNOWN_ENUM_VALUE'
self._type = type
diff --git a/src/oci/application_migration/models/source_summary.py b/src/oci/application_migration/models/source_summary.py
index 2f00361761..57cbdb03d7 100644
--- a/src/oci/application_migration/models/source_summary.py
+++ b/src/oci/application_migration/models/source_summary.py
@@ -25,6 +25,10 @@ class SourceSummary(object):
#: This constant has a value of "OCC"
TYPE_OCC = "OCC"
+ #: A constant which can be used with the type property of a SourceSummary.
+ #: This constant has a value of "OCIC_IDCS"
+ TYPE_OCIC_IDCS = "OCIC_IDCS"
+
#: A constant which can be used with the lifecycle_state property of a SourceSummary.
#: This constant has a value of "CREATING"
LIFECYCLE_STATE_CREATING = "CREATING"
@@ -60,7 +64,7 @@ def __init__(self, **kwargs):
:param type:
The value to assign to the type property of this SourceSummary.
- Allowed values for this property are: "OCIC", "INTERNAL_COMPUTE", "OCC", 'UNKNOWN_ENUM_VALUE'.
+ Allowed values for this property are: "OCIC", "INTERNAL_COMPUTE", "OCC", "OCIC_IDCS", 'UNKNOWN_ENUM_VALUE'.
Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
:type type: str
@@ -170,7 +174,7 @@ def type(self):
Gets the type of this SourceSummary.
The type of source environment.
- Allowed values for this property are: "OCIC", "INTERNAL_COMPUTE", "OCC", 'UNKNOWN_ENUM_VALUE'.
+ Allowed values for this property are: "OCIC", "INTERNAL_COMPUTE", "OCC", "OCIC_IDCS", 'UNKNOWN_ENUM_VALUE'.
Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
@@ -189,7 +193,7 @@ def type(self, type):
:param type: The type of this SourceSummary.
:type: str
"""
- allowed_values = ["OCIC", "INTERNAL_COMPUTE", "OCC"]
+ allowed_values = ["OCIC", "INTERNAL_COMPUTE", "OCC", "OCIC_IDCS"]
if not value_allowed_none_or_none_sentinel(type, allowed_values):
type = 'UNKNOWN_ENUM_VALUE'
self._type = type
diff --git a/src/oci/artifacts/artifacts_client.py b/src/oci/artifacts/artifacts_client.py
index 55599c3dc8..60c8f0f382 100644
--- a/src/oci/artifacts/artifacts_client.py
+++ b/src/oci/artifacts/artifacts_client.py
@@ -191,6 +191,90 @@ def change_container_repository_compartment(self, repository_id, change_containe
header_params=header_params,
body=change_container_repository_compartment_details)
+ def create_container_image_signature(self, create_container_image_signature_details, **kwargs):
+ """
+ Upload a signature to an image.
+
+
+ :param oci.artifacts.models.CreateContainerImageSignatureDetails create_container_image_signature_details: (required)
+ Upload container image signature details
+
+ :param str opc_request_id: (optional)
+ Unique identifier for the request.
+ If you need to contact Oracle about a particular request, please provide the request ID.
+
+ :param str opc_retry_token: (optional)
+ A token that uniquely identifies a request so it can be retried in case of a timeout or
+ server error without risk of executing that same action again. Retry tokens expire after 24
+ hours, but can be invalidated before then due to conflicting operations (for example, if a resource
+ has been deleted and purged from the system, then a retry of the original creation request
+ may be rejected).
+
+ :param str if_match: (optional)
+ For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match`
+ parameter to the value of the etag from a previous GET or POST response for that resource. The resource
+ will be updated or deleted only if the etag you provide matches the resource's current etag value.
+
+ :param obj retry_strategy: (optional)
+ A retry strategy to apply to this specific operation/call. This will override any retry strategy set at the client-level.
+
+ This should be one of the strategies available in the :py:mod:`~oci.retry` module. A convenience :py:data:`~oci.retry.DEFAULT_RETRY_STRATEGY`
+ is also available. The specifics of the default retry strategy are described `here `__.
+
+ To have this operation explicitly not perform any retries, pass an instance of :py:class:`~oci.retry.NoneRetryStrategy`.
+
+ :return: A :class:`~oci.response.Response` object with data of type :class:`~oci.artifacts.models.ContainerImageSignature`
+ :rtype: :class:`~oci.response.Response`
+
+ :example:
+ Click `here `__ to see an example of how to use create_container_image_signature API.
+ """
+ resource_path = "/container/imageSignatures"
+ method = "POST"
+
+ # Don't accept unknown kwargs
+ expected_kwargs = [
+ "retry_strategy",
+ "opc_request_id",
+ "opc_retry_token",
+ "if_match"
+ ]
+ extra_kwargs = [_key for _key in six.iterkeys(kwargs) if _key not in expected_kwargs]
+ if extra_kwargs:
+ raise ValueError(
+ "create_container_image_signature got unknown kwargs: {!r}".format(extra_kwargs))
+
+ header_params = {
+ "accept": "application/json",
+ "content-type": "application/json",
+ "opc-request-id": kwargs.get("opc_request_id", missing),
+ "opc-retry-token": kwargs.get("opc_retry_token", missing),
+ "if-match": kwargs.get("if_match", missing)
+ }
+ header_params = {k: v for (k, v) in six.iteritems(header_params) if v is not missing and v is not None}
+
+ retry_strategy = self.retry_strategy
+ if kwargs.get('retry_strategy'):
+ retry_strategy = kwargs.get('retry_strategy')
+
+ if retry_strategy:
+ if not isinstance(retry_strategy, retry.NoneRetryStrategy):
+ self.base_client.add_opc_retry_token_if_needed(header_params)
+ return retry_strategy.make_retrying_call(
+ self.base_client.call_api,
+ resource_path=resource_path,
+ method=method,
+ header_params=header_params,
+ body=create_container_image_signature_details,
+ response_type="ContainerImageSignature")
+ else:
+ return self.base_client.call_api(
+ resource_path=resource_path,
+ method=method,
+ header_params=header_params,
+ body=create_container_image_signature_details,
+ response_type="ContainerImageSignature")
+
def create_container_repository(self, create_container_repository_details, **kwargs):
"""
Create a new empty container repository. Avoid entering confidential information.
@@ -353,6 +437,91 @@ def delete_container_image(self, image_id, **kwargs):
path_params=path_params,
header_params=header_params)
+ def delete_container_image_signature(self, image_signature_id, **kwargs):
+ """
+ Delete a container image signature.
+
+
+ :param str image_signature_id: (required)
+ The `OCID`__ of the container image signature.
+
+ Example: `ocid1.containersignature.oc1..exampleuniqueID`
+
+ __ https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm
+
+ :param str opc_request_id: (optional)
+ Unique identifier for the request.
+ If you need to contact Oracle about a particular request, please provide the request ID.
+
+ :param str if_match: (optional)
+ For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match`
+ parameter to the value of the etag from a previous GET or POST response for that resource. The resource
+ will be updated or deleted only if the etag you provide matches the resource's current etag value.
+
+ :param obj retry_strategy: (optional)
+ A retry strategy to apply to this specific operation/call. This will override any retry strategy set at the client-level.
+
+ This should be one of the strategies available in the :py:mod:`~oci.retry` module. A convenience :py:data:`~oci.retry.DEFAULT_RETRY_STRATEGY`
+ is also available. The specifics of the default retry strategy are described `here `__.
+
+ To have this operation explicitly not perform any retries, pass an instance of :py:class:`~oci.retry.NoneRetryStrategy`.
+
+ :return: A :class:`~oci.response.Response` object with data of type None
+ :rtype: :class:`~oci.response.Response`
+
+ :example:
+ Click `here `__ to see an example of how to use delete_container_image_signature API.
+ """
+ resource_path = "/container/imageSignatures/{imageSignatureId}"
+ method = "DELETE"
+
+ # Don't accept unknown kwargs
+ expected_kwargs = [
+ "retry_strategy",
+ "opc_request_id",
+ "if_match"
+ ]
+ extra_kwargs = [_key for _key in six.iterkeys(kwargs) if _key not in expected_kwargs]
+ if extra_kwargs:
+ raise ValueError(
+ "delete_container_image_signature got unknown kwargs: {!r}".format(extra_kwargs))
+
+ path_params = {
+ "imageSignatureId": image_signature_id
+ }
+
+ path_params = {k: v for (k, v) in six.iteritems(path_params) if v is not missing}
+
+ for (k, v) in six.iteritems(path_params):
+ if v is None or (isinstance(v, six.string_types) and len(v.strip()) == 0):
+ raise ValueError('Parameter {} cannot be None, whitespace or empty string'.format(k))
+
+ header_params = {
+ "accept": "application/json",
+ "content-type": "application/json",
+ "opc-request-id": kwargs.get("opc_request_id", missing),
+ "if-match": kwargs.get("if_match", missing)
+ }
+ header_params = {k: v for (k, v) in six.iteritems(header_params) if v is not missing and v is not None}
+
+ retry_strategy = self.retry_strategy
+ if kwargs.get('retry_strategy'):
+ retry_strategy = kwargs.get('retry_strategy')
+
+ if retry_strategy:
+ return retry_strategy.make_retrying_call(
+ self.base_client.call_api,
+ resource_path=resource_path,
+ method=method,
+ path_params=path_params,
+ header_params=header_params)
+ else:
+ return self.base_client.call_api(
+ resource_path=resource_path,
+ method=method,
+ path_params=path_params,
+ header_params=header_params)
+
def delete_container_repository(self, repository_id, **kwargs):
"""
Delete container repository.
@@ -591,6 +760,86 @@ def get_container_image(self, image_id, **kwargs):
header_params=header_params,
response_type="ContainerImage")
+ def get_container_image_signature(self, image_signature_id, **kwargs):
+ """
+ Get container image signature metadata.
+
+
+ :param str image_signature_id: (required)
+ The `OCID`__ of the container image signature.
+
+ Example: `ocid1.containersignature.oc1..exampleuniqueID`
+
+ __ https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm
+
+ :param str opc_request_id: (optional)
+ Unique identifier for the request.
+ If you need to contact Oracle about a particular request, please provide the request ID.
+
+ :param obj retry_strategy: (optional)
+ A retry strategy to apply to this specific operation/call. This will override any retry strategy set at the client-level.
+
+ This should be one of the strategies available in the :py:mod:`~oci.retry` module. A convenience :py:data:`~oci.retry.DEFAULT_RETRY_STRATEGY`
+ is also available. The specifics of the default retry strategy are described `here `__.
+
+ To have this operation explicitly not perform any retries, pass an instance of :py:class:`~oci.retry.NoneRetryStrategy`.
+
+ :return: A :class:`~oci.response.Response` object with data of type :class:`~oci.artifacts.models.ContainerImageSignature`
+ :rtype: :class:`~oci.response.Response`
+
+ :example:
+ Click `here `__ to see an example of how to use get_container_image_signature API.
+ """
+ resource_path = "/container/imageSignatures/{imageSignatureId}"
+ method = "GET"
+
+ # Don't accept unknown kwargs
+ expected_kwargs = [
+ "retry_strategy",
+ "opc_request_id"
+ ]
+ extra_kwargs = [_key for _key in six.iterkeys(kwargs) if _key not in expected_kwargs]
+ if extra_kwargs:
+ raise ValueError(
+ "get_container_image_signature got unknown kwargs: {!r}".format(extra_kwargs))
+
+ path_params = {
+ "imageSignatureId": image_signature_id
+ }
+
+ path_params = {k: v for (k, v) in six.iteritems(path_params) if v is not missing}
+
+ for (k, v) in six.iteritems(path_params):
+ if v is None or (isinstance(v, six.string_types) and len(v.strip()) == 0):
+ raise ValueError('Parameter {} cannot be None, whitespace or empty string'.format(k))
+
+ header_params = {
+ "accept": "application/json",
+ "content-type": "application/json",
+ "opc-request-id": kwargs.get("opc_request_id", missing)
+ }
+ header_params = {k: v for (k, v) in six.iteritems(header_params) if v is not missing and v is not None}
+
+ retry_strategy = self.retry_strategy
+ if kwargs.get('retry_strategy'):
+ retry_strategy = kwargs.get('retry_strategy')
+
+ if retry_strategy:
+ return retry_strategy.make_retrying_call(
+ self.base_client.call_api,
+ resource_path=resource_path,
+ method=method,
+ path_params=path_params,
+ header_params=header_params,
+ response_type="ContainerImageSignature")
+ else:
+ return self.base_client.call_api(
+ resource_path=resource_path,
+ method=method,
+ path_params=path_params,
+ header_params=header_params,
+ response_type="ContainerImageSignature")
+
def get_container_repository(self, repository_id, **kwargs):
"""
Get container repository.
@@ -671,6 +920,205 @@ def get_container_repository(self, repository_id, **kwargs):
header_params=header_params,
response_type="ContainerRepository")
+ def list_container_image_signatures(self, compartment_id, **kwargs):
+ """
+ List container image signatures in an image.
+
+
+ :param str compartment_id: (required)
+ The `OCID`__ of the compartment.
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+ :param bool compartment_id_in_subtree: (optional)
+ When set to true, the hierarchy of compartments is traversed
+ and all compartments and subcompartments in the tenancy are
+ inspected depending on the the setting of `accessLevel`.
+ Default is false. Can only be set to true when calling the API
+ on the tenancy (root compartment).
+
+ :param str image_id: (optional)
+ A filter to return a container image summary only for the specified container image OCID.
+
+ :param str repository_id: (optional)
+ A filter to return container images only for the specified container repository OCID.
+
+ :param str repository_name: (optional)
+ A filter to return container images or container image signatures that match the repository name.
+
+ Example: `foo` or `foo*`
+
+ :param str image_digest: (optional)
+ The digest of the container image.
+
+ Example: `sha256:e7d38b3517548a1c71e41bffe9c8ae6d6d29546ce46bf62159837aad072c90aa`
+
+ :param str display_name: (optional)
+ A filter to return only resources that match the given display name exactly.
+
+ :param str kms_key_id: (optional)
+ The `OCID`__ of the kmsKeyVersionId used to sign the container image.
+
+ Example: `ocid1.keyversion.oc1..exampleuniqueID`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+ :param str kms_key_version_id: (optional)
+ The `OCID`__ of the kmsKeyVersionId used to sign the container image.
+
+ Example: `ocid1.keyversion.oc1..exampleuniqueID`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+ :param str signing_algorithm: (optional)
+ The algorithm to be used for signing. These are the only supported signing algorithms for container images.
+
+ Allowed values are: "SHA_224_RSA_PKCS_PSS", "SHA_256_RSA_PKCS_PSS", "SHA_384_RSA_PKCS_PSS", "SHA_512_RSA_PKCS_PSS"
+
+ :param int limit: (optional)
+ For list pagination. The maximum number of results per page, or items to return in a paginated
+ \"List\" call. For important details about how pagination works, see
+ `List Pagination`__.
+
+ Example: `50`
+
+ __ https://docs.cloud.oracle.com/iaas/Content/API/Concepts/usingapi.htm#nine
+
+ :param str page: (optional)
+ For list pagination. The value of the `opc-next-page` response header from the previous \"List\"
+ call. For important details about how pagination works, see
+ `List Pagination`__.
+
+ __ https://docs.cloud.oracle.com/iaas/Content/API/Concepts/usingapi.htm#nine
+
+ :param str opc_request_id: (optional)
+ Unique identifier for the request.
+ If you need to contact Oracle about a particular request, please provide the request ID.
+
+ :param str sort_by: (optional)
+ The field to sort by. You can provide one sort order (`sortOrder`). Default order for
+ TIMECREATED is descending. Default order for DISPLAYNAME is ascending. The DISPLAYNAME
+ sort order is case sensitive.
+
+ **Note:** In general, some \"List\" operations (for example, `ListInstances`) let you
+ optionally filter by availability domain if the scope of the resource type is within a
+ single availability domain. If you call one of these \"List\" operations without specifying
+ an availability domain, the resources are grouped by availability domain, then sorted.
+
+ Allowed values are: "TIMECREATED", "DISPLAYNAME"
+
+ :param str sort_order: (optional)
+ The sort order to use, either ascending (`ASC`) or descending (`DESC`). The DISPLAYNAME sort order
+ is case sensitive.
+
+ Allowed values are: "ASC", "DESC"
+
+ :param obj retry_strategy: (optional)
+ A retry strategy to apply to this specific operation/call. This will override any retry strategy set at the client-level.
+
+ This should be one of the strategies available in the :py:mod:`~oci.retry` module. A convenience :py:data:`~oci.retry.DEFAULT_RETRY_STRATEGY`
+ is also available. The specifics of the default retry strategy are described `here `__.
+
+ To have this operation explicitly not perform any retries, pass an instance of :py:class:`~oci.retry.NoneRetryStrategy`.
+
+ :return: A :class:`~oci.response.Response` object with data of type :class:`~oci.artifacts.models.ContainerImageSignatureCollection`
+ :rtype: :class:`~oci.response.Response`
+
+ :example:
+ Click `here `__ to see an example of how to use list_container_image_signatures API.
+ """
+ resource_path = "/container/imageSignatures"
+ method = "GET"
+
+ # Don't accept unknown kwargs
+ expected_kwargs = [
+ "retry_strategy",
+ "compartment_id_in_subtree",
+ "image_id",
+ "repository_id",
+ "repository_name",
+ "image_digest",
+ "display_name",
+ "kms_key_id",
+ "kms_key_version_id",
+ "signing_algorithm",
+ "limit",
+ "page",
+ "opc_request_id",
+ "sort_by",
+ "sort_order"
+ ]
+ extra_kwargs = [_key for _key in six.iterkeys(kwargs) if _key not in expected_kwargs]
+ if extra_kwargs:
+ raise ValueError(
+ "list_container_image_signatures got unknown kwargs: {!r}".format(extra_kwargs))
+
+ if 'signing_algorithm' in kwargs:
+ signing_algorithm_allowed_values = ["SHA_224_RSA_PKCS_PSS", "SHA_256_RSA_PKCS_PSS", "SHA_384_RSA_PKCS_PSS", "SHA_512_RSA_PKCS_PSS"]
+ if kwargs['signing_algorithm'] not in signing_algorithm_allowed_values:
+ raise ValueError(
+ "Invalid value for `signing_algorithm`, must be one of {0}".format(signing_algorithm_allowed_values)
+ )
+
+ if 'sort_by' in kwargs:
+ sort_by_allowed_values = ["TIMECREATED", "DISPLAYNAME"]
+ if kwargs['sort_by'] not in sort_by_allowed_values:
+ raise ValueError(
+ "Invalid value for `sort_by`, must be one of {0}".format(sort_by_allowed_values)
+ )
+
+ if 'sort_order' in kwargs:
+ sort_order_allowed_values = ["ASC", "DESC"]
+ if kwargs['sort_order'] not in sort_order_allowed_values:
+ raise ValueError(
+ "Invalid value for `sort_order`, must be one of {0}".format(sort_order_allowed_values)
+ )
+
+ query_params = {
+ "compartmentIdInSubtree": kwargs.get("compartment_id_in_subtree", missing),
+ "compartmentId": compartment_id,
+ "imageId": kwargs.get("image_id", missing),
+ "repositoryId": kwargs.get("repository_id", missing),
+ "repositoryName": kwargs.get("repository_name", missing),
+ "imageDigest": kwargs.get("image_digest", missing),
+ "displayName": kwargs.get("display_name", missing),
+ "kmsKeyId": kwargs.get("kms_key_id", missing),
+ "kmsKeyVersionId": kwargs.get("kms_key_version_id", missing),
+ "signingAlgorithm": kwargs.get("signing_algorithm", missing),
+ "limit": kwargs.get("limit", missing),
+ "page": kwargs.get("page", missing),
+ "sortBy": kwargs.get("sort_by", missing),
+ "sortOrder": kwargs.get("sort_order", missing)
+ }
+ query_params = {k: v for (k, v) in six.iteritems(query_params) if v is not missing and v is not None}
+
+ header_params = {
+ "accept": "application/json",
+ "content-type": "application/json",
+ "opc-request-id": kwargs.get("opc_request_id", missing)
+ }
+ header_params = {k: v for (k, v) in six.iteritems(header_params) if v is not missing and v is not None}
+
+ retry_strategy = self.retry_strategy
+ if kwargs.get('retry_strategy'):
+ retry_strategy = kwargs.get('retry_strategy')
+
+ if retry_strategy:
+ return retry_strategy.make_retrying_call(
+ self.base_client.call_api,
+ resource_path=resource_path,
+ method=method,
+ query_params=query_params,
+ header_params=header_params,
+ response_type="ContainerImageSignatureCollection")
+ else:
+ return self.base_client.call_api(
+ resource_path=resource_path,
+ method=method,
+ query_params=query_params,
+ header_params=header_params,
+ response_type="ContainerImageSignatureCollection")
+
def list_container_images(self, compartment_id, **kwargs):
"""
List container images in a compartment.
diff --git a/src/oci/artifacts/models/__init__.py b/src/oci/artifacts/models/__init__.py
index 3056a72aff..f4a84a1707 100644
--- a/src/oci/artifacts/models/__init__.py
+++ b/src/oci/artifacts/models/__init__.py
@@ -9,12 +9,16 @@
from .container_image import ContainerImage
from .container_image_collection import ContainerImageCollection
from .container_image_layer import ContainerImageLayer
+from .container_image_signature import ContainerImageSignature
+from .container_image_signature_collection import ContainerImageSignatureCollection
+from .container_image_signature_summary import ContainerImageSignatureSummary
from .container_image_summary import ContainerImageSummary
from .container_repository import ContainerRepository
from .container_repository_collection import ContainerRepositoryCollection
from .container_repository_readme import ContainerRepositoryReadme
from .container_repository_summary import ContainerRepositorySummary
from .container_version import ContainerVersion
+from .create_container_image_signature_details import CreateContainerImageSignatureDetails
from .create_container_repository_details import CreateContainerRepositoryDetails
from .remove_container_version_details import RemoveContainerVersionDetails
from .restore_container_image_details import RestoreContainerImageDetails
@@ -28,12 +32,16 @@
"ContainerImage": ContainerImage,
"ContainerImageCollection": ContainerImageCollection,
"ContainerImageLayer": ContainerImageLayer,
+ "ContainerImageSignature": ContainerImageSignature,
+ "ContainerImageSignatureCollection": ContainerImageSignatureCollection,
+ "ContainerImageSignatureSummary": ContainerImageSignatureSummary,
"ContainerImageSummary": ContainerImageSummary,
"ContainerRepository": ContainerRepository,
"ContainerRepositoryCollection": ContainerRepositoryCollection,
"ContainerRepositoryReadme": ContainerRepositoryReadme,
"ContainerRepositorySummary": ContainerRepositorySummary,
"ContainerVersion": ContainerVersion,
+ "CreateContainerImageSignatureDetails": CreateContainerImageSignatureDetails,
"CreateContainerRepositoryDetails": CreateContainerRepositoryDetails,
"RemoveContainerVersionDetails": RemoveContainerVersionDetails,
"RestoreContainerImageDetails": RestoreContainerImageDetails,
diff --git a/src/oci/artifacts/models/container_image_signature.py b/src/oci/artifacts/models/container_image_signature.py
new file mode 100644
index 0000000000..012ad84c3f
--- /dev/null
+++ b/src/oci/artifacts/models/container_image_signature.py
@@ -0,0 +1,444 @@
+# coding: utf-8
+# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
+# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+
+
+from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401
+from oci.decorators import init_model_state_from_kwargs
+
+
+@init_model_state_from_kwargs
+class ContainerImageSignature(object):
+ """
+ Container image signature metadata.
+ """
+
+ #: A constant which can be used with the signing_algorithm property of a ContainerImageSignature.
+ #: This constant has a value of "SHA_224_RSA_PKCS_PSS"
+ SIGNING_ALGORITHM_SHA_224_RSA_PKCS_PSS = "SHA_224_RSA_PKCS_PSS"
+
+ #: A constant which can be used with the signing_algorithm property of a ContainerImageSignature.
+ #: This constant has a value of "SHA_256_RSA_PKCS_PSS"
+ SIGNING_ALGORITHM_SHA_256_RSA_PKCS_PSS = "SHA_256_RSA_PKCS_PSS"
+
+ #: A constant which can be used with the signing_algorithm property of a ContainerImageSignature.
+ #: This constant has a value of "SHA_384_RSA_PKCS_PSS"
+ SIGNING_ALGORITHM_SHA_384_RSA_PKCS_PSS = "SHA_384_RSA_PKCS_PSS"
+
+ #: A constant which can be used with the signing_algorithm property of a ContainerImageSignature.
+ #: This constant has a value of "SHA_512_RSA_PKCS_PSS"
+ SIGNING_ALGORITHM_SHA_512_RSA_PKCS_PSS = "SHA_512_RSA_PKCS_PSS"
+
+ def __init__(self, **kwargs):
+ """
+ Initializes a new ContainerImageSignature object with values from keyword arguments.
+ The following keyword arguments are supported (corresponding to the getters/setters of this class):
+
+ :param compartment_id:
+ The value to assign to the compartment_id property of this ContainerImageSignature.
+ :type compartment_id: str
+
+ :param created_by:
+ The value to assign to the created_by property of this ContainerImageSignature.
+ :type created_by: str
+
+ :param display_name:
+ The value to assign to the display_name property of this ContainerImageSignature.
+ :type display_name: str
+
+ :param id:
+ The value to assign to the id property of this ContainerImageSignature.
+ :type id: str
+
+ :param image_id:
+ The value to assign to the image_id property of this ContainerImageSignature.
+ :type image_id: str
+
+ :param kms_key_id:
+ The value to assign to the kms_key_id property of this ContainerImageSignature.
+ :type kms_key_id: str
+
+ :param kms_key_version_id:
+ The value to assign to the kms_key_version_id property of this ContainerImageSignature.
+ :type kms_key_version_id: str
+
+ :param message:
+ The value to assign to the message property of this ContainerImageSignature.
+ :type message: str
+
+ :param signature:
+ The value to assign to the signature property of this ContainerImageSignature.
+ :type signature: str
+
+ :param signing_algorithm:
+ The value to assign to the signing_algorithm property of this ContainerImageSignature.
+ Allowed values for this property are: "SHA_224_RSA_PKCS_PSS", "SHA_256_RSA_PKCS_PSS", "SHA_384_RSA_PKCS_PSS", "SHA_512_RSA_PKCS_PSS", 'UNKNOWN_ENUM_VALUE'.
+ Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
+ :type signing_algorithm: str
+
+ :param time_created:
+ The value to assign to the time_created property of this ContainerImageSignature.
+ :type time_created: datetime
+
+ """
+ self.swagger_types = {
+ 'compartment_id': 'str',
+ 'created_by': 'str',
+ 'display_name': 'str',
+ 'id': 'str',
+ 'image_id': 'str',
+ 'kms_key_id': 'str',
+ 'kms_key_version_id': 'str',
+ 'message': 'str',
+ 'signature': 'str',
+ 'signing_algorithm': 'str',
+ 'time_created': 'datetime'
+ }
+
+ self.attribute_map = {
+ 'compartment_id': 'compartmentId',
+ 'created_by': 'createdBy',
+ 'display_name': 'displayName',
+ 'id': 'id',
+ 'image_id': 'imageId',
+ 'kms_key_id': 'kmsKeyId',
+ 'kms_key_version_id': 'kmsKeyVersionId',
+ 'message': 'message',
+ 'signature': 'signature',
+ 'signing_algorithm': 'signingAlgorithm',
+ 'time_created': 'timeCreated'
+ }
+
+ self._compartment_id = None
+ self._created_by = None
+ self._display_name = None
+ self._id = None
+ self._image_id = None
+ self._kms_key_id = None
+ self._kms_key_version_id = None
+ self._message = None
+ self._signature = None
+ self._signing_algorithm = None
+ self._time_created = None
+
+ @property
+ def compartment_id(self):
+ """
+ **[Required]** Gets the compartment_id of this ContainerImageSignature.
+ The `OCID`__ of the compartment in which the container repository exists.
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :return: The compartment_id of this ContainerImageSignature.
+ :rtype: str
+ """
+ return self._compartment_id
+
+ @compartment_id.setter
+ def compartment_id(self, compartment_id):
+ """
+ Sets the compartment_id of this ContainerImageSignature.
+ The `OCID`__ of the compartment in which the container repository exists.
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :param compartment_id: The compartment_id of this ContainerImageSignature.
+ :type: str
+ """
+ self._compartment_id = compartment_id
+
+ @property
+ def created_by(self):
+ """
+ **[Required]** Gets the created_by of this ContainerImageSignature.
+ The id of the user or principal that created the resource.
+
+
+ :return: The created_by of this ContainerImageSignature.
+ :rtype: str
+ """
+ return self._created_by
+
+ @created_by.setter
+ def created_by(self, created_by):
+ """
+ Sets the created_by of this ContainerImageSignature.
+ The id of the user or principal that created the resource.
+
+
+ :param created_by: The created_by of this ContainerImageSignature.
+ :type: str
+ """
+ self._created_by = created_by
+
+ @property
+ def display_name(self):
+ """
+ **[Required]** Gets the display_name of this ContainerImageSignature.
+ The last 10 characters of the kmsKeyId, the last 10 characters of the kmsKeyVersionId, the signingAlgorithm, and the last 10 characters of the signatureId.
+
+ Example: `wrmz22sixa::qdwyc2ptun::SHA_256_RSA_PKCS_PSS::2vwmobasva`
+
+
+ :return: The display_name of this ContainerImageSignature.
+ :rtype: str
+ """
+ return self._display_name
+
+ @display_name.setter
+ def display_name(self, display_name):
+ """
+ Sets the display_name of this ContainerImageSignature.
+ The last 10 characters of the kmsKeyId, the last 10 characters of the kmsKeyVersionId, the signingAlgorithm, and the last 10 characters of the signatureId.
+
+ Example: `wrmz22sixa::qdwyc2ptun::SHA_256_RSA_PKCS_PSS::2vwmobasva`
+
+
+ :param display_name: The display_name of this ContainerImageSignature.
+ :type: str
+ """
+ self._display_name = display_name
+
+ @property
+ def id(self):
+ """
+ **[Required]** Gets the id of this ContainerImageSignature.
+ The `OCID`__ of the container image signature.
+
+ Example: `ocid1.containerimagesignature.oc1..exampleuniqueID`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :return: The id of this ContainerImageSignature.
+ :rtype: str
+ """
+ return self._id
+
+ @id.setter
+ def id(self, id):
+ """
+ Sets the id of this ContainerImageSignature.
+ The `OCID`__ of the container image signature.
+
+ Example: `ocid1.containerimagesignature.oc1..exampleuniqueID`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :param id: The id of this ContainerImageSignature.
+ :type: str
+ """
+ self._id = id
+
+ @property
+ def image_id(self):
+ """
+ **[Required]** Gets the image_id of this ContainerImageSignature.
+ The `OCID`__ of the container image.
+
+ Example: `ocid1.containerimage.oc1..exampleuniqueID`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :return: The image_id of this ContainerImageSignature.
+ :rtype: str
+ """
+ return self._image_id
+
+ @image_id.setter
+ def image_id(self, image_id):
+ """
+ Sets the image_id of this ContainerImageSignature.
+ The `OCID`__ of the container image.
+
+ Example: `ocid1.containerimage.oc1..exampleuniqueID`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :param image_id: The image_id of this ContainerImageSignature.
+ :type: str
+ """
+ self._image_id = image_id
+
+ @property
+ def kms_key_id(self):
+ """
+ **[Required]** Gets the kms_key_id of this ContainerImageSignature.
+ The `OCID`__ of the kmsKeyId used to sign the container image.
+
+ Example: `ocid1.key.oc1..exampleuniqueID`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :return: The kms_key_id of this ContainerImageSignature.
+ :rtype: str
+ """
+ return self._kms_key_id
+
+ @kms_key_id.setter
+ def kms_key_id(self, kms_key_id):
+ """
+ Sets the kms_key_id of this ContainerImageSignature.
+ The `OCID`__ of the kmsKeyId used to sign the container image.
+
+ Example: `ocid1.key.oc1..exampleuniqueID`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :param kms_key_id: The kms_key_id of this ContainerImageSignature.
+ :type: str
+ """
+ self._kms_key_id = kms_key_id
+
+ @property
+ def kms_key_version_id(self):
+ """
+ **[Required]** Gets the kms_key_version_id of this ContainerImageSignature.
+ The `OCID`__ of the kmsKeyVersionId used to sign the container image.
+
+ Example: `ocid1.keyversion.oc1..exampleuniqueID`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :return: The kms_key_version_id of this ContainerImageSignature.
+ :rtype: str
+ """
+ return self._kms_key_version_id
+
+ @kms_key_version_id.setter
+ def kms_key_version_id(self, kms_key_version_id):
+ """
+ Sets the kms_key_version_id of this ContainerImageSignature.
+ The `OCID`__ of the kmsKeyVersionId used to sign the container image.
+
+ Example: `ocid1.keyversion.oc1..exampleuniqueID`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :param kms_key_version_id: The kms_key_version_id of this ContainerImageSignature.
+ :type: str
+ """
+ self._kms_key_version_id = kms_key_version_id
+
+ @property
+ def message(self):
+ """
+ **[Required]** Gets the message of this ContainerImageSignature.
+ The base64 encoded signature payload that was signed.
+
+
+ :return: The message of this ContainerImageSignature.
+ :rtype: str
+ """
+ return self._message
+
+ @message.setter
+ def message(self, message):
+ """
+ Sets the message of this ContainerImageSignature.
+ The base64 encoded signature payload that was signed.
+
+
+ :param message: The message of this ContainerImageSignature.
+ :type: str
+ """
+ self._message = message
+
+ @property
+ def signature(self):
+ """
+ **[Required]** Gets the signature of this ContainerImageSignature.
+ The signature of the message field using the kmsKeyId, the kmsKeyVersionId, and the signingAlgorithm.
+
+
+ :return: The signature of this ContainerImageSignature.
+ :rtype: str
+ """
+ return self._signature
+
+ @signature.setter
+ def signature(self, signature):
+ """
+ Sets the signature of this ContainerImageSignature.
+ The signature of the message field using the kmsKeyId, the kmsKeyVersionId, and the signingAlgorithm.
+
+
+ :param signature: The signature of this ContainerImageSignature.
+ :type: str
+ """
+ self._signature = signature
+
+ @property
+ def signing_algorithm(self):
+ """
+ **[Required]** Gets the signing_algorithm of this ContainerImageSignature.
+ The algorithm to be used for signing. These are the only supported signing algorithms for container images.
+
+ Allowed values for this property are: "SHA_224_RSA_PKCS_PSS", "SHA_256_RSA_PKCS_PSS", "SHA_384_RSA_PKCS_PSS", "SHA_512_RSA_PKCS_PSS", 'UNKNOWN_ENUM_VALUE'.
+ Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
+
+
+ :return: The signing_algorithm of this ContainerImageSignature.
+ :rtype: str
+ """
+ return self._signing_algorithm
+
+ @signing_algorithm.setter
+ def signing_algorithm(self, signing_algorithm):
+ """
+ Sets the signing_algorithm of this ContainerImageSignature.
+ The algorithm to be used for signing. These are the only supported signing algorithms for container images.
+
+
+ :param signing_algorithm: The signing_algorithm of this ContainerImageSignature.
+ :type: str
+ """
+ allowed_values = ["SHA_224_RSA_PKCS_PSS", "SHA_256_RSA_PKCS_PSS", "SHA_384_RSA_PKCS_PSS", "SHA_512_RSA_PKCS_PSS"]
+ if not value_allowed_none_or_none_sentinel(signing_algorithm, allowed_values):
+ signing_algorithm = 'UNKNOWN_ENUM_VALUE'
+ self._signing_algorithm = signing_algorithm
+
+ @property
+ def time_created(self):
+ """
+ **[Required]** Gets the time_created of this ContainerImageSignature.
+ An RFC 3339 timestamp indicating when the image was created.
+
+
+ :return: The time_created of this ContainerImageSignature.
+ :rtype: datetime
+ """
+ return self._time_created
+
+ @time_created.setter
+ def time_created(self, time_created):
+ """
+ Sets the time_created of this ContainerImageSignature.
+ An RFC 3339 timestamp indicating when the image was created.
+
+
+ :param time_created: The time_created of this ContainerImageSignature.
+ :type: datetime
+ """
+ self._time_created = time_created
+
+ def __repr__(self):
+ return formatted_flat_dict(self)
+
+ def __eq__(self, other):
+ if other is None:
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not self == other
diff --git a/src/oci/artifacts/models/container_image_signature_collection.py b/src/oci/artifacts/models/container_image_signature_collection.py
new file mode 100644
index 0000000000..5ba7b368d3
--- /dev/null
+++ b/src/oci/artifacts/models/container_image_signature_collection.py
@@ -0,0 +1,101 @@
+# coding: utf-8
+# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
+# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+
+
+from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401
+from oci.decorators import init_model_state_from_kwargs
+
+
+@init_model_state_from_kwargs
+class ContainerImageSignatureCollection(object):
+ """
+ List container image signature results.
+ """
+
+ def __init__(self, **kwargs):
+ """
+ Initializes a new ContainerImageSignatureCollection object with values from keyword arguments.
+ The following keyword arguments are supported (corresponding to the getters/setters of this class):
+
+ :param items:
+ The value to assign to the items property of this ContainerImageSignatureCollection.
+ :type items: list[oci.artifacts.models.ContainerImageSignatureSummary]
+
+ :param remaining_items_count:
+ The value to assign to the remaining_items_count property of this ContainerImageSignatureCollection.
+ :type remaining_items_count: int
+
+ """
+ self.swagger_types = {
+ 'items': 'list[ContainerImageSignatureSummary]',
+ 'remaining_items_count': 'int'
+ }
+
+ self.attribute_map = {
+ 'items': 'items',
+ 'remaining_items_count': 'remainingItemsCount'
+ }
+
+ self._items = None
+ self._remaining_items_count = None
+
+ @property
+ def items(self):
+ """
+ **[Required]** Gets the items of this ContainerImageSignatureCollection.
+ Page of matching container image signatures.
+
+
+ :return: The items of this ContainerImageSignatureCollection.
+ :rtype: list[oci.artifacts.models.ContainerImageSignatureSummary]
+ """
+ return self._items
+
+ @items.setter
+ def items(self, items):
+ """
+ Sets the items of this ContainerImageSignatureCollection.
+ Page of matching container image signatures.
+
+
+ :param items: The items of this ContainerImageSignatureCollection.
+ :type: list[oci.artifacts.models.ContainerImageSignatureSummary]
+ """
+ self._items = items
+
+ @property
+ def remaining_items_count(self):
+ """
+ **[Required]** Gets the remaining_items_count of this ContainerImageSignatureCollection.
+ Estimated number of remaining results.
+
+
+ :return: The remaining_items_count of this ContainerImageSignatureCollection.
+ :rtype: int
+ """
+ return self._remaining_items_count
+
+ @remaining_items_count.setter
+ def remaining_items_count(self, remaining_items_count):
+ """
+ Sets the remaining_items_count of this ContainerImageSignatureCollection.
+ Estimated number of remaining results.
+
+
+ :param remaining_items_count: The remaining_items_count of this ContainerImageSignatureCollection.
+ :type: int
+ """
+ self._remaining_items_count = remaining_items_count
+
+ def __repr__(self):
+ return formatted_flat_dict(self)
+
+ def __eq__(self, other):
+ if other is None:
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not self == other
diff --git a/src/oci/artifacts/models/container_image_signature_summary.py b/src/oci/artifacts/models/container_image_signature_summary.py
new file mode 100644
index 0000000000..ac3e464e83
--- /dev/null
+++ b/src/oci/artifacts/models/container_image_signature_summary.py
@@ -0,0 +1,409 @@
+# coding: utf-8
+# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
+# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+
+
+from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401
+from oci.decorators import init_model_state_from_kwargs
+
+
+@init_model_state_from_kwargs
+class ContainerImageSignatureSummary(object):
+ """
+ Container image signature summary.
+ """
+
+ #: A constant which can be used with the signing_algorithm property of a ContainerImageSignatureSummary.
+ #: This constant has a value of "SHA_224_RSA_PKCS_PSS"
+ SIGNING_ALGORITHM_SHA_224_RSA_PKCS_PSS = "SHA_224_RSA_PKCS_PSS"
+
+ #: A constant which can be used with the signing_algorithm property of a ContainerImageSignatureSummary.
+ #: This constant has a value of "SHA_256_RSA_PKCS_PSS"
+ SIGNING_ALGORITHM_SHA_256_RSA_PKCS_PSS = "SHA_256_RSA_PKCS_PSS"
+
+ #: A constant which can be used with the signing_algorithm property of a ContainerImageSignatureSummary.
+ #: This constant has a value of "SHA_384_RSA_PKCS_PSS"
+ SIGNING_ALGORITHM_SHA_384_RSA_PKCS_PSS = "SHA_384_RSA_PKCS_PSS"
+
+ #: A constant which can be used with the signing_algorithm property of a ContainerImageSignatureSummary.
+ #: This constant has a value of "SHA_512_RSA_PKCS_PSS"
+ SIGNING_ALGORITHM_SHA_512_RSA_PKCS_PSS = "SHA_512_RSA_PKCS_PSS"
+
+ def __init__(self, **kwargs):
+ """
+ Initializes a new ContainerImageSignatureSummary object with values from keyword arguments.
+ The following keyword arguments are supported (corresponding to the getters/setters of this class):
+
+ :param compartment_id:
+ The value to assign to the compartment_id property of this ContainerImageSignatureSummary.
+ :type compartment_id: str
+
+ :param display_name:
+ The value to assign to the display_name property of this ContainerImageSignatureSummary.
+ :type display_name: str
+
+ :param id:
+ The value to assign to the id property of this ContainerImageSignatureSummary.
+ :type id: str
+
+ :param image_id:
+ The value to assign to the image_id property of this ContainerImageSignatureSummary.
+ :type image_id: str
+
+ :param kms_key_id:
+ The value to assign to the kms_key_id property of this ContainerImageSignatureSummary.
+ :type kms_key_id: str
+
+ :param kms_key_version_id:
+ The value to assign to the kms_key_version_id property of this ContainerImageSignatureSummary.
+ :type kms_key_version_id: str
+
+ :param message:
+ The value to assign to the message property of this ContainerImageSignatureSummary.
+ :type message: str
+
+ :param signature:
+ The value to assign to the signature property of this ContainerImageSignatureSummary.
+ :type signature: str
+
+ :param signing_algorithm:
+ The value to assign to the signing_algorithm property of this ContainerImageSignatureSummary.
+ Allowed values for this property are: "SHA_224_RSA_PKCS_PSS", "SHA_256_RSA_PKCS_PSS", "SHA_384_RSA_PKCS_PSS", "SHA_512_RSA_PKCS_PSS", 'UNKNOWN_ENUM_VALUE'.
+ Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
+ :type signing_algorithm: str
+
+ :param time_created:
+ The value to assign to the time_created property of this ContainerImageSignatureSummary.
+ :type time_created: datetime
+
+ """
+ self.swagger_types = {
+ 'compartment_id': 'str',
+ 'display_name': 'str',
+ 'id': 'str',
+ 'image_id': 'str',
+ 'kms_key_id': 'str',
+ 'kms_key_version_id': 'str',
+ 'message': 'str',
+ 'signature': 'str',
+ 'signing_algorithm': 'str',
+ 'time_created': 'datetime'
+ }
+
+ self.attribute_map = {
+ 'compartment_id': 'compartmentId',
+ 'display_name': 'displayName',
+ 'id': 'id',
+ 'image_id': 'imageId',
+ 'kms_key_id': 'kmsKeyId',
+ 'kms_key_version_id': 'kmsKeyVersionId',
+ 'message': 'message',
+ 'signature': 'signature',
+ 'signing_algorithm': 'signingAlgorithm',
+ 'time_created': 'timeCreated'
+ }
+
+ self._compartment_id = None
+ self._display_name = None
+ self._id = None
+ self._image_id = None
+ self._kms_key_id = None
+ self._kms_key_version_id = None
+ self._message = None
+ self._signature = None
+ self._signing_algorithm = None
+ self._time_created = None
+
+ @property
+ def compartment_id(self):
+ """
+ **[Required]** Gets the compartment_id of this ContainerImageSignatureSummary.
+ The OCID of the compartment in which the container repository exists.
+
+
+ :return: The compartment_id of this ContainerImageSignatureSummary.
+ :rtype: str
+ """
+ return self._compartment_id
+
+ @compartment_id.setter
+ def compartment_id(self, compartment_id):
+ """
+ Sets the compartment_id of this ContainerImageSignatureSummary.
+ The OCID of the compartment in which the container repository exists.
+
+
+ :param compartment_id: The compartment_id of this ContainerImageSignatureSummary.
+ :type: str
+ """
+ self._compartment_id = compartment_id
+
+ @property
+ def display_name(self):
+ """
+ **[Required]** Gets the display_name of this ContainerImageSignatureSummary.
+ The last 10 characters of the kmsKeyId, the last 10 characters of the kmsKeyVersionId, the signingAlgorithm, and the last 10 characters of the signatureId.
+
+ Example: `wrmz22sixa::qdwyc2ptun::SHA_256_RSA_PKCS_PSS::2vwmobasva`
+
+
+ :return: The display_name of this ContainerImageSignatureSummary.
+ :rtype: str
+ """
+ return self._display_name
+
+ @display_name.setter
+ def display_name(self, display_name):
+ """
+ Sets the display_name of this ContainerImageSignatureSummary.
+ The last 10 characters of the kmsKeyId, the last 10 characters of the kmsKeyVersionId, the signingAlgorithm, and the last 10 characters of the signatureId.
+
+ Example: `wrmz22sixa::qdwyc2ptun::SHA_256_RSA_PKCS_PSS::2vwmobasva`
+
+
+ :param display_name: The display_name of this ContainerImageSignatureSummary.
+ :type: str
+ """
+ self._display_name = display_name
+
+ @property
+ def id(self):
+ """
+ **[Required]** Gets the id of this ContainerImageSignatureSummary.
+ The `OCID`__ of the container image signature.
+
+ Example: `ocid1.containerimagesignature.oc1..exampleuniqueID`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :return: The id of this ContainerImageSignatureSummary.
+ :rtype: str
+ """
+ return self._id
+
+ @id.setter
+ def id(self, id):
+ """
+ Sets the id of this ContainerImageSignatureSummary.
+ The `OCID`__ of the container image signature.
+
+ Example: `ocid1.containerimagesignature.oc1..exampleuniqueID`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :param id: The id of this ContainerImageSignatureSummary.
+ :type: str
+ """
+ self._id = id
+
+ @property
+ def image_id(self):
+ """
+ **[Required]** Gets the image_id of this ContainerImageSignatureSummary.
+ The `OCID`__ of the container image.
+
+ Example: `ocid1.containerimage.oc1..exampleuniqueID`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :return: The image_id of this ContainerImageSignatureSummary.
+ :rtype: str
+ """
+ return self._image_id
+
+ @image_id.setter
+ def image_id(self, image_id):
+ """
+ Sets the image_id of this ContainerImageSignatureSummary.
+ The `OCID`__ of the container image.
+
+ Example: `ocid1.containerimage.oc1..exampleuniqueID`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :param image_id: The image_id of this ContainerImageSignatureSummary.
+ :type: str
+ """
+ self._image_id = image_id
+
+ @property
+ def kms_key_id(self):
+ """
+ **[Required]** Gets the kms_key_id of this ContainerImageSignatureSummary.
+ The `OCID`__ of the kmsKeyId used to sign the container image.
+
+ Example: `ocid1.key.oc1..exampleuniqueID`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :return: The kms_key_id of this ContainerImageSignatureSummary.
+ :rtype: str
+ """
+ return self._kms_key_id
+
+ @kms_key_id.setter
+ def kms_key_id(self, kms_key_id):
+ """
+ Sets the kms_key_id of this ContainerImageSignatureSummary.
+ The `OCID`__ of the kmsKeyId used to sign the container image.
+
+ Example: `ocid1.key.oc1..exampleuniqueID`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :param kms_key_id: The kms_key_id of this ContainerImageSignatureSummary.
+ :type: str
+ """
+ self._kms_key_id = kms_key_id
+
+ @property
+ def kms_key_version_id(self):
+ """
+ **[Required]** Gets the kms_key_version_id of this ContainerImageSignatureSummary.
+ The `OCID`__ of the kmsKeyVersionId used to sign the container image.
+
+ Example: `ocid1.keyversion.oc1..exampleuniqueID`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :return: The kms_key_version_id of this ContainerImageSignatureSummary.
+ :rtype: str
+ """
+ return self._kms_key_version_id
+
+ @kms_key_version_id.setter
+ def kms_key_version_id(self, kms_key_version_id):
+ """
+ Sets the kms_key_version_id of this ContainerImageSignatureSummary.
+ The `OCID`__ of the kmsKeyVersionId used to sign the container image.
+
+ Example: `ocid1.keyversion.oc1..exampleuniqueID`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :param kms_key_version_id: The kms_key_version_id of this ContainerImageSignatureSummary.
+ :type: str
+ """
+ self._kms_key_version_id = kms_key_version_id
+
+ @property
+ def message(self):
+ """
+ **[Required]** Gets the message of this ContainerImageSignatureSummary.
+ The base64 encoded signature payload that was signed.
+
+
+ :return: The message of this ContainerImageSignatureSummary.
+ :rtype: str
+ """
+ return self._message
+
+ @message.setter
+ def message(self, message):
+ """
+ Sets the message of this ContainerImageSignatureSummary.
+ The base64 encoded signature payload that was signed.
+
+
+ :param message: The message of this ContainerImageSignatureSummary.
+ :type: str
+ """
+ self._message = message
+
+ @property
+ def signature(self):
+ """
+ **[Required]** Gets the signature of this ContainerImageSignatureSummary.
+ The signature of the message field using the kmsKeyId, the kmsKeyVersionId, and the signingAlgorithm.
+
+
+ :return: The signature of this ContainerImageSignatureSummary.
+ :rtype: str
+ """
+ return self._signature
+
+ @signature.setter
+ def signature(self, signature):
+ """
+ Sets the signature of this ContainerImageSignatureSummary.
+ The signature of the message field using the kmsKeyId, the kmsKeyVersionId, and the signingAlgorithm.
+
+
+ :param signature: The signature of this ContainerImageSignatureSummary.
+ :type: str
+ """
+ self._signature = signature
+
+ @property
+ def signing_algorithm(self):
+ """
+ **[Required]** Gets the signing_algorithm of this ContainerImageSignatureSummary.
+ The algorithm to be used for signing. These are the only supported signing algorithms for container images.
+
+ Allowed values for this property are: "SHA_224_RSA_PKCS_PSS", "SHA_256_RSA_PKCS_PSS", "SHA_384_RSA_PKCS_PSS", "SHA_512_RSA_PKCS_PSS", 'UNKNOWN_ENUM_VALUE'.
+ Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
+
+
+ :return: The signing_algorithm of this ContainerImageSignatureSummary.
+ :rtype: str
+ """
+ return self._signing_algorithm
+
+ @signing_algorithm.setter
+ def signing_algorithm(self, signing_algorithm):
+ """
+ Sets the signing_algorithm of this ContainerImageSignatureSummary.
+ The algorithm to be used for signing. These are the only supported signing algorithms for container images.
+
+
+ :param signing_algorithm: The signing_algorithm of this ContainerImageSignatureSummary.
+ :type: str
+ """
+ allowed_values = ["SHA_224_RSA_PKCS_PSS", "SHA_256_RSA_PKCS_PSS", "SHA_384_RSA_PKCS_PSS", "SHA_512_RSA_PKCS_PSS"]
+ if not value_allowed_none_or_none_sentinel(signing_algorithm, allowed_values):
+ signing_algorithm = 'UNKNOWN_ENUM_VALUE'
+ self._signing_algorithm = signing_algorithm
+
+ @property
+ def time_created(self):
+ """
+ **[Required]** Gets the time_created of this ContainerImageSignatureSummary.
+ An RFC 3339 timestamp indicating when the image was created.
+
+
+ :return: The time_created of this ContainerImageSignatureSummary.
+ :rtype: datetime
+ """
+ return self._time_created
+
+ @time_created.setter
+ def time_created(self, time_created):
+ """
+ Sets the time_created of this ContainerImageSignatureSummary.
+ An RFC 3339 timestamp indicating when the image was created.
+
+
+ :param time_created: The time_created of this ContainerImageSignatureSummary.
+ :type: datetime
+ """
+ self._time_created = time_created
+
+ def __repr__(self):
+ return formatted_flat_dict(self)
+
+ def __eq__(self, other):
+ if other is None:
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not self == other
diff --git a/src/oci/artifacts/models/create_container_image_signature_details.py b/src/oci/artifacts/models/create_container_image_signature_details.py
new file mode 100644
index 0000000000..26ca055ac5
--- /dev/null
+++ b/src/oci/artifacts/models/create_container_image_signature_details.py
@@ -0,0 +1,309 @@
+# coding: utf-8
+# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
+# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+
+
+from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401
+from oci.decorators import init_model_state_from_kwargs
+
+
+@init_model_state_from_kwargs
+class CreateContainerImageSignatureDetails(object):
+ """
+ Upload container image signature request details.
+ """
+
+ #: A constant which can be used with the signing_algorithm property of a CreateContainerImageSignatureDetails.
+ #: This constant has a value of "SHA_224_RSA_PKCS_PSS"
+ SIGNING_ALGORITHM_SHA_224_RSA_PKCS_PSS = "SHA_224_RSA_PKCS_PSS"
+
+ #: A constant which can be used with the signing_algorithm property of a CreateContainerImageSignatureDetails.
+ #: This constant has a value of "SHA_256_RSA_PKCS_PSS"
+ SIGNING_ALGORITHM_SHA_256_RSA_PKCS_PSS = "SHA_256_RSA_PKCS_PSS"
+
+ #: A constant which can be used with the signing_algorithm property of a CreateContainerImageSignatureDetails.
+ #: This constant has a value of "SHA_384_RSA_PKCS_PSS"
+ SIGNING_ALGORITHM_SHA_384_RSA_PKCS_PSS = "SHA_384_RSA_PKCS_PSS"
+
+ #: A constant which can be used with the signing_algorithm property of a CreateContainerImageSignatureDetails.
+ #: This constant has a value of "SHA_512_RSA_PKCS_PSS"
+ SIGNING_ALGORITHM_SHA_512_RSA_PKCS_PSS = "SHA_512_RSA_PKCS_PSS"
+
+ def __init__(self, **kwargs):
+ """
+ Initializes a new CreateContainerImageSignatureDetails object with values from keyword arguments.
+ The following keyword arguments are supported (corresponding to the getters/setters of this class):
+
+ :param compartment_id:
+ The value to assign to the compartment_id property of this CreateContainerImageSignatureDetails.
+ :type compartment_id: str
+
+ :param image_id:
+ The value to assign to the image_id property of this CreateContainerImageSignatureDetails.
+ :type image_id: str
+
+ :param kms_key_id:
+ The value to assign to the kms_key_id property of this CreateContainerImageSignatureDetails.
+ :type kms_key_id: str
+
+ :param kms_key_version_id:
+ The value to assign to the kms_key_version_id property of this CreateContainerImageSignatureDetails.
+ :type kms_key_version_id: str
+
+ :param message:
+ The value to assign to the message property of this CreateContainerImageSignatureDetails.
+ :type message: str
+
+ :param signature:
+ The value to assign to the signature property of this CreateContainerImageSignatureDetails.
+ :type signature: str
+
+ :param signing_algorithm:
+ The value to assign to the signing_algorithm property of this CreateContainerImageSignatureDetails.
+ Allowed values for this property are: "SHA_224_RSA_PKCS_PSS", "SHA_256_RSA_PKCS_PSS", "SHA_384_RSA_PKCS_PSS", "SHA_512_RSA_PKCS_PSS"
+ :type signing_algorithm: str
+
+ """
+ self.swagger_types = {
+ 'compartment_id': 'str',
+ 'image_id': 'str',
+ 'kms_key_id': 'str',
+ 'kms_key_version_id': 'str',
+ 'message': 'str',
+ 'signature': 'str',
+ 'signing_algorithm': 'str'
+ }
+
+ self.attribute_map = {
+ 'compartment_id': 'compartmentId',
+ 'image_id': 'imageId',
+ 'kms_key_id': 'kmsKeyId',
+ 'kms_key_version_id': 'kmsKeyVersionId',
+ 'message': 'message',
+ 'signature': 'signature',
+ 'signing_algorithm': 'signingAlgorithm'
+ }
+
+ self._compartment_id = None
+ self._image_id = None
+ self._kms_key_id = None
+ self._kms_key_version_id = None
+ self._message = None
+ self._signature = None
+ self._signing_algorithm = None
+
+ @property
+ def compartment_id(self):
+ """
+ **[Required]** Gets the compartment_id of this CreateContainerImageSignatureDetails.
+ The `OCID`__ of the compartment in which the container repository exists.
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :return: The compartment_id of this CreateContainerImageSignatureDetails.
+ :rtype: str
+ """
+ return self._compartment_id
+
+ @compartment_id.setter
+ def compartment_id(self, compartment_id):
+ """
+ Sets the compartment_id of this CreateContainerImageSignatureDetails.
+ The `OCID`__ of the compartment in which the container repository exists.
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :param compartment_id: The compartment_id of this CreateContainerImageSignatureDetails.
+ :type: str
+ """
+ self._compartment_id = compartment_id
+
+ @property
+ def image_id(self):
+ """
+ **[Required]** Gets the image_id of this CreateContainerImageSignatureDetails.
+ The `OCID`__ of the container image.
+
+ Example: `ocid1.containerimage.oc1..exampleuniqueID`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :return: The image_id of this CreateContainerImageSignatureDetails.
+ :rtype: str
+ """
+ return self._image_id
+
+ @image_id.setter
+ def image_id(self, image_id):
+ """
+ Sets the image_id of this CreateContainerImageSignatureDetails.
+ The `OCID`__ of the container image.
+
+ Example: `ocid1.containerimage.oc1..exampleuniqueID`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :param image_id: The image_id of this CreateContainerImageSignatureDetails.
+ :type: str
+ """
+ self._image_id = image_id
+
+ @property
+ def kms_key_id(self):
+ """
+ **[Required]** Gets the kms_key_id of this CreateContainerImageSignatureDetails.
+ The `OCID`__ of the kmsKeyId used to sign the container image.
+
+ Example: `ocid1.key.oc1..exampleuniqueID`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :return: The kms_key_id of this CreateContainerImageSignatureDetails.
+ :rtype: str
+ """
+ return self._kms_key_id
+
+ @kms_key_id.setter
+ def kms_key_id(self, kms_key_id):
+ """
+ Sets the kms_key_id of this CreateContainerImageSignatureDetails.
+ The `OCID`__ of the kmsKeyId used to sign the container image.
+
+ Example: `ocid1.key.oc1..exampleuniqueID`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :param kms_key_id: The kms_key_id of this CreateContainerImageSignatureDetails.
+ :type: str
+ """
+ self._kms_key_id = kms_key_id
+
+ @property
+ def kms_key_version_id(self):
+ """
+ **[Required]** Gets the kms_key_version_id of this CreateContainerImageSignatureDetails.
+ The `OCID`__ of the kmsKeyVersionId used to sign the container image.
+
+ Example: `ocid1.keyversion.oc1..exampleuniqueID`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :return: The kms_key_version_id of this CreateContainerImageSignatureDetails.
+ :rtype: str
+ """
+ return self._kms_key_version_id
+
+ @kms_key_version_id.setter
+ def kms_key_version_id(self, kms_key_version_id):
+ """
+ Sets the kms_key_version_id of this CreateContainerImageSignatureDetails.
+ The `OCID`__ of the kmsKeyVersionId used to sign the container image.
+
+ Example: `ocid1.keyversion.oc1..exampleuniqueID`
+
+ __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
+
+
+ :param kms_key_version_id: The kms_key_version_id of this CreateContainerImageSignatureDetails.
+ :type: str
+ """
+ self._kms_key_version_id = kms_key_version_id
+
+ @property
+ def message(self):
+ """
+ **[Required]** Gets the message of this CreateContainerImageSignatureDetails.
+ The base64 encoded signature payload that was signed.
+
+
+ :return: The message of this CreateContainerImageSignatureDetails.
+ :rtype: str
+ """
+ return self._message
+
+ @message.setter
+ def message(self, message):
+ """
+ Sets the message of this CreateContainerImageSignatureDetails.
+ The base64 encoded signature payload that was signed.
+
+
+ :param message: The message of this CreateContainerImageSignatureDetails.
+ :type: str
+ """
+ self._message = message
+
+ @property
+ def signature(self):
+ """
+ **[Required]** Gets the signature of this CreateContainerImageSignatureDetails.
+ The signature of the message field using the kmsKeyId, the kmsKeyVersionId, and the signingAlgorithm.
+
+
+ :return: The signature of this CreateContainerImageSignatureDetails.
+ :rtype: str
+ """
+ return self._signature
+
+ @signature.setter
+ def signature(self, signature):
+ """
+ Sets the signature of this CreateContainerImageSignatureDetails.
+ The signature of the message field using the kmsKeyId, the kmsKeyVersionId, and the signingAlgorithm.
+
+
+ :param signature: The signature of this CreateContainerImageSignatureDetails.
+ :type: str
+ """
+ self._signature = signature
+
+ @property
+ def signing_algorithm(self):
+ """
+ **[Required]** Gets the signing_algorithm of this CreateContainerImageSignatureDetails.
+ The algorithm to be used for signing. These are the only supported signing algorithms for container images.
+
+ Allowed values for this property are: "SHA_224_RSA_PKCS_PSS", "SHA_256_RSA_PKCS_PSS", "SHA_384_RSA_PKCS_PSS", "SHA_512_RSA_PKCS_PSS"
+
+
+ :return: The signing_algorithm of this CreateContainerImageSignatureDetails.
+ :rtype: str
+ """
+ return self._signing_algorithm
+
+ @signing_algorithm.setter
+ def signing_algorithm(self, signing_algorithm):
+ """
+ Sets the signing_algorithm of this CreateContainerImageSignatureDetails.
+ The algorithm to be used for signing. These are the only supported signing algorithms for container images.
+
+
+ :param signing_algorithm: The signing_algorithm of this CreateContainerImageSignatureDetails.
+ :type: str
+ """
+ allowed_values = ["SHA_224_RSA_PKCS_PSS", "SHA_256_RSA_PKCS_PSS", "SHA_384_RSA_PKCS_PSS", "SHA_512_RSA_PKCS_PSS"]
+ if not value_allowed_none_or_none_sentinel(signing_algorithm, allowed_values):
+ raise ValueError(
+ "Invalid value for `signing_algorithm`, must be None or one of {0}"
+ .format(allowed_values)
+ )
+ self._signing_algorithm = signing_algorithm
+
+ def __repr__(self):
+ return formatted_flat_dict(self)
+
+ def __eq__(self, other):
+ if other is None:
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not self == other
diff --git a/src/oci/autoscaling/auto_scaling_client.py b/src/oci/autoscaling/auto_scaling_client.py
index b856b53f21..a53934edea 100644
--- a/src/oci/autoscaling/auto_scaling_client.py
+++ b/src/oci/autoscaling/auto_scaling_client.py
@@ -273,6 +273,14 @@ def create_auto_scaling_policy(self, auto_scaling_configuration_id, create_auto_
"""
Creates an autoscaling policy for the specified autoscaling configuration.
+ You can create the following types of autoscaling policies:
+
+ - **Schedule-based:** Autoscaling events take place at the specific times that you schedule.
+ - **Threshold-based:** An autoscaling action is triggered when a performance metric meets or exceeds a threshold.
+
+ An autoscaling configuration can either have multiple schedule-based autoscaling policies, or one
+ threshold-based autoscaling policy.
+
:param str auto_scaling_configuration_id: (required)
The `OCID`__ of the autoscaling configuration.
@@ -690,7 +698,7 @@ def list_auto_scaling_configurations(self, compartment_id, **kwargs):
:param str compartment_id: (required)
The `OCID`__ of the compartment containing the
- resources monitored by the metric that you are searching for. Use tenancyId to search in
+ resource. Use tenancyId to search in
the root compartment.
__ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm
diff --git a/src/oci/autoscaling/models/__init__.py b/src/oci/autoscaling/models/__init__.py
index 90598cc49e..4f236e9285 100644
--- a/src/oci/autoscaling/models/__init__.py
+++ b/src/oci/autoscaling/models/__init__.py
@@ -22,6 +22,8 @@
from .instance_pool_resource import InstancePoolResource
from .metric import Metric
from .resource import Resource
+from .resource_action import ResourceAction
+from .resource_power_action import ResourcePowerAction
from .scheduled_policy import ScheduledPolicy
from .threshold import Threshold
from .threshold_policy import ThresholdPolicy
@@ -51,6 +53,8 @@
"InstancePoolResource": InstancePoolResource,
"Metric": Metric,
"Resource": Resource,
+ "ResourceAction": ResourceAction,
+ "ResourcePowerAction": ResourcePowerAction,
"ScheduledPolicy": ScheduledPolicy,
"Threshold": Threshold,
"ThresholdPolicy": ThresholdPolicy,
diff --git a/src/oci/autoscaling/models/auto_scaling_configuration.py b/src/oci/autoscaling/models/auto_scaling_configuration.py
index 09698017c4..d8c9553e36 100644
--- a/src/oci/autoscaling/models/auto_scaling_configuration.py
+++ b/src/oci/autoscaling/models/auto_scaling_configuration.py
@@ -10,7 +10,7 @@
@init_model_state_from_kwargs
class AutoScalingConfiguration(object):
"""
- An autoscaling configuration allows you to dynamically scale the resources in a Compute instance pool.
+ An autoscaling configuration lets you dynamically scale the resources in a Compute instance pool.
For more information, see `Autoscaling`__.
__ https://docs.cloud.oracle.com/iaas/Content/Compute/Tasks/autoscalinginstancepools.htm
@@ -265,8 +265,11 @@ def id(self, id):
def cool_down_in_seconds(self):
"""
Gets the cool_down_in_seconds of this AutoScalingConfiguration.
- The minimum period of time to wait between scaling actions. The cooldown period gives the system time to stabilize
- before rescaling. The minimum value is 300 seconds, which is also the default.
+ For threshold-based autoscaling policies, this value is the minimum period of time to wait between scaling actions.
+ The cooldown period gives the system time to stabilize before rescaling. The minimum value is 300 seconds, which
+ is also the default. The cooldown period starts when the instance pool reaches the running state.
+
+ For schedule-based autoscaling policies, this value is not used.
:return: The cool_down_in_seconds of this AutoScalingConfiguration.
@@ -278,8 +281,11 @@ def cool_down_in_seconds(self):
def cool_down_in_seconds(self, cool_down_in_seconds):
"""
Sets the cool_down_in_seconds of this AutoScalingConfiguration.
- The minimum period of time to wait between scaling actions. The cooldown period gives the system time to stabilize
- before rescaling. The minimum value is 300 seconds, which is also the default.
+ For threshold-based autoscaling policies, this value is the minimum period of time to wait between scaling actions.
+ The cooldown period gives the system time to stabilize before rescaling. The minimum value is 300 seconds, which
+ is also the default. The cooldown period starts when the instance pool reaches the running state.
+
+ For schedule-based autoscaling policies, this value is not used.
:param cool_down_in_seconds: The cool_down_in_seconds of this AutoScalingConfiguration.
@@ -338,8 +344,6 @@ def policies(self):
Autoscaling policy definitions for the autoscaling configuration. An autoscaling policy defines the criteria that
trigger autoscaling actions and the actions to take.
- Each autoscaling configuration can have one autoscaling policy.
-
:return: The policies of this AutoScalingConfiguration.
:rtype: list[oci.autoscaling.models.AutoScalingPolicy]
@@ -353,8 +357,6 @@ def policies(self, policies):
Autoscaling policy definitions for the autoscaling configuration. An autoscaling policy defines the criteria that
trigger autoscaling actions and the actions to take.
- Each autoscaling configuration can have one autoscaling policy.
-
:param policies: The policies of this AutoScalingConfiguration.
:type: list[oci.autoscaling.models.AutoScalingPolicy]
@@ -365,7 +367,7 @@ def policies(self, policies):
def time_created(self):
"""
**[Required]** Gets the time_created of this AutoScalingConfiguration.
- The date and time the AutoScalingConfiguration was created, in the format defined by RFC3339.
+ The date and time the autoscaling configuration was created, in the format defined by RFC3339.
Example: `2016-08-25T21:10:29.600Z`
@@ -379,7 +381,7 @@ def time_created(self):
def time_created(self, time_created):
"""
Sets the time_created of this AutoScalingConfiguration.
- The date and time the AutoScalingConfiguration was created, in the format defined by RFC3339.
+ The date and time the autoscaling configuration was created, in the format defined by RFC3339.
Example: `2016-08-25T21:10:29.600Z`
diff --git a/src/oci/autoscaling/models/auto_scaling_configuration_summary.py b/src/oci/autoscaling/models/auto_scaling_configuration_summary.py
index a4a990e2b0..ec28314bf7 100644
--- a/src/oci/autoscaling/models/auto_scaling_configuration_summary.py
+++ b/src/oci/autoscaling/models/auto_scaling_configuration_summary.py
@@ -173,8 +173,11 @@ def id(self, id):
def cool_down_in_seconds(self):
"""
Gets the cool_down_in_seconds of this AutoScalingConfigurationSummary.
- The minimum period of time to wait between scaling actions. The cooldown period gives the system time to stabilize
- before rescaling. The minimum value is 300 seconds, which is also the default.
+ For threshold-based autoscaling policies, this value is the minimum period of time to wait between scaling actions.
+ The cooldown period gives the system time to stabilize before rescaling. The minimum value is 300 seconds, which
+ is also the default. The cooldown period starts when the instance pool reaches the running state.
+
+ For schedule-based autoscaling policies, this value is not used.
:return: The cool_down_in_seconds of this AutoScalingConfigurationSummary.
@@ -186,8 +189,11 @@ def cool_down_in_seconds(self):
def cool_down_in_seconds(self, cool_down_in_seconds):
"""
Sets the cool_down_in_seconds of this AutoScalingConfigurationSummary.
- The minimum period of time to wait between scaling actions. The cooldown period gives the system time to stabilize
- before rescaling. The minimum value is 300 seconds, which is also the default.
+ For threshold-based autoscaling policies, this value is the minimum period of time to wait between scaling actions.
+ The cooldown period gives the system time to stabilize before rescaling. The minimum value is 300 seconds, which
+ is also the default. The cooldown period starts when the instance pool reaches the running state.
+
+ For schedule-based autoscaling policies, this value is not used.
:param cool_down_in_seconds: The cool_down_in_seconds of this AutoScalingConfigurationSummary.
@@ -311,7 +317,7 @@ def freeform_tags(self, freeform_tags):
def time_created(self):
"""
**[Required]** Gets the time_created of this AutoScalingConfigurationSummary.
- The date and time the AutoScalingConfiguration was created, in the format defined by RFC3339.
+ The date and time the autoscaling configuration was created, in the format defined by RFC3339.
Example: `2016-08-25T21:10:29.600Z`
@@ -325,7 +331,7 @@ def time_created(self):
def time_created(self, time_created):
"""
Sets the time_created of this AutoScalingConfigurationSummary.
- The date and time the AutoScalingConfiguration was created, in the format defined by RFC3339.
+ The date and time the autoscaling configuration was created, in the format defined by RFC3339.
Example: `2016-08-25T21:10:29.600Z`
diff --git a/src/oci/autoscaling/models/auto_scaling_policy.py b/src/oci/autoscaling/models/auto_scaling_policy.py
index 3124e020d5..6064116ecb 100644
--- a/src/oci/autoscaling/models/auto_scaling_policy.py
+++ b/src/oci/autoscaling/models/auto_scaling_policy.py
@@ -15,6 +15,11 @@ class AutoScalingPolicy(object):
An autoscaling policy is part of an autoscaling configuration. For more information, see
`Autoscaling`__.
+ You can create the following types of autoscaling policies:
+
+ - **Schedule-based:** Autoscaling events take place at the specific times that you schedule.
+ - **Threshold-based:** An autoscaling action is triggered when a performance metric meets or exceeds a threshold.
+
__ https://docs.cloud.oracle.com/iaas/Content/Compute/Tasks/autoscalinginstancepools.htm
"""
@@ -97,7 +102,7 @@ def get_subtype(object_dictionary):
@property
def capacity(self):
"""
- **[Required]** Gets the capacity of this AutoScalingPolicy.
+ Gets the capacity of this AutoScalingPolicy.
The capacity requirements of the autoscaling policy.
@@ -222,7 +227,7 @@ def time_created(self, time_created):
def is_enabled(self):
"""
Gets the is_enabled of this AutoScalingPolicy.
- Boolean field indicating whether this policy is enabled or not.
+ Whether the autoscaling policy is enabled.
:return: The is_enabled of this AutoScalingPolicy.
@@ -234,7 +239,7 @@ def is_enabled(self):
def is_enabled(self, is_enabled):
"""
Sets the is_enabled of this AutoScalingPolicy.
- Boolean field indicating whether this policy is enabled or not.
+ Whether the autoscaling policy is enabled.
:param is_enabled: The is_enabled of this AutoScalingPolicy.
diff --git a/src/oci/autoscaling/models/auto_scaling_policy_summary.py b/src/oci/autoscaling/models/auto_scaling_policy_summary.py
index 23db483302..f70bd5b228 100644
--- a/src/oci/autoscaling/models/auto_scaling_policy_summary.py
+++ b/src/oci/autoscaling/models/auto_scaling_policy_summary.py
@@ -130,7 +130,7 @@ def policy_type(self, policy_type):
def is_enabled(self):
"""
Gets the is_enabled of this AutoScalingPolicySummary.
- Boolean field indicated whether this policy is enabled or not.
+ Whether the autoscaling policy is enabled.
:return: The is_enabled of this AutoScalingPolicySummary.
@@ -142,7 +142,7 @@ def is_enabled(self):
def is_enabled(self, is_enabled):
"""
Sets the is_enabled of this AutoScalingPolicySummary.
- Boolean field indicated whether this policy is enabled or not.
+ Whether the autoscaling policy is enabled.
:param is_enabled: The is_enabled of this AutoScalingPolicySummary.
diff --git a/src/oci/autoscaling/models/capacity.py b/src/oci/autoscaling/models/capacity.py
index ecd7273a24..950a7e6c23 100644
--- a/src/oci/autoscaling/models/capacity.py
+++ b/src/oci/autoscaling/models/capacity.py
@@ -51,7 +51,10 @@ def __init__(self, **kwargs):
def max(self):
"""
Gets the max of this Capacity.
- The maximum number of instances the instance pool is allowed to increase to (scale out).
+ For a threshold-based autoscaling policy, this value is the maximum number of instances the instance pool is allowed
+ to increase to (scale out).
+
+ For a schedule-based autoscaling policy, this value is not used.
:return: The max of this Capacity.
@@ -63,7 +66,10 @@ def max(self):
def max(self, max):
"""
Sets the max of this Capacity.
- The maximum number of instances the instance pool is allowed to increase to (scale out).
+ For a threshold-based autoscaling policy, this value is the maximum number of instances the instance pool is allowed
+ to increase to (scale out).
+
+ For a schedule-based autoscaling policy, this value is not used.
:param max: The max of this Capacity.
@@ -75,7 +81,10 @@ def max(self, max):
def min(self):
"""
Gets the min of this Capacity.
- The minimum number of instances the instance pool is allowed to decrease to (scale in).
+ For a threshold-based autoscaling policy, this value is the minimum number of instances the instance pool is allowed
+ to decrease to (scale in).
+
+ For a schedule-based autoscaling policy, this value is not used.
:return: The min of this Capacity.
@@ -87,7 +96,10 @@ def min(self):
def min(self, min):
"""
Sets the min of this Capacity.
- The minimum number of instances the instance pool is allowed to decrease to (scale in).
+ For a threshold-based autoscaling policy, this value is the minimum number of instances the instance pool is allowed
+ to decrease to (scale in).
+
+ For a schedule-based autoscaling policy, this value is not used.
:param min: The min of this Capacity.
@@ -99,9 +111,13 @@ def min(self, min):
def initial(self):
"""
Gets the initial of this Capacity.
- The initial number of instances to launch in the instance pool immediately after autoscaling is
- enabled. After autoscaling retrieves performance metrics, the number of instances is automatically adjusted from this
- initial number to a number that is based on the limits that you set.
+ For a threshold-based autoscaling policy, this value is the initial number of instances to launch in the instance pool
+ immediately after autoscaling is enabled. After autoscaling retrieves performance metrics, the number of
+ instances is automatically adjusted from this initial number to a number that is based on the limits that
+ you set.
+
+ For a schedule-based autoscaling policy, this value is the target pool size to scale to when executing the schedule
+ that's defined in the autoscaling policy.
:return: The initial of this Capacity.
@@ -113,9 +129,13 @@ def initial(self):
def initial(self, initial):
"""
Sets the initial of this Capacity.
- The initial number of instances to launch in the instance pool immediately after autoscaling is
- enabled. After autoscaling retrieves performance metrics, the number of instances is automatically adjusted from this
- initial number to a number that is based on the limits that you set.
+ For a threshold-based autoscaling policy, this value is the initial number of instances to launch in the instance pool
+ immediately after autoscaling is enabled. After autoscaling retrieves performance metrics, the number of
+ instances is automatically adjusted from this initial number to a number that is based on the limits that
+ you set.
+
+ For a schedule-based autoscaling policy, this value is the target pool size to scale to when executing the schedule
+ that's defined in the autoscaling policy.
:param initial: The initial of this Capacity.
diff --git a/src/oci/autoscaling/models/create_auto_scaling_configuration_details.py b/src/oci/autoscaling/models/create_auto_scaling_configuration_details.py
index 0d4679e944..927733c325 100644
--- a/src/oci/autoscaling/models/create_auto_scaling_configuration_details.py
+++ b/src/oci/autoscaling/models/create_auto_scaling_configuration_details.py
@@ -206,8 +206,11 @@ def freeform_tags(self, freeform_tags):
def cool_down_in_seconds(self):
"""
Gets the cool_down_in_seconds of this CreateAutoScalingConfigurationDetails.
- The minimum period of time to wait between scaling actions. The cooldown period gives the system time to stabilize
- before rescaling. The minimum value is 300 seconds, which is also the default.
+ For threshold-based autoscaling policies, this value is the minimum period of time to wait between scaling actions.
+ The cooldown period gives the system time to stabilize before rescaling. The minimum value is 300 seconds, which
+ is also the default. The cooldown period starts when the instance pool reaches the running state.
+
+ For schedule-based autoscaling policies, this value is not used.
:return: The cool_down_in_seconds of this CreateAutoScalingConfigurationDetails.
@@ -219,8 +222,11 @@ def cool_down_in_seconds(self):
def cool_down_in_seconds(self, cool_down_in_seconds):
"""
Sets the cool_down_in_seconds of this CreateAutoScalingConfigurationDetails.
- The minimum period of time to wait between scaling actions. The cooldown period gives the system time to stabilize
- before rescaling. The minimum value is 300 seconds, which is also the default.
+ For threshold-based autoscaling policies, this value is the minimum period of time to wait between scaling actions.
+ The cooldown period gives the system time to stabilize before rescaling. The minimum value is 300 seconds, which
+ is also the default. The cooldown period starts when the instance pool reaches the running state.
+
+ For schedule-based autoscaling policies, this value is not used.
:param cool_down_in_seconds: The cool_down_in_seconds of this CreateAutoScalingConfigurationDetails.
diff --git a/src/oci/autoscaling/models/create_auto_scaling_policy_details.py b/src/oci/autoscaling/models/create_auto_scaling_policy_details.py
index ffe17bdfc1..70d5010b16 100644
--- a/src/oci/autoscaling/models/create_auto_scaling_policy_details.py
+++ b/src/oci/autoscaling/models/create_auto_scaling_policy_details.py
@@ -10,12 +10,14 @@
@init_model_state_from_kwargs
class CreateAutoScalingPolicyDetails(object):
"""
- Creation details for an autoscaling policy.
+ Creation details for an autoscaling policy. You can create the following types of autoscaling policies:
- Each autoscaling configuration can have one autoscaling policy.
-
- In a threshold-based autoscaling policy, an autoscaling action is triggered when a performance metric meets
+ - **Schedule-based:** Autoscaling events take place at the specific times that you schedule.
+ - **Threshold-based:** An autoscaling action is triggered when a performance metric meets
or exceeds a threshold.
+
+ An autoscaling configuration can either have multiple schedule-based autoscaling policies, or one
+ threshold-based autoscaling policy.
"""
def __init__(self, **kwargs):
@@ -83,7 +85,7 @@ def get_subtype(object_dictionary):
@property
def capacity(self):
"""
- **[Required]** Gets the capacity of this CreateAutoScalingPolicyDetails.
+ Gets the capacity of this CreateAutoScalingPolicyDetails.
The capacity requirements of the autoscaling policy.
@@ -156,7 +158,7 @@ def policy_type(self, policy_type):
def is_enabled(self):
"""
Gets the is_enabled of this CreateAutoScalingPolicyDetails.
- Boolean field indicating whether this policy is enabled or not.
+ Whether the autoscaling policy is enabled.
:return: The is_enabled of this CreateAutoScalingPolicyDetails.
@@ -168,7 +170,7 @@ def is_enabled(self):
def is_enabled(self, is_enabled):
"""
Sets the is_enabled of this CreateAutoScalingPolicyDetails.
- Boolean field indicating whether this policy is enabled or not.
+ Whether the autoscaling policy is enabled.
:param is_enabled: The is_enabled of this CreateAutoScalingPolicyDetails.
diff --git a/src/oci/autoscaling/models/create_scheduled_policy_details.py b/src/oci/autoscaling/models/create_scheduled_policy_details.py
index 59de5c1334..d593eb1549 100644
--- a/src/oci/autoscaling/models/create_scheduled_policy_details.py
+++ b/src/oci/autoscaling/models/create_scheduled_policy_details.py
@@ -12,7 +12,7 @@ class CreateScheduledPolicyDetails(CreateAutoScalingPolicyDetails):
"""
Creation details for a schedule-based autoscaling policy.
- In a schedule-based autoscaling policy, an autoscaling action is triggered when execution time is current.
+ In a schedule-based autoscaling policy, an autoscaling action is triggered at the scheduled execution time.
"""
def __init__(self, **kwargs):
@@ -41,13 +41,18 @@ def __init__(self, **kwargs):
The value to assign to the execution_schedule property of this CreateScheduledPolicyDetails.
:type execution_schedule: oci.autoscaling.models.ExecutionSchedule
+ :param resource_action:
+ The value to assign to the resource_action property of this CreateScheduledPolicyDetails.
+ :type resource_action: oci.autoscaling.models.ResourceAction
+
"""
self.swagger_types = {
'capacity': 'Capacity',
'display_name': 'str',
'policy_type': 'str',
'is_enabled': 'bool',
- 'execution_schedule': 'ExecutionSchedule'
+ 'execution_schedule': 'ExecutionSchedule',
+ 'resource_action': 'ResourceAction'
}
self.attribute_map = {
@@ -55,7 +60,8 @@ def __init__(self, **kwargs):
'display_name': 'displayName',
'policy_type': 'policyType',
'is_enabled': 'isEnabled',
- 'execution_schedule': 'executionSchedule'
+ 'execution_schedule': 'executionSchedule',
+ 'resource_action': 'resourceAction'
}
self._capacity = None
@@ -63,6 +69,7 @@ def __init__(self, **kwargs):
self._policy_type = None
self._is_enabled = None
self._execution_schedule = None
+ self._resource_action = None
self._policy_type = 'scheduled'
@property
@@ -85,6 +92,26 @@ def execution_schedule(self, execution_schedule):
"""
self._execution_schedule = execution_schedule
+ @property
+ def resource_action(self):
+ """
+ Gets the resource_action of this CreateScheduledPolicyDetails.
+
+ :return: The resource_action of this CreateScheduledPolicyDetails.
+ :rtype: oci.autoscaling.models.ResourceAction
+ """
+ return self._resource_action
+
+ @resource_action.setter
+ def resource_action(self, resource_action):
+ """
+ Sets the resource_action of this CreateScheduledPolicyDetails.
+
+ :param resource_action: The resource_action of this CreateScheduledPolicyDetails.
+ :type: oci.autoscaling.models.ResourceAction
+ """
+ self._resource_action = resource_action
+
def __repr__(self):
return formatted_flat_dict(self)
diff --git a/src/oci/autoscaling/models/cron_execution_schedule.py b/src/oci/autoscaling/models/cron_execution_schedule.py
index cc756acea8..2af0d2b145 100644
--- a/src/oci/autoscaling/models/cron_execution_schedule.py
+++ b/src/oci/autoscaling/models/cron_execution_schedule.py
@@ -10,7 +10,7 @@
@init_model_state_from_kwargs
class CronExecutionSchedule(ExecutionSchedule):
"""
- Specifies the execution schedule of CRON type.
+ An autoscaling execution schedule that uses a cron expression.
"""
def __init__(self, **kwargs):
@@ -54,7 +54,15 @@ def __init__(self, **kwargs):
def expression(self):
"""
**[Required]** Gets the expression of this CronExecutionSchedule.
- The value representing the execution schedule, as defined by cron format.
+ A cron expression that represents the time at which to execute the autoscaling policy.
+
+ Cron expressions have this format: ` `
+
+ You can use special characters that are supported with the Quartz cron implementation.
+
+ You must specify `0` as the value for seconds.
+
+ Example: `0 15 10 ? * *`
:return: The expression of this CronExecutionSchedule.
@@ -66,7 +74,15 @@ def expression(self):
def expression(self, expression):
"""
Sets the expression of this CronExecutionSchedule.
- The value representing the execution schedule, as defined by cron format.
+ A cron expression that represents the time at which to execute the autoscaling policy.
+
+ Cron expressions have this format: ` `
+
+ You can use special characters that are supported with the Quartz cron implementation.
+
+ You must specify `0` as the value for seconds.
+
+ Example: `0 15 10 ? * *`
:param expression: The expression of this CronExecutionSchedule.
diff --git a/src/oci/autoscaling/models/execution_schedule.py b/src/oci/autoscaling/models/execution_schedule.py
index 2456c95875..6f22d1c30c 100644
--- a/src/oci/autoscaling/models/execution_schedule.py
+++ b/src/oci/autoscaling/models/execution_schedule.py
@@ -10,7 +10,7 @@
@init_model_state_from_kwargs
class ExecutionSchedule(object):
"""
- Specifies the execution schedule for a policy.
+ An execution schedule for an autoscaling policy.
"""
#: A constant which can be used with the timezone property of a ExecutionSchedule.
@@ -67,7 +67,7 @@ def get_subtype(object_dictionary):
def type(self):
"""
**[Required]** Gets the type of this ExecutionSchedule.
- The type of ExecutionSchedule.
+ The type of execution schedule.
:return: The type of this ExecutionSchedule.
@@ -79,7 +79,7 @@ def type(self):
def type(self, type):
"""
Sets the type of this ExecutionSchedule.
- The type of ExecutionSchedule.
+ The type of execution schedule.
:param type: The type of this ExecutionSchedule.
@@ -91,7 +91,7 @@ def type(self, type):
def timezone(self):
"""
**[Required]** Gets the timezone of this ExecutionSchedule.
- Specifies the time zone the schedule is in.
+ The time zone for the execution schedule.
Allowed values for this property are: "UTC", 'UNKNOWN_ENUM_VALUE'.
Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
@@ -106,7 +106,7 @@ def timezone(self):
def timezone(self, timezone):
"""
Sets the timezone of this ExecutionSchedule.
- Specifies the time zone the schedule is in.
+ The time zone for the execution schedule.
:param timezone: The timezone of this ExecutionSchedule.
diff --git a/src/oci/autoscaling/models/resource.py b/src/oci/autoscaling/models/resource.py
index 68c11c23bd..40573e77be 100644
--- a/src/oci/autoscaling/models/resource.py
+++ b/src/oci/autoscaling/models/resource.py
@@ -10,7 +10,7 @@
@init_model_state_from_kwargs
class Resource(object):
"""
- A resource that is managed by an autoscaling configuration. The only supported type is \"instancePool.\"
+ A resource that is managed by an autoscaling configuration. The only supported type is `instancePool`.
Each instance pool can have one autoscaling configuration.
"""
diff --git a/src/oci/autoscaling/models/resource_action.py b/src/oci/autoscaling/models/resource_action.py
new file mode 100644
index 0000000000..d14dc05648
--- /dev/null
+++ b/src/oci/autoscaling/models/resource_action.py
@@ -0,0 +1,87 @@
+# coding: utf-8
+# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
+# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+
+
+from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401
+from oci.decorators import init_model_state_from_kwargs
+
+
+@init_model_state_from_kwargs
+class ResourceAction(object):
+ """
+ An action that can be executed against a resource.
+ """
+
+ def __init__(self, **kwargs):
+ """
+ Initializes a new ResourceAction object with values from keyword arguments. This class has the following subclasses and if you are using this class as input
+ to a service operations then you should favor using a subclass over the base class:
+
+ * :class:`~oci.autoscaling.models.ResourcePowerAction`
+
+ The following keyword arguments are supported (corresponding to the getters/setters of this class):
+
+ :param action_type:
+ The value to assign to the action_type property of this ResourceAction.
+ :type action_type: str
+
+ """
+ self.swagger_types = {
+ 'action_type': 'str'
+ }
+
+ self.attribute_map = {
+ 'action_type': 'actionType'
+ }
+
+ self._action_type = None
+
+ @staticmethod
+ def get_subtype(object_dictionary):
+ """
+ Given the hash representation of a subtype of this class,
+ use the info in the hash to return the class of the subtype.
+ """
+ type = object_dictionary['actionType']
+
+ if type == 'power':
+ return 'ResourcePowerAction'
+ else:
+ return 'ResourceAction'
+
+ @property
+ def action_type(self):
+ """
+ Gets the action_type of this ResourceAction.
+ The type of resource action.
+
+
+ :return: The action_type of this ResourceAction.
+ :rtype: str
+ """
+ return self._action_type
+
+ @action_type.setter
+ def action_type(self, action_type):
+ """
+ Sets the action_type of this ResourceAction.
+ The type of resource action.
+
+
+ :param action_type: The action_type of this ResourceAction.
+ :type: str
+ """
+ self._action_type = action_type
+
+ def __repr__(self):
+ return formatted_flat_dict(self)
+
+ def __eq__(self, other):
+ if other is None:
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not self == other
diff --git a/src/oci/autoscaling/models/resource_power_action.py b/src/oci/autoscaling/models/resource_power_action.py
new file mode 100644
index 0000000000..1f9504d417
--- /dev/null
+++ b/src/oci/autoscaling/models/resource_power_action.py
@@ -0,0 +1,99 @@
+# coding: utf-8
+# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
+# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+
+from .resource_action import ResourceAction
+from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401
+from oci.decorators import init_model_state_from_kwargs
+
+
+@init_model_state_from_kwargs
+class ResourcePowerAction(ResourceAction):
+ """
+ A power action against a resource.
+ """
+
+ #: A constant which can be used with the action property of a ResourcePowerAction.
+ #: This constant has a value of "STOP"
+ ACTION_STOP = "STOP"
+
+ #: A constant which can be used with the action property of a ResourcePowerAction.
+ #: This constant has a value of "START"
+ ACTION_START = "START"
+
+ #: A constant which can be used with the action property of a ResourcePowerAction.
+ #: This constant has a value of "SOFTRESET"
+ ACTION_SOFTRESET = "SOFTRESET"
+
+ #: A constant which can be used with the action property of a ResourcePowerAction.
+ #: This constant has a value of "RESET"
+ ACTION_RESET = "RESET"
+
+ def __init__(self, **kwargs):
+ """
+ Initializes a new ResourcePowerAction object with values from keyword arguments. The default value of the :py:attr:`~oci.autoscaling.models.ResourcePowerAction.action_type` attribute
+ of this class is ``power`` and it should not be changed.
+ The following keyword arguments are supported (corresponding to the getters/setters of this class):
+
+ :param action_type:
+ The value to assign to the action_type property of this ResourcePowerAction.
+ :type action_type: str
+
+ :param action:
+ The value to assign to the action property of this ResourcePowerAction.
+ Allowed values for this property are: "STOP", "START", "SOFTRESET", "RESET", 'UNKNOWN_ENUM_VALUE'.
+ Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
+ :type action: str
+
+ """
+ self.swagger_types = {
+ 'action_type': 'str',
+ 'action': 'str'
+ }
+
+ self.attribute_map = {
+ 'action_type': 'actionType',
+ 'action': 'action'
+ }
+
+ self._action_type = None
+ self._action = None
+ self._action_type = 'power'
+
+ @property
+ def action(self):
+ """
+ **[Required]** Gets the action of this ResourcePowerAction.
+ Allowed values for this property are: "STOP", "START", "SOFTRESET", "RESET", 'UNKNOWN_ENUM_VALUE'.
+ Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
+
+
+ :return: The action of this ResourcePowerAction.
+ :rtype: str
+ """
+ return self._action
+
+ @action.setter
+ def action(self, action):
+ """
+ Sets the action of this ResourcePowerAction.
+
+ :param action: The action of this ResourcePowerAction.
+ :type: str
+ """
+ allowed_values = ["STOP", "START", "SOFTRESET", "RESET"]
+ if not value_allowed_none_or_none_sentinel(action, allowed_values):
+ action = 'UNKNOWN_ENUM_VALUE'
+ self._action = action
+
+ def __repr__(self):
+ return formatted_flat_dict(self)
+
+ def __eq__(self, other):
+ if other is None:
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not self == other
diff --git a/src/oci/autoscaling/models/scheduled_policy.py b/src/oci/autoscaling/models/scheduled_policy.py
index a508bd8f1b..3426a1b514 100644
--- a/src/oci/autoscaling/models/scheduled_policy.py
+++ b/src/oci/autoscaling/models/scheduled_policy.py
@@ -47,6 +47,10 @@ def __init__(self, **kwargs):
The value to assign to the execution_schedule property of this ScheduledPolicy.
:type execution_schedule: oci.autoscaling.models.ExecutionSchedule
+ :param resource_action:
+ The value to assign to the resource_action property of this ScheduledPolicy.
+ :type resource_action: oci.autoscaling.models.ResourceAction
+
"""
self.swagger_types = {
'capacity': 'Capacity',
@@ -55,7 +59,8 @@ def __init__(self, **kwargs):
'policy_type': 'str',
'time_created': 'datetime',
'is_enabled': 'bool',
- 'execution_schedule': 'ExecutionSchedule'
+ 'execution_schedule': 'ExecutionSchedule',
+ 'resource_action': 'ResourceAction'
}
self.attribute_map = {
@@ -65,7 +70,8 @@ def __init__(self, **kwargs):
'policy_type': 'policyType',
'time_created': 'timeCreated',
'is_enabled': 'isEnabled',
- 'execution_schedule': 'executionSchedule'
+ 'execution_schedule': 'executionSchedule',
+ 'resource_action': 'resourceAction'
}
self._capacity = None
@@ -75,12 +81,15 @@ def __init__(self, **kwargs):
self._time_created = None
self._is_enabled = None
self._execution_schedule = None
+ self._resource_action = None
self._policy_type = 'scheduled'
@property
def execution_schedule(self):
"""
**[Required]** Gets the execution_schedule of this ScheduledPolicy.
+ The schedule for executing the autoscaling policy.
+
:return: The execution_schedule of this ScheduledPolicy.
:rtype: oci.autoscaling.models.ExecutionSchedule
@@ -91,12 +100,34 @@ def execution_schedule(self):
def execution_schedule(self, execution_schedule):
"""
Sets the execution_schedule of this ScheduledPolicy.
+ The schedule for executing the autoscaling policy.
+
:param execution_schedule: The execution_schedule of this ScheduledPolicy.
:type: oci.autoscaling.models.ExecutionSchedule
"""
self._execution_schedule = execution_schedule
+ @property
+ def resource_action(self):
+ """
+ Gets the resource_action of this ScheduledPolicy.
+
+ :return: The resource_action of this ScheduledPolicy.
+ :rtype: oci.autoscaling.models.ResourceAction
+ """
+ return self._resource_action
+
+ @resource_action.setter
+ def resource_action(self, resource_action):
+ """
+ Sets the resource_action of this ScheduledPolicy.
+
+ :param resource_action: The resource_action of this ScheduledPolicy.
+ :type: oci.autoscaling.models.ResourceAction
+ """
+ self._resource_action = resource_action
+
def __repr__(self):
return formatted_flat_dict(self)
diff --git a/src/oci/autoscaling/models/update_auto_scaling_configuration_details.py b/src/oci/autoscaling/models/update_auto_scaling_configuration_details.py
index c85b6a147a..a54b63287a 100644
--- a/src/oci/autoscaling/models/update_auto_scaling_configuration_details.py
+++ b/src/oci/autoscaling/models/update_auto_scaling_configuration_details.py
@@ -181,9 +181,6 @@ def is_enabled(self, is_enabled):
def cool_down_in_seconds(self):
"""
Gets the cool_down_in_seconds of this UpdateAutoScalingConfigurationDetails.
- The minimum period of time to wait between scaling actions. The cooldown period gives the system time
- to stabilize before rescaling. The minimum value is 300 seconds, which is also the default.
-
:return: The cool_down_in_seconds of this UpdateAutoScalingConfigurationDetails.
:rtype: int
@@ -194,9 +191,6 @@ def cool_down_in_seconds(self):
def cool_down_in_seconds(self, cool_down_in_seconds):
"""
Sets the cool_down_in_seconds of this UpdateAutoScalingConfigurationDetails.
- The minimum period of time to wait between scaling actions. The cooldown period gives the system time
- to stabilize before rescaling. The minimum value is 300 seconds, which is also the default.
-
:param cool_down_in_seconds: The cool_down_in_seconds of this UpdateAutoScalingConfigurationDetails.
:type: int
diff --git a/src/oci/autoscaling/models/update_auto_scaling_policy_details.py b/src/oci/autoscaling/models/update_auto_scaling_policy_details.py
index 263144670d..2b4e59166a 100644
--- a/src/oci/autoscaling/models/update_auto_scaling_policy_details.py
+++ b/src/oci/autoscaling/models/update_auto_scaling_policy_details.py
@@ -151,7 +151,7 @@ def policy_type(self, policy_type):
def is_enabled(self):
"""
Gets the is_enabled of this UpdateAutoScalingPolicyDetails.
- Boolean field indicating whether this policy is enabled or not.
+ Whether the autoscaling policy is enabled.
:return: The is_enabled of this UpdateAutoScalingPolicyDetails.
@@ -163,7 +163,7 @@ def is_enabled(self):
def is_enabled(self, is_enabled):
"""
Sets the is_enabled of this UpdateAutoScalingPolicyDetails.
- Boolean field indicating whether this policy is enabled or not.
+ Whether the autoscaling policy is enabled.
:param is_enabled: The is_enabled of this UpdateAutoScalingPolicyDetails.
diff --git a/src/oci/autoscaling/models/update_scheduled_policy_details.py b/src/oci/autoscaling/models/update_scheduled_policy_details.py
index 1a39ac5ae5..36f86ae976 100644
--- a/src/oci/autoscaling/models/update_scheduled_policy_details.py
+++ b/src/oci/autoscaling/models/update_scheduled_policy_details.py
@@ -39,13 +39,18 @@ def __init__(self, **kwargs):
The value to assign to the execution_schedule property of this UpdateScheduledPolicyDetails.
:type execution_schedule: oci.autoscaling.models.ExecutionSchedule
+ :param resource_action:
+ The value to assign to the resource_action property of this UpdateScheduledPolicyDetails.
+ :type resource_action: oci.autoscaling.models.ResourceAction
+
"""
self.swagger_types = {
'display_name': 'str',
'capacity': 'Capacity',
'policy_type': 'str',
'is_enabled': 'bool',
- 'execution_schedule': 'ExecutionSchedule'
+ 'execution_schedule': 'ExecutionSchedule',
+ 'resource_action': 'ResourceAction'
}
self.attribute_map = {
@@ -53,7 +58,8 @@ def __init__(self, **kwargs):
'capacity': 'capacity',
'policy_type': 'policyType',
'is_enabled': 'isEnabled',
- 'execution_schedule': 'executionSchedule'
+ 'execution_schedule': 'executionSchedule',
+ 'resource_action': 'resourceAction'
}
self._display_name = None
@@ -61,12 +67,15 @@ def __init__(self, **kwargs):
self._policy_type = None
self._is_enabled = None
self._execution_schedule = None
+ self._resource_action = None
self._policy_type = 'scheduled'
@property
def execution_schedule(self):
"""
Gets the execution_schedule of this UpdateScheduledPolicyDetails.
+ The schedule for executing the autoscaling policy.
+
:return: The execution_schedule of this UpdateScheduledPolicyDetails.
:rtype: oci.autoscaling.models.ExecutionSchedule
@@ -77,12 +86,34 @@ def execution_schedule(self):
def execution_schedule(self, execution_schedule):
"""
Sets the execution_schedule of this UpdateScheduledPolicyDetails.
+ The schedule for executing the autoscaling policy.
+
:param execution_schedule: The execution_schedule of this UpdateScheduledPolicyDetails.
:type: oci.autoscaling.models.ExecutionSchedule
"""
self._execution_schedule = execution_schedule
+ @property
+ def resource_action(self):
+ """
+ Gets the resource_action of this UpdateScheduledPolicyDetails.
+
+ :return: The resource_action of this UpdateScheduledPolicyDetails.
+ :rtype: oci.autoscaling.models.ResourceAction
+ """
+ return self._resource_action
+
+ @resource_action.setter
+ def resource_action(self, resource_action):
+ """
+ Sets the resource_action of this UpdateScheduledPolicyDetails.
+
+ :param resource_action: The resource_action of this UpdateScheduledPolicyDetails.
+ :type: oci.autoscaling.models.ResourceAction
+ """
+ self._resource_action = resource_action
+
def __repr__(self):
return formatted_flat_dict(self)
diff --git a/src/oci/container_engine/models/__init__.py b/src/oci/container_engine/models/__init__.py
index 46b55e5643..4c299a2bdd 100644
--- a/src/oci/container_engine/models/__init__.py
+++ b/src/oci/container_engine/models/__init__.py
@@ -16,9 +16,12 @@
from .create_cluster_details import CreateClusterDetails
from .create_cluster_endpoint_config_details import CreateClusterEndpointConfigDetails
from .create_cluster_kubeconfig_content_details import CreateClusterKubeconfigContentDetails
+from .create_image_policy_config_details import CreateImagePolicyConfigDetails
from .create_node_pool_details import CreateNodePoolDetails
from .create_node_pool_node_config_details import CreateNodePoolNodeConfigDetails
from .create_node_shape_config_details import CreateNodeShapeConfigDetails
+from .image_policy_config import ImagePolicyConfig
+from .key_details import KeyDetails
from .key_value import KeyValue
from .kubernetes_network_config import KubernetesNetworkConfig
from .node import Node
@@ -36,6 +39,7 @@
from .update_cluster_details import UpdateClusterDetails
from .update_cluster_endpoint_config_details import UpdateClusterEndpointConfigDetails
from .update_cluster_options_details import UpdateClusterOptionsDetails
+from .update_image_policy_config_details import UpdateImagePolicyConfigDetails
from .update_node_pool_details import UpdateNodePoolDetails
from .update_node_pool_node_config_details import UpdateNodePoolNodeConfigDetails
from .update_node_shape_config_details import UpdateNodeShapeConfigDetails
@@ -59,9 +63,12 @@
"CreateClusterDetails": CreateClusterDetails,
"CreateClusterEndpointConfigDetails": CreateClusterEndpointConfigDetails,
"CreateClusterKubeconfigContentDetails": CreateClusterKubeconfigContentDetails,
+ "CreateImagePolicyConfigDetails": CreateImagePolicyConfigDetails,
"CreateNodePoolDetails": CreateNodePoolDetails,
"CreateNodePoolNodeConfigDetails": CreateNodePoolNodeConfigDetails,
"CreateNodeShapeConfigDetails": CreateNodeShapeConfigDetails,
+ "ImagePolicyConfig": ImagePolicyConfig,
+ "KeyDetails": KeyDetails,
"KeyValue": KeyValue,
"KubernetesNetworkConfig": KubernetesNetworkConfig,
"Node": Node,
@@ -79,6 +86,7 @@
"UpdateClusterDetails": UpdateClusterDetails,
"UpdateClusterEndpointConfigDetails": UpdateClusterEndpointConfigDetails,
"UpdateClusterOptionsDetails": UpdateClusterOptionsDetails,
+ "UpdateImagePolicyConfigDetails": UpdateImagePolicyConfigDetails,
"UpdateNodePoolDetails": UpdateNodePoolDetails,
"UpdateNodePoolNodeConfigDetails": UpdateNodePoolNodeConfigDetails,
"UpdateNodeShapeConfigDetails": UpdateNodeShapeConfigDetails,
diff --git a/src/oci/container_engine/models/cluster.py b/src/oci/container_engine/models/cluster.py
index 4de52983c4..738f06cb61 100644
--- a/src/oci/container_engine/models/cluster.py
+++ b/src/oci/container_engine/models/cluster.py
@@ -96,6 +96,10 @@ def __init__(self, **kwargs):
The value to assign to the available_kubernetes_upgrades property of this Cluster.
:type available_kubernetes_upgrades: list[str]
+ :param image_policy_config:
+ The value to assign to the image_policy_config property of this Cluster.
+ :type image_policy_config: oci.container_engine.models.ImagePolicyConfig
+
"""
self.swagger_types = {
'id': 'str',
@@ -110,7 +114,8 @@ def __init__(self, **kwargs):
'lifecycle_state': 'str',
'lifecycle_details': 'str',
'endpoints': 'ClusterEndpoints',
- 'available_kubernetes_upgrades': 'list[str]'
+ 'available_kubernetes_upgrades': 'list[str]',
+ 'image_policy_config': 'ImagePolicyConfig'
}
self.attribute_map = {
@@ -126,7 +131,8 @@ def __init__(self, **kwargs):
'lifecycle_state': 'lifecycleState',
'lifecycle_details': 'lifecycleDetails',
'endpoints': 'endpoints',
- 'available_kubernetes_upgrades': 'availableKubernetesUpgrades'
+ 'available_kubernetes_upgrades': 'availableKubernetesUpgrades',
+ 'image_policy_config': 'imagePolicyConfig'
}
self._id = None
@@ -142,6 +148,7 @@ def __init__(self, **kwargs):
self._lifecycle_details = None
self._endpoints = None
self._available_kubernetes_upgrades = None
+ self._image_policy_config = None
@property
def id(self):
@@ -461,6 +468,30 @@ def available_kubernetes_upgrades(self, available_kubernetes_upgrades):
"""
self._available_kubernetes_upgrades = available_kubernetes_upgrades
+ @property
+ def image_policy_config(self):
+ """
+ Gets the image_policy_config of this Cluster.
+ The image verification policy for signature validation.
+
+
+ :return: The image_policy_config of this Cluster.
+ :rtype: oci.container_engine.models.ImagePolicyConfig
+ """
+ return self._image_policy_config
+
+ @image_policy_config.setter
+ def image_policy_config(self, image_policy_config):
+ """
+ Sets the image_policy_config of this Cluster.
+ The image verification policy for signature validation.
+
+
+ :param image_policy_config: The image_policy_config of this Cluster.
+ :type: oci.container_engine.models.ImagePolicyConfig
+ """
+ self._image_policy_config = image_policy_config
+
def __repr__(self):
return formatted_flat_dict(self)
diff --git a/src/oci/container_engine/models/cluster_summary.py b/src/oci/container_engine/models/cluster_summary.py
index 95f5c8e9f0..7028117184 100644
--- a/src/oci/container_engine/models/cluster_summary.py
+++ b/src/oci/container_engine/models/cluster_summary.py
@@ -92,6 +92,10 @@ def __init__(self, **kwargs):
The value to assign to the available_kubernetes_upgrades property of this ClusterSummary.
:type available_kubernetes_upgrades: list[str]
+ :param image_policy_config:
+ The value to assign to the image_policy_config property of this ClusterSummary.
+ :type image_policy_config: oci.container_engine.models.ImagePolicyConfig
+
"""
self.swagger_types = {
'id': 'str',
@@ -105,7 +109,8 @@ def __init__(self, **kwargs):
'lifecycle_state': 'str',
'lifecycle_details': 'str',
'endpoints': 'ClusterEndpoints',
- 'available_kubernetes_upgrades': 'list[str]'
+ 'available_kubernetes_upgrades': 'list[str]',
+ 'image_policy_config': 'ImagePolicyConfig'
}
self.attribute_map = {
@@ -120,7 +125,8 @@ def __init__(self, **kwargs):
'lifecycle_state': 'lifecycleState',
'lifecycle_details': 'lifecycleDetails',
'endpoints': 'endpoints',
- 'available_kubernetes_upgrades': 'availableKubernetesUpgrades'
+ 'available_kubernetes_upgrades': 'availableKubernetesUpgrades',
+ 'image_policy_config': 'imagePolicyConfig'
}
self._id = None
@@ -135,6 +141,7 @@ def __init__(self, **kwargs):
self._lifecycle_details = None
self._endpoints = None
self._available_kubernetes_upgrades = None
+ self._image_policy_config = None
@property
def id(self):
@@ -430,6 +437,30 @@ def available_kubernetes_upgrades(self, available_kubernetes_upgrades):
"""
self._available_kubernetes_upgrades = available_kubernetes_upgrades
+ @property
+ def image_policy_config(self):
+ """
+ Gets the image_policy_config of this ClusterSummary.
+ The image verification policy for signature validation.
+
+
+ :return: The image_policy_config of this ClusterSummary.
+ :rtype: oci.container_engine.models.ImagePolicyConfig
+ """
+ return self._image_policy_config
+
+ @image_policy_config.setter
+ def image_policy_config(self, image_policy_config):
+ """
+ Sets the image_policy_config of this ClusterSummary.
+ The image verification policy for signature validation.
+
+
+ :param image_policy_config: The image_policy_config of this ClusterSummary.
+ :type: oci.container_engine.models.ImagePolicyConfig
+ """
+ self._image_policy_config = image_policy_config
+
def __repr__(self):
return formatted_flat_dict(self)
diff --git a/src/oci/container_engine/models/create_cluster_details.py b/src/oci/container_engine/models/create_cluster_details.py
index d2918a7086..bee818821d 100644
--- a/src/oci/container_engine/models/create_cluster_details.py
+++ b/src/oci/container_engine/models/create_cluster_details.py
@@ -46,6 +46,10 @@ def __init__(self, **kwargs):
The value to assign to the options property of this CreateClusterDetails.
:type options: oci.container_engine.models.ClusterCreateOptions
+ :param image_policy_config:
+ The value to assign to the image_policy_config property of this CreateClusterDetails.
+ :type image_policy_config: oci.container_engine.models.CreateImagePolicyConfigDetails
+
"""
self.swagger_types = {
'name': 'str',
@@ -54,7 +58,8 @@ def __init__(self, **kwargs):
'vcn_id': 'str',
'kubernetes_version': 'str',
'kms_key_id': 'str',
- 'options': 'ClusterCreateOptions'
+ 'options': 'ClusterCreateOptions',
+ 'image_policy_config': 'CreateImagePolicyConfigDetails'
}
self.attribute_map = {
@@ -64,7 +69,8 @@ def __init__(self, **kwargs):
'vcn_id': 'vcnId',
'kubernetes_version': 'kubernetesVersion',
'kms_key_id': 'kmsKeyId',
- 'options': 'options'
+ 'options': 'options',
+ 'image_policy_config': 'imagePolicyConfig'
}
self._name = None
@@ -74,6 +80,7 @@ def __init__(self, **kwargs):
self._kubernetes_version = None
self._kms_key_id = None
self._options = None
+ self._image_policy_config = None
@property
def name(self):
@@ -245,6 +252,34 @@ def options(self, options):
"""
self._options = options
+ @property
+ def image_policy_config(self):
+ """
+ Gets the image_policy_config of this CreateClusterDetails.
+ The image verification policy for signature validation. Once a policy is created and enabled with
+ one or more kms keys, the policy will ensure all images deployed has been signed with the key(s)
+ attached to the policy.
+
+
+ :return: The image_policy_config of this CreateClusterDetails.
+ :rtype: oci.container_engine.models.CreateImagePolicyConfigDetails
+ """
+ return self._image_policy_config
+
+ @image_policy_config.setter
+ def image_policy_config(self, image_policy_config):
+ """
+ Sets the image_policy_config of this CreateClusterDetails.
+ The image verification policy for signature validation. Once a policy is created and enabled with
+ one or more kms keys, the policy will ensure all images deployed has been signed with the key(s)
+ attached to the policy.
+
+
+ :param image_policy_config: The image_policy_config of this CreateClusterDetails.
+ :type: oci.container_engine.models.CreateImagePolicyConfigDetails
+ """
+ self._image_policy_config = image_policy_config
+
def __repr__(self):
return formatted_flat_dict(self)
diff --git a/src/oci/container_engine/models/create_image_policy_config_details.py b/src/oci/container_engine/models/create_image_policy_config_details.py
new file mode 100644
index 0000000000..2701018ff0
--- /dev/null
+++ b/src/oci/container_engine/models/create_image_policy_config_details.py
@@ -0,0 +1,101 @@
+# coding: utf-8
+# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
+# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+
+
+from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401
+from oci.decorators import init_model_state_from_kwargs
+
+
+@init_model_state_from_kwargs
+class CreateImagePolicyConfigDetails(object):
+ """
+ The properties that define a image verification policy.
+ """
+
+ def __init__(self, **kwargs):
+ """
+ Initializes a new CreateImagePolicyConfigDetails object with values from keyword arguments.
+ The following keyword arguments are supported (corresponding to the getters/setters of this class):
+
+ :param is_policy_enabled:
+ The value to assign to the is_policy_enabled property of this CreateImagePolicyConfigDetails.
+ :type is_policy_enabled: bool
+
+ :param key_details:
+ The value to assign to the key_details property of this CreateImagePolicyConfigDetails.
+ :type key_details: list[oci.container_engine.models.KeyDetails]
+
+ """
+ self.swagger_types = {
+ 'is_policy_enabled': 'bool',
+ 'key_details': 'list[KeyDetails]'
+ }
+
+ self.attribute_map = {
+ 'is_policy_enabled': 'isPolicyEnabled',
+ 'key_details': 'keyDetails'
+ }
+
+ self._is_policy_enabled = None
+ self._key_details = None
+
+ @property
+ def is_policy_enabled(self):
+ """
+ Gets the is_policy_enabled of this CreateImagePolicyConfigDetails.
+ Whether the image verification policy is enabled. Defaults to false. If set to true, the images will be verified against the policy at runtime.
+
+
+ :return: The is_policy_enabled of this CreateImagePolicyConfigDetails.
+ :rtype: bool
+ """
+ return self._is_policy_enabled
+
+ @is_policy_enabled.setter
+ def is_policy_enabled(self, is_policy_enabled):
+ """
+ Sets the is_policy_enabled of this CreateImagePolicyConfigDetails.
+ Whether the image verification policy is enabled. Defaults to false. If set to true, the images will be verified against the policy at runtime.
+
+
+ :param is_policy_enabled: The is_policy_enabled of this CreateImagePolicyConfigDetails.
+ :type: bool
+ """
+ self._is_policy_enabled = is_policy_enabled
+
+ @property
+ def key_details(self):
+ """
+ Gets the key_details of this CreateImagePolicyConfigDetails.
+ A list of KMS key details.
+
+
+ :return: The key_details of this CreateImagePolicyConfigDetails.
+ :rtype: list[oci.container_engine.models.KeyDetails]
+ """
+ return self._key_details
+
+ @key_details.setter
+ def key_details(self, key_details):
+ """
+ Sets the key_details of this CreateImagePolicyConfigDetails.
+ A list of KMS key details.
+
+
+ :param key_details: The key_details of this CreateImagePolicyConfigDetails.
+ :type: list[oci.container_engine.models.KeyDetails]
+ """
+ self._key_details = key_details
+
+ def __repr__(self):
+ return formatted_flat_dict(self)
+
+ def __eq__(self, other):
+ if other is None:
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not self == other
diff --git a/src/oci/container_engine/models/image_policy_config.py b/src/oci/container_engine/models/image_policy_config.py
new file mode 100644
index 0000000000..832d194476
--- /dev/null
+++ b/src/oci/container_engine/models/image_policy_config.py
@@ -0,0 +1,101 @@
+# coding: utf-8
+# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
+# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+
+
+from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401
+from oci.decorators import init_model_state_from_kwargs
+
+
+@init_model_state_from_kwargs
+class ImagePolicyConfig(object):
+ """
+ The properties that define a image verification policy.
+ """
+
+ def __init__(self, **kwargs):
+ """
+ Initializes a new ImagePolicyConfig object with values from keyword arguments.
+ The following keyword arguments are supported (corresponding to the getters/setters of this class):
+
+ :param is_policy_enabled:
+ The value to assign to the is_policy_enabled property of this ImagePolicyConfig.
+ :type is_policy_enabled: bool
+
+ :param key_details:
+ The value to assign to the key_details property of this ImagePolicyConfig.
+ :type key_details: list[oci.container_engine.models.KeyDetails]
+
+ """
+ self.swagger_types = {
+ 'is_policy_enabled': 'bool',
+ 'key_details': 'list[KeyDetails]'
+ }
+
+ self.attribute_map = {
+ 'is_policy_enabled': 'isPolicyEnabled',
+ 'key_details': 'keyDetails'
+ }
+
+ self._is_policy_enabled = None
+ self._key_details = None
+
+ @property
+ def is_policy_enabled(self):
+ """
+ Gets the is_policy_enabled of this ImagePolicyConfig.
+ Whether the image verification policy is enabled. Defaults to false. If set to true, the images will be verified against the policy at runtime.
+
+
+ :return: The is_policy_enabled of this ImagePolicyConfig.
+ :rtype: bool
+ """
+ return self._is_policy_enabled
+
+ @is_policy_enabled.setter
+ def is_policy_enabled(self, is_policy_enabled):
+ """
+ Sets the is_policy_enabled of this ImagePolicyConfig.
+ Whether the image verification policy is enabled. Defaults to false. If set to true, the images will be verified against the policy at runtime.
+
+
+ :param is_policy_enabled: The is_policy_enabled of this ImagePolicyConfig.
+ :type: bool
+ """
+ self._is_policy_enabled = is_policy_enabled
+
+ @property
+ def key_details(self):
+ """
+ Gets the key_details of this ImagePolicyConfig.
+ A list of KMS key details.
+
+
+ :return: The key_details of this ImagePolicyConfig.
+ :rtype: list[oci.container_engine.models.KeyDetails]
+ """
+ return self._key_details
+
+ @key_details.setter
+ def key_details(self, key_details):
+ """
+ Sets the key_details of this ImagePolicyConfig.
+ A list of KMS key details.
+
+
+ :param key_details: The key_details of this ImagePolicyConfig.
+ :type: list[oci.container_engine.models.KeyDetails]
+ """
+ self._key_details = key_details
+
+ def __repr__(self):
+ return formatted_flat_dict(self)
+
+ def __eq__(self, other):
+ if other is None:
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not self == other
diff --git a/src/oci/container_engine/models/key_details.py b/src/oci/container_engine/models/key_details.py
new file mode 100644
index 0000000000..87309e79cf
--- /dev/null
+++ b/src/oci/container_engine/models/key_details.py
@@ -0,0 +1,70 @@
+# coding: utf-8
+# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
+# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+
+
+from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401
+from oci.decorators import init_model_state_from_kwargs
+
+
+@init_model_state_from_kwargs
+class KeyDetails(object):
+ """
+ The properties that define the kms keys used by OKE for Image Signature verification.
+ """
+
+ def __init__(self, **kwargs):
+ """
+ Initializes a new KeyDetails object with values from keyword arguments.
+ The following keyword arguments are supported (corresponding to the getters/setters of this class):
+
+ :param kms_key_id:
+ The value to assign to the kms_key_id property of this KeyDetails.
+ :type kms_key_id: str
+
+ """
+ self.swagger_types = {
+ 'kms_key_id': 'str'
+ }
+
+ self.attribute_map = {
+ 'kms_key_id': 'kmsKeyId'
+ }
+
+ self._kms_key_id = None
+
+ @property
+ def kms_key_id(self):
+ """
+ Gets the kms_key_id of this KeyDetails.
+ The OCIDs of the KMS key that will be used to verify whether the images are signed by an approved source.
+
+
+ :return: The kms_key_id of this KeyDetails.
+ :rtype: str
+ """
+ return self._kms_key_id
+
+ @kms_key_id.setter
+ def kms_key_id(self, kms_key_id):
+ """
+ Sets the kms_key_id of this KeyDetails.
+ The OCIDs of the KMS key that will be used to verify whether the images are signed by an approved source.
+
+
+ :param kms_key_id: The kms_key_id of this KeyDetails.
+ :type: str
+ """
+ self._kms_key_id = kms_key_id
+
+ def __repr__(self):
+ return formatted_flat_dict(self)
+
+ def __eq__(self, other):
+ if other is None:
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not self == other
diff --git a/src/oci/container_engine/models/update_cluster_details.py b/src/oci/container_engine/models/update_cluster_details.py
index c3dd59b491..4738bb0e93 100644
--- a/src/oci/container_engine/models/update_cluster_details.py
+++ b/src/oci/container_engine/models/update_cluster_details.py
@@ -30,22 +30,29 @@ def __init__(self, **kwargs):
The value to assign to the options property of this UpdateClusterDetails.
:type options: oci.container_engine.models.UpdateClusterOptionsDetails
+ :param image_policy_config:
+ The value to assign to the image_policy_config property of this UpdateClusterDetails.
+ :type image_policy_config: oci.container_engine.models.UpdateImagePolicyConfigDetails
+
"""
self.swagger_types = {
'name': 'str',
'kubernetes_version': 'str',
- 'options': 'UpdateClusterOptionsDetails'
+ 'options': 'UpdateClusterOptionsDetails',
+ 'image_policy_config': 'UpdateImagePolicyConfigDetails'
}
self.attribute_map = {
'name': 'name',
'kubernetes_version': 'kubernetesVersion',
- 'options': 'options'
+ 'options': 'options',
+ 'image_policy_config': 'imagePolicyConfig'
}
self._name = None
self._kubernetes_version = None
self._options = None
+ self._image_policy_config = None
@property
def name(self):
@@ -115,6 +122,34 @@ def options(self, options):
"""
self._options = options
+ @property
+ def image_policy_config(self):
+ """
+ Gets the image_policy_config of this UpdateClusterDetails.
+ The image verification policy for signature validation. Once a policy is created and enabled with
+ one or more kms keys, the policy will ensure all images deployed has been signed with the key(s)
+ attached to the policy.
+
+
+ :return: The image_policy_config of this UpdateClusterDetails.
+ :rtype: oci.container_engine.models.UpdateImagePolicyConfigDetails
+ """
+ return self._image_policy_config
+
+ @image_policy_config.setter
+ def image_policy_config(self, image_policy_config):
+ """
+ Sets the image_policy_config of this UpdateClusterDetails.
+ The image verification policy for signature validation. Once a policy is created and enabled with
+ one or more kms keys, the policy will ensure all images deployed has been signed with the key(s)
+ attached to the policy.
+
+
+ :param image_policy_config: The image_policy_config of this UpdateClusterDetails.
+ :type: oci.container_engine.models.UpdateImagePolicyConfigDetails
+ """
+ self._image_policy_config = image_policy_config
+
def __repr__(self):
return formatted_flat_dict(self)
diff --git a/src/oci/container_engine/models/update_image_policy_config_details.py b/src/oci/container_engine/models/update_image_policy_config_details.py
new file mode 100644
index 0000000000..2c84666563
--- /dev/null
+++ b/src/oci/container_engine/models/update_image_policy_config_details.py
@@ -0,0 +1,101 @@
+# coding: utf-8
+# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
+# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+
+
+from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401
+from oci.decorators import init_model_state_from_kwargs
+
+
+@init_model_state_from_kwargs
+class UpdateImagePolicyConfigDetails(object):
+ """
+ The properties that define a image verification policy.
+ """
+
+ def __init__(self, **kwargs):
+ """
+ Initializes a new UpdateImagePolicyConfigDetails object with values from keyword arguments.
+ The following keyword arguments are supported (corresponding to the getters/setters of this class):
+
+ :param is_policy_enabled:
+ The value to assign to the is_policy_enabled property of this UpdateImagePolicyConfigDetails.
+ :type is_policy_enabled: bool
+
+ :param key_details:
+ The value to assign to the key_details property of this UpdateImagePolicyConfigDetails.
+ :type key_details: list[oci.container_engine.models.KeyDetails]
+
+ """
+ self.swagger_types = {
+ 'is_policy_enabled': 'bool',
+ 'key_details': 'list[KeyDetails]'
+ }
+
+ self.attribute_map = {
+ 'is_policy_enabled': 'isPolicyEnabled',
+ 'key_details': 'keyDetails'
+ }
+
+ self._is_policy_enabled = None
+ self._key_details = None
+
+ @property
+ def is_policy_enabled(self):
+ """
+ Gets the is_policy_enabled of this UpdateImagePolicyConfigDetails.
+ Whether the image verification policy is enabled. Defaults to false. If set to true, the images will be verified against the policy at runtime.
+
+
+ :return: The is_policy_enabled of this UpdateImagePolicyConfigDetails.
+ :rtype: bool
+ """
+ return self._is_policy_enabled
+
+ @is_policy_enabled.setter
+ def is_policy_enabled(self, is_policy_enabled):
+ """
+ Sets the is_policy_enabled of this UpdateImagePolicyConfigDetails.
+ Whether the image verification policy is enabled. Defaults to false. If set to true, the images will be verified against the policy at runtime.
+
+
+ :param is_policy_enabled: The is_policy_enabled of this UpdateImagePolicyConfigDetails.
+ :type: bool
+ """
+ self._is_policy_enabled = is_policy_enabled
+
+ @property
+ def key_details(self):
+ """
+ Gets the key_details of this UpdateImagePolicyConfigDetails.
+ A list of KMS key details.
+
+
+ :return: The key_details of this UpdateImagePolicyConfigDetails.
+ :rtype: list[oci.container_engine.models.KeyDetails]
+ """
+ return self._key_details
+
+ @key_details.setter
+ def key_details(self, key_details):
+ """
+ Sets the key_details of this UpdateImagePolicyConfigDetails.
+ A list of KMS key details.
+
+
+ :param key_details: The key_details of this UpdateImagePolicyConfigDetails.
+ :type: list[oci.container_engine.models.KeyDetails]
+ """
+ self._key_details = key_details
+
+ def __repr__(self):
+ return formatted_flat_dict(self)
+
+ def __eq__(self, other):
+ if other is None:
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not self == other
diff --git a/src/oci/core/blockstorage_client.py b/src/oci/core/blockstorage_client.py
index 2ec91857a0..b2cf9a1a68 100644
--- a/src/oci/core/blockstorage_client.py
+++ b/src/oci/core/blockstorage_client.py
@@ -2170,6 +2170,72 @@ def delete_volume_kms_key(self, volume_id, **kwargs):
path_params=path_params,
header_params=header_params)
+ def get_block_volume_replica(self, block_volume_replica_id, **kwargs):
+ """
+ Gets information for the specified block volume replica.
+
+
+ :param str block_volume_replica_id: (required)
+ The OCID of the block volume replica.
+
+ :param obj retry_strategy: (optional)
+ A retry strategy to apply to this specific operation/call. This will override any retry strategy set at the client-level.
+
+ This should be one of the strategies available in the :py:mod:`~oci.retry` module. A convenience :py:data:`~oci.retry.DEFAULT_RETRY_STRATEGY`
+ is also available. The specifics of the default retry strategy are described `here `__.
+
+ To have this operation explicitly not perform any retries, pass an instance of :py:class:`~oci.retry.NoneRetryStrategy`.
+
+ :return: A :class:`~oci.response.Response` object with data of type :class:`~oci.core.models.BlockVolumeReplica`
+ :rtype: :class:`~oci.response.Response`
+
+ :example:
+ Click `here `__ to see an example of how to use get_block_volume_replica API.
+ """
+ resource_path = "/blockVolumeReplicas/{blockVolumeReplicaId}"
+ method = "GET"
+
+ expected_kwargs = ["retry_strategy"]
+ extra_kwargs = [_key for _key in six.iterkeys(kwargs) if _key not in expected_kwargs]
+ if extra_kwargs:
+ raise ValueError(
+ "get_block_volume_replica got unknown kwargs: {!r}".format(extra_kwargs))
+
+ path_params = {
+ "blockVolumeReplicaId": block_volume_replica_id
+ }
+
+ path_params = {k: v for (k, v) in six.iteritems(path_params) if v is not missing}
+
+ for (k, v) in six.iteritems(path_params):
+ if v is None or (isinstance(v, six.string_types) and len(v.strip()) == 0):
+ raise ValueError('Parameter {} cannot be None, whitespace or empty string'.format(k))
+
+ header_params = {
+ "accept": "application/json",
+ "content-type": "application/json"
+ }
+
+ retry_strategy = self.retry_strategy
+ if kwargs.get('retry_strategy'):
+ retry_strategy = kwargs.get('retry_strategy')
+
+ if retry_strategy:
+ return retry_strategy.make_retrying_call(
+ self.base_client.call_api,
+ resource_path=resource_path,
+ method=method,
+ path_params=path_params,
+ header_params=header_params,
+ response_type="BlockVolumeReplica")
+ else:
+ return self.base_client.call_api(
+ resource_path=resource_path,
+ method=method,
+ path_params=path_params,
+ header_params=header_params,
+ response_type="BlockVolumeReplica")
+
def get_boot_volume(self, boot_volume_id, **kwargs):
"""
Gets information for the specified boot volume.
@@ -2379,6 +2445,72 @@ def get_boot_volume_kms_key(self, boot_volume_id, **kwargs):
header_params=header_params,
response_type="BootVolumeKmsKey")
+ def get_boot_volume_replica(self, boot_volume_replica_id, **kwargs):
+ """
+ Gets information for the specified boot volume replica.
+
+
+ :param str boot_volume_replica_id: (required)
+ The OCID of the boot volume replica.
+
+ :param obj retry_strategy: (optional)
+ A retry strategy to apply to this specific operation/call. This will override any retry strategy set at the client-level.
+
+ This should be one of the strategies available in the :py:mod:`~oci.retry` module. A convenience :py:data:`~oci.retry.DEFAULT_RETRY_STRATEGY`
+ is also available. The specifics of the default retry strategy are described `here `__.
+
+ To have this operation explicitly not perform any retries, pass an instance of :py:class:`~oci.retry.NoneRetryStrategy`.
+
+ :return: A :class:`~oci.response.Response` object with data of type :class:`~oci.core.models.BootVolumeReplica`
+ :rtype: :class:`~oci.response.Response`
+
+ :example:
+ Click `here `__ to see an example of how to use get_boot_volume_replica API.
+ """
+ resource_path = "/bootVolumeReplicas/{bootVolumeReplicaId}"
+ method = "GET"
+
+ expected_kwargs = ["retry_strategy"]
+ extra_kwargs = [_key for _key in six.iterkeys(kwargs) if _key not in expected_kwargs]
+ if extra_kwargs:
+ raise ValueError(
+ "get_boot_volume_replica got unknown kwargs: {!r}".format(extra_kwargs))
+
+ path_params = {
+ "bootVolumeReplicaId": boot_volume_replica_id
+ }
+
+ path_params = {k: v for (k, v) in six.iteritems(path_params) if v is not missing}
+
+ for (k, v) in six.iteritems(path_params):
+ if v is None or (isinstance(v, six.string_types) and len(v.strip()) == 0):
+ raise ValueError('Parameter {} cannot be None, whitespace or empty string'.format(k))
+
+ header_params = {
+ "accept": "application/json",
+ "content-type": "application/json"
+ }
+
+ retry_strategy = self.retry_strategy
+ if kwargs.get('retry_strategy'):
+ retry_strategy = kwargs.get('retry_strategy')
+
+ if retry_strategy:
+ return retry_strategy.make_retrying_call(
+ self.base_client.call_api,
+ resource_path=resource_path,
+ method=method,
+ path_params=path_params,
+ header_params=header_params,
+ response_type="BootVolumeReplica")
+ else:
+ return self.base_client.call_api(
+ resource_path=resource_path,
+ method=method,
+ path_params=path_params,
+ header_params=header_params,
+ response_type="BootVolumeReplica")
+
def get_volume(self, volume_id, **kwargs):
"""
Gets information for the specified volume.
@@ -2942,6 +3074,153 @@ def get_volume_kms_key(self, volume_id, **kwargs):
header_params=header_params,
response_type="VolumeKmsKey")
+ def list_block_volume_replicas(self, availability_domain, compartment_id, **kwargs):
+ """
+ Lists the block volume replicas in the specified compartment and availability domain.
+
+
+ :param str availability_domain: (required)
+ The name of the availability domain.
+
+ Example: `Uocm:PHX-AD-1`
+
+ :param str compartment_id: (required)
+ The `OCID`__ of the compartment.
+
+ __ https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm
+
+ :param int limit: (optional)
+ For list pagination. The maximum number of results per page, or items to return in a paginated
+ \"List\" call. For important details about how pagination works, see
+ `List Pagination`__.
+
+ Example: `50`
+
+ __ https://docs.cloud.oracle.com/iaas/Content/API/Concepts/usingapi.htm#nine
+
+ :param str page: (optional)
+ For list pagination. The value of the `opc-next-page` response header from the previous \"List\"
+ call. For important details about how pagination works, see
+ `List Pagination`__.
+
+ __ https://docs.cloud.oracle.com/iaas/Content/API/Concepts/usingapi.htm#nine
+
+ :param str display_name: (optional)
+ A filter to return only resources that match the given display name exactly.
+
+ :param str sort_by: (optional)
+ The field to sort by. You can provide one sort order (`sortOrder`). Default order for
+ TIMECREATED is descending. Default order for DISPLAYNAME is ascending. The DISPLAYNAME
+ sort order is case sensitive.
+
+ **Note:** In general, some \"List\" operations (for example, `ListInstances`) let you
+ optionally filter by availability domain if the scope of the resource type is within a
+ single availability domain. If you call one of these \"List\" operations without specifying
+ an availability domain, the resources are grouped by availability domain, then sorted.
+
+ Allowed values are: "TIMECREATED", "DISPLAYNAME"
+
+ :param str sort_order: (optional)
+ The sort order to use, either ascending (`ASC`) or descending (`DESC`). The DISPLAYNAME sort order
+ is case sensitive.
+
+ Allowed values are: "ASC", "DESC"
+
+ :param str lifecycle_state: (optional)
+ A filter to only return resources that match the given lifecycle state. The state value is case-insensitive.
+
+ Allowed values are: "PROVISIONING", "AVAILABLE", "ACTIVATING", "TERMINATING", "TERMINATED", "FAULTY"
+
+ :param obj retry_strategy: (optional)
+ A retry strategy to apply to this specific operation/call. This will override any retry strategy set at the client-level.
+
+ This should be one of the strategies available in the :py:mod:`~oci.retry` module. A convenience :py:data:`~oci.retry.DEFAULT_RETRY_STRATEGY`
+ is also available. The specifics of the default retry strategy are described `here `__.
+
+ To have this operation explicitly not perform any retries, pass an instance of :py:class:`~oci.retry.NoneRetryStrategy`.
+
+ :return: A :class:`~oci.response.Response` object with data of type list of :class:`~oci.core.models.BlockVolumeReplica`
+ :rtype: :class:`~oci.response.Response`
+
+ :example:
+ Click `here `__ to see an example of how to use list_block_volume_replicas API.
+ """
+ resource_path = "/blockVolumeReplicas"
+ method = "GET"
+
+ # Don't accept unknown kwargs
+ expected_kwargs = [
+ "retry_strategy",
+ "limit",
+ "page",
+ "display_name",
+ "sort_by",
+ "sort_order",
+ "lifecycle_state"
+ ]
+ extra_kwargs = [_key for _key in six.iterkeys(kwargs) if _key not in expected_kwargs]
+ if extra_kwargs:
+ raise ValueError(
+ "list_block_volume_replicas got unknown kwargs: {!r}".format(extra_kwargs))
+
+ if 'sort_by' in kwargs:
+ sort_by_allowed_values = ["TIMECREATED", "DISPLAYNAME"]
+ if kwargs['sort_by'] not in sort_by_allowed_values:
+ raise ValueError(
+ "Invalid value for `sort_by`, must be one of {0}".format(sort_by_allowed_values)
+ )
+
+ if 'sort_order' in kwargs:
+ sort_order_allowed_values = ["ASC", "DESC"]
+ if kwargs['sort_order'] not in sort_order_allowed_values:
+ raise ValueError(
+ "Invalid value for `sort_order`, must be one of {0}".format(sort_order_allowed_values)
+ )
+
+ if 'lifecycle_state' in kwargs:
+ lifecycle_state_allowed_values = ["PROVISIONING", "AVAILABLE", "ACTIVATING", "TERMINATING", "TERMINATED", "FAULTY"]
+ if kwargs['lifecycle_state'] not in lifecycle_state_allowed_values:
+ raise ValueError(
+ "Invalid value for `lifecycle_state`, must be one of {0}".format(lifecycle_state_allowed_values)
+ )
+
+ query_params = {
+ "availabilityDomain": availability_domain,
+ "compartmentId": compartment_id,
+ "limit": kwargs.get("limit", missing),
+ "page": kwargs.get("page", missing),
+ "displayName": kwargs.get("display_name", missing),
+ "sortBy": kwargs.get("sort_by", missing),
+ "sortOrder": kwargs.get("sort_order", missing),
+ "lifecycleState": kwargs.get("lifecycle_state", missing)
+ }
+ query_params = {k: v for (k, v) in six.iteritems(query_params) if v is not missing and v is not None}
+
+ header_params = {
+ "accept": "application/json",
+ "content-type": "application/json"
+ }
+
+ retry_strategy = self.retry_strategy
+ if kwargs.get('retry_strategy'):
+ retry_strategy = kwargs.get('retry_strategy')
+
+ if retry_strategy:
+ return retry_strategy.make_retrying_call(
+ self.base_client.call_api,
+ resource_path=resource_path,
+ method=method,
+ query_params=query_params,
+ header_params=header_params,
+ response_type="list[BlockVolumeReplica]")
+ else:
+ return self.base_client.call_api(
+ resource_path=resource_path,
+ method=method,
+ query_params=query_params,
+ header_params=header_params,
+ response_type="list[BlockVolumeReplica]")
+
def list_boot_volume_backups(self, compartment_id, **kwargs):
"""
Lists the boot volume backups in the specified compartment. You can filter the results by boot volume.
@@ -3094,6 +3373,153 @@ def list_boot_volume_backups(self, compartment_id, **kwargs):
header_params=header_params,
response_type="list[BootVolumeBackup]")
+ def list_boot_volume_replicas(self, availability_domain, compartment_id, **kwargs):
+ """
+ Lists the boot volume replicas in the specified compartment and availability domain.
+
+
+ :param str availability_domain: (required)
+ The name of the availability domain.
+
+ Example: `Uocm:PHX-AD-1`
+
+ :param str compartment_id: (required)
+ The `OCID`__ of the compartment.
+
+ __ https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm
+
+ :param int limit: (optional)
+ For list pagination. The maximum number of results per page, or items to return in a paginated
+ \"List\" call. For important details about how pagination works, see
+ `List Pagination`__.
+
+ Example: `50`
+
+ __ https://docs.cloud.oracle.com/iaas/Content/API/Concepts/usingapi.htm#nine
+
+ :param str page: (optional)
+ For list pagination. The value of the `opc-next-page` response header from the previous \"List\"
+ call. For important details about how pagination works, see
+ `List Pagination`__.
+
+ __ https://docs.cloud.oracle.com/iaas/Content/API/Concepts/usingapi.htm#nine
+
+ :param str display_name: (optional)
+ A filter to return only resources that match the given display name exactly.
+
+ :param str sort_by: (optional)
+ The field to sort by. You can provide one sort order (`sortOrder`). Default order for
+ TIMECREATED is descending. Default order for DISPLAYNAME is ascending. The DISPLAYNAME
+ sort order is case sensitive.
+
+ **Note:** In general, some \"List\" operations (for example, `ListInstances`) let you
+ optionally filter by availability domain if the scope of the resource type is within a
+ single availability domain. If you call one of these \"List\" operations without specifying
+ an availability domain, the resources are grouped by availability domain, then sorted.
+
+ Allowed values are: "TIMECREATED", "DISPLAYNAME"
+
+ :param str sort_order: (optional)
+ The sort order to use, either ascending (`ASC`) or descending (`DESC`). The DISPLAYNAME sort order
+ is case sensitive.
+
+ Allowed values are: "ASC", "DESC"
+
+ :param str lifecycle_state: (optional)
+ A filter to only return resources that match the given lifecycle state. The state value is case-insensitive.
+
+ Allowed values are: "PROVISIONING", "AVAILABLE", "ACTIVATING", "TERMINATING", "TERMINATED", "FAULTY"
+
+ :param obj retry_strategy: (optional)
+ A retry strategy to apply to this specific operation/call. This will override any retry strategy set at the client-level.
+
+ This should be one of the strategies available in the :py:mod:`~oci.retry` module. A convenience :py:data:`~oci.retry.DEFAULT_RETRY_STRATEGY`
+ is also available. The specifics of the default retry strategy are described `here `__.
+
+ To have this operation explicitly not perform any retries, pass an instance of :py:class:`~oci.retry.NoneRetryStrategy`.
+
+ :return: A :class:`~oci.response.Response` object with data of type list of :class:`~oci.core.models.BootVolumeReplica`
+ :rtype: :class:`~oci.response.Response`
+
+ :example:
+ Click `here `__ to see an example of how to use list_boot_volume_replicas API.
+ """
+ resource_path = "/bootVolumeReplicas"
+ method = "GET"
+
+ # Don't accept unknown kwargs
+ expected_kwargs = [
+ "retry_strategy",
+ "limit",
+ "page",
+ "display_name",
+ "sort_by",
+ "sort_order",
+ "lifecycle_state"
+ ]
+ extra_kwargs = [_key for _key in six.iterkeys(kwargs) if _key not in expected_kwargs]
+ if extra_kwargs:
+ raise ValueError(
+ "list_boot_volume_replicas got unknown kwargs: {!r}".format(extra_kwargs))
+
+ if 'sort_by' in kwargs:
+ sort_by_allowed_values = ["TIMECREATED", "DISPLAYNAME"]
+ if kwargs['sort_by'] not in sort_by_allowed_values:
+ raise ValueError(
+ "Invalid value for `sort_by`, must be one of {0}".format(sort_by_allowed_values)
+ )
+
+ if 'sort_order' in kwargs:
+ sort_order_allowed_values = ["ASC", "DESC"]
+ if kwargs['sort_order'] not in sort_order_allowed_values:
+ raise ValueError(
+ "Invalid value for `sort_order`, must be one of {0}".format(sort_order_allowed_values)
+ )
+
+ if 'lifecycle_state' in kwargs:
+ lifecycle_state_allowed_values = ["PROVISIONING", "AVAILABLE", "ACTIVATING", "TERMINATING", "TERMINATED", "FAULTY"]
+ if kwargs['lifecycle_state'] not in lifecycle_state_allowed_values:
+ raise ValueError(
+ "Invalid value for `lifecycle_state`, must be one of {0}".format(lifecycle_state_allowed_values)
+ )
+
+ query_params = {
+ "availabilityDomain": availability_domain,
+ "compartmentId": compartment_id,
+ "limit": kwargs.get("limit", missing),
+ "page": kwargs.get("page", missing),
+ "displayName": kwargs.get("display_name", missing),
+ "sortBy": kwargs.get("sort_by", missing),
+ "sortOrder": kwargs.get("sort_order", missing),
+ "lifecycleState": kwargs.get("lifecycle_state", missing)
+ }
+ query_params = {k: v for (k, v) in six.iteritems(query_params) if v is not missing and v is not None}
+
+ header_params = {
+ "accept": "application/json",
+ "content-type": "application/json"
+ }
+
+ retry_strategy = self.retry_strategy
+ if kwargs.get('retry_strategy'):
+ retry_strategy = kwargs.get('retry_strategy')
+
+ if retry_strategy:
+ return retry_strategy.make_retrying_call(
+ self.base_client.call_api,
+ resource_path=resource_path,
+ method=method,
+ query_params=query_params,
+ header_params=header_params,
+ response_type="list[BootVolumeReplica]")
+ else:
+ return self.base_client.call_api(
+ resource_path=resource_path,
+ method=method,
+ query_params=query_params,
+ header_params=header_params,
+ response_type="list[BootVolumeReplica]")
+
def list_boot_volumes(self, availability_domain, compartment_id, **kwargs):
"""
Lists the boot volumes in the specified compartment and availability domain.
diff --git a/src/oci/core/compute_client.py b/src/oci/core/compute_client.py
index 469977138c..6ca7ab3319 100644
--- a/src/oci/core/compute_client.py
+++ b/src/oci/core/compute_client.py
@@ -5754,6 +5754,12 @@ def list_dedicated_vm_hosts(self, compartment_id, **kwargs):
Allowed values are: "ASC", "DESC"
+ :param float remaining_memory_in_gbs_greater_than_or_equal_to: (optional)
+ The remaining memory of the dedicated VM host, in GBs.
+
+ :param float remaining_ocpus_greater_than_or_equal_to: (optional)
+ The available OCPUs of the dedicated VM host.
+
:param obj retry_strategy: (optional)
A retry strategy to apply to this specific operation/call. This will override any retry strategy set at the client-level.
@@ -5782,7 +5788,9 @@ def list_dedicated_vm_hosts(self, compartment_id, **kwargs):
"page",
"opc_request_id",
"sort_by",
- "sort_order"
+ "sort_order",
+ "remaining_memory_in_gbs_greater_than_or_equal_to",
+ "remaining_ocpus_greater_than_or_equal_to"
]
extra_kwargs = [_key for _key in six.iterkeys(kwargs) if _key not in expected_kwargs]
if extra_kwargs:
@@ -5819,7 +5827,9 @@ def list_dedicated_vm_hosts(self, compartment_id, **kwargs):
"limit": kwargs.get("limit", missing),
"page": kwargs.get("page", missing),
"sortBy": kwargs.get("sort_by", missing),
- "sortOrder": kwargs.get("sort_order", missing)
+ "sortOrder": kwargs.get("sort_order", missing),
+ "remainingMemoryInGBsGreaterThanOrEqualTo": kwargs.get("remaining_memory_in_gbs_greater_than_or_equal_to", missing),
+ "remainingOcpusGreaterThanOrEqualTo": kwargs.get("remaining_ocpus_greater_than_or_equal_to", 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/core/models/__init__.py b/src/oci/core/models/__init__.py
index b2a3caa167..b28579fbdc 100644
--- a/src/oci/core/models/__init__.py
+++ b/src/oci/core/models/__init__.py
@@ -29,14 +29,21 @@
from .attach_vnic_details import AttachVnicDetails
from .attach_volume_details import AttachVolumeDetails
from .bgp_session_info import BgpSessionInfo
+from .block_volume_replica import BlockVolumeReplica
+from .block_volume_replica_details import BlockVolumeReplicaDetails
+from .block_volume_replica_info import BlockVolumeReplicaInfo
from .boolean_image_capability_schema_descriptor import BooleanImageCapabilitySchemaDescriptor
from .boot_volume import BootVolume
from .boot_volume_attachment import BootVolumeAttachment
from .boot_volume_backup import BootVolumeBackup
from .boot_volume_kms_key import BootVolumeKmsKey
+from .boot_volume_replica import BootVolumeReplica
+from .boot_volume_replica_details import BootVolumeReplicaDetails
+from .boot_volume_replica_info import BootVolumeReplicaInfo
from .boot_volume_source_details import BootVolumeSourceDetails
from .boot_volume_source_from_boot_volume_backup_details import BootVolumeSourceFromBootVolumeBackupDetails
from .boot_volume_source_from_boot_volume_details import BootVolumeSourceFromBootVolumeDetails
+from .boot_volume_source_from_boot_volume_replica_details import BootVolumeSourceFromBootVolumeReplicaDetails
from .bulk_add_virtual_circuit_public_prefixes_details import BulkAddVirtualCircuitPublicPrefixesDetails
from .bulk_delete_virtual_circuit_public_prefixes_details import BulkDeleteVirtualCircuitPublicPrefixesDetails
from .byoip_allocated_range_collection import ByoipAllocatedRangeCollection
@@ -378,6 +385,7 @@
from .volume_group_source_from_volumes_details import VolumeGroupSourceFromVolumesDetails
from .volume_kms_key import VolumeKmsKey
from .volume_source_details import VolumeSourceDetails
+from .volume_source_from_block_volume_replica_details import VolumeSourceFromBlockVolumeReplicaDetails
from .volume_source_from_volume_backup_details import VolumeSourceFromVolumeBackupDetails
from .volume_source_from_volume_details import VolumeSourceFromVolumeDetails
@@ -408,14 +416,21 @@
"AttachVnicDetails": AttachVnicDetails,
"AttachVolumeDetails": AttachVolumeDetails,
"BgpSessionInfo": BgpSessionInfo,
+ "BlockVolumeReplica": BlockVolumeReplica,
+ "BlockVolumeReplicaDetails": BlockVolumeReplicaDetails,
+ "BlockVolumeReplicaInfo": BlockVolumeReplicaInfo,
"BooleanImageCapabilitySchemaDescriptor": BooleanImageCapabilitySchemaDescriptor,
"BootVolume": BootVolume,
"BootVolumeAttachment": BootVolumeAttachment,
"BootVolumeBackup": BootVolumeBackup,
"BootVolumeKmsKey": BootVolumeKmsKey,
+ "BootVolumeReplica": BootVolumeReplica,
+ "BootVolumeReplicaDetails": BootVolumeReplicaDetails,
+ "BootVolumeReplicaInfo": BootVolumeReplicaInfo,
"BootVolumeSourceDetails": BootVolumeSourceDetails,
"BootVolumeSourceFromBootVolumeBackupDetails": BootVolumeSourceFromBootVolumeBackupDetails,
"BootVolumeSourceFromBootVolumeDetails": BootVolumeSourceFromBootVolumeDetails,
+ "BootVolumeSourceFromBootVolumeReplicaDetails": BootVolumeSourceFromBootVolumeReplicaDetails,
"BulkAddVirtualCircuitPublicPrefixesDetails": BulkAddVirtualCircuitPublicPrefixesDetails,
"BulkDeleteVirtualCircuitPublicPrefixesDetails": BulkDeleteVirtualCircuitPublicPrefixesDetails,
"ByoipAllocatedRangeCollection": ByoipAllocatedRangeCollection,
@@ -757,6 +772,7 @@
"VolumeGroupSourceFromVolumesDetails": VolumeGroupSourceFromVolumesDetails,
"VolumeKmsKey": VolumeKmsKey,
"VolumeSourceDetails": VolumeSourceDetails,
+ "VolumeSourceFromBlockVolumeReplicaDetails": VolumeSourceFromBlockVolumeReplicaDetails,
"VolumeSourceFromVolumeBackupDetails": VolumeSourceFromVolumeBackupDetails,
"VolumeSourceFromVolumeDetails": VolumeSourceFromVolumeDetails
}
diff --git a/src/oci/core/models/block_volume_replica.py b/src/oci/core/models/block_volume_replica.py
new file mode 100644
index 0000000000..810dab4824
--- /dev/null
+++ b/src/oci/core/models/block_volume_replica.py
@@ -0,0 +1,462 @@
+# coding: utf-8
+# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
+# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+
+
+from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401
+from oci.decorators import init_model_state_from_kwargs
+
+
+@init_model_state_from_kwargs
+class BlockVolumeReplica(object):
+ """
+ An asynchronous replica of a block volume that can then be used to create
+ a new block volume or recover a block volume. For more information, see `Overview
+ of Block Volume Replicas`__
+ To use any of the API operations, you must be authorized in an IAM policy.
+ If you're not authorized, talk to an administrator. If you're an administrator
+ who needs to write policies to give users access, see `Getting Started with
+ Policies`__.
+
+ **Warning:** Oracle recommends that you avoid using any confidential information when you
+ supply string values using the API.
+
+ __ https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/blockvolumereplicas.htm
+ __ https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/policygetstarted.htm
+ """
+
+ #: A constant which can be used with the lifecycle_state property of a BlockVolumeReplica.
+ #: This constant has a value of "PROVISIONING"
+ LIFECYCLE_STATE_PROVISIONING = "PROVISIONING"
+
+ #: A constant which can be used with the lifecycle_state property of a BlockVolumeReplica.
+ #: This constant has a value of "AVAILABLE"
+ LIFECYCLE_STATE_AVAILABLE = "AVAILABLE"
+
+ #: A constant which can be used with the lifecycle_state property of a BlockVolumeReplica.
+ #: This constant has a value of "ACTIVATING"
+ LIFECYCLE_STATE_ACTIVATING = "ACTIVATING"
+
+ #: A constant which can be used with the lifecycle_state property of a BlockVolumeReplica.
+ #: This constant has a value of "TERMINATING"
+ LIFECYCLE_STATE_TERMINATING = "TERMINATING"
+
+ #: A constant which can be used with the lifecycle_state property of a BlockVolumeReplica.
+ #: This constant has a value of "TERMINATED"
+ LIFECYCLE_STATE_TERMINATED = "TERMINATED"
+
+ #: A constant which can be used with the lifecycle_state property of a BlockVolumeReplica.
+ #: This constant has a value of "FAULTY"
+ LIFECYCLE_STATE_FAULTY = "FAULTY"
+
+ def __init__(self, **kwargs):
+ """
+ Initializes a new BlockVolumeReplica object with values from keyword arguments.
+ The following keyword arguments are supported (corresponding to the getters/setters of this class):
+
+ :param availability_domain:
+ The value to assign to the availability_domain property of this BlockVolumeReplica.
+ :type availability_domain: str
+
+ :param compartment_id:
+ The value to assign to the compartment_id property of this BlockVolumeReplica.
+ :type compartment_id: str
+
+ :param defined_tags:
+ The value to assign to the defined_tags property of this BlockVolumeReplica.
+ :type defined_tags: dict(str, dict(str, object))
+
+ :param display_name:
+ The value to assign to the display_name property of this BlockVolumeReplica.
+ :type display_name: str
+
+ :param freeform_tags:
+ The value to assign to the freeform_tags property of this BlockVolumeReplica.
+ :type freeform_tags: dict(str, str)
+
+ :param id:
+ The value to assign to the id property of this BlockVolumeReplica.
+ :type id: str
+
+ :param lifecycle_state:
+ The value to assign to the lifecycle_state property of this BlockVolumeReplica.
+ Allowed values for this property are: "PROVISIONING", "AVAILABLE", "ACTIVATING", "TERMINATING", "TERMINATED", "FAULTY", 'UNKNOWN_ENUM_VALUE'.
+ Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
+ :type lifecycle_state: str
+
+ :param size_in_gbs:
+ The value to assign to the size_in_gbs property of this BlockVolumeReplica.
+ :type size_in_gbs: int
+
+ :param time_created:
+ The value to assign to the time_created property of this BlockVolumeReplica.
+ :type time_created: datetime
+
+ :param time_last_synced:
+ The value to assign to the time_last_synced property of this BlockVolumeReplica.
+ :type time_last_synced: datetime
+
+ :param block_volume_id:
+ The value to assign to the block_volume_id property of this BlockVolumeReplica.
+ :type block_volume_id: str
+
+ """
+ self.swagger_types = {
+ 'availability_domain': 'str',
+ 'compartment_id': 'str',
+ 'defined_tags': 'dict(str, dict(str, object))',
+ 'display_name': 'str',
+ 'freeform_tags': 'dict(str, str)',
+ 'id': 'str',
+ 'lifecycle_state': 'str',
+ 'size_in_gbs': 'int',
+ 'time_created': 'datetime',
+ 'time_last_synced': 'datetime',
+ 'block_volume_id': 'str'
+ }
+
+ self.attribute_map = {
+ 'availability_domain': 'availabilityDomain',
+ 'compartment_id': 'compartmentId',
+ 'defined_tags': 'definedTags',
+ 'display_name': 'displayName',
+ 'freeform_tags': 'freeformTags',
+ 'id': 'id',
+ 'lifecycle_state': 'lifecycleState',
+ 'size_in_gbs': 'sizeInGBs',
+ 'time_created': 'timeCreated',
+ 'time_last_synced': 'timeLastSynced',
+ 'block_volume_id': 'blockVolumeId'
+ }
+
+ self._availability_domain = None
+ self._compartment_id = None
+ self._defined_tags = None
+ self._display_name = None
+ self._freeform_tags = None
+ self._id = None
+ self._lifecycle_state = None
+ self._size_in_gbs = None
+ self._time_created = None
+ self._time_last_synced = None
+ self._block_volume_id = None
+
+ @property
+ def availability_domain(self):
+ """
+ **[Required]** Gets the availability_domain of this BlockVolumeReplica.
+ The availability domain of the block volume replica.
+
+ Example: `Uocm:PHX-AD-1`
+
+
+ :return: The availability_domain of this BlockVolumeReplica.
+ :rtype: str
+ """
+ return self._availability_domain
+
+ @availability_domain.setter
+ def availability_domain(self, availability_domain):
+ """
+ Sets the availability_domain of this BlockVolumeReplica.
+ The availability domain of the block volume replica.
+
+ Example: `Uocm:PHX-AD-1`
+
+
+ :param availability_domain: The availability_domain of this BlockVolumeReplica.
+ :type: str
+ """
+ self._availability_domain = availability_domain
+
+ @property
+ def compartment_id(self):
+ """
+ **[Required]** Gets the compartment_id of this BlockVolumeReplica.
+ The OCID of the compartment that contains the block volume replica.
+
+
+ :return: The compartment_id of this BlockVolumeReplica.
+ :rtype: str
+ """
+ return self._compartment_id
+
+ @compartment_id.setter
+ def compartment_id(self, compartment_id):
+ """
+ Sets the compartment_id of this BlockVolumeReplica.
+ The OCID of the compartment that contains the block volume replica.
+
+
+ :param compartment_id: The compartment_id of this BlockVolumeReplica.
+ :type: str
+ """
+ self._compartment_id = compartment_id
+
+ @property
+ def defined_tags(self):
+ """
+ Gets the defined_tags of this BlockVolumeReplica.
+ Defined tags for this resource. Each key is predefined and scoped to a
+ namespace. For more information, see `Resource Tags`__.
+
+ Example: `{\"Operations\": {\"CostCenter\": \"42\"}}`
+
+ __ https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm
+
+
+ :return: The defined_tags of this BlockVolumeReplica.
+ :rtype: dict(str, dict(str, object))
+ """
+ return self._defined_tags
+
+ @defined_tags.setter
+ def defined_tags(self, defined_tags):
+ """
+ Sets the defined_tags of this BlockVolumeReplica.
+ Defined tags for this resource. Each key is predefined and scoped to a
+ namespace. For more information, see `Resource Tags`__.
+
+ Example: `{\"Operations\": {\"CostCenter\": \"42\"}}`
+
+ __ https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm
+
+
+ :param defined_tags: The defined_tags of this BlockVolumeReplica.
+ :type: dict(str, dict(str, object))
+ """
+ self._defined_tags = defined_tags
+
+ @property
+ def display_name(self):
+ """
+ **[Required]** Gets the display_name of this BlockVolumeReplica.
+ A user-friendly name. Does not have to be unique, and it's changeable.
+ Avoid entering confidential information.
+
+
+ :return: The display_name of this BlockVolumeReplica.
+ :rtype: str
+ """
+ return self._display_name
+
+ @display_name.setter
+ def display_name(self, display_name):
+ """
+ Sets the display_name of this BlockVolumeReplica.
+ A user-friendly name. Does not have to be unique, and it's changeable.
+ Avoid entering confidential information.
+
+
+ :param display_name: The display_name of this BlockVolumeReplica.
+ :type: str
+ """
+ self._display_name = display_name
+
+ @property
+ def freeform_tags(self):
+ """
+ Gets the freeform_tags of this BlockVolumeReplica.
+ Free-form tags for this resource. Each tag is a simple key-value pair with no
+ predefined name, type, or namespace. For more information, see `Resource Tags`__.
+
+ Example: `{\"Department\": \"Finance\"}`
+
+ __ https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm
+
+
+ :return: The freeform_tags of this BlockVolumeReplica.
+ :rtype: dict(str, str)
+ """
+ return self._freeform_tags
+
+ @freeform_tags.setter
+ def freeform_tags(self, freeform_tags):
+ """
+ Sets the freeform_tags of this BlockVolumeReplica.
+ Free-form tags for this resource. Each tag is a simple key-value pair with no
+ predefined name, type, or namespace. For more information, see `Resource Tags`__.
+
+ Example: `{\"Department\": \"Finance\"}`
+
+ __ https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm
+
+
+ :param freeform_tags: The freeform_tags of this BlockVolumeReplica.
+ :type: dict(str, str)
+ """
+ self._freeform_tags = freeform_tags
+
+ @property
+ def id(self):
+ """
+ **[Required]** Gets the id of this BlockVolumeReplica.
+ The block volume replica's Oracle ID (OCID).
+
+
+ :return: The id of this BlockVolumeReplica.
+ :rtype: str
+ """
+ return self._id
+
+ @id.setter
+ def id(self, id):
+ """
+ Sets the id of this BlockVolumeReplica.
+ The block volume replica's Oracle ID (OCID).
+
+
+ :param id: The id of this BlockVolumeReplica.
+ :type: str
+ """
+ self._id = id
+
+ @property
+ def lifecycle_state(self):
+ """
+ **[Required]** Gets the lifecycle_state of this BlockVolumeReplica.
+ The current state of a block volume replica.
+
+ Allowed values for this property are: "PROVISIONING", "AVAILABLE", "ACTIVATING", "TERMINATING", "TERMINATED", "FAULTY", 'UNKNOWN_ENUM_VALUE'.
+ Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
+
+
+ :return: The lifecycle_state of this BlockVolumeReplica.
+ :rtype: str
+ """
+ return self._lifecycle_state
+
+ @lifecycle_state.setter
+ def lifecycle_state(self, lifecycle_state):
+ """
+ Sets the lifecycle_state of this BlockVolumeReplica.
+ The current state of a block volume replica.
+
+
+ :param lifecycle_state: The lifecycle_state of this BlockVolumeReplica.
+ :type: str
+ """
+ allowed_values = ["PROVISIONING", "AVAILABLE", "ACTIVATING", "TERMINATING", "TERMINATED", "FAULTY"]
+ if not value_allowed_none_or_none_sentinel(lifecycle_state, allowed_values):
+ lifecycle_state = 'UNKNOWN_ENUM_VALUE'
+ self._lifecycle_state = lifecycle_state
+
+ @property
+ def size_in_gbs(self):
+ """
+ **[Required]** Gets the size_in_gbs of this BlockVolumeReplica.
+ The size of the source block volume, in GBs.
+
+
+ :return: The size_in_gbs of this BlockVolumeReplica.
+ :rtype: int
+ """
+ return self._size_in_gbs
+
+ @size_in_gbs.setter
+ def size_in_gbs(self, size_in_gbs):
+ """
+ Sets the size_in_gbs of this BlockVolumeReplica.
+ The size of the source block volume, in GBs.
+
+
+ :param size_in_gbs: The size_in_gbs of this BlockVolumeReplica.
+ :type: int
+ """
+ self._size_in_gbs = size_in_gbs
+
+ @property
+ def time_created(self):
+ """
+ **[Required]** Gets the time_created of this BlockVolumeReplica.
+ The date and time the block volume replica was created. Format defined
+ by `RFC3339`__.
+
+ __ https://tools.ietf.org/html/rfc3339
+
+
+ :return: The time_created of this BlockVolumeReplica.
+ :rtype: datetime
+ """
+ return self._time_created
+
+ @time_created.setter
+ def time_created(self, time_created):
+ """
+ Sets the time_created of this BlockVolumeReplica.
+ The date and time the block volume replica was created. Format defined
+ by `RFC3339`__.
+
+ __ https://tools.ietf.org/html/rfc3339
+
+
+ :param time_created: The time_created of this BlockVolumeReplica.
+ :type: datetime
+ """
+ self._time_created = time_created
+
+ @property
+ def time_last_synced(self):
+ """
+ **[Required]** Gets the time_last_synced of this BlockVolumeReplica.
+ The date and time the block volume replica was last synced from the source block volume.
+ Format defined by `RFC3339`__.
+
+ __ https://tools.ietf.org/html/rfc3339
+
+
+ :return: The time_last_synced of this BlockVolumeReplica.
+ :rtype: datetime
+ """
+ return self._time_last_synced
+
+ @time_last_synced.setter
+ def time_last_synced(self, time_last_synced):
+ """
+ Sets the time_last_synced of this BlockVolumeReplica.
+ The date and time the block volume replica was last synced from the source block volume.
+ Format defined by `RFC3339`__.
+
+ __ https://tools.ietf.org/html/rfc3339
+
+
+ :param time_last_synced: The time_last_synced of this BlockVolumeReplica.
+ :type: datetime
+ """
+ self._time_last_synced = time_last_synced
+
+ @property
+ def block_volume_id(self):
+ """
+ **[Required]** Gets the block_volume_id of this BlockVolumeReplica.
+ The OCID of the source block volume.
+
+
+ :return: The block_volume_id of this BlockVolumeReplica.
+ :rtype: str
+ """
+ return self._block_volume_id
+
+ @block_volume_id.setter
+ def block_volume_id(self, block_volume_id):
+ """
+ Sets the block_volume_id of this BlockVolumeReplica.
+ The OCID of the source block volume.
+
+
+ :param block_volume_id: The block_volume_id of this BlockVolumeReplica.
+ :type: str
+ """
+ self._block_volume_id = block_volume_id
+
+ def __repr__(self):
+ return formatted_flat_dict(self)
+
+ def __eq__(self, other):
+ if other is None:
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not self == other
diff --git a/src/oci/core/models/block_volume_replica_details.py b/src/oci/core/models/block_volume_replica_details.py
new file mode 100644
index 0000000000..5e1140b7e3
--- /dev/null
+++ b/src/oci/core/models/block_volume_replica_details.py
@@ -0,0 +1,107 @@
+# coding: utf-8
+# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
+# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+
+
+from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401
+from oci.decorators import init_model_state_from_kwargs
+
+
+@init_model_state_from_kwargs
+class BlockVolumeReplicaDetails(object):
+ """
+ Contains the details for the block volume replica
+ """
+
+ def __init__(self, **kwargs):
+ """
+ Initializes a new BlockVolumeReplicaDetails object with values from keyword arguments.
+ The following keyword arguments are supported (corresponding to the getters/setters of this class):
+
+ :param display_name:
+ The value to assign to the display_name property of this BlockVolumeReplicaDetails.
+ :type display_name: str
+
+ :param availability_domain:
+ The value to assign to the availability_domain property of this BlockVolumeReplicaDetails.
+ :type availability_domain: str
+
+ """
+ self.swagger_types = {
+ 'display_name': 'str',
+ 'availability_domain': 'str'
+ }
+
+ self.attribute_map = {
+ 'display_name': 'displayName',
+ 'availability_domain': 'availabilityDomain'
+ }
+
+ self._display_name = None
+ self._availability_domain = None
+
+ @property
+ def display_name(self):
+ """
+ Gets the display_name of this BlockVolumeReplicaDetails.
+ The display name of the block volume replica. You may optionally specify a *display name* for
+ the block volume replica, otherwise a default is provided.
+
+
+ :return: The display_name of this BlockVolumeReplicaDetails.
+ :rtype: str
+ """
+ return self._display_name
+
+ @display_name.setter
+ def display_name(self, display_name):
+ """
+ Sets the display_name of this BlockVolumeReplicaDetails.
+ The display name of the block volume replica. You may optionally specify a *display name* for
+ the block volume replica, otherwise a default is provided.
+
+
+ :param display_name: The display_name of this BlockVolumeReplicaDetails.
+ :type: str
+ """
+ self._display_name = display_name
+
+ @property
+ def availability_domain(self):
+ """
+ **[Required]** Gets the availability_domain of this BlockVolumeReplicaDetails.
+ The availability domain of the block volume replica.
+
+ Example: `Uocm:PHX-AD-1`
+
+
+ :return: The availability_domain of this BlockVolumeReplicaDetails.
+ :rtype: str
+ """
+ return self._availability_domain
+
+ @availability_domain.setter
+ def availability_domain(self, availability_domain):
+ """
+ Sets the availability_domain of this BlockVolumeReplicaDetails.
+ The availability domain of the block volume replica.
+
+ Example: `Uocm:PHX-AD-1`
+
+
+ :param availability_domain: The availability_domain of this BlockVolumeReplicaDetails.
+ :type: str
+ """
+ self._availability_domain = availability_domain
+
+ def __repr__(self):
+ return formatted_flat_dict(self)
+
+ def __eq__(self, other):
+ if other is None:
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not self == other
diff --git a/src/oci/core/models/block_volume_replica_info.py b/src/oci/core/models/block_volume_replica_info.py
new file mode 100644
index 0000000000..c7cd473e17
--- /dev/null
+++ b/src/oci/core/models/block_volume_replica_info.py
@@ -0,0 +1,136 @@
+# coding: utf-8
+# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
+# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+
+
+from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401
+from oci.decorators import init_model_state_from_kwargs
+
+
+@init_model_state_from_kwargs
+class BlockVolumeReplicaInfo(object):
+ """
+ Information about the block volume replica in the destination availability domain.
+ """
+
+ def __init__(self, **kwargs):
+ """
+ Initializes a new BlockVolumeReplicaInfo object with values from keyword arguments.
+ The following keyword arguments are supported (corresponding to the getters/setters of this class):
+
+ :param display_name:
+ The value to assign to the display_name property of this BlockVolumeReplicaInfo.
+ :type display_name: str
+
+ :param block_volume_replica_id:
+ The value to assign to the block_volume_replica_id property of this BlockVolumeReplicaInfo.
+ :type block_volume_replica_id: str
+
+ :param availability_domain:
+ The value to assign to the availability_domain property of this BlockVolumeReplicaInfo.
+ :type availability_domain: str
+
+ """
+ self.swagger_types = {
+ 'display_name': 'str',
+ 'block_volume_replica_id': 'str',
+ 'availability_domain': 'str'
+ }
+
+ self.attribute_map = {
+ 'display_name': 'displayName',
+ 'block_volume_replica_id': 'blockVolumeReplicaId',
+ 'availability_domain': 'availabilityDomain'
+ }
+
+ self._display_name = None
+ self._block_volume_replica_id = None
+ self._availability_domain = None
+
+ @property
+ def display_name(self):
+ """
+ **[Required]** Gets the display_name of this BlockVolumeReplicaInfo.
+ The display name of the block volume replica
+
+
+ :return: The display_name of this BlockVolumeReplicaInfo.
+ :rtype: str
+ """
+ return self._display_name
+
+ @display_name.setter
+ def display_name(self, display_name):
+ """
+ Sets the display_name of this BlockVolumeReplicaInfo.
+ The display name of the block volume replica
+
+
+ :param display_name: The display_name of this BlockVolumeReplicaInfo.
+ :type: str
+ """
+ self._display_name = display_name
+
+ @property
+ def block_volume_replica_id(self):
+ """
+ **[Required]** Gets the block_volume_replica_id of this BlockVolumeReplicaInfo.
+ The block volume replica's Oracle ID (OCID).
+
+
+ :return: The block_volume_replica_id of this BlockVolumeReplicaInfo.
+ :rtype: str
+ """
+ return self._block_volume_replica_id
+
+ @block_volume_replica_id.setter
+ def block_volume_replica_id(self, block_volume_replica_id):
+ """
+ Sets the block_volume_replica_id of this BlockVolumeReplicaInfo.
+ The block volume replica's Oracle ID (OCID).
+
+
+ :param block_volume_replica_id: The block_volume_replica_id of this BlockVolumeReplicaInfo.
+ :type: str
+ """
+ self._block_volume_replica_id = block_volume_replica_id
+
+ @property
+ def availability_domain(self):
+ """
+ **[Required]** Gets the availability_domain of this BlockVolumeReplicaInfo.
+ The availability domain of the block volume replica.
+
+ Example: `Uocm:PHX-AD-1`
+
+
+ :return: The availability_domain of this BlockVolumeReplicaInfo.
+ :rtype: str
+ """
+ return self._availability_domain
+
+ @availability_domain.setter
+ def availability_domain(self, availability_domain):
+ """
+ Sets the availability_domain of this BlockVolumeReplicaInfo.
+ The availability domain of the block volume replica.
+
+ Example: `Uocm:PHX-AD-1`
+
+
+ :param availability_domain: The availability_domain of this BlockVolumeReplicaInfo.
+ :type: str
+ """
+ self._availability_domain = availability_domain
+
+ def __repr__(self):
+ return formatted_flat_dict(self)
+
+ def __eq__(self, other):
+ if other is None:
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not self == other
diff --git a/src/oci/core/models/boot_volume.py b/src/oci/core/models/boot_volume.py
index 3f1bccf776..2c9a422a0f 100644
--- a/src/oci/core/models/boot_volume.py
+++ b/src/oci/core/models/boot_volume.py
@@ -131,6 +131,10 @@ def __init__(self, **kwargs):
The value to assign to the auto_tuned_vpus_per_gb property of this BootVolume.
:type auto_tuned_vpus_per_gb: int
+ :param boot_volume_replicas:
+ The value to assign to the boot_volume_replicas property of this BootVolume.
+ :type boot_volume_replicas: list[oci.core.models.BootVolumeReplicaInfo]
+
"""
self.swagger_types = {
'availability_domain': 'str',
@@ -151,7 +155,8 @@ def __init__(self, **kwargs):
'volume_group_id': 'str',
'kms_key_id': 'str',
'is_auto_tune_enabled': 'bool',
- 'auto_tuned_vpus_per_gb': 'int'
+ 'auto_tuned_vpus_per_gb': 'int',
+ 'boot_volume_replicas': 'list[BootVolumeReplicaInfo]'
}
self.attribute_map = {
@@ -173,7 +178,8 @@ def __init__(self, **kwargs):
'volume_group_id': 'volumeGroupId',
'kms_key_id': 'kmsKeyId',
'is_auto_tune_enabled': 'isAutoTuneEnabled',
- 'auto_tuned_vpus_per_gb': 'autoTunedVpusPerGB'
+ 'auto_tuned_vpus_per_gb': 'autoTunedVpusPerGB',
+ 'boot_volume_replicas': 'bootVolumeReplicas'
}
self._availability_domain = None
@@ -195,6 +201,7 @@ def __init__(self, **kwargs):
self._kms_key_id = None
self._is_auto_tune_enabled = None
self._auto_tuned_vpus_per_gb = None
+ self._boot_volume_replicas = None
@property
def availability_domain(self):
@@ -712,6 +719,30 @@ def auto_tuned_vpus_per_gb(self, auto_tuned_vpus_per_gb):
"""
self._auto_tuned_vpus_per_gb = auto_tuned_vpus_per_gb
+ @property
+ def boot_volume_replicas(self):
+ """
+ Gets the boot_volume_replicas of this BootVolume.
+ The list of boot volume replicas of this boot volume
+
+
+ :return: The boot_volume_replicas of this BootVolume.
+ :rtype: list[oci.core.models.BootVolumeReplicaInfo]
+ """
+ return self._boot_volume_replicas
+
+ @boot_volume_replicas.setter
+ def boot_volume_replicas(self, boot_volume_replicas):
+ """
+ Sets the boot_volume_replicas of this BootVolume.
+ The list of boot volume replicas of this boot volume
+
+
+ :param boot_volume_replicas: The boot_volume_replicas of this BootVolume.
+ :type: list[oci.core.models.BootVolumeReplicaInfo]
+ """
+ self._boot_volume_replicas = boot_volume_replicas
+
def __repr__(self):
return formatted_flat_dict(self)
diff --git a/src/oci/core/models/boot_volume_replica.py b/src/oci/core/models/boot_volume_replica.py
new file mode 100644
index 0000000000..65bd66b457
--- /dev/null
+++ b/src/oci/core/models/boot_volume_replica.py
@@ -0,0 +1,493 @@
+# coding: utf-8
+# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
+# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+
+
+from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401
+from oci.decorators import init_model_state_from_kwargs
+
+
+@init_model_state_from_kwargs
+class BootVolumeReplica(object):
+ """
+ An asynchronous replica of a boot volume that can then be used to create
+ a new boot volume or recover a boot volume. For more information, see `Overview
+ of Block Volume Replicas`__
+ To use any of the API operations, you must be authorized in an IAM policy.
+ If you're not authorized, talk to an administrator. If you're an administrator
+ who needs to write policies to give users access, see `Getting Started with
+ Policies`__.
+
+ **Warning:** Oracle recommends that you avoid using any confidential information when you
+ supply string values using the API.
+
+ __ https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/bootvolumereplicas.htm
+ __ https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/policygetstarted.htm
+ """
+
+ #: A constant which can be used with the lifecycle_state property of a BootVolumeReplica.
+ #: This constant has a value of "PROVISIONING"
+ LIFECYCLE_STATE_PROVISIONING = "PROVISIONING"
+
+ #: A constant which can be used with the lifecycle_state property of a BootVolumeReplica.
+ #: This constant has a value of "AVAILABLE"
+ LIFECYCLE_STATE_AVAILABLE = "AVAILABLE"
+
+ #: A constant which can be used with the lifecycle_state property of a BootVolumeReplica.
+ #: This constant has a value of "ACTIVATING"
+ LIFECYCLE_STATE_ACTIVATING = "ACTIVATING"
+
+ #: A constant which can be used with the lifecycle_state property of a BootVolumeReplica.
+ #: This constant has a value of "TERMINATING"
+ LIFECYCLE_STATE_TERMINATING = "TERMINATING"
+
+ #: A constant which can be used with the lifecycle_state property of a BootVolumeReplica.
+ #: This constant has a value of "TERMINATED"
+ LIFECYCLE_STATE_TERMINATED = "TERMINATED"
+
+ #: A constant which can be used with the lifecycle_state property of a BootVolumeReplica.
+ #: This constant has a value of "FAULTY"
+ LIFECYCLE_STATE_FAULTY = "FAULTY"
+
+ def __init__(self, **kwargs):
+ """
+ Initializes a new BootVolumeReplica object with values from keyword arguments.
+ The following keyword arguments are supported (corresponding to the getters/setters of this class):
+
+ :param availability_domain:
+ The value to assign to the availability_domain property of this BootVolumeReplica.
+ :type availability_domain: str
+
+ :param compartment_id:
+ The value to assign to the compartment_id property of this BootVolumeReplica.
+ :type compartment_id: str
+
+ :param defined_tags:
+ The value to assign to the defined_tags property of this BootVolumeReplica.
+ :type defined_tags: dict(str, dict(str, object))
+
+ :param display_name:
+ The value to assign to the display_name property of this BootVolumeReplica.
+ :type display_name: str
+
+ :param freeform_tags:
+ The value to assign to the freeform_tags property of this BootVolumeReplica.
+ :type freeform_tags: dict(str, str)
+
+ :param id:
+ The value to assign to the id property of this BootVolumeReplica.
+ :type id: str
+
+ :param lifecycle_state:
+ The value to assign to the lifecycle_state property of this BootVolumeReplica.
+ Allowed values for this property are: "PROVISIONING", "AVAILABLE", "ACTIVATING", "TERMINATING", "TERMINATED", "FAULTY", 'UNKNOWN_ENUM_VALUE'.
+ Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
+ :type lifecycle_state: str
+
+ :param size_in_gbs:
+ The value to assign to the size_in_gbs property of this BootVolumeReplica.
+ :type size_in_gbs: int
+
+ :param time_created:
+ The value to assign to the time_created property of this BootVolumeReplica.
+ :type time_created: datetime
+
+ :param time_last_synced:
+ The value to assign to the time_last_synced property of this BootVolumeReplica.
+ :type time_last_synced: datetime
+
+ :param boot_volume_id:
+ The value to assign to the boot_volume_id property of this BootVolumeReplica.
+ :type boot_volume_id: str
+
+ :param image_id:
+ The value to assign to the image_id property of this BootVolumeReplica.
+ :type image_id: str
+
+ """
+ self.swagger_types = {
+ 'availability_domain': 'str',
+ 'compartment_id': 'str',
+ 'defined_tags': 'dict(str, dict(str, object))',
+ 'display_name': 'str',
+ 'freeform_tags': 'dict(str, str)',
+ 'id': 'str',
+ 'lifecycle_state': 'str',
+ 'size_in_gbs': 'int',
+ 'time_created': 'datetime',
+ 'time_last_synced': 'datetime',
+ 'boot_volume_id': 'str',
+ 'image_id': 'str'
+ }
+
+ self.attribute_map = {
+ 'availability_domain': 'availabilityDomain',
+ 'compartment_id': 'compartmentId',
+ 'defined_tags': 'definedTags',
+ 'display_name': 'displayName',
+ 'freeform_tags': 'freeformTags',
+ 'id': 'id',
+ 'lifecycle_state': 'lifecycleState',
+ 'size_in_gbs': 'sizeInGBs',
+ 'time_created': 'timeCreated',
+ 'time_last_synced': 'timeLastSynced',
+ 'boot_volume_id': 'bootVolumeId',
+ 'image_id': 'imageId'
+ }
+
+ self._availability_domain = None
+ self._compartment_id = None
+ self._defined_tags = None
+ self._display_name = None
+ self._freeform_tags = None
+ self._id = None
+ self._lifecycle_state = None
+ self._size_in_gbs = None
+ self._time_created = None
+ self._time_last_synced = None
+ self._boot_volume_id = None
+ self._image_id = None
+
+ @property
+ def availability_domain(self):
+ """
+ **[Required]** Gets the availability_domain of this BootVolumeReplica.
+ The availability domain of the boot volume replica.
+
+ Example: `Uocm:PHX-AD-1`
+
+
+ :return: The availability_domain of this BootVolumeReplica.
+ :rtype: str
+ """
+ return self._availability_domain
+
+ @availability_domain.setter
+ def availability_domain(self, availability_domain):
+ """
+ Sets the availability_domain of this BootVolumeReplica.
+ The availability domain of the boot volume replica.
+
+ Example: `Uocm:PHX-AD-1`
+
+
+ :param availability_domain: The availability_domain of this BootVolumeReplica.
+ :type: str
+ """
+ self._availability_domain = availability_domain
+
+ @property
+ def compartment_id(self):
+ """
+ **[Required]** Gets the compartment_id of this BootVolumeReplica.
+ The OCID of the compartment that contains the boot volume replica.
+
+
+ :return: The compartment_id of this BootVolumeReplica.
+ :rtype: str
+ """
+ return self._compartment_id
+
+ @compartment_id.setter
+ def compartment_id(self, compartment_id):
+ """
+ Sets the compartment_id of this BootVolumeReplica.
+ The OCID of the compartment that contains the boot volume replica.
+
+
+ :param compartment_id: The compartment_id of this BootVolumeReplica.
+ :type: str
+ """
+ self._compartment_id = compartment_id
+
+ @property
+ def defined_tags(self):
+ """
+ Gets the defined_tags of this BootVolumeReplica.
+ Defined tags for this resource. Each key is predefined and scoped to a
+ namespace. For more information, see `Resource Tags`__.
+
+ Example: `{\"Operations\": {\"CostCenter\": \"42\"}}`
+
+ __ https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm
+
+
+ :return: The defined_tags of this BootVolumeReplica.
+ :rtype: dict(str, dict(str, object))
+ """
+ return self._defined_tags
+
+ @defined_tags.setter
+ def defined_tags(self, defined_tags):
+ """
+ Sets the defined_tags of this BootVolumeReplica.
+ Defined tags for this resource. Each key is predefined and scoped to a
+ namespace. For more information, see `Resource Tags`__.
+
+ Example: `{\"Operations\": {\"CostCenter\": \"42\"}}`
+
+ __ https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm
+
+
+ :param defined_tags: The defined_tags of this BootVolumeReplica.
+ :type: dict(str, dict(str, object))
+ """
+ self._defined_tags = defined_tags
+
+ @property
+ def display_name(self):
+ """
+ **[Required]** Gets the display_name of this BootVolumeReplica.
+ A user-friendly name. Does not have to be unique, and it's changeable.
+ Avoid entering confidential information.
+
+
+ :return: The display_name of this BootVolumeReplica.
+ :rtype: str
+ """
+ return self._display_name
+
+ @display_name.setter
+ def display_name(self, display_name):
+ """
+ Sets the display_name of this BootVolumeReplica.
+ A user-friendly name. Does not have to be unique, and it's changeable.
+ Avoid entering confidential information.
+
+
+ :param display_name: The display_name of this BootVolumeReplica.
+ :type: str
+ """
+ self._display_name = display_name
+
+ @property
+ def freeform_tags(self):
+ """
+ Gets the freeform_tags of this BootVolumeReplica.
+ Free-form tags for this resource. Each tag is a simple key-value pair with no
+ predefined name, type, or namespace. For more information, see `Resource Tags`__.
+
+ Example: `{\"Department\": \"Finance\"}`
+
+ __ https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm
+
+
+ :return: The freeform_tags of this BootVolumeReplica.
+ :rtype: dict(str, str)
+ """
+ return self._freeform_tags
+
+ @freeform_tags.setter
+ def freeform_tags(self, freeform_tags):
+ """
+ Sets the freeform_tags of this BootVolumeReplica.
+ Free-form tags for this resource. Each tag is a simple key-value pair with no
+ predefined name, type, or namespace. For more information, see `Resource Tags`__.
+
+ Example: `{\"Department\": \"Finance\"}`
+
+ __ https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm
+
+
+ :param freeform_tags: The freeform_tags of this BootVolumeReplica.
+ :type: dict(str, str)
+ """
+ self._freeform_tags = freeform_tags
+
+ @property
+ def id(self):
+ """
+ **[Required]** Gets the id of this BootVolumeReplica.
+ The boot volume replica's Oracle ID (OCID).
+
+
+ :return: The id of this BootVolumeReplica.
+ :rtype: str
+ """
+ return self._id
+
+ @id.setter
+ def id(self, id):
+ """
+ Sets the id of this BootVolumeReplica.
+ The boot volume replica's Oracle ID (OCID).
+
+
+ :param id: The id of this BootVolumeReplica.
+ :type: str
+ """
+ self._id = id
+
+ @property
+ def lifecycle_state(self):
+ """
+ **[Required]** Gets the lifecycle_state of this BootVolumeReplica.
+ The current state of a boot volume replica.
+
+ Allowed values for this property are: "PROVISIONING", "AVAILABLE", "ACTIVATING", "TERMINATING", "TERMINATED", "FAULTY", 'UNKNOWN_ENUM_VALUE'.
+ Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
+
+
+ :return: The lifecycle_state of this BootVolumeReplica.
+ :rtype: str
+ """
+ return self._lifecycle_state
+
+ @lifecycle_state.setter
+ def lifecycle_state(self, lifecycle_state):
+ """
+ Sets the lifecycle_state of this BootVolumeReplica.
+ The current state of a boot volume replica.
+
+
+ :param lifecycle_state: The lifecycle_state of this BootVolumeReplica.
+ :type: str
+ """
+ allowed_values = ["PROVISIONING", "AVAILABLE", "ACTIVATING", "TERMINATING", "TERMINATED", "FAULTY"]
+ if not value_allowed_none_or_none_sentinel(lifecycle_state, allowed_values):
+ lifecycle_state = 'UNKNOWN_ENUM_VALUE'
+ self._lifecycle_state = lifecycle_state
+
+ @property
+ def size_in_gbs(self):
+ """
+ **[Required]** Gets the size_in_gbs of this BootVolumeReplica.
+ The size of the source boot volume, in GBs.
+
+
+ :return: The size_in_gbs of this BootVolumeReplica.
+ :rtype: int
+ """
+ return self._size_in_gbs
+
+ @size_in_gbs.setter
+ def size_in_gbs(self, size_in_gbs):
+ """
+ Sets the size_in_gbs of this BootVolumeReplica.
+ The size of the source boot volume, in GBs.
+
+
+ :param size_in_gbs: The size_in_gbs of this BootVolumeReplica.
+ :type: int
+ """
+ self._size_in_gbs = size_in_gbs
+
+ @property
+ def time_created(self):
+ """
+ **[Required]** Gets the time_created of this BootVolumeReplica.
+ The date and time the boot volume replica was created. Format defined
+ by `RFC3339`__.
+
+ __ https://tools.ietf.org/html/rfc3339
+
+
+ :return: The time_created of this BootVolumeReplica.
+ :rtype: datetime
+ """
+ return self._time_created
+
+ @time_created.setter
+ def time_created(self, time_created):
+ """
+ Sets the time_created of this BootVolumeReplica.
+ The date and time the boot volume replica was created. Format defined
+ by `RFC3339`__.
+
+ __ https://tools.ietf.org/html/rfc3339
+
+
+ :param time_created: The time_created of this BootVolumeReplica.
+ :type: datetime
+ """
+ self._time_created = time_created
+
+ @property
+ def time_last_synced(self):
+ """
+ **[Required]** Gets the time_last_synced of this BootVolumeReplica.
+ The date and time the boot volume replica was last synced from the source boot volume.
+ Format defined by `RFC3339`__.
+
+ __ https://tools.ietf.org/html/rfc3339
+
+
+ :return: The time_last_synced of this BootVolumeReplica.
+ :rtype: datetime
+ """
+ return self._time_last_synced
+
+ @time_last_synced.setter
+ def time_last_synced(self, time_last_synced):
+ """
+ Sets the time_last_synced of this BootVolumeReplica.
+ The date and time the boot volume replica was last synced from the source boot volume.
+ Format defined by `RFC3339`__.
+
+ __ https://tools.ietf.org/html/rfc3339
+
+
+ :param time_last_synced: The time_last_synced of this BootVolumeReplica.
+ :type: datetime
+ """
+ self._time_last_synced = time_last_synced
+
+ @property
+ def boot_volume_id(self):
+ """
+ **[Required]** Gets the boot_volume_id of this BootVolumeReplica.
+ The OCID of the source boot volume.
+
+
+ :return: The boot_volume_id of this BootVolumeReplica.
+ :rtype: str
+ """
+ return self._boot_volume_id
+
+ @boot_volume_id.setter
+ def boot_volume_id(self, boot_volume_id):
+ """
+ Sets the boot_volume_id of this BootVolumeReplica.
+ The OCID of the source boot volume.
+
+
+ :param boot_volume_id: The boot_volume_id of this BootVolumeReplica.
+ :type: str
+ """
+ self._boot_volume_id = boot_volume_id
+
+ @property
+ def image_id(self):
+ """
+ Gets the image_id of this BootVolumeReplica.
+ The image OCID used to create the boot volume the replica is replicated from.
+
+
+ :return: The image_id of this BootVolumeReplica.
+ :rtype: str
+ """
+ return self._image_id
+
+ @image_id.setter
+ def image_id(self, image_id):
+ """
+ Sets the image_id of this BootVolumeReplica.
+ The image OCID used to create the boot volume the replica is replicated from.
+
+
+ :param image_id: The image_id of this BootVolumeReplica.
+ :type: str
+ """
+ self._image_id = image_id
+
+ def __repr__(self):
+ return formatted_flat_dict(self)
+
+ def __eq__(self, other):
+ if other is None:
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not self == other
diff --git a/src/oci/core/models/boot_volume_replica_details.py b/src/oci/core/models/boot_volume_replica_details.py
new file mode 100644
index 0000000000..95c5668bfe
--- /dev/null
+++ b/src/oci/core/models/boot_volume_replica_details.py
@@ -0,0 +1,107 @@
+# coding: utf-8
+# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
+# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+
+
+from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401
+from oci.decorators import init_model_state_from_kwargs
+
+
+@init_model_state_from_kwargs
+class BootVolumeReplicaDetails(object):
+ """
+ Contains the details for the boot volume replica
+ """
+
+ def __init__(self, **kwargs):
+ """
+ Initializes a new BootVolumeReplicaDetails object with values from keyword arguments.
+ The following keyword arguments are supported (corresponding to the getters/setters of this class):
+
+ :param display_name:
+ The value to assign to the display_name property of this BootVolumeReplicaDetails.
+ :type display_name: str
+
+ :param availability_domain:
+ The value to assign to the availability_domain property of this BootVolumeReplicaDetails.
+ :type availability_domain: str
+
+ """
+ self.swagger_types = {
+ 'display_name': 'str',
+ 'availability_domain': 'str'
+ }
+
+ self.attribute_map = {
+ 'display_name': 'displayName',
+ 'availability_domain': 'availabilityDomain'
+ }
+
+ self._display_name = None
+ self._availability_domain = None
+
+ @property
+ def display_name(self):
+ """
+ Gets the display_name of this BootVolumeReplicaDetails.
+ The display name of the boot volume replica. You may optionally specify a *display name* for
+ the boot volume replica, otherwise a default is provided.
+
+
+ :return: The display_name of this BootVolumeReplicaDetails.
+ :rtype: str
+ """
+ return self._display_name
+
+ @display_name.setter
+ def display_name(self, display_name):
+ """
+ Sets the display_name of this BootVolumeReplicaDetails.
+ The display name of the boot volume replica. You may optionally specify a *display name* for
+ the boot volume replica, otherwise a default is provided.
+
+
+ :param display_name: The display_name of this BootVolumeReplicaDetails.
+ :type: str
+ """
+ self._display_name = display_name
+
+ @property
+ def availability_domain(self):
+ """
+ **[Required]** Gets the availability_domain of this BootVolumeReplicaDetails.
+ The availability domain of the boot volume replica.
+
+ Example: `Uocm:PHX-AD-1`
+
+
+ :return: The availability_domain of this BootVolumeReplicaDetails.
+ :rtype: str
+ """
+ return self._availability_domain
+
+ @availability_domain.setter
+ def availability_domain(self, availability_domain):
+ """
+ Sets the availability_domain of this BootVolumeReplicaDetails.
+ The availability domain of the boot volume replica.
+
+ Example: `Uocm:PHX-AD-1`
+
+
+ :param availability_domain: The availability_domain of this BootVolumeReplicaDetails.
+ :type: str
+ """
+ self._availability_domain = availability_domain
+
+ def __repr__(self):
+ return formatted_flat_dict(self)
+
+ def __eq__(self, other):
+ if other is None:
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not self == other
diff --git a/src/oci/core/models/boot_volume_replica_info.py b/src/oci/core/models/boot_volume_replica_info.py
new file mode 100644
index 0000000000..f16c46aa9c
--- /dev/null
+++ b/src/oci/core/models/boot_volume_replica_info.py
@@ -0,0 +1,136 @@
+# coding: utf-8
+# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
+# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+
+
+from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401
+from oci.decorators import init_model_state_from_kwargs
+
+
+@init_model_state_from_kwargs
+class BootVolumeReplicaInfo(object):
+ """
+ Information about the boot volume replica in the destination availability domain.
+ """
+
+ def __init__(self, **kwargs):
+ """
+ Initializes a new BootVolumeReplicaInfo object with values from keyword arguments.
+ The following keyword arguments are supported (corresponding to the getters/setters of this class):
+
+ :param display_name:
+ The value to assign to the display_name property of this BootVolumeReplicaInfo.
+ :type display_name: str
+
+ :param boot_volume_replica_id:
+ The value to assign to the boot_volume_replica_id property of this BootVolumeReplicaInfo.
+ :type boot_volume_replica_id: str
+
+ :param availability_domain:
+ The value to assign to the availability_domain property of this BootVolumeReplicaInfo.
+ :type availability_domain: str
+
+ """
+ self.swagger_types = {
+ 'display_name': 'str',
+ 'boot_volume_replica_id': 'str',
+ 'availability_domain': 'str'
+ }
+
+ self.attribute_map = {
+ 'display_name': 'displayName',
+ 'boot_volume_replica_id': 'bootVolumeReplicaId',
+ 'availability_domain': 'availabilityDomain'
+ }
+
+ self._display_name = None
+ self._boot_volume_replica_id = None
+ self._availability_domain = None
+
+ @property
+ def display_name(self):
+ """
+ **[Required]** Gets the display_name of this BootVolumeReplicaInfo.
+ The display name of the boot volume replica
+
+
+ :return: The display_name of this BootVolumeReplicaInfo.
+ :rtype: str
+ """
+ return self._display_name
+
+ @display_name.setter
+ def display_name(self, display_name):
+ """
+ Sets the display_name of this BootVolumeReplicaInfo.
+ The display name of the boot volume replica
+
+
+ :param display_name: The display_name of this BootVolumeReplicaInfo.
+ :type: str
+ """
+ self._display_name = display_name
+
+ @property
+ def boot_volume_replica_id(self):
+ """
+ **[Required]** Gets the boot_volume_replica_id of this BootVolumeReplicaInfo.
+ The boot volume replica's Oracle ID (OCID).
+
+
+ :return: The boot_volume_replica_id of this BootVolumeReplicaInfo.
+ :rtype: str
+ """
+ return self._boot_volume_replica_id
+
+ @boot_volume_replica_id.setter
+ def boot_volume_replica_id(self, boot_volume_replica_id):
+ """
+ Sets the boot_volume_replica_id of this BootVolumeReplicaInfo.
+ The boot volume replica's Oracle ID (OCID).
+
+
+ :param boot_volume_replica_id: The boot_volume_replica_id of this BootVolumeReplicaInfo.
+ :type: str
+ """
+ self._boot_volume_replica_id = boot_volume_replica_id
+
+ @property
+ def availability_domain(self):
+ """
+ **[Required]** Gets the availability_domain of this BootVolumeReplicaInfo.
+ The availability domain of the boot volume replica.
+
+ Example: `Uocm:PHX-AD-1`
+
+
+ :return: The availability_domain of this BootVolumeReplicaInfo.
+ :rtype: str
+ """
+ return self._availability_domain
+
+ @availability_domain.setter
+ def availability_domain(self, availability_domain):
+ """
+ Sets the availability_domain of this BootVolumeReplicaInfo.
+ The availability domain of the boot volume replica.
+
+ Example: `Uocm:PHX-AD-1`
+
+
+ :param availability_domain: The availability_domain of this BootVolumeReplicaInfo.
+ :type: str
+ """
+ self._availability_domain = availability_domain
+
+ def __repr__(self):
+ return formatted_flat_dict(self)
+
+ def __eq__(self, other):
+ if other is None:
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not self == other
diff --git a/src/oci/core/models/boot_volume_source_details.py b/src/oci/core/models/boot_volume_source_details.py
index dad3b58567..2d36a93f5a 100644
--- a/src/oci/core/models/boot_volume_source_details.py
+++ b/src/oci/core/models/boot_volume_source_details.py
@@ -20,6 +20,7 @@ def __init__(self, **kwargs):
* :class:`~oci.core.models.BootVolumeSourceFromBootVolumeBackupDetails`
* :class:`~oci.core.models.BootVolumeSourceFromBootVolumeDetails`
+ * :class:`~oci.core.models.BootVolumeSourceFromBootVolumeReplicaDetails`
The following keyword arguments are supported (corresponding to the getters/setters of this class):
@@ -51,6 +52,9 @@ def get_subtype(object_dictionary):
if type == 'bootVolume':
return 'BootVolumeSourceFromBootVolumeDetails'
+
+ if type == 'bootVolumeReplica':
+ return 'BootVolumeSourceFromBootVolumeReplicaDetails'
else:
return 'BootVolumeSourceDetails'
diff --git a/src/oci/core/models/boot_volume_source_from_boot_volume_replica_details.py b/src/oci/core/models/boot_volume_source_from_boot_volume_replica_details.py
new file mode 100644
index 0000000000..ef8f6a23c7
--- /dev/null
+++ b/src/oci/core/models/boot_volume_source_from_boot_volume_replica_details.py
@@ -0,0 +1,81 @@
+# coding: utf-8
+# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
+# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+
+from .boot_volume_source_details import BootVolumeSourceDetails
+from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401
+from oci.decorators import init_model_state_from_kwargs
+
+
+@init_model_state_from_kwargs
+class BootVolumeSourceFromBootVolumeReplicaDetails(BootVolumeSourceDetails):
+ """
+ Specifies the source boot volume replica which the boot volume will be created from.
+ The boot volume replica shoulbe be in the same availability domain as the boot volume.
+ Only one volume can be created from a replica at the same time.
+ """
+
+ def __init__(self, **kwargs):
+ """
+ Initializes a new BootVolumeSourceFromBootVolumeReplicaDetails object with values from keyword arguments. The default value of the :py:attr:`~oci.core.models.BootVolumeSourceFromBootVolumeReplicaDetails.type` attribute
+ of this class is ``bootVolumeReplica`` and it should not be changed.
+ The following keyword arguments are supported (corresponding to the getters/setters of this class):
+
+ :param type:
+ The value to assign to the type property of this BootVolumeSourceFromBootVolumeReplicaDetails.
+ :type type: str
+
+ :param id:
+ The value to assign to the id property of this BootVolumeSourceFromBootVolumeReplicaDetails.
+ :type id: str
+
+ """
+ self.swagger_types = {
+ 'type': 'str',
+ 'id': 'str'
+ }
+
+ self.attribute_map = {
+ 'type': 'type',
+ 'id': 'id'
+ }
+
+ self._type = None
+ self._id = None
+ self._type = 'bootVolumeReplica'
+
+ @property
+ def id(self):
+ """
+ **[Required]** Gets the id of this BootVolumeSourceFromBootVolumeReplicaDetails.
+ The OCID of the boot volume replica.
+
+
+ :return: The id of this BootVolumeSourceFromBootVolumeReplicaDetails.
+ :rtype: str
+ """
+ return self._id
+
+ @id.setter
+ def id(self, id):
+ """
+ Sets the id of this BootVolumeSourceFromBootVolumeReplicaDetails.
+ The OCID of the boot volume replica.
+
+
+ :param id: The id of this BootVolumeSourceFromBootVolumeReplicaDetails.
+ :type: str
+ """
+ self._id = id
+
+ def __repr__(self):
+ return formatted_flat_dict(self)
+
+ def __eq__(self, other):
+ if other is None:
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not self == other
diff --git a/src/oci/core/models/create_boot_volume_details.py b/src/oci/core/models/create_boot_volume_details.py
index cfb8437652..a49c1b3606 100644
--- a/src/oci/core/models/create_boot_volume_details.py
+++ b/src/oci/core/models/create_boot_volume_details.py
@@ -62,6 +62,10 @@ def __init__(self, **kwargs):
The value to assign to the is_auto_tune_enabled property of this CreateBootVolumeDetails.
:type is_auto_tune_enabled: bool
+ :param boot_volume_replicas:
+ The value to assign to the boot_volume_replicas property of this CreateBootVolumeDetails.
+ :type boot_volume_replicas: list[oci.core.models.BootVolumeReplicaDetails]
+
"""
self.swagger_types = {
'availability_domain': 'str',
@@ -74,7 +78,8 @@ def __init__(self, **kwargs):
'size_in_gbs': 'int',
'vpus_per_gb': 'int',
'source_details': 'BootVolumeSourceDetails',
- 'is_auto_tune_enabled': 'bool'
+ 'is_auto_tune_enabled': 'bool',
+ 'boot_volume_replicas': 'list[BootVolumeReplicaDetails]'
}
self.attribute_map = {
@@ -88,7 +93,8 @@ def __init__(self, **kwargs):
'size_in_gbs': 'sizeInGBs',
'vpus_per_gb': 'vpusPerGB',
'source_details': 'sourceDetails',
- 'is_auto_tune_enabled': 'isAutoTuneEnabled'
+ 'is_auto_tune_enabled': 'isAutoTuneEnabled',
+ 'boot_volume_replicas': 'bootVolumeReplicas'
}
self._availability_domain = None
@@ -102,6 +108,7 @@ def __init__(self, **kwargs):
self._vpus_per_gb = None
self._source_details = None
self._is_auto_tune_enabled = None
+ self._boot_volume_replicas = None
@property
def availability_domain(self):
@@ -413,6 +420,32 @@ def is_auto_tune_enabled(self, is_auto_tune_enabled):
"""
self._is_auto_tune_enabled = is_auto_tune_enabled
+ @property
+ def boot_volume_replicas(self):
+ """
+ Gets the boot_volume_replicas of this CreateBootVolumeDetails.
+ The list of boot volume replicas to be enabled for this boot volume
+ in the specified destination availability domains.
+
+
+ :return: The boot_volume_replicas of this CreateBootVolumeDetails.
+ :rtype: list[oci.core.models.BootVolumeReplicaDetails]
+ """
+ return self._boot_volume_replicas
+
+ @boot_volume_replicas.setter
+ def boot_volume_replicas(self, boot_volume_replicas):
+ """
+ Sets the boot_volume_replicas of this CreateBootVolumeDetails.
+ The list of boot volume replicas to be enabled for this boot volume
+ in the specified destination availability domains.
+
+
+ :param boot_volume_replicas: The boot_volume_replicas of this CreateBootVolumeDetails.
+ :type: list[oci.core.models.BootVolumeReplicaDetails]
+ """
+ self._boot_volume_replicas = boot_volume_replicas
+
def __repr__(self):
return formatted_flat_dict(self)
diff --git a/src/oci/core/models/create_virtual_circuit_details.py b/src/oci/core/models/create_virtual_circuit_details.py
index b51d8365ad..2bd1a4af86 100644
--- a/src/oci/core/models/create_virtual_circuit_details.py
+++ b/src/oci/core/models/create_virtual_circuit_details.py
@@ -13,6 +13,22 @@ class CreateVirtualCircuitDetails(object):
CreateVirtualCircuitDetails model.
"""
+ #: A constant which can be used with the routing_policy property of a CreateVirtualCircuitDetails.
+ #: This constant has a value of "ORACLE_SERVICE_NETWORK"
+ ROUTING_POLICY_ORACLE_SERVICE_NETWORK = "ORACLE_SERVICE_NETWORK"
+
+ #: A constant which can be used with the routing_policy property of a CreateVirtualCircuitDetails.
+ #: This constant has a value of "REGIONAL"
+ ROUTING_POLICY_REGIONAL = "REGIONAL"
+
+ #: A constant which can be used with the routing_policy property of a CreateVirtualCircuitDetails.
+ #: This constant has a value of "MARKET_LEVEL"
+ ROUTING_POLICY_MARKET_LEVEL = "MARKET_LEVEL"
+
+ #: A constant which can be used with the routing_policy property of a CreateVirtualCircuitDetails.
+ #: This constant has a value of "GLOBAL"
+ ROUTING_POLICY_GLOBAL = "GLOBAL"
+
#: A constant which can be used with the type property of a CreateVirtualCircuitDetails.
#: This constant has a value of "PUBLIC"
TYPE_PUBLIC = "PUBLIC"
@@ -38,6 +54,11 @@ def __init__(self, **kwargs):
The value to assign to the cross_connect_mappings property of this CreateVirtualCircuitDetails.
:type cross_connect_mappings: list[oci.core.models.CrossConnectMapping]
+ :param routing_policy:
+ The value to assign to the routing_policy property of this CreateVirtualCircuitDetails.
+ Allowed values for items in this list are: "ORACLE_SERVICE_NETWORK", "REGIONAL", "MARKET_LEVEL", "GLOBAL"
+ :type routing_policy: list[str]
+
:param customer_bgp_asn:
The value to assign to the customer_bgp_asn property of this CreateVirtualCircuitDetails.
:type customer_bgp_asn: int
@@ -96,6 +117,7 @@ def __init__(self, **kwargs):
'bandwidth_shape_name': 'str',
'compartment_id': 'str',
'cross_connect_mappings': 'list[CrossConnectMapping]',
+ 'routing_policy': 'list[str]',
'customer_bgp_asn': 'int',
'customer_asn': 'int',
'defined_tags': 'dict(str, dict(str, object))',
@@ -115,6 +137,7 @@ def __init__(self, **kwargs):
'bandwidth_shape_name': 'bandwidthShapeName',
'compartment_id': 'compartmentId',
'cross_connect_mappings': 'crossConnectMappings',
+ 'routing_policy': 'routingPolicy',
'customer_bgp_asn': 'customerBgpAsn',
'customer_asn': 'customerAsn',
'defined_tags': 'definedTags',
@@ -133,6 +156,7 @@ def __init__(self, **kwargs):
self._bandwidth_shape_name = None
self._compartment_id = None
self._cross_connect_mappings = None
+ self._routing_policy = None
self._customer_bgp_asn = None
self._customer_asn = None
self._defined_tags = None
@@ -229,6 +253,51 @@ def cross_connect_mappings(self, cross_connect_mappings):
"""
self._cross_connect_mappings = cross_connect_mappings
+ @property
+ def routing_policy(self):
+ """
+ Gets the routing_policy of this CreateVirtualCircuitDetails.
+ The routing policy sets how routing information about the Oracle cloud is shared over a public virtual circuit.
+ Policies available are: `ORACLE_SERVICE_NETWORK`, `REGIONAL`, `MARKET_LEVEL`, and `GLOBAL`.
+ See `Route Filtering`__ for details.
+ By default, routing information is shared for all routes in the same market.
+
+ __ https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/routingonprem.htm#route_filtering
+
+ Allowed values for items in this list are: "ORACLE_SERVICE_NETWORK", "REGIONAL", "MARKET_LEVEL", "GLOBAL"
+
+
+ :return: The routing_policy of this CreateVirtualCircuitDetails.
+ :rtype: list[str]
+ """
+ return self._routing_policy
+
+ @routing_policy.setter
+ def routing_policy(self, routing_policy):
+ """
+ Sets the routing_policy of this CreateVirtualCircuitDetails.
+ The routing policy sets how routing information about the Oracle cloud is shared over a public virtual circuit.
+ Policies available are: `ORACLE_SERVICE_NETWORK`, `REGIONAL`, `MARKET_LEVEL`, and `GLOBAL`.
+ See `Route Filtering`__ for details.
+ By default, routing information is shared for all routes in the same market.
+
+ __ https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/routingonprem.htm#route_filtering
+
+
+ :param routing_policy: The routing_policy of this CreateVirtualCircuitDetails.
+ :type: list[str]
+ """
+ allowed_values = ["ORACLE_SERVICE_NETWORK", "REGIONAL", "MARKET_LEVEL", "GLOBAL"]
+
+ if routing_policy and routing_policy is not NONE_SENTINEL:
+ for value in routing_policy:
+ if not value_allowed_none_or_none_sentinel(value, allowed_values):
+ raise ValueError(
+ "Invalid value for `routing_policy`, must be None or one of {0}"
+ .format(allowed_values)
+ )
+ self._routing_policy = routing_policy
+
@property
def customer_bgp_asn(self):
"""
diff --git a/src/oci/core/models/create_volume_details.py b/src/oci/core/models/create_volume_details.py
index 49204011f6..dfca079fd4 100644
--- a/src/oci/core/models/create_volume_details.py
+++ b/src/oci/core/models/create_volume_details.py
@@ -70,6 +70,10 @@ def __init__(self, **kwargs):
The value to assign to the is_auto_tune_enabled property of this CreateVolumeDetails.
:type is_auto_tune_enabled: bool
+ :param block_volume_replicas:
+ The value to assign to the block_volume_replicas property of this CreateVolumeDetails.
+ :type block_volume_replicas: list[oci.core.models.BlockVolumeReplicaDetails]
+
"""
self.swagger_types = {
'availability_domain': 'str',
@@ -84,7 +88,8 @@ def __init__(self, **kwargs):
'size_in_mbs': 'int',
'source_details': 'VolumeSourceDetails',
'volume_backup_id': 'str',
- 'is_auto_tune_enabled': 'bool'
+ 'is_auto_tune_enabled': 'bool',
+ 'block_volume_replicas': 'list[BlockVolumeReplicaDetails]'
}
self.attribute_map = {
@@ -100,7 +105,8 @@ def __init__(self, **kwargs):
'size_in_mbs': 'sizeInMBs',
'source_details': 'sourceDetails',
'volume_backup_id': 'volumeBackupId',
- 'is_auto_tune_enabled': 'isAutoTuneEnabled'
+ 'is_auto_tune_enabled': 'isAutoTuneEnabled',
+ 'block_volume_replicas': 'blockVolumeReplicas'
}
self._availability_domain = None
@@ -116,6 +122,7 @@ def __init__(self, **kwargs):
self._source_details = None
self._volume_backup_id = None
self._is_auto_tune_enabled = None
+ self._block_volume_replicas = None
@property
def availability_domain(self):
@@ -485,6 +492,32 @@ def is_auto_tune_enabled(self, is_auto_tune_enabled):
"""
self._is_auto_tune_enabled = is_auto_tune_enabled
+ @property
+ def block_volume_replicas(self):
+ """
+ Gets the block_volume_replicas of this CreateVolumeDetails.
+ The list of block volume replicas to be enabled for this volume
+ in the specified destination availability domains.
+
+
+ :return: The block_volume_replicas of this CreateVolumeDetails.
+ :rtype: list[oci.core.models.BlockVolumeReplicaDetails]
+ """
+ return self._block_volume_replicas
+
+ @block_volume_replicas.setter
+ def block_volume_replicas(self, block_volume_replicas):
+ """
+ Sets the block_volume_replicas of this CreateVolumeDetails.
+ The list of block volume replicas to be enabled for this volume
+ in the specified destination availability domains.
+
+
+ :param block_volume_replicas: The block_volume_replicas of this CreateVolumeDetails.
+ :type: list[oci.core.models.BlockVolumeReplicaDetails]
+ """
+ self._block_volume_replicas = block_volume_replicas
+
def __repr__(self):
return formatted_flat_dict(self)
diff --git a/src/oci/core/models/dedicated_vm_host.py b/src/oci/core/models/dedicated_vm_host.py
index 8263fb0dc4..219e92a22d 100644
--- a/src/oci/core/models/dedicated_vm_host.py
+++ b/src/oci/core/models/dedicated_vm_host.py
@@ -93,6 +93,14 @@ def __init__(self, **kwargs):
The value to assign to the remaining_ocpus property of this DedicatedVmHost.
:type remaining_ocpus: float
+ :param total_memory_in_gbs:
+ The value to assign to the total_memory_in_gbs property of this DedicatedVmHost.
+ :type total_memory_in_gbs: float
+
+ :param remaining_memory_in_gbs:
+ The value to assign to the remaining_memory_in_gbs property of this DedicatedVmHost.
+ :type remaining_memory_in_gbs: float
+
"""
self.swagger_types = {
'availability_domain': 'str',
@@ -106,7 +114,9 @@ def __init__(self, **kwargs):
'lifecycle_state': 'str',
'time_created': 'datetime',
'total_ocpus': 'float',
- 'remaining_ocpus': 'float'
+ 'remaining_ocpus': 'float',
+ 'total_memory_in_gbs': 'float',
+ 'remaining_memory_in_gbs': 'float'
}
self.attribute_map = {
@@ -121,7 +131,9 @@ def __init__(self, **kwargs):
'lifecycle_state': 'lifecycleState',
'time_created': 'timeCreated',
'total_ocpus': 'totalOcpus',
- 'remaining_ocpus': 'remainingOcpus'
+ 'remaining_ocpus': 'remainingOcpus',
+ 'total_memory_in_gbs': 'totalMemoryInGBs',
+ 'remaining_memory_in_gbs': 'remainingMemoryInGBs'
}
self._availability_domain = None
@@ -136,6 +148,8 @@ def __init__(self, **kwargs):
self._time_created = None
self._total_ocpus = None
self._remaining_ocpus = None
+ self._total_memory_in_gbs = None
+ self._remaining_memory_in_gbs = None
@property
def availability_domain(self):
@@ -497,6 +511,54 @@ def remaining_ocpus(self, remaining_ocpus):
"""
self._remaining_ocpus = remaining_ocpus
+ @property
+ def total_memory_in_gbs(self):
+ """
+ Gets the total_memory_in_gbs of this DedicatedVmHost.
+ The total memory of the dedicated VM host, in GBs.
+
+
+ :return: The total_memory_in_gbs of this DedicatedVmHost.
+ :rtype: float
+ """
+ return self._total_memory_in_gbs
+
+ @total_memory_in_gbs.setter
+ def total_memory_in_gbs(self, total_memory_in_gbs):
+ """
+ Sets the total_memory_in_gbs of this DedicatedVmHost.
+ The total memory of the dedicated VM host, in GBs.
+
+
+ :param total_memory_in_gbs: The total_memory_in_gbs of this DedicatedVmHost.
+ :type: float
+ """
+ self._total_memory_in_gbs = total_memory_in_gbs
+
+ @property
+ def remaining_memory_in_gbs(self):
+ """
+ Gets the remaining_memory_in_gbs of this DedicatedVmHost.
+ The remaining memory of the dedicated VM host, in GBs.
+
+
+ :return: The remaining_memory_in_gbs of this DedicatedVmHost.
+ :rtype: float
+ """
+ return self._remaining_memory_in_gbs
+
+ @remaining_memory_in_gbs.setter
+ def remaining_memory_in_gbs(self, remaining_memory_in_gbs):
+ """
+ Sets the remaining_memory_in_gbs of this DedicatedVmHost.
+ The remaining memory of the dedicated VM host, in GBs.
+
+
+ :param remaining_memory_in_gbs: The remaining_memory_in_gbs of this DedicatedVmHost.
+ :type: float
+ """
+ self._remaining_memory_in_gbs = remaining_memory_in_gbs
+
def __repr__(self):
return formatted_flat_dict(self)
diff --git a/src/oci/core/models/dedicated_vm_host_summary.py b/src/oci/core/models/dedicated_vm_host_summary.py
index 3cda581c06..ac681203a2 100644
--- a/src/oci/core/models/dedicated_vm_host_summary.py
+++ b/src/oci/core/models/dedicated_vm_host_summary.py
@@ -84,6 +84,14 @@ def __init__(self, **kwargs):
The value to assign to the total_ocpus property of this DedicatedVmHostSummary.
:type total_ocpus: float
+ :param total_memory_in_gbs:
+ The value to assign to the total_memory_in_gbs property of this DedicatedVmHostSummary.
+ :type total_memory_in_gbs: float
+
+ :param remaining_memory_in_gbs:
+ The value to assign to the remaining_memory_in_gbs property of this DedicatedVmHostSummary.
+ :type remaining_memory_in_gbs: float
+
"""
self.swagger_types = {
'availability_domain': 'str',
@@ -95,7 +103,9 @@ def __init__(self, **kwargs):
'lifecycle_state': 'str',
'time_created': 'datetime',
'remaining_ocpus': 'float',
- 'total_ocpus': 'float'
+ 'total_ocpus': 'float',
+ 'total_memory_in_gbs': 'float',
+ 'remaining_memory_in_gbs': 'float'
}
self.attribute_map = {
@@ -108,7 +118,9 @@ def __init__(self, **kwargs):
'lifecycle_state': 'lifecycleState',
'time_created': 'timeCreated',
'remaining_ocpus': 'remainingOcpus',
- 'total_ocpus': 'totalOcpus'
+ 'total_ocpus': 'totalOcpus',
+ 'total_memory_in_gbs': 'totalMemoryInGBs',
+ 'remaining_memory_in_gbs': 'remainingMemoryInGBs'
}
self._availability_domain = None
@@ -121,6 +133,8 @@ def __init__(self, **kwargs):
self._time_created = None
self._remaining_ocpus = None
self._total_ocpus = None
+ self._total_memory_in_gbs = None
+ self._remaining_memory_in_gbs = None
@property
def availability_domain(self):
@@ -406,6 +420,54 @@ def total_ocpus(self, total_ocpus):
"""
self._total_ocpus = total_ocpus
+ @property
+ def total_memory_in_gbs(self):
+ """
+ Gets the total_memory_in_gbs of this DedicatedVmHostSummary.
+ The current total memory of the dedicated VM host, in GBs.
+
+
+ :return: The total_memory_in_gbs of this DedicatedVmHostSummary.
+ :rtype: float
+ """
+ return self._total_memory_in_gbs
+
+ @total_memory_in_gbs.setter
+ def total_memory_in_gbs(self, total_memory_in_gbs):
+ """
+ Sets the total_memory_in_gbs of this DedicatedVmHostSummary.
+ The current total memory of the dedicated VM host, in GBs.
+
+
+ :param total_memory_in_gbs: The total_memory_in_gbs of this DedicatedVmHostSummary.
+ :type: float
+ """
+ self._total_memory_in_gbs = total_memory_in_gbs
+
+ @property
+ def remaining_memory_in_gbs(self):
+ """
+ Gets the remaining_memory_in_gbs of this DedicatedVmHostSummary.
+ The current available memory of the dedicated VM host, in GBs.
+
+
+ :return: The remaining_memory_in_gbs of this DedicatedVmHostSummary.
+ :rtype: float
+ """
+ return self._remaining_memory_in_gbs
+
+ @remaining_memory_in_gbs.setter
+ def remaining_memory_in_gbs(self, remaining_memory_in_gbs):
+ """
+ Sets the remaining_memory_in_gbs of this DedicatedVmHostSummary.
+ The current available memory of the dedicated VM host, in GBs.
+
+
+ :param remaining_memory_in_gbs: The remaining_memory_in_gbs of this DedicatedVmHostSummary.
+ :type: float
+ """
+ self._remaining_memory_in_gbs = remaining_memory_in_gbs
+
def __repr__(self):
return formatted_flat_dict(self)
diff --git a/src/oci/core/models/update_boot_volume_details.py b/src/oci/core/models/update_boot_volume_details.py
index 8677dae5b9..92a6c7a82c 100644
--- a/src/oci/core/models/update_boot_volume_details.py
+++ b/src/oci/core/models/update_boot_volume_details.py
@@ -42,6 +42,10 @@ def __init__(self, **kwargs):
The value to assign to the is_auto_tune_enabled property of this UpdateBootVolumeDetails.
:type is_auto_tune_enabled: bool
+ :param boot_volume_replicas:
+ The value to assign to the boot_volume_replicas property of this UpdateBootVolumeDetails.
+ :type boot_volume_replicas: list[oci.core.models.BootVolumeReplicaDetails]
+
"""
self.swagger_types = {
'defined_tags': 'dict(str, dict(str, object))',
@@ -49,7 +53,8 @@ def __init__(self, **kwargs):
'freeform_tags': 'dict(str, str)',
'size_in_gbs': 'int',
'vpus_per_gb': 'int',
- 'is_auto_tune_enabled': 'bool'
+ 'is_auto_tune_enabled': 'bool',
+ 'boot_volume_replicas': 'list[BootVolumeReplicaDetails]'
}
self.attribute_map = {
@@ -58,7 +63,8 @@ def __init__(self, **kwargs):
'freeform_tags': 'freeformTags',
'size_in_gbs': 'sizeInGBs',
'vpus_per_gb': 'vpusPerGB',
- 'is_auto_tune_enabled': 'isAutoTuneEnabled'
+ 'is_auto_tune_enabled': 'isAutoTuneEnabled',
+ 'boot_volume_replicas': 'bootVolumeReplicas'
}
self._defined_tags = None
@@ -67,6 +73,7 @@ def __init__(self, **kwargs):
self._size_in_gbs = None
self._vpus_per_gb = None
self._is_auto_tune_enabled = None
+ self._boot_volume_replicas = None
@property
def defined_tags(self):
@@ -254,6 +261,32 @@ def is_auto_tune_enabled(self, is_auto_tune_enabled):
"""
self._is_auto_tune_enabled = is_auto_tune_enabled
+ @property
+ def boot_volume_replicas(self):
+ """
+ Gets the boot_volume_replicas of this UpdateBootVolumeDetails.
+ The list of boot volume replicas that this boot volume will be updated to have
+ in the specified destination availability domains.
+
+
+ :return: The boot_volume_replicas of this UpdateBootVolumeDetails.
+ :rtype: list[oci.core.models.BootVolumeReplicaDetails]
+ """
+ return self._boot_volume_replicas
+
+ @boot_volume_replicas.setter
+ def boot_volume_replicas(self, boot_volume_replicas):
+ """
+ Sets the boot_volume_replicas of this UpdateBootVolumeDetails.
+ The list of boot volume replicas that this boot volume will be updated to have
+ in the specified destination availability domains.
+
+
+ :param boot_volume_replicas: The boot_volume_replicas of this UpdateBootVolumeDetails.
+ :type: list[oci.core.models.BootVolumeReplicaDetails]
+ """
+ self._boot_volume_replicas = boot_volume_replicas
+
def __repr__(self):
return formatted_flat_dict(self)
diff --git a/src/oci/core/models/update_virtual_circuit_details.py b/src/oci/core/models/update_virtual_circuit_details.py
index 91fa0a4a60..520bbf8191 100644
--- a/src/oci/core/models/update_virtual_circuit_details.py
+++ b/src/oci/core/models/update_virtual_circuit_details.py
@@ -13,6 +13,22 @@ class UpdateVirtualCircuitDetails(object):
UpdateVirtualCircuitDetails model.
"""
+ #: A constant which can be used with the routing_policy property of a UpdateVirtualCircuitDetails.
+ #: This constant has a value of "ORACLE_SERVICE_NETWORK"
+ ROUTING_POLICY_ORACLE_SERVICE_NETWORK = "ORACLE_SERVICE_NETWORK"
+
+ #: A constant which can be used with the routing_policy property of a UpdateVirtualCircuitDetails.
+ #: This constant has a value of "REGIONAL"
+ ROUTING_POLICY_REGIONAL = "REGIONAL"
+
+ #: A constant which can be used with the routing_policy property of a UpdateVirtualCircuitDetails.
+ #: This constant has a value of "MARKET_LEVEL"
+ ROUTING_POLICY_MARKET_LEVEL = "MARKET_LEVEL"
+
+ #: A constant which can be used with the routing_policy property of a UpdateVirtualCircuitDetails.
+ #: This constant has a value of "GLOBAL"
+ ROUTING_POLICY_GLOBAL = "GLOBAL"
+
#: A constant which can be used with the provider_state property of a UpdateVirtualCircuitDetails.
#: This constant has a value of "ACTIVE"
PROVIDER_STATE_ACTIVE = "ACTIVE"
@@ -34,6 +50,11 @@ def __init__(self, **kwargs):
The value to assign to the cross_connect_mappings property of this UpdateVirtualCircuitDetails.
:type cross_connect_mappings: list[oci.core.models.CrossConnectMapping]
+ :param routing_policy:
+ The value to assign to the routing_policy property of this UpdateVirtualCircuitDetails.
+ Allowed values for items in this list are: "ORACLE_SERVICE_NETWORK", "REGIONAL", "MARKET_LEVEL", "GLOBAL"
+ :type routing_policy: list[str]
+
:param customer_bgp_asn:
The value to assign to the customer_bgp_asn property of this UpdateVirtualCircuitDetails.
:type customer_bgp_asn: int
@@ -75,6 +96,7 @@ def __init__(self, **kwargs):
self.swagger_types = {
'bandwidth_shape_name': 'str',
'cross_connect_mappings': 'list[CrossConnectMapping]',
+ 'routing_policy': 'list[str]',
'customer_bgp_asn': 'int',
'customer_asn': 'int',
'defined_tags': 'dict(str, dict(str, object))',
@@ -89,6 +111,7 @@ def __init__(self, **kwargs):
self.attribute_map = {
'bandwidth_shape_name': 'bandwidthShapeName',
'cross_connect_mappings': 'crossConnectMappings',
+ 'routing_policy': 'routingPolicy',
'customer_bgp_asn': 'customerBgpAsn',
'customer_asn': 'customerAsn',
'defined_tags': 'definedTags',
@@ -102,6 +125,7 @@ def __init__(self, **kwargs):
self._bandwidth_shape_name = None
self._cross_connect_mappings = None
+ self._routing_policy = None
self._customer_bgp_asn = None
self._customer_asn = None
self._defined_tags = None
@@ -176,6 +200,51 @@ def cross_connect_mappings(self, cross_connect_mappings):
"""
self._cross_connect_mappings = cross_connect_mappings
+ @property
+ def routing_policy(self):
+ """
+ Gets the routing_policy of this UpdateVirtualCircuitDetails.
+ The routing policy sets how routing information about the Oracle cloud is shared over a public virtual circuit.
+ Policies available are: `ORACLE_SERVICE_NETWORK`, `REGIONAL`, `MARKET_LEVEL`, and `GLOBAL`.
+ See `Route Filtering`__ for details.
+ By default, routing information is shared for all routes in the same market.
+
+ __ https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/routingonprem.htm#route_filtering
+
+ Allowed values for items in this list are: "ORACLE_SERVICE_NETWORK", "REGIONAL", "MARKET_LEVEL", "GLOBAL"
+
+
+ :return: The routing_policy of this UpdateVirtualCircuitDetails.
+ :rtype: list[str]
+ """
+ return self._routing_policy
+
+ @routing_policy.setter
+ def routing_policy(self, routing_policy):
+ """
+ Sets the routing_policy of this UpdateVirtualCircuitDetails.
+ The routing policy sets how routing information about the Oracle cloud is shared over a public virtual circuit.
+ Policies available are: `ORACLE_SERVICE_NETWORK`, `REGIONAL`, `MARKET_LEVEL`, and `GLOBAL`.
+ See `Route Filtering`__ for details.
+ By default, routing information is shared for all routes in the same market.
+
+ __ https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/routingonprem.htm#route_filtering
+
+
+ :param routing_policy: The routing_policy of this UpdateVirtualCircuitDetails.
+ :type: list[str]
+ """
+ allowed_values = ["ORACLE_SERVICE_NETWORK", "REGIONAL", "MARKET_LEVEL", "GLOBAL"]
+
+ if routing_policy and routing_policy is not NONE_SENTINEL:
+ for value in routing_policy:
+ if not value_allowed_none_or_none_sentinel(value, allowed_values):
+ raise ValueError(
+ "Invalid value for `routing_policy`, must be None or one of {0}"
+ .format(allowed_values)
+ )
+ self._routing_policy = routing_policy
+
@property
def customer_bgp_asn(self):
"""
diff --git a/src/oci/core/models/update_volume_details.py b/src/oci/core/models/update_volume_details.py
index a137cb7529..08e331302a 100644
--- a/src/oci/core/models/update_volume_details.py
+++ b/src/oci/core/models/update_volume_details.py
@@ -42,6 +42,10 @@ def __init__(self, **kwargs):
The value to assign to the is_auto_tune_enabled property of this UpdateVolumeDetails.
:type is_auto_tune_enabled: bool
+ :param block_volume_replicas:
+ The value to assign to the block_volume_replicas property of this UpdateVolumeDetails.
+ :type block_volume_replicas: list[oci.core.models.BlockVolumeReplicaDetails]
+
"""
self.swagger_types = {
'defined_tags': 'dict(str, dict(str, object))',
@@ -49,7 +53,8 @@ def __init__(self, **kwargs):
'freeform_tags': 'dict(str, str)',
'vpus_per_gb': 'int',
'size_in_gbs': 'int',
- 'is_auto_tune_enabled': 'bool'
+ 'is_auto_tune_enabled': 'bool',
+ 'block_volume_replicas': 'list[BlockVolumeReplicaDetails]'
}
self.attribute_map = {
@@ -58,7 +63,8 @@ def __init__(self, **kwargs):
'freeform_tags': 'freeformTags',
'vpus_per_gb': 'vpusPerGB',
'size_in_gbs': 'sizeInGBs',
- 'is_auto_tune_enabled': 'isAutoTuneEnabled'
+ 'is_auto_tune_enabled': 'isAutoTuneEnabled',
+ 'block_volume_replicas': 'blockVolumeReplicas'
}
self._defined_tags = None
@@ -67,6 +73,7 @@ def __init__(self, **kwargs):
self._vpus_per_gb = None
self._size_in_gbs = None
self._is_auto_tune_enabled = None
+ self._block_volume_replicas = None
@property
def defined_tags(self):
@@ -258,6 +265,32 @@ def is_auto_tune_enabled(self, is_auto_tune_enabled):
"""
self._is_auto_tune_enabled = is_auto_tune_enabled
+ @property
+ def block_volume_replicas(self):
+ """
+ Gets the block_volume_replicas of this UpdateVolumeDetails.
+ The list of block volume replicas that this volume will be updated to have
+ in the specified destination availability domains.
+
+
+ :return: The block_volume_replicas of this UpdateVolumeDetails.
+ :rtype: list[oci.core.models.BlockVolumeReplicaDetails]
+ """
+ return self._block_volume_replicas
+
+ @block_volume_replicas.setter
+ def block_volume_replicas(self, block_volume_replicas):
+ """
+ Sets the block_volume_replicas of this UpdateVolumeDetails.
+ The list of block volume replicas that this volume will be updated to have
+ in the specified destination availability domains.
+
+
+ :param block_volume_replicas: The block_volume_replicas of this UpdateVolumeDetails.
+ :type: list[oci.core.models.BlockVolumeReplicaDetails]
+ """
+ self._block_volume_replicas = block_volume_replicas
+
def __repr__(self):
return formatted_flat_dict(self)
diff --git a/src/oci/core/models/virtual_circuit.py b/src/oci/core/models/virtual_circuit.py
index 64567c22e4..8902faff3e 100644
--- a/src/oci/core/models/virtual_circuit.py
+++ b/src/oci/core/models/virtual_circuit.py
@@ -54,6 +54,22 @@ class VirtualCircuit(object):
#: This constant has a value of "DOWN"
BGP_SESSION_STATE_DOWN = "DOWN"
+ #: A constant which can be used with the routing_policy property of a VirtualCircuit.
+ #: This constant has a value of "ORACLE_SERVICE_NETWORK"
+ ROUTING_POLICY_ORACLE_SERVICE_NETWORK = "ORACLE_SERVICE_NETWORK"
+
+ #: A constant which can be used with the routing_policy property of a VirtualCircuit.
+ #: This constant has a value of "REGIONAL"
+ ROUTING_POLICY_REGIONAL = "REGIONAL"
+
+ #: A constant which can be used with the routing_policy property of a VirtualCircuit.
+ #: This constant has a value of "MARKET_LEVEL"
+ ROUTING_POLICY_MARKET_LEVEL = "MARKET_LEVEL"
+
+ #: A constant which can be used with the routing_policy property of a VirtualCircuit.
+ #: This constant has a value of "GLOBAL"
+ ROUTING_POLICY_GLOBAL = "GLOBAL"
+
#: A constant which can be used with the lifecycle_state property of a VirtualCircuit.
#: This constant has a value of "PENDING_PROVIDER"
LIFECYCLE_STATE_PENDING_PROVIDER = "PENDING_PROVIDER"
@@ -143,6 +159,12 @@ def __init__(self, **kwargs):
The value to assign to the cross_connect_mappings property of this VirtualCircuit.
:type cross_connect_mappings: list[oci.core.models.CrossConnectMapping]
+ :param routing_policy:
+ The value to assign to the routing_policy property of this VirtualCircuit.
+ Allowed values for items in this list are: "ORACLE_SERVICE_NETWORK", "REGIONAL", "MARKET_LEVEL", "GLOBAL", 'UNKNOWN_ENUM_VALUE'.
+ Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
+ :type routing_policy: list[str]
+
:param customer_bgp_asn:
The value to assign to the customer_bgp_asn property of this VirtualCircuit.
:type customer_bgp_asn: int
@@ -238,6 +260,7 @@ def __init__(self, **kwargs):
'bgp_session_state': 'str',
'compartment_id': 'str',
'cross_connect_mappings': 'list[CrossConnectMapping]',
+ 'routing_policy': 'list[str]',
'customer_bgp_asn': 'int',
'customer_asn': 'int',
'defined_tags': 'dict(str, dict(str, object))',
@@ -266,6 +289,7 @@ def __init__(self, **kwargs):
'bgp_session_state': 'bgpSessionState',
'compartment_id': 'compartmentId',
'cross_connect_mappings': 'crossConnectMappings',
+ 'routing_policy': 'routingPolicy',
'customer_bgp_asn': 'customerBgpAsn',
'customer_asn': 'customerAsn',
'defined_tags': 'definedTags',
@@ -293,6 +317,7 @@ def __init__(self, **kwargs):
self._bgp_session_state = None
self._compartment_id = None
self._cross_connect_mappings = None
+ self._routing_policy = None
self._customer_bgp_asn = None
self._customer_asn = None
self._defined_tags = None
@@ -460,6 +485,46 @@ def cross_connect_mappings(self, cross_connect_mappings):
"""
self._cross_connect_mappings = cross_connect_mappings
+ @property
+ def routing_policy(self):
+ """
+ Gets the routing_policy of this VirtualCircuit.
+ The routing policy sets how routing information about the Oracle cloud is shared over a public virtual circuit.
+ Policies available are: `ORACLE_SERVICE_NETWORK`, `REGIONAL`, `MARKET_LEVEL`, and `GLOBAL`.
+ See `Route Filtering`__ for details.
+ By default, routing information is shared for all routes in the same market.
+
+ __ https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/routingonprem.htm#route_filtering
+
+ Allowed values for items in this list are: "ORACLE_SERVICE_NETWORK", "REGIONAL", "MARKET_LEVEL", "GLOBAL", 'UNKNOWN_ENUM_VALUE'.
+ Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
+
+
+ :return: The routing_policy of this VirtualCircuit.
+ :rtype: list[str]
+ """
+ return self._routing_policy
+
+ @routing_policy.setter
+ def routing_policy(self, routing_policy):
+ """
+ Sets the routing_policy of this VirtualCircuit.
+ The routing policy sets how routing information about the Oracle cloud is shared over a public virtual circuit.
+ Policies available are: `ORACLE_SERVICE_NETWORK`, `REGIONAL`, `MARKET_LEVEL`, and `GLOBAL`.
+ See `Route Filtering`__ for details.
+ By default, routing information is shared for all routes in the same market.
+
+ __ https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/routingonprem.htm#route_filtering
+
+
+ :param routing_policy: The routing_policy of this VirtualCircuit.
+ :type: list[str]
+ """
+ allowed_values = ["ORACLE_SERVICE_NETWORK", "REGIONAL", "MARKET_LEVEL", "GLOBAL"]
+ if routing_policy:
+ routing_policy[:] = ['UNKNOWN_ENUM_VALUE' if not value_allowed_none_or_none_sentinel(x, allowed_values) else x for x in routing_policy]
+ self._routing_policy = routing_policy
+
@property
def customer_bgp_asn(self):
"""
diff --git a/src/oci/core/models/volume.py b/src/oci/core/models/volume.py
index 2a644a0132..944cedc063 100644
--- a/src/oci/core/models/volume.py
+++ b/src/oci/core/models/volume.py
@@ -128,6 +128,10 @@ def __init__(self, **kwargs):
The value to assign to the auto_tuned_vpus_per_gb property of this Volume.
:type auto_tuned_vpus_per_gb: int
+ :param block_volume_replicas:
+ The value to assign to the block_volume_replicas property of this Volume.
+ :type block_volume_replicas: list[oci.core.models.BlockVolumeReplicaInfo]
+
"""
self.swagger_types = {
'availability_domain': 'str',
@@ -147,7 +151,8 @@ def __init__(self, **kwargs):
'time_created': 'datetime',
'volume_group_id': 'str',
'is_auto_tune_enabled': 'bool',
- 'auto_tuned_vpus_per_gb': 'int'
+ 'auto_tuned_vpus_per_gb': 'int',
+ 'block_volume_replicas': 'list[BlockVolumeReplicaInfo]'
}
self.attribute_map = {
@@ -168,7 +173,8 @@ def __init__(self, **kwargs):
'time_created': 'timeCreated',
'volume_group_id': 'volumeGroupId',
'is_auto_tune_enabled': 'isAutoTuneEnabled',
- 'auto_tuned_vpus_per_gb': 'autoTunedVpusPerGB'
+ 'auto_tuned_vpus_per_gb': 'autoTunedVpusPerGB',
+ 'block_volume_replicas': 'blockVolumeReplicas'
}
self._availability_domain = None
@@ -189,6 +195,7 @@ def __init__(self, **kwargs):
self._volume_group_id = None
self._is_auto_tune_enabled = None
self._auto_tuned_vpus_per_gb = None
+ self._block_volume_replicas = None
@property
def availability_domain(self):
@@ -682,6 +689,30 @@ def auto_tuned_vpus_per_gb(self, auto_tuned_vpus_per_gb):
"""
self._auto_tuned_vpus_per_gb = auto_tuned_vpus_per_gb
+ @property
+ def block_volume_replicas(self):
+ """
+ Gets the block_volume_replicas of this Volume.
+ The list of block volume replicas of this volume.
+
+
+ :return: The block_volume_replicas of this Volume.
+ :rtype: list[oci.core.models.BlockVolumeReplicaInfo]
+ """
+ return self._block_volume_replicas
+
+ @block_volume_replicas.setter
+ def block_volume_replicas(self, block_volume_replicas):
+ """
+ Sets the block_volume_replicas of this Volume.
+ The list of block volume replicas of this volume.
+
+
+ :param block_volume_replicas: The block_volume_replicas of this Volume.
+ :type: list[oci.core.models.BlockVolumeReplicaInfo]
+ """
+ self._block_volume_replicas = block_volume_replicas
+
def __repr__(self):
return formatted_flat_dict(self)
diff --git a/src/oci/core/models/volume_source_details.py b/src/oci/core/models/volume_source_details.py
index f5c9b07c86..49b97ab4be 100644
--- a/src/oci/core/models/volume_source_details.py
+++ b/src/oci/core/models/volume_source_details.py
@@ -20,6 +20,7 @@ def __init__(self, **kwargs):
Initializes a new VolumeSourceDetails object with values from keyword arguments. This class has the following subclasses and if you are using this class as input
to a service operations then you should favor using a subclass over the base class:
+ * :class:`~oci.core.models.VolumeSourceFromBlockVolumeReplicaDetails`
* :class:`~oci.core.models.VolumeSourceFromVolumeDetails`
* :class:`~oci.core.models.VolumeSourceFromVolumeBackupDetails`
@@ -48,6 +49,9 @@ def get_subtype(object_dictionary):
"""
type = object_dictionary['type']
+ if type == 'blockVolumeReplica':
+ return 'VolumeSourceFromBlockVolumeReplicaDetails'
+
if type == 'volume':
return 'VolumeSourceFromVolumeDetails'
diff --git a/src/oci/core/models/volume_source_from_block_volume_replica_details.py b/src/oci/core/models/volume_source_from_block_volume_replica_details.py
new file mode 100644
index 0000000000..93600e72d6
--- /dev/null
+++ b/src/oci/core/models/volume_source_from_block_volume_replica_details.py
@@ -0,0 +1,81 @@
+# coding: utf-8
+# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
+# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+
+from .volume_source_details import VolumeSourceDetails
+from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401
+from oci.decorators import init_model_state_from_kwargs
+
+
+@init_model_state_from_kwargs
+class VolumeSourceFromBlockVolumeReplicaDetails(VolumeSourceDetails):
+ """
+ Specifies the source block volume replica which the block volume will be created from.
+ The block volume replica shoulbe be in the same availability domain as the block volume.
+ Only one volume can be created from a replica at the same time.
+ """
+
+ def __init__(self, **kwargs):
+ """
+ Initializes a new VolumeSourceFromBlockVolumeReplicaDetails object with values from keyword arguments. The default value of the :py:attr:`~oci.core.models.VolumeSourceFromBlockVolumeReplicaDetails.type` attribute
+ of this class is ``blockVolumeReplica`` and it should not be changed.
+ The following keyword arguments are supported (corresponding to the getters/setters of this class):
+
+ :param type:
+ The value to assign to the type property of this VolumeSourceFromBlockVolumeReplicaDetails.
+ :type type: str
+
+ :param id:
+ The value to assign to the id property of this VolumeSourceFromBlockVolumeReplicaDetails.
+ :type id: str
+
+ """
+ self.swagger_types = {
+ 'type': 'str',
+ 'id': 'str'
+ }
+
+ self.attribute_map = {
+ 'type': 'type',
+ 'id': 'id'
+ }
+
+ self._type = None
+ self._id = None
+ self._type = 'blockVolumeReplica'
+
+ @property
+ def id(self):
+ """
+ **[Required]** Gets the id of this VolumeSourceFromBlockVolumeReplicaDetails.
+ The OCID of the block volume replica.
+
+
+ :return: The id of this VolumeSourceFromBlockVolumeReplicaDetails.
+ :rtype: str
+ """
+ return self._id
+
+ @id.setter
+ def id(self, id):
+ """
+ Sets the id of this VolumeSourceFromBlockVolumeReplicaDetails.
+ The OCID of the block volume replica.
+
+
+ :param id: The id of this VolumeSourceFromBlockVolumeReplicaDetails.
+ :type: str
+ """
+ self._id = id
+
+ def __repr__(self):
+ return formatted_flat_dict(self)
+
+ def __eq__(self, other):
+ if other is None:
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not self == other
diff --git a/src/oci/data_science/data_science_client.py b/src/oci/data_science/data_science_client.py
index b7b0f09135..0970689567 100644
--- a/src/oci/data_science/data_science_client.py
+++ b/src/oci/data_science/data_science_client.py
@@ -12,6 +12,7 @@
from oci.config import get_config_value_or_default, validate_config
from oci.signer import Signer
from oci.util import Sentinel, get_signer_from_authentication_type, AUTHENTICATION_TYPE_FIELD_NAME
+from oci.util import back_up_body_calculate_stream_content_length, is_content_length_calculable_by_req_util
from .models import data_science_type_mapping
missing = Sentinel("Missing")
@@ -911,6 +912,13 @@ def create_model_artifact(self, model_id, model_artifact, **kwargs):
is also available. The specifics of the default retry strategy are described `here `__.
To have this operation explicitly not perform any retries, pass an instance of :py:class:`~oci.retry.NoneRetryStrategy`.
+ :param int buffer_limit: (optional)
+ A buffer limit for the stream to be buffered. buffer_limit is used to set the buffer size capacity. Streams will be read until the size of the buffer reaches the buffer_limit.
+ If the stream size is greater than the buffer_limit, a BufferError exception will be thrown.
+
+ The buffer_limit parameter is used when the stream object does not have a `seek`, `tell`, or `fileno` property for the Python Request library to calculate out the content length.
+ If buffer_limit is not passed, then the buffer_limit will be defaulted to 100MB.
+ Large streams can cause the process to freeze, consider passing in content-length for large streams instead.
:return: A :class:`~oci.response.Response` object with data of type None
:rtype: :class:`~oci.response.Response`
@@ -924,6 +932,7 @@ def create_model_artifact(self, model_id, model_artifact, **kwargs):
# Don't accept unknown kwargs
expected_kwargs = [
"retry_strategy",
+ "buffer_limit",
"content_length",
"opc_request_id",
"opc_retry_token",
@@ -968,6 +977,12 @@ def create_model_artifact(self, model_id, model_artifact, **kwargs):
if requests.utils.super_len(model_artifact) == 0:
header_params['Content-Length'] = '0'
+ # If content length is not given and stream object have no 'fileno' and is not a string or bytes, try to calculate content length
+ elif 'Content-Length' not in header_params and not is_content_length_calculable_by_req_util(model_artifact):
+ calculated_obj = back_up_body_calculate_stream_content_length(model_artifact, kwargs.get("buffer_limit"))
+ header_params['Content-Length'] = calculated_obj["content_length"]
+ model_artifact = calculated_obj["byte_content"]
+
retry_strategy = self.retry_strategy
if kwargs.get('retry_strategy'):
retry_strategy = kwargs.get('retry_strategy')
diff --git a/src/oci/database/database_client.py b/src/oci/database/database_client.py
index 93ad333747..fdf455cf39 100644
--- a/src/oci/database/database_client.py
+++ b/src/oci/database/database_client.py
@@ -12537,7 +12537,7 @@ def list_database_software_images(self, compartment_id, **kwargs):
:param str image_shape_family: (optional)
A filter to return only resources that match the given image shape family exactly.
- Allowed values are: "VM_BM_SHAPE", "EXADATA_SHAPE"
+ Allowed values are: "VM_BM_SHAPE", "EXADATA_SHAPE", "EXACC_SHAPE"
:param bool is_upgrade_supported: (optional)
If provided, filters the results to the set of database versions which are supported for Upgrade.
@@ -12606,7 +12606,7 @@ def list_database_software_images(self, compartment_id, **kwargs):
)
if 'image_shape_family' in kwargs:
- image_shape_family_allowed_values = ["VM_BM_SHAPE", "EXADATA_SHAPE"]
+ image_shape_family_allowed_values = ["VM_BM_SHAPE", "EXADATA_SHAPE", "EXACC_SHAPE"]
if kwargs['image_shape_family'] not in image_shape_family_allowed_values:
raise ValueError(
"Invalid value for `image_shape_family`, must be one of {0}".format(image_shape_family_allowed_values)
diff --git a/src/oci/database/models/create_database_software_image_details.py b/src/oci/database/models/create_database_software_image_details.py
index 90c45831be..3fc1d61f64 100644
--- a/src/oci/database/models/create_database_software_image_details.py
+++ b/src/oci/database/models/create_database_software_image_details.py
@@ -23,6 +23,10 @@ class CreateDatabaseSoftwareImageDetails(object):
#: This constant has a value of "EXADATA_SHAPE"
IMAGE_SHAPE_FAMILY_EXADATA_SHAPE = "EXADATA_SHAPE"
+ #: A constant which can be used with the image_shape_family property of a CreateDatabaseSoftwareImageDetails.
+ #: This constant has a value of "EXACC_SHAPE"
+ IMAGE_SHAPE_FAMILY_EXACC_SHAPE = "EXACC_SHAPE"
+
#: A constant which can be used with the image_type property of a CreateDatabaseSoftwareImageDetails.
#: This constant has a value of "GRID_IMAGE"
IMAGE_TYPE_GRID_IMAGE = "GRID_IMAGE"
@@ -50,7 +54,7 @@ def __init__(self, **kwargs):
:param image_shape_family:
The value to assign to the image_shape_family property of this CreateDatabaseSoftwareImageDetails.
- Allowed values for this property are: "VM_BM_SHAPE", "EXADATA_SHAPE"
+ Allowed values for this property are: "VM_BM_SHAPE", "EXADATA_SHAPE", "EXACC_SHAPE"
:type image_shape_family: str
:param image_type:
@@ -198,7 +202,7 @@ def image_shape_family(self):
Gets the image_shape_family of this CreateDatabaseSoftwareImageDetails.
To what shape the image is meant for.
- Allowed values for this property are: "VM_BM_SHAPE", "EXADATA_SHAPE"
+ Allowed values for this property are: "VM_BM_SHAPE", "EXADATA_SHAPE", "EXACC_SHAPE"
:return: The image_shape_family of this CreateDatabaseSoftwareImageDetails.
@@ -216,7 +220,7 @@ def image_shape_family(self, image_shape_family):
:param image_shape_family: The image_shape_family of this CreateDatabaseSoftwareImageDetails.
:type: str
"""
- allowed_values = ["VM_BM_SHAPE", "EXADATA_SHAPE"]
+ allowed_values = ["VM_BM_SHAPE", "EXADATA_SHAPE", "EXACC_SHAPE"]
if not value_allowed_none_or_none_sentinel(image_shape_family, allowed_values):
raise ValueError(
"Invalid value for `image_shape_family`, must be None or one of {0}"
diff --git a/src/oci/database/models/database_software_image.py b/src/oci/database/models/database_software_image.py
index c4164314be..8184eaa070 100644
--- a/src/oci/database/models/database_software_image.py
+++ b/src/oci/database/models/database_software_image.py
@@ -61,6 +61,10 @@ class DatabaseSoftwareImage(object):
#: This constant has a value of "EXADATA_SHAPE"
IMAGE_SHAPE_FAMILY_EXADATA_SHAPE = "EXADATA_SHAPE"
+ #: A constant which can be used with the image_shape_family property of a DatabaseSoftwareImage.
+ #: This constant has a value of "EXACC_SHAPE"
+ IMAGE_SHAPE_FAMILY_EXACC_SHAPE = "EXACC_SHAPE"
+
def __init__(self, **kwargs):
"""
Initializes a new DatabaseSoftwareImage object with values from keyword arguments.
@@ -104,7 +108,7 @@ def __init__(self, **kwargs):
:param image_shape_family:
The value to assign to the image_shape_family property of this DatabaseSoftwareImage.
- Allowed values for this property are: "VM_BM_SHAPE", "EXADATA_SHAPE", 'UNKNOWN_ENUM_VALUE'.
+ Allowed values for this property are: "VM_BM_SHAPE", "EXADATA_SHAPE", "EXACC_SHAPE", 'UNKNOWN_ENUM_VALUE'.
Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
:type image_shape_family: str
@@ -417,7 +421,7 @@ def image_shape_family(self):
**[Required]** Gets the image_shape_family of this DatabaseSoftwareImage.
To what shape the image is meant for.
- Allowed values for this property are: "VM_BM_SHAPE", "EXADATA_SHAPE", 'UNKNOWN_ENUM_VALUE'.
+ Allowed values for this property are: "VM_BM_SHAPE", "EXADATA_SHAPE", "EXACC_SHAPE", 'UNKNOWN_ENUM_VALUE'.
Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
@@ -436,7 +440,7 @@ def image_shape_family(self, image_shape_family):
:param image_shape_family: The image_shape_family of this DatabaseSoftwareImage.
:type: str
"""
- allowed_values = ["VM_BM_SHAPE", "EXADATA_SHAPE"]
+ allowed_values = ["VM_BM_SHAPE", "EXADATA_SHAPE", "EXACC_SHAPE"]
if not value_allowed_none_or_none_sentinel(image_shape_family, allowed_values):
image_shape_family = 'UNKNOWN_ENUM_VALUE'
self._image_shape_family = image_shape_family
diff --git a/src/oci/database/models/database_software_image_summary.py b/src/oci/database/models/database_software_image_summary.py
index 65553e632e..b4d1b6f2f9 100644
--- a/src/oci/database/models/database_software_image_summary.py
+++ b/src/oci/database/models/database_software_image_summary.py
@@ -70,6 +70,10 @@ class DatabaseSoftwareImageSummary(object):
#: This constant has a value of "EXADATA_SHAPE"
IMAGE_SHAPE_FAMILY_EXADATA_SHAPE = "EXADATA_SHAPE"
+ #: A constant which can be used with the image_shape_family property of a DatabaseSoftwareImageSummary.
+ #: This constant has a value of "EXACC_SHAPE"
+ IMAGE_SHAPE_FAMILY_EXACC_SHAPE = "EXACC_SHAPE"
+
def __init__(self, **kwargs):
"""
Initializes a new DatabaseSoftwareImageSummary object with values from keyword arguments.
@@ -113,7 +117,7 @@ def __init__(self, **kwargs):
:param image_shape_family:
The value to assign to the image_shape_family property of this DatabaseSoftwareImageSummary.
- Allowed values for this property are: "VM_BM_SHAPE", "EXADATA_SHAPE", 'UNKNOWN_ENUM_VALUE'.
+ Allowed values for this property are: "VM_BM_SHAPE", "EXADATA_SHAPE", "EXACC_SHAPE", 'UNKNOWN_ENUM_VALUE'.
Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
:type image_shape_family: str
@@ -426,7 +430,7 @@ def image_shape_family(self):
**[Required]** Gets the image_shape_family of this DatabaseSoftwareImageSummary.
To what shape the image is meant for.
- Allowed values for this property are: "VM_BM_SHAPE", "EXADATA_SHAPE", 'UNKNOWN_ENUM_VALUE'.
+ Allowed values for this property are: "VM_BM_SHAPE", "EXADATA_SHAPE", "EXACC_SHAPE", 'UNKNOWN_ENUM_VALUE'.
Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
@@ -445,7 +449,7 @@ def image_shape_family(self, image_shape_family):
:param image_shape_family: The image_shape_family of this DatabaseSoftwareImageSummary.
:type: str
"""
- allowed_values = ["VM_BM_SHAPE", "EXADATA_SHAPE"]
+ allowed_values = ["VM_BM_SHAPE", "EXADATA_SHAPE", "EXACC_SHAPE"]
if not value_allowed_none_or_none_sentinel(image_shape_family, allowed_values):
image_shape_family = 'UNKNOWN_ENUM_VALUE'
self._image_shape_family = image_shape_family
diff --git a/src/oci/functions/functions_invoke_client.py b/src/oci/functions/functions_invoke_client.py
index 223b89eee1..b39536e650 100644
--- a/src/oci/functions/functions_invoke_client.py
+++ b/src/oci/functions/functions_invoke_client.py
@@ -12,6 +12,7 @@
from oci.config import get_config_value_or_default, validate_config
from oci.signer import Signer
from oci.util import Sentinel, get_signer_from_authentication_type, AUTHENTICATION_TYPE_FIELD_NAME
+from oci.util import back_up_body_calculate_stream_content_length, is_content_length_calculable_by_req_util
from .models import functions_type_mapping
missing = Sentinel("Missing")
@@ -121,6 +122,13 @@ def invoke_function(self, function_id, **kwargs):
is also available. The specifics of the default retry strategy are described `here `__.
To have this operation explicitly not perform any retries, pass an instance of :py:class:`~oci.retry.NoneRetryStrategy`.
+ :param int buffer_limit: (optional)
+ A buffer limit for the stream to be buffered. buffer_limit is used to set the buffer size capacity. Streams will be read until the size of the buffer reaches the buffer_limit.
+ If the stream size is greater than the buffer_limit, a BufferError exception will be thrown.
+
+ The buffer_limit parameter is used when the stream object does not have a `seek`, `tell`, or `fileno` property for the Python Request library to calculate out the content length.
+ If buffer_limit is not passed, then the buffer_limit will be defaulted to 100MB.
+ Large streams can cause the process to freeze, consider passing in content-length for large streams instead.
:return: A :class:`~oci.response.Response` object with data of type stream
:rtype: :class:`~oci.response.Response`
@@ -134,6 +142,7 @@ def invoke_function(self, function_id, **kwargs):
# Don't accept unknown kwargs
expected_kwargs = [
"retry_strategy",
+ "buffer_limit",
"invoke_function_body",
"fn_intent",
"fn_invoke_type",
@@ -177,6 +186,12 @@ def invoke_function(self, function_id, **kwargs):
if requests.utils.super_len(invoke_function_body) == 0:
header_params['Content-Length'] = '0'
+ # If content length is not given and stream object have no 'fileno' and is not a string or bytes, try to calculate content length
+ elif 'Content-Length' not in header_params and not is_content_length_calculable_by_req_util(invoke_function_body):
+ calculated_obj = back_up_body_calculate_stream_content_length(invoke_function_body, kwargs.get("buffer_limit"))
+ header_params['Content-Length'] = calculated_obj["content_length"]
+ invoke_function_body = calculated_obj["byte_content"]
+
retry_strategy = self.retry_strategy
if kwargs.get('retry_strategy'):
retry_strategy = kwargs.get('retry_strategy')
diff --git a/src/oci/key_management/kms_management_client.py b/src/oci/key_management/kms_management_client.py
index 065200b767..096585b13d 100644
--- a/src/oci/key_management/kms_management_client.py
+++ b/src/oci/key_management/kms_management_client.py
@@ -12,6 +12,7 @@
from oci.config import get_config_value_or_default, validate_config
from oci.signer import Signer
from oci.util import Sentinel, get_signer_from_authentication_type, AUTHENTICATION_TYPE_FIELD_NAME
+from oci.util import back_up_body_calculate_stream_content_length, is_content_length_calculable_by_req_util
from .models import key_management_type_mapping
missing = Sentinel("Missing")
@@ -1742,6 +1743,13 @@ def restore_key_from_file(self, restore_key_from_file_details, **kwargs):
is also available. The specifics of the default retry strategy are described `here `__.
To have this operation explicitly not perform any retries, pass an instance of :py:class:`~oci.retry.NoneRetryStrategy`.
+ :param int buffer_limit: (optional)
+ A buffer limit for the stream to be buffered. buffer_limit is used to set the buffer size capacity. Streams will be read until the size of the buffer reaches the buffer_limit.
+ If the stream size is greater than the buffer_limit, a BufferError exception will be thrown.
+
+ The buffer_limit parameter is used when the stream object does not have a `seek`, `tell`, or `fileno` property for the Python Request library to calculate out the content length.
+ If buffer_limit is not passed, then the buffer_limit will be defaulted to 100MB.
+ Large streams can cause the process to freeze, consider passing in content-length for large streams instead.
:return: A :class:`~oci.response.Response` object with data of type :class:`~oci.key_management.models.Key`
:rtype: :class:`~oci.response.Response`
@@ -1755,6 +1763,7 @@ def restore_key_from_file(self, restore_key_from_file_details, **kwargs):
# Don't accept unknown kwargs
expected_kwargs = [
"retry_strategy",
+ "buffer_limit",
"content_length",
"if_match",
"content_md5",
@@ -1791,6 +1800,12 @@ def restore_key_from_file(self, restore_key_from_file_details, **kwargs):
if requests.utils.super_len(restore_key_from_file_details) == 0:
header_params['Content-Length'] = '0'
+ # If content length is not given and stream object have no 'fileno' and is not a string or bytes, try to calculate content length
+ elif 'Content-Length' not in header_params and not is_content_length_calculable_by_req_util(restore_key_from_file_details):
+ calculated_obj = back_up_body_calculate_stream_content_length(restore_key_from_file_details, kwargs.get("buffer_limit"))
+ header_params['Content-Length'] = calculated_obj["content_length"]
+ restore_key_from_file_details = calculated_obj["byte_content"]
+
retry_strategy = self.retry_strategy
if kwargs.get('retry_strategy'):
retry_strategy = kwargs.get('retry_strategy')
diff --git a/src/oci/key_management/kms_vault_client.py b/src/oci/key_management/kms_vault_client.py
index e3818f112d..02044f83d1 100644
--- a/src/oci/key_management/kms_vault_client.py
+++ b/src/oci/key_management/kms_vault_client.py
@@ -12,6 +12,7 @@
from oci.config import get_config_value_or_default, validate_config
from oci.signer import Signer
from oci.util import Sentinel, get_signer_from_authentication_type, AUTHENTICATION_TYPE_FIELD_NAME
+from oci.util import back_up_body_calculate_stream_content_length, is_content_length_calculable_by_req_util
from .models import key_management_type_mapping
missing = Sentinel("Missing")
@@ -1190,6 +1191,13 @@ def restore_vault_from_file(self, compartment_id, restore_vault_from_file_detail
is also available. The specifics of the default retry strategy are described `here `__.
To have this operation explicitly not perform any retries, pass an instance of :py:class:`~oci.retry.NoneRetryStrategy`.
+ :param int buffer_limit: (optional)
+ A buffer limit for the stream to be buffered. buffer_limit is used to set the buffer size capacity. Streams will be read until the size of the buffer reaches the buffer_limit.
+ If the stream size is greater than the buffer_limit, a BufferError exception will be thrown.
+
+ The buffer_limit parameter is used when the stream object does not have a `seek`, `tell`, or `fileno` property for the Python Request library to calculate out the content length.
+ If buffer_limit is not passed, then the buffer_limit will be defaulted to 100MB.
+ Large streams can cause the process to freeze, consider passing in content-length for large streams instead.
:return: A :class:`~oci.response.Response` object with data of type :class:`~oci.key_management.models.Vault`
:rtype: :class:`~oci.response.Response`
@@ -1203,6 +1211,7 @@ def restore_vault_from_file(self, compartment_id, restore_vault_from_file_detail
# Don't accept unknown kwargs
expected_kwargs = [
"retry_strategy",
+ "buffer_limit",
"content_length",
"if_match",
"content_md5",
@@ -1244,6 +1253,12 @@ def restore_vault_from_file(self, compartment_id, restore_vault_from_file_detail
if requests.utils.super_len(restore_vault_from_file_details) == 0:
header_params['Content-Length'] = '0'
+ # If content length is not given and stream object have no 'fileno' and is not a string or bytes, try to calculate content length
+ elif 'Content-Length' not in header_params and not is_content_length_calculable_by_req_util(restore_vault_from_file_details):
+ calculated_obj = back_up_body_calculate_stream_content_length(restore_vault_from_file_details, kwargs.get("buffer_limit"))
+ header_params['Content-Length'] = calculated_obj["content_length"]
+ restore_vault_from_file_details = calculated_obj["byte_content"]
+
retry_strategy = self.retry_strategy
if kwargs.get('retry_strategy'):
retry_strategy = kwargs.get('retry_strategy')
diff --git a/src/oci/log_analytics/log_analytics_client.py b/src/oci/log_analytics/log_analytics_client.py
index 6bfb107993..f7ef19be00 100644
--- a/src/oci/log_analytics/log_analytics_client.py
+++ b/src/oci/log_analytics/log_analytics_client.py
@@ -12,6 +12,7 @@
from oci.config import get_config_value_or_default, validate_config
from oci.signer import Signer
from oci.util import Sentinel, get_signer_from_authentication_type, AUTHENTICATION_TYPE_FIELD_NAME
+from oci.util import back_up_body_calculate_stream_content_length, is_content_length_calculable_by_req_util
from .models import log_analytics_type_mapping
missing = Sentinel("Missing")
@@ -324,6 +325,13 @@ def append_lookup_data(self, namespace_name, lookup_name, append_lookup_file_bod
is also available. The specifics of the default retry strategy are described `here `__.
To have this operation explicitly not perform any retries, pass an instance of :py:class:`~oci.retry.NoneRetryStrategy`.
+ :param int buffer_limit: (optional)
+ A buffer limit for the stream to be buffered. buffer_limit is used to set the buffer size capacity. Streams will be read until the size of the buffer reaches the buffer_limit.
+ If the stream size is greater than the buffer_limit, a BufferError exception will be thrown.
+
+ The buffer_limit parameter is used when the stream object does not have a `seek`, `tell`, or `fileno` property for the Python Request library to calculate out the content length.
+ If buffer_limit is not passed, then the buffer_limit will be defaulted to 100MB.
+ Large streams can cause the process to freeze, consider passing in content-length for large streams instead.
:return: A :class:`~oci.response.Response` object with data of type None
:rtype: :class:`~oci.response.Response`
@@ -337,6 +345,7 @@ def append_lookup_data(self, namespace_name, lookup_name, append_lookup_file_bod
# Don't accept unknown kwargs
expected_kwargs = [
"retry_strategy",
+ "buffer_limit",
"is_force",
"char_encoding",
"opc_retry_token",
@@ -388,6 +397,12 @@ def append_lookup_data(self, namespace_name, lookup_name, append_lookup_file_bod
if requests.utils.super_len(append_lookup_file_body) == 0:
header_params['Content-Length'] = '0'
+ # If content length is not given and stream object have no 'fileno' and is not a string or bytes, try to calculate content length
+ elif 'Content-Length' not in header_params and not is_content_length_calculable_by_req_util(append_lookup_file_body):
+ calculated_obj = back_up_body_calculate_stream_content_length(append_lookup_file_body, kwargs.get("buffer_limit"))
+ header_params['Content-Length'] = calculated_obj["content_length"]
+ append_lookup_file_body = calculated_obj["byte_content"]
+
retry_strategy = self.retry_strategy
if kwargs.get('retry_strategy'):
retry_strategy = kwargs.get('retry_strategy')
@@ -6891,6 +6906,13 @@ def import_custom_content(self, namespace_name, import_custom_content_file_body,
is also available. The specifics of the default retry strategy are described `here `__.
To have this operation explicitly not perform any retries, pass an instance of :py:class:`~oci.retry.NoneRetryStrategy`.
+ :param int buffer_limit: (optional)
+ A buffer limit for the stream to be buffered. buffer_limit is used to set the buffer size capacity. Streams will be read until the size of the buffer reaches the buffer_limit.
+ If the stream size is greater than the buffer_limit, a BufferError exception will be thrown.
+
+ The buffer_limit parameter is used when the stream object does not have a `seek`, `tell`, or `fileno` property for the Python Request library to calculate out the content length.
+ If buffer_limit is not passed, then the buffer_limit will be defaulted to 100MB.
+ Large streams can cause the process to freeze, consider passing in content-length for large streams instead.
:return: A :class:`~oci.response.Response` object with data of type :class:`~oci.log_analytics.models.LogAnalyticsImportCustomContent`
:rtype: :class:`~oci.response.Response`
@@ -6904,6 +6926,7 @@ def import_custom_content(self, namespace_name, import_custom_content_file_body,
# Don't accept unknown kwargs
expected_kwargs = [
"retry_strategy",
+ "buffer_limit",
"is_overwrite",
"opc_retry_token",
"opc_request_id"
@@ -6950,6 +6973,12 @@ def import_custom_content(self, namespace_name, import_custom_content_file_body,
if requests.utils.super_len(import_custom_content_file_body) == 0:
header_params['Content-Length'] = '0'
+ # If content length is not given and stream object have no 'fileno' and is not a string or bytes, try to calculate content length
+ elif 'Content-Length' not in header_params and not is_content_length_calculable_by_req_util(import_custom_content_file_body):
+ calculated_obj = back_up_body_calculate_stream_content_length(import_custom_content_file_body, kwargs.get("buffer_limit"))
+ header_params['Content-Length'] = calculated_obj["content_length"]
+ import_custom_content_file_body = calculated_obj["byte_content"]
+
retry_strategy = self.retry_strategy
if kwargs.get('retry_strategy'):
retry_strategy = kwargs.get('retry_strategy')
@@ -13569,6 +13598,13 @@ def register_lookup(self, namespace_name, type, register_lookup_content_file_bod
is also available. The specifics of the default retry strategy are described `here `__.
To have this operation explicitly not perform any retries, pass an instance of :py:class:`~oci.retry.NoneRetryStrategy`.
+ :param int buffer_limit: (optional)
+ A buffer limit for the stream to be buffered. buffer_limit is used to set the buffer size capacity. Streams will be read until the size of the buffer reaches the buffer_limit.
+ If the stream size is greater than the buffer_limit, a BufferError exception will be thrown.
+
+ The buffer_limit parameter is used when the stream object does not have a `seek`, `tell`, or `fileno` property for the Python Request library to calculate out the content length.
+ If buffer_limit is not passed, then the buffer_limit will be defaulted to 100MB.
+ Large streams can cause the process to freeze, consider passing in content-length for large streams instead.
:return: A :class:`~oci.response.Response` object with data of type :class:`~oci.log_analytics.models.LogAnalyticsLookup`
:rtype: :class:`~oci.response.Response`
@@ -13582,6 +13618,7 @@ def register_lookup(self, namespace_name, type, register_lookup_content_file_bod
# Don't accept unknown kwargs
expected_kwargs = [
"retry_strategy",
+ "buffer_limit",
"name",
"description",
"char_encoding",
@@ -13641,6 +13678,12 @@ def register_lookup(self, namespace_name, type, register_lookup_content_file_bod
if requests.utils.super_len(register_lookup_content_file_body) == 0:
header_params['Content-Length'] = '0'
+ # If content length is not given and stream object have no 'fileno' and is not a string or bytes, try to calculate content length
+ elif 'Content-Length' not in header_params and not is_content_length_calculable_by_req_util(register_lookup_content_file_body):
+ calculated_obj = back_up_body_calculate_stream_content_length(register_lookup_content_file_body, kwargs.get("buffer_limit"))
+ header_params['Content-Length'] = calculated_obj["content_length"]
+ register_lookup_content_file_body = calculated_obj["byte_content"]
+
retry_strategy = self.retry_strategy
if kwargs.get('retry_strategy'):
retry_strategy = kwargs.get('retry_strategy')
@@ -15166,6 +15209,13 @@ def update_lookup_data(self, namespace_name, lookup_name, update_lookup_file_bod
is also available. The specifics of the default retry strategy are described `here `__.
To have this operation explicitly not perform any retries, pass an instance of :py:class:`~oci.retry.NoneRetryStrategy`.
+ :param int buffer_limit: (optional)
+ A buffer limit for the stream to be buffered. buffer_limit is used to set the buffer size capacity. Streams will be read until the size of the buffer reaches the buffer_limit.
+ If the stream size is greater than the buffer_limit, a BufferError exception will be thrown.
+
+ The buffer_limit parameter is used when the stream object does not have a `seek`, `tell`, or `fileno` property for the Python Request library to calculate out the content length.
+ If buffer_limit is not passed, then the buffer_limit will be defaulted to 100MB.
+ Large streams can cause the process to freeze, consider passing in content-length for large streams instead.
:return: A :class:`~oci.response.Response` object with data of type None
:rtype: :class:`~oci.response.Response`
@@ -15179,6 +15229,7 @@ def update_lookup_data(self, namespace_name, lookup_name, update_lookup_file_bod
# Don't accept unknown kwargs
expected_kwargs = [
"retry_strategy",
+ "buffer_limit",
"is_force",
"char_encoding",
"opc_retry_token",
@@ -15230,6 +15281,12 @@ def update_lookup_data(self, namespace_name, lookup_name, update_lookup_file_bod
if requests.utils.super_len(update_lookup_file_body) == 0:
header_params['Content-Length'] = '0'
+ # If content length is not given and stream object have no 'fileno' and is not a string or bytes, try to calculate content length
+ elif 'Content-Length' not in header_params and not is_content_length_calculable_by_req_util(update_lookup_file_body):
+ calculated_obj = back_up_body_calculate_stream_content_length(update_lookup_file_body, kwargs.get("buffer_limit"))
+ header_params['Content-Length'] = calculated_obj["content_length"]
+ update_lookup_file_body = calculated_obj["byte_content"]
+
retry_strategy = self.retry_strategy
if kwargs.get('retry_strategy'):
retry_strategy = kwargs.get('retry_strategy')
@@ -15484,6 +15541,13 @@ def upload_log_events_file(self, namespace_name, log_group_id, upload_log_events
is also available. The specifics of the default retry strategy are described `here `__.
To have this operation explicitly not perform any retries, pass an instance of :py:class:`~oci.retry.NoneRetryStrategy`.
+ :param int buffer_limit: (optional)
+ A buffer limit for the stream to be buffered. buffer_limit is used to set the buffer size capacity. Streams will be read until the size of the buffer reaches the buffer_limit.
+ If the stream size is greater than the buffer_limit, a BufferError exception will be thrown.
+
+ The buffer_limit parameter is used when the stream object does not have a `seek`, `tell`, or `fileno` property for the Python Request library to calculate out the content length.
+ If buffer_limit is not passed, then the buffer_limit will be defaulted to 100MB.
+ Large streams can cause the process to freeze, consider passing in content-length for large streams instead.
:return: A :class:`~oci.response.Response` object with data of type None
:rtype: :class:`~oci.response.Response`
@@ -15497,6 +15561,7 @@ def upload_log_events_file(self, namespace_name, log_group_id, upload_log_events
# Don't accept unknown kwargs
expected_kwargs = [
"retry_strategy",
+ "buffer_limit",
"opc_request_id",
"log_set",
"payload_type",
@@ -15555,6 +15620,12 @@ def upload_log_events_file(self, namespace_name, log_group_id, upload_log_events
if requests.utils.super_len(upload_log_events_file_details) == 0:
header_params['Content-Length'] = '0'
+ # If content length is not given and stream object have no 'fileno' and is not a string or bytes, try to calculate content length
+ elif 'Content-Length' not in header_params and not is_content_length_calculable_by_req_util(upload_log_events_file_details):
+ calculated_obj = back_up_body_calculate_stream_content_length(upload_log_events_file_details, kwargs.get("buffer_limit"))
+ header_params['Content-Length'] = calculated_obj["content_length"]
+ upload_log_events_file_details = calculated_obj["byte_content"]
+
retry_strategy = self.retry_strategy
if kwargs.get('retry_strategy'):
retry_strategy = kwargs.get('retry_strategy')
@@ -15653,6 +15724,13 @@ def upload_log_file(self, namespace_name, upload_name, log_source_name, filename
is also available. The specifics of the default retry strategy are described `here `__.
To have this operation explicitly not perform any retries, pass an instance of :py:class:`~oci.retry.NoneRetryStrategy`.
+ :param int buffer_limit: (optional)
+ A buffer limit for the stream to be buffered. buffer_limit is used to set the buffer size capacity. Streams will be read until the size of the buffer reaches the buffer_limit.
+ If the stream size is greater than the buffer_limit, a BufferError exception will be thrown.
+
+ The buffer_limit parameter is used when the stream object does not have a `seek`, `tell`, or `fileno` property for the Python Request library to calculate out the content length.
+ If buffer_limit is not passed, then the buffer_limit will be defaulted to 100MB.
+ Large streams can cause the process to freeze, consider passing in content-length for large streams instead.
:return: A :class:`~oci.response.Response` object with data of type :class:`~oci.log_analytics.models.Upload`
:rtype: :class:`~oci.response.Response`
@@ -15666,6 +15744,7 @@ def upload_log_file(self, namespace_name, upload_name, log_source_name, filename
# Don't accept unknown kwargs
expected_kwargs = [
"retry_strategy",
+ "buffer_limit",
"entity_id",
"timezone",
"char_encoding",
@@ -15732,6 +15811,12 @@ def upload_log_file(self, namespace_name, upload_name, log_source_name, filename
if requests.utils.super_len(upload_log_file_body) == 0:
header_params['Content-Length'] = '0'
+ # If content length is not given and stream object have no 'fileno' and is not a string or bytes, try to calculate content length
+ elif 'Content-Length' not in header_params and not is_content_length_calculable_by_req_util(upload_log_file_body):
+ calculated_obj = back_up_body_calculate_stream_content_length(upload_log_file_body, kwargs.get("buffer_limit"))
+ header_params['Content-Length'] = calculated_obj["content_length"]
+ upload_log_file_body = calculated_obj["byte_content"]
+
retry_strategy = self.retry_strategy
if kwargs.get('retry_strategy'):
retry_strategy = kwargs.get('retry_strategy')
diff --git a/src/oci/object_storage/models/create_preauthenticated_request_details.py b/src/oci/object_storage/models/create_preauthenticated_request_details.py
index 6b19b0d1a3..f8fff39541 100644
--- a/src/oci/object_storage/models/create_preauthenticated_request_details.py
+++ b/src/oci/object_storage/models/create_preauthenticated_request_details.py
@@ -29,6 +29,14 @@ class CreatePreauthenticatedRequestDetails(object):
#: This constant has a value of "AnyObjectWrite"
ACCESS_TYPE_ANY_OBJECT_WRITE = "AnyObjectWrite"
+ #: A constant which can be used with the access_type property of a CreatePreauthenticatedRequestDetails.
+ #: This constant has a value of "AnyObjectRead"
+ ACCESS_TYPE_ANY_OBJECT_READ = "AnyObjectRead"
+
+ #: A constant which can be used with the access_type property of a CreatePreauthenticatedRequestDetails.
+ #: This constant has a value of "AnyObjectReadWrite"
+ ACCESS_TYPE_ANY_OBJECT_READ_WRITE = "AnyObjectReadWrite"
+
def __init__(self, **kwargs):
"""
Initializes a new CreatePreauthenticatedRequestDetails object with values from keyword arguments.
@@ -38,13 +46,17 @@ def __init__(self, **kwargs):
The value to assign to the name property of this CreatePreauthenticatedRequestDetails.
:type name: str
+ :param bucket_listing_action:
+ The value to assign to the bucket_listing_action property of this CreatePreauthenticatedRequestDetails.
+ :type bucket_listing_action: str
+
:param object_name:
The value to assign to the object_name property of this CreatePreauthenticatedRequestDetails.
:type object_name: str
:param access_type:
The value to assign to the access_type property of this CreatePreauthenticatedRequestDetails.
- Allowed values for this property are: "ObjectRead", "ObjectWrite", "ObjectReadWrite", "AnyObjectWrite"
+ Allowed values for this property are: "ObjectRead", "ObjectWrite", "ObjectReadWrite", "AnyObjectWrite", "AnyObjectRead", "AnyObjectReadWrite"
:type access_type: str
:param time_expires:
@@ -54,6 +66,7 @@ def __init__(self, **kwargs):
"""
self.swagger_types = {
'name': 'str',
+ 'bucket_listing_action': 'str',
'object_name': 'str',
'access_type': 'str',
'time_expires': 'datetime'
@@ -61,12 +74,14 @@ def __init__(self, **kwargs):
self.attribute_map = {
'name': 'name',
+ 'bucket_listing_action': 'bucketListingAction',
'object_name': 'objectName',
'access_type': 'accessType',
'time_expires': 'timeExpires'
}
self._name = None
+ self._bucket_listing_action = None
self._object_name = None
self._access_type = None
self._time_expires = None
@@ -97,12 +112,42 @@ def name(self, name):
"""
self._name = name
+ @property
+ def bucket_listing_action(self):
+ """
+ Gets the bucket_listing_action of this CreatePreauthenticatedRequestDetails.
+ Specifies whether a list operation is allowed on a PAR with accessType \"AnyObjectRead\" or \"AnyObjectReadWrite\".
+ Deny: Prevents the user from performing a list operation.
+ ListObjects: Authorizes the user to perform a list operation.
+
+
+ :return: The bucket_listing_action of this CreatePreauthenticatedRequestDetails.
+ :rtype: str
+ """
+ return self._bucket_listing_action
+
+ @bucket_listing_action.setter
+ def bucket_listing_action(self, bucket_listing_action):
+ """
+ Sets the bucket_listing_action of this CreatePreauthenticatedRequestDetails.
+ Specifies whether a list operation is allowed on a PAR with accessType \"AnyObjectRead\" or \"AnyObjectReadWrite\".
+ Deny: Prevents the user from performing a list operation.
+ ListObjects: Authorizes the user to perform a list operation.
+
+
+ :param bucket_listing_action: The bucket_listing_action of this CreatePreauthenticatedRequestDetails.
+ :type: str
+ """
+ self._bucket_listing_action = bucket_listing_action
+
@property
def object_name(self):
"""
Gets the object_name of this CreatePreauthenticatedRequestDetails.
The name of the object that is being granted access to by the pre-authenticated request. Avoid entering confidential
- information. The object name can be null and if so, the pre-authenticated request grants access to the entire bucket.
+ information. The object name can be null and if so, the pre-authenticated request grants access to the entire bucket
+ if the access type allows that. The object name can be a prefix as well, in that case pre-authenticated request
+ grants access to all the objects within the bucket starting with that prefix provided that we have the correct access type.
:return: The object_name of this CreatePreauthenticatedRequestDetails.
@@ -115,7 +160,9 @@ def object_name(self, object_name):
"""
Sets the object_name of this CreatePreauthenticatedRequestDetails.
The name of the object that is being granted access to by the pre-authenticated request. Avoid entering confidential
- information. The object name can be null and if so, the pre-authenticated request grants access to the entire bucket.
+ information. The object name can be null and if so, the pre-authenticated request grants access to the entire bucket
+ if the access type allows that. The object name can be a prefix as well, in that case pre-authenticated request
+ grants access to all the objects within the bucket starting with that prefix provided that we have the correct access type.
:param object_name: The object_name of this CreatePreauthenticatedRequestDetails.
@@ -129,7 +176,7 @@ def access_type(self):
**[Required]** Gets the access_type of this CreatePreauthenticatedRequestDetails.
The operation that can be performed on this resource.
- Allowed values for this property are: "ObjectRead", "ObjectWrite", "ObjectReadWrite", "AnyObjectWrite"
+ Allowed values for this property are: "ObjectRead", "ObjectWrite", "ObjectReadWrite", "AnyObjectWrite", "AnyObjectRead", "AnyObjectReadWrite"
:return: The access_type of this CreatePreauthenticatedRequestDetails.
@@ -147,7 +194,7 @@ def access_type(self, access_type):
:param access_type: The access_type of this CreatePreauthenticatedRequestDetails.
:type: str
"""
- allowed_values = ["ObjectRead", "ObjectWrite", "ObjectReadWrite", "AnyObjectWrite"]
+ allowed_values = ["ObjectRead", "ObjectWrite", "ObjectReadWrite", "AnyObjectWrite", "AnyObjectRead", "AnyObjectReadWrite"]
if not value_allowed_none_or_none_sentinel(access_type, allowed_values):
raise ValueError(
"Invalid value for `access_type`, must be None or one of {0}"
diff --git a/src/oci/object_storage/models/preauthenticated_request.py b/src/oci/object_storage/models/preauthenticated_request.py
index ac48d64885..2ebc5d909e 100644
--- a/src/oci/object_storage/models/preauthenticated_request.py
+++ b/src/oci/object_storage/models/preauthenticated_request.py
@@ -23,6 +23,14 @@ class PreauthenticatedRequest(object):
__ https://docs.cloud.oracle.com/Content/Identity/Concepts/policygetstarted.htm
"""
+ #: A constant which can be used with the bucket_listing_action property of a PreauthenticatedRequest.
+ #: This constant has a value of "Deny"
+ BUCKET_LISTING_ACTION_DENY = "Deny"
+
+ #: A constant which can be used with the bucket_listing_action property of a PreauthenticatedRequest.
+ #: This constant has a value of "ListObjects"
+ BUCKET_LISTING_ACTION_LIST_OBJECTS = "ListObjects"
+
#: A constant which can be used with the access_type property of a PreauthenticatedRequest.
#: This constant has a value of "ObjectRead"
ACCESS_TYPE_OBJECT_READ = "ObjectRead"
@@ -39,6 +47,14 @@ class PreauthenticatedRequest(object):
#: This constant has a value of "AnyObjectWrite"
ACCESS_TYPE_ANY_OBJECT_WRITE = "AnyObjectWrite"
+ #: A constant which can be used with the access_type property of a PreauthenticatedRequest.
+ #: This constant has a value of "AnyObjectRead"
+ ACCESS_TYPE_ANY_OBJECT_READ = "AnyObjectRead"
+
+ #: A constant which can be used with the access_type property of a PreauthenticatedRequest.
+ #: This constant has a value of "AnyObjectReadWrite"
+ ACCESS_TYPE_ANY_OBJECT_READ_WRITE = "AnyObjectReadWrite"
+
def __init__(self, **kwargs):
"""
Initializes a new PreauthenticatedRequest object with values from keyword arguments.
@@ -60,9 +76,15 @@ def __init__(self, **kwargs):
The value to assign to the object_name property of this PreauthenticatedRequest.
:type object_name: str
+ :param bucket_listing_action:
+ The value to assign to the bucket_listing_action property of this PreauthenticatedRequest.
+ Allowed values for this property are: "Deny", "ListObjects", 'UNKNOWN_ENUM_VALUE'.
+ Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
+ :type bucket_listing_action: str
+
:param access_type:
The value to assign to the access_type property of this PreauthenticatedRequest.
- Allowed values for this property are: "ObjectRead", "ObjectWrite", "ObjectReadWrite", "AnyObjectWrite", 'UNKNOWN_ENUM_VALUE'.
+ Allowed values for this property are: "ObjectRead", "ObjectWrite", "ObjectReadWrite", "AnyObjectWrite", "AnyObjectRead", "AnyObjectReadWrite", 'UNKNOWN_ENUM_VALUE'.
Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
:type access_type: str
@@ -80,6 +102,7 @@ def __init__(self, **kwargs):
'name': 'str',
'access_uri': 'str',
'object_name': 'str',
+ 'bucket_listing_action': 'str',
'access_type': 'str',
'time_expires': 'datetime',
'time_created': 'datetime'
@@ -90,6 +113,7 @@ def __init__(self, **kwargs):
'name': 'name',
'access_uri': 'accessUri',
'object_name': 'objectName',
+ 'bucket_listing_action': 'bucketListingAction',
'access_type': 'accessType',
'time_expires': 'timeExpires',
'time_created': 'timeCreated'
@@ -99,6 +123,7 @@ def __init__(self, **kwargs):
self._name = None
self._access_uri = None
self._object_name = None
+ self._bucket_listing_action = None
self._access_type = None
self._time_expires = None
self._time_created = None
@@ -203,13 +228,47 @@ def object_name(self, object_name):
"""
self._object_name = object_name
+ @property
+ def bucket_listing_action(self):
+ """
+ Gets the bucket_listing_action of this PreauthenticatedRequest.
+ Specifies whether a list operation is allowed on a PAR with accessType \"AnyObjectRead\" or \"AnyObjectReadWrite\".
+ Deny: Prevents the user from performing a list operation.
+ ListObjects: Authorizes the user to perform a list operation.
+
+ Allowed values for this property are: "Deny", "ListObjects", 'UNKNOWN_ENUM_VALUE'.
+ Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
+
+
+ :return: The bucket_listing_action of this PreauthenticatedRequest.
+ :rtype: str
+ """
+ return self._bucket_listing_action
+
+ @bucket_listing_action.setter
+ def bucket_listing_action(self, bucket_listing_action):
+ """
+ Sets the bucket_listing_action of this PreauthenticatedRequest.
+ Specifies whether a list operation is allowed on a PAR with accessType \"AnyObjectRead\" or \"AnyObjectReadWrite\".
+ Deny: Prevents the user from performing a list operation.
+ ListObjects: Authorizes the user to perform a list operation.
+
+
+ :param bucket_listing_action: The bucket_listing_action of this PreauthenticatedRequest.
+ :type: str
+ """
+ allowed_values = ["Deny", "ListObjects"]
+ if not value_allowed_none_or_none_sentinel(bucket_listing_action, allowed_values):
+ bucket_listing_action = 'UNKNOWN_ENUM_VALUE'
+ self._bucket_listing_action = bucket_listing_action
+
@property
def access_type(self):
"""
**[Required]** Gets the access_type of this PreauthenticatedRequest.
The operation that can be performed on this resource.
- Allowed values for this property are: "ObjectRead", "ObjectWrite", "ObjectReadWrite", "AnyObjectWrite", 'UNKNOWN_ENUM_VALUE'.
+ Allowed values for this property are: "ObjectRead", "ObjectWrite", "ObjectReadWrite", "AnyObjectWrite", "AnyObjectRead", "AnyObjectReadWrite", 'UNKNOWN_ENUM_VALUE'.
Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
@@ -228,7 +287,7 @@ def access_type(self, access_type):
:param access_type: The access_type of this PreauthenticatedRequest.
:type: str
"""
- allowed_values = ["ObjectRead", "ObjectWrite", "ObjectReadWrite", "AnyObjectWrite"]
+ allowed_values = ["ObjectRead", "ObjectWrite", "ObjectReadWrite", "AnyObjectWrite", "AnyObjectRead", "AnyObjectReadWrite"]
if not value_allowed_none_or_none_sentinel(access_type, allowed_values):
access_type = 'UNKNOWN_ENUM_VALUE'
self._access_type = access_type
diff --git a/src/oci/object_storage/models/preauthenticated_request_summary.py b/src/oci/object_storage/models/preauthenticated_request_summary.py
index cfaae52f5a..91ea03cd3f 100644
--- a/src/oci/object_storage/models/preauthenticated_request_summary.py
+++ b/src/oci/object_storage/models/preauthenticated_request_summary.py
@@ -29,6 +29,14 @@ class PreauthenticatedRequestSummary(object):
#: This constant has a value of "AnyObjectWrite"
ACCESS_TYPE_ANY_OBJECT_WRITE = "AnyObjectWrite"
+ #: A constant which can be used with the access_type property of a PreauthenticatedRequestSummary.
+ #: This constant has a value of "AnyObjectRead"
+ ACCESS_TYPE_ANY_OBJECT_READ = "AnyObjectRead"
+
+ #: A constant which can be used with the access_type property of a PreauthenticatedRequestSummary.
+ #: This constant has a value of "AnyObjectReadWrite"
+ ACCESS_TYPE_ANY_OBJECT_READ_WRITE = "AnyObjectReadWrite"
+
def __init__(self, **kwargs):
"""
Initializes a new PreauthenticatedRequestSummary object with values from keyword arguments.
@@ -46,9 +54,13 @@ def __init__(self, **kwargs):
The value to assign to the object_name property of this PreauthenticatedRequestSummary.
:type object_name: str
+ :param bucket_listing_action:
+ The value to assign to the bucket_listing_action property of this PreauthenticatedRequestSummary.
+ :type bucket_listing_action: str
+
:param access_type:
The value to assign to the access_type property of this PreauthenticatedRequestSummary.
- Allowed values for this property are: "ObjectRead", "ObjectWrite", "ObjectReadWrite", "AnyObjectWrite", 'UNKNOWN_ENUM_VALUE'.
+ Allowed values for this property are: "ObjectRead", "ObjectWrite", "ObjectReadWrite", "AnyObjectWrite", "AnyObjectRead", "AnyObjectReadWrite", 'UNKNOWN_ENUM_VALUE'.
Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
:type access_type: str
@@ -65,6 +77,7 @@ def __init__(self, **kwargs):
'id': 'str',
'name': 'str',
'object_name': 'str',
+ 'bucket_listing_action': 'str',
'access_type': 'str',
'time_expires': 'datetime',
'time_created': 'datetime'
@@ -74,6 +87,7 @@ def __init__(self, **kwargs):
'id': 'id',
'name': 'name',
'object_name': 'objectName',
+ 'bucket_listing_action': 'bucketListingAction',
'access_type': 'accessType',
'time_expires': 'timeExpires',
'time_created': 'timeCreated'
@@ -82,6 +96,7 @@ def __init__(self, **kwargs):
self._id = None
self._name = None
self._object_name = None
+ self._bucket_listing_action = None
self._access_type = None
self._time_expires = None
self._time_created = None
@@ -160,13 +175,41 @@ def object_name(self, object_name):
"""
self._object_name = object_name
+ @property
+ def bucket_listing_action(self):
+ """
+ Gets the bucket_listing_action of this PreauthenticatedRequestSummary.
+ Specifies whether a list operation is allowed on a PAR with accessType \"AnyObjectRead\" or \"AnyObjectReadWrite\".
+ Deny: Prevents the user from performing a list operation.
+ ListObjects: Authorizes the user to perform a list operation.
+
+
+ :return: The bucket_listing_action of this PreauthenticatedRequestSummary.
+ :rtype: str
+ """
+ return self._bucket_listing_action
+
+ @bucket_listing_action.setter
+ def bucket_listing_action(self, bucket_listing_action):
+ """
+ Sets the bucket_listing_action of this PreauthenticatedRequestSummary.
+ Specifies whether a list operation is allowed on a PAR with accessType \"AnyObjectRead\" or \"AnyObjectReadWrite\".
+ Deny: Prevents the user from performing a list operation.
+ ListObjects: Authorizes the user to perform a list operation.
+
+
+ :param bucket_listing_action: The bucket_listing_action of this PreauthenticatedRequestSummary.
+ :type: str
+ """
+ self._bucket_listing_action = bucket_listing_action
+
@property
def access_type(self):
"""
**[Required]** Gets the access_type of this PreauthenticatedRequestSummary.
The operation that can be performed on this resource.
- Allowed values for this property are: "ObjectRead", "ObjectWrite", "ObjectReadWrite", "AnyObjectWrite", 'UNKNOWN_ENUM_VALUE'.
+ Allowed values for this property are: "ObjectRead", "ObjectWrite", "ObjectReadWrite", "AnyObjectWrite", "AnyObjectRead", "AnyObjectReadWrite", 'UNKNOWN_ENUM_VALUE'.
Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
@@ -185,7 +228,7 @@ def access_type(self, access_type):
:param access_type: The access_type of this PreauthenticatedRequestSummary.
:type: str
"""
- allowed_values = ["ObjectRead", "ObjectWrite", "ObjectReadWrite", "AnyObjectWrite"]
+ allowed_values = ["ObjectRead", "ObjectWrite", "ObjectReadWrite", "AnyObjectWrite", "AnyObjectRead", "AnyObjectReadWrite"]
if not value_allowed_none_or_none_sentinel(access_type, allowed_values):
access_type = 'UNKNOWN_ENUM_VALUE'
self._access_type = access_type
diff --git a/src/oci/object_storage/object_storage_client.py b/src/oci/object_storage/object_storage_client.py
index 1091e7490b..813f8c2fe0 100644
--- a/src/oci/object_storage/object_storage_client.py
+++ b/src/oci/object_storage/object_storage_client.py
@@ -12,6 +12,7 @@
from oci.config import get_config_value_or_default, validate_config
from oci.signer import Signer
from oci.util import Sentinel, get_signer_from_authentication_type, AUTHENTICATION_TYPE_FIELD_NAME
+from oci.util import back_up_body_calculate_stream_content_length, is_content_length_calculable_by_req_util
from .models import object_storage_type_mapping
missing = Sentinel("Missing")
@@ -4108,6 +4109,13 @@ def put_object(self, namespace_name, bucket_name, object_name, put_object_body,
is also available. The specifics of the default retry strategy are described `here `__.
To have this operation explicitly not perform any retries, pass an instance of :py:class:`~oci.retry.NoneRetryStrategy`.
+ :param int buffer_limit: (optional)
+ A buffer limit for the stream to be buffered. buffer_limit is used to set the buffer size capacity. Streams will be read until the size of the buffer reaches the buffer_limit.
+ If the stream size is greater than the buffer_limit, a BufferError exception will be thrown.
+
+ The buffer_limit parameter is used when the stream object does not have a `seek`, `tell`, or `fileno` property for the Python Request library to calculate out the content length.
+ If buffer_limit is not passed, then the buffer_limit will be defaulted to 100MB.
+ Large streams can cause the process to freeze, consider passing in content-length for large streams instead.
:return: A :class:`~oci.response.Response` object with data of type None
:rtype: :class:`~oci.response.Response`
@@ -4121,6 +4129,7 @@ def put_object(self, namespace_name, bucket_name, object_name, put_object_body,
# Don't accept unknown kwargs
expected_kwargs = [
"retry_strategy",
+ "buffer_limit",
"content_length",
"if_match",
"if_none_match",
@@ -4193,6 +4202,12 @@ def put_object(self, namespace_name, bucket_name, object_name, put_object_body,
if requests.utils.super_len(put_object_body) == 0:
header_params['Content-Length'] = '0'
+ # If content length is not given and stream object have no 'fileno' and is not a string or bytes, try to calculate content length
+ elif 'Content-Length' not in header_params and not is_content_length_calculable_by_req_util(put_object_body):
+ calculated_obj = back_up_body_calculate_stream_content_length(put_object_body, kwargs.get("buffer_limit"))
+ header_params['Content-Length'] = calculated_obj["content_length"]
+ put_object_body = calculated_obj["byte_content"]
+
retry_strategy = self.retry_strategy
if kwargs.get('retry_strategy'):
retry_strategy = kwargs.get('retry_strategy')
@@ -5125,6 +5140,13 @@ def upload_part(self, namespace_name, bucket_name, object_name, upload_id, uploa
is also available. The specifics of the default retry strategy are described `here `__.
To have this operation explicitly not perform any retries, pass an instance of :py:class:`~oci.retry.NoneRetryStrategy`.
+ :param int buffer_limit: (optional)
+ A buffer limit for the stream to be buffered. buffer_limit is used to set the buffer size capacity. Streams will be read until the size of the buffer reaches the buffer_limit.
+ If the stream size is greater than the buffer_limit, a BufferError exception will be thrown.
+
+ The buffer_limit parameter is used when the stream object does not have a `seek`, `tell`, or `fileno` property for the Python Request library to calculate out the content length.
+ If buffer_limit is not passed, then the buffer_limit will be defaulted to 100MB.
+ Large streams can cause the process to freeze, consider passing in content-length for large streams instead.
:return: A :class:`~oci.response.Response` object with data of type None
:rtype: :class:`~oci.response.Response`
@@ -5138,6 +5160,7 @@ def upload_part(self, namespace_name, bucket_name, object_name, upload_id, uploa
# Don't accept unknown kwargs
expected_kwargs = [
"retry_strategy",
+ "buffer_limit",
"content_length",
"opc_client_request_id",
"if_match",
@@ -5200,6 +5223,12 @@ def upload_part(self, namespace_name, bucket_name, object_name, upload_id, uploa
if requests.utils.super_len(upload_part_body) == 0:
header_params['Content-Length'] = '0'
+ # If content length is not given and stream object have no 'fileno' and is not a string or bytes, try to calculate content length
+ elif 'Content-Length' not in header_params and not is_content_length_calculable_by_req_util(upload_part_body):
+ calculated_obj = back_up_body_calculate_stream_content_length(upload_part_body, kwargs.get("buffer_limit"))
+ header_params['Content-Length'] = calculated_obj["content_length"]
+ upload_part_body = calculated_obj["byte_content"]
+
retry_strategy = self.retry_strategy
if kwargs.get('retry_strategy'):
retry_strategy = kwargs.get('retry_strategy')
diff --git a/src/oci/util.py b/src/oci/util.py
index 345d2144e9..78babe3e88 100644
--- a/src/oci/util.py
+++ b/src/oci/util.py
@@ -2,9 +2,11 @@
# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+from __future__ import absolute_import
import base64
import datetime
import json
+import logging
import os.path
import pytz
from oci._vendor import six
@@ -15,10 +17,14 @@
except ImportError:
from urlparse import urlparse
+logger = logging.getLogger(__name__)
INSTANCE_PRINCIPAL_AUTHENTICATION_TYPE_VALUE_NAME = 'instance_principal'
DELEGATION_TOKEN_WITH_INSTANCE_PRINCIPAL_AUTHENTICATION_TYPE = 'delegation_token_with_instance_principal'
DELEGATION_TOKEN_FILE_FIELD_NAME = 'delegation_token_file'
AUTHENTICATION_TYPE_FIELD_NAME = 'authentication_type'
+MEBIBYTE = 1024 * 1024
+DEFAULT_BUFFER_SIZE = 100 * MEBIBYTE
+DEFAULT_PART_SIZE = 128 * MEBIBYTE
try:
# PY3+
@@ -213,3 +219,39 @@ def extract_service_endpoint(endpoint_with_base_path):
"""
parsed_endpoint = urlparse(endpoint_with_base_path)
return parsed_endpoint.scheme + r'://' + parsed_endpoint.netloc
+
+
+def back_up_body_calculate_stream_content_length(stream, buffer_limit=DEFAULT_BUFFER_SIZE):
+ # Note: Need to read in chunks, older version of Python will fail to read more than 2GB at once.
+ # We pull data in chunks (128MB at a time) from the stream until there is no more
+ logger.warning("Reading stream to calculate content-length. Process may freeze for very big streams. Consider passing in content length for big objects")
+ try:
+ keep_reading = True
+ part_size = DEFAULT_PART_SIZE
+ content_length = 0
+ content = ""
+ byte_content = b''
+ while keep_reading:
+ if hasattr(stream, 'buffer'):
+ content = stream.buffer.read(part_size)
+ elif hasattr(stream, 'read'):
+ content = stream.read(part_size)
+ else:
+ raise TypeError("Stream object does not contain a 'read' property. Cannot auto calculate content length, please pass in content length")
+ if len(content) == 0:
+ keep_reading = False
+ byte_content += content
+ content_length += len(content)
+ if (buffer_limit and content_length > buffer_limit):
+ raise BufferError("Stream size is greater than the buffer_limit, please pass in a bigger buffer_limit or pass in content length to the request")
+ return {"content_length": content_length, "byte_content": byte_content}
+ except(IOError, OSError):
+ raise TypeError("Stream object's content length cannot be calculated, please pass in content length")
+
+
+# This helper function checks if an object can have it's content length auto-calculated by the Request library
+def is_content_length_calculable_by_req_util(o):
+ if hasattr(o, '__len__') or hasattr(o, 'len') or hasattr(o, 'fileno') or hasattr(o, 'tell'):
+ return True
+ logger.warning("Request did not contain content-length and stream object does not contain fileno or tell property. Stream object will be read to calculate content-length")
+ return False
diff --git a/src/oci/version.py b/src/oci/version.py
index c28d805768..80347599ce 100644
--- a/src/oci/version.py
+++ b/src/oci/version.py
@@ -2,4 +2,4 @@
# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
-__version__ = "2.35.0"
+__version__ = "2.35.1"