diff --git a/CHANGELOG.md b/CHANGELOG.md
index 76556bd2..3c8ff05e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,10 @@
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](http://semver.org/).
+## [3.15.0] - 2024-08-26
+### Added
+- Updated documentation for Ocean rightsizing APIs.
+
## [3.14.0] - 2024-08-26
### Added
- Added support for Ocean ECS.
diff --git a/docs/clients/ocean/ocean_rightsizing_client.md b/docs/clients/ocean/ocean_rightsizing_client.md
new file mode 100644
index 00000000..d54fdab8
--- /dev/null
+++ b/docs/clients/ocean/ocean_rightsizing_client.md
@@ -0,0 +1,195 @@
+
OceanRightSizingClient
+
+```python
+OceanRightSizingClient(self,
+ session=None,
+ print_output=True,
+ log_level=None,
+ user_agent=None,
+ timeout=None)
+```
+
+create_right_sizing_rule
+
+```python
+OceanRightSizingClient.create_right_sizing_rule(
+ ocean_id: str,
+ rule_name: str,
+ restart_replicas: RestartReplicas,
+ exclude_preliminary_recommendations: bool,
+ application_intervals:
+ typing.List[spotinst_sdk2.models.ocean.rightsizing.RecommendationApplicationInterval],
+ application_min_threshold: RecommendationApplicationMinThreshold = None,
+ application_boundaries: RecommendationApplicationBoundaries = None,
+ application_overhead_values:
+ RecommendationApplicationOverheadValues = None,
+ application_hpa: RecommendationApplicationHPA = None)
+```
+
+Create a right sizing rule for an Ocean cluster.
+
+__Arguments__
+
+- __ocean_id (String)__: ID of the Ocean Cluster
+- __rule_name (String)__: Name of the Right Sizing Rule
+- __restart_replicas (RestartReplicas)__: Restart Replicas
+- __exclude_preliminary_recommendations (boolean)__: Exclude preliminary recommendations
+- __application_intervals (List[RecommendationApplicationIntervals])__: Recommendation Application Intervals
+- __application_min_threshold (RecommendationApplicationMinThreshold)__: Recommendation Application Min Threshold
+- __application_boundaries (RecommendationApplicationBoundaries)__: Recommendation Application Boundaries
+- __application_overhead_values (RecommendationApplicationOverheadValues)__: Recommendation Application Overhead Values
+- __application_hpa (RecommendationApplicationHPA)__: Recommendation Application HPA
+
+__Returns__
+
+`(Object)`: Ocean Right Sizing Rule API response
+
+
+delete_right_sizing_rule
+
+```python
+OceanRightSizingClient.delete_right_sizing_rule(
+ ocean_id: str, rule_names: typing.List[str])
+```
+
+Delete a right sizing rule for an Ocean cluster.
+
+__Arguments__
+
+- __ocean_id (String)__: ID of the Ocean Cluster
+- __rule_names (List[String])__: List of Right Sizing Rule Names
+
+__Returns__
+
+`(Object)`: Ocean Right Sizing Rule API response
+
+update_right_sizing_rule
+
+```python
+OceanRightSizingClient.update_right_sizing_rule(
+ ocean_id: str,
+ rule_name: str,
+ restart_replicas: RestartReplicas,
+ exclude_preliminary_recommendations: bool,
+ application_intervals:
+ typing.List[spotinst_sdk2.models.ocean.rightsizing.RecommendationApplicationInterval],
+ application_min_threshold: RecommendationApplicationMinThreshold,
+ application_boundaries: RecommendationApplicationBoundaries,
+ application_overhead_values: RecommendationApplicationOverheadValues,
+ application_hpa: RecommendationApplicationHPA = None)
+```
+
+Update a right sizing rule for an Ocean cluster.
+
+__Arguments__
+
+- __ocean_id (String)__: ID of the Ocean Cluster
+- __rule_name (String)__: Rightsizing Rule name
+- __restart_replicas (RestartReplicas)__: Restart Replicas
+- __exclude_preliminary_recommendations (boolean)__: Exclude preliminary recommendations
+- __application_intervals (RecommendationApplicationIntervals)__: Recommendation Application Intervals
+- __application_min_threshold (RecommendationApplicationMinThreshold)__: Recommendation Application Min Threshold
+- __application_boundaries (RecommendationApplicationBoundaries)__: Recommendation Application Boundaries
+- __application_overhead_values (RecommendationApplicationOverheadValues)__: Recommendation Application Overhead Values
+- __application_hpa (RecommendationApplicationHPA)__: Recommendation Application HPA
+
+__Returns__
+
+`(Object)`: Ocean Right Sizing Rule API response
+
+attach_right_sizing_rule
+
+```python
+OceanRightSizingClient.attach_right_sizing_rule(
+ ocean_id: str, rule_name: str, namespaces:
+ typing.List[spotinst_sdk2.models.ocean.rightsizing.Namespace])
+```
+
+Attach right sizing rule to an Ocean cluster.
+
+__Arguments__
+
+- __ocean_id (String)__: ID of the Ocean Cluster
+- __rule_name (String)__: Ocean right sizing rule
+- __namespaces (List[Namespace])__: List of namespaces to attach the right sizing rule to
+
+__Returns__
+
+`(Object)`: Ocean Right Sizing Rule API response
+
+detach_right_sizing_rule
+
+```python
+OceanRightSizingClient.detach_right_sizing_rule(
+ ocean_id: str, rule_name: str, namespaces:
+ typing.List[spotinst_sdk2.models.ocean.rightsizing.Namespace])
+```
+
+Detach right sizing rule from an Ocean cluster.
+
+__Arguments__
+
+- __ocean_id (String)__: ID of the Ocean Cluster
+- __rule_name (String)__: Ocean right sizing rule
+- __namespaces (List[Namespace])__: List of namespaces to detach the right sizing rule from
+
+__Returns__
+
+`(Object)`: Ocean Right Sizing Rule API response
+
+get_right_sizing_rule
+
+```python
+OceanRightSizingClient.get_right_sizing_rule(ocean_id: str,
+ rule_name: str)
+```
+
+Get right sizing rule for an Ocean cluster.
+
+__Arguments__
+
+- __ocean_id (String)__: ID of the Ocean Cluster
+- __rule_name (String)__: Name of the Right Sizing Rule
+
+__Returns__
+
+`(Object)`: Ocean Right Sizing Rule API response
+
+list_right_sizing_rules
+
+```python
+OceanRightSizingClient.list_right_sizing_rules(ocean_id: str)
+```
+
+Get right sizing rule for an Ocean cluster.
+
+__Arguments__
+
+- __ocean_id (String)__: ID of the Ocean Cluster
+
+
+__Returns__
+
+`(Object)`: Ocean Right Sizing Rules API response
+
+get_ocean_right_sizing_recommendations
+
+```python
+OceanRightSizingClient.get_ocean_right_sizing_recommendations(
+ ocean_id: str,
+ cluster_resources: ClusterResources = None,
+ cluster_labels: ClusterLabels = None)
+```
+
+Attach right sizing rule to an Ocean cluster.
+
+__Arguments__
+
+- __ocean_id (String)__: ID of the Ocean Cluster
+- __cluster_resources (ClusterResources)__: Cluster Resources
+- __cluster_labels (ClusterLabels)__: Cluster Labels
+
+__Returns__
+
+`(Object)`: Ocean Right Sizing Rule API response
+
diff --git a/docs/models/ocean/rightsizing.md b/docs/models/ocean/rightsizing.md
new file mode 100644
index 00000000..af676cab
--- /dev/null
+++ b/docs/models/ocean/rightsizing.md
@@ -0,0 +1,304 @@
+spotinst_sdk2.models.ocean.rightsizing
+
+
+IntervalHours
+
+```python
+IntervalHours(self,
+ start_time: str = 'd3043820717d74d9a17694c176d39733',
+ end_time: str = 'd3043820717d74d9a17694c176d39733')
+```
+
+__Arguments__
+
+- __start_time__: str
+- __end_time__: str
+
+IntervalDays
+
+```python
+IntervalDays(cls, value, names=None, *, module, qualname, type, start)
+```
+An enumeration.
+Friday
+
+
+Monday
+
+
+Saturday
+
+
+Sunday
+
+
+Thursday
+
+
+Tuesday
+
+
+Wednesday
+
+
+WeeklyRepetitionBasis
+
+```python
+WeeklyRepetitionBasis(
+ self,
+ interval_days:
+ typing.List[spotinst_sdk2.models.ocean.rightsizing.IntervalDays] = 'd3043820717d74d9a17694c176d39733',
+ interval_hours: IntervalHours = 'd3043820717d74d9a17694c176d39733')
+```
+
+__Arguments__
+
+- __interval_days__: List[IntervalDays]
+- __interval_hours__: IntervalHours
+
+WeekOfTheMonth
+
+```python
+WeekOfTheMonth(cls, value, names=None, *, module, qualname, type, start)
+```
+An enumeration.
+First
+
+
+Fourth
+
+
+Last
+
+
+Second
+
+
+Third
+
+
+MonthlyRepetitionBasis
+
+```python
+MonthlyRepetitionBasis(
+ self,
+ interval_months: typing.List[int] = 'd3043820717d74d9a17694c176d39733',
+ week_of_the_month:
+ typing.List[spotinst_sdk2.models.ocean.rightsizing.WeekOfTheMonth] = 'd3043820717d74d9a17694c176d39733',
+ weekly_repetition_basis:
+ WeeklyRepetitionBasis = 'd3043820717d74d9a17694c176d39733')
+```
+
+__Arguments__
+
+- __interval_months__: List[int]
+- __week_of_the_month__: List[WeekOfTheMonth]
+- __weekly_repetition_basis__: WeeklyRepetitionBasis
+
+RepetitionBasis
+
+```python
+RepetitionBasis(cls,
+ value,
+ names=None,
+ *,
+ module,
+ qualname,
+ type,
+ start)
+```
+An enumeration.
+Monthly
+
+
+Weekly
+
+
+RecommendationApplicationInterval
+
+```python
+RecommendationApplicationInterval(
+ self,
+ repetition_basis: RepetitionBasis = 'd3043820717d74d9a17694c176d39733',
+ monthly_repetition_basis:
+ MonthlyRepetitionBasis = 'd3043820717d74d9a17694c176d39733',
+ weekly_repetition_basis:
+ WeeklyRepetitionBasis = 'd3043820717d74d9a17694c176d39733')
+```
+
+__Arguments__
+
+- __repetition_basis__: RepetitionBasis
+- __monthly_repetition_basis__: MonthlyRepetitionBasis
+- __weekly_repetition_basis__: WeeklyRepetitionBasis
+
+RecommendationApplicationMinThreshold
+
+```python
+RecommendationApplicationMinThreshold(
+ self,
+ cpu_percentage: float = 'd3043820717d74d9a17694c176d39733',
+ memory_percentage: float = 'd3043820717d74d9a17694c176d39733')
+```
+
+__Arguments__
+
+- __cpu_percentage__: float
+- __memory_percentage__: float
+
+CPU
+
+```python
+CPU(self,
+ min: int = 'd3043820717d74d9a17694c176d39733',
+ max: int = 'd3043820717d74d9a17694c176d39733')
+```
+
+__Arguments__
+
+- __min__: int
+- __max__: int
+
+Memory
+
+```python
+Memory(self,
+ min: int = 'd3043820717d74d9a17694c176d39733',
+ max: int = 'd3043820717d74d9a17694c176d39733')
+```
+
+__Arguments__
+
+- __min__: int
+- __max__: int
+
+RecommendationApplicationBoundaries
+
+```python
+RecommendationApplicationBoundaries(
+ self,
+ cpu: CPU = 'd3043820717d74d9a17694c176d39733',
+ memory: Memory = 'd3043820717d74d9a17694c176d39733')
+```
+
+__Arguments__
+
+- __cpu__: CPU
+- __memory__: Memory
+
+RecommendationApplicationOverheadValues
+
+```python
+RecommendationApplicationOverheadValues(
+ self,
+ cpu_percentage: float = 'd3043820717d74d9a17694c176d39733',
+ memory_percentage: float = 'd3043820717d74d9a17694c176d39733')
+```
+
+__Arguments__
+
+- __cpu_percentage__: float
+- __memory_percentage__: float
+
+RecommendationApplicationHPA
+
+```python
+RecommendationApplicationHPA(
+ self,
+ allow_h_p_a_recommendations: bool = 'd3043820717d74d9a17694c176d39733'
+)
+```
+
+__Arguments__
+
+- __allow_h_p_a_recommendations__: bool
+
+Label
+
+```python
+Label(self,
+ key: str = 'd3043820717d74d9a17694c176d39733',
+ value: str = 'd3043820717d74d9a17694c176d39733')
+```
+
+__Arguments__
+
+- __key__: str
+- __value__: str
+
+Workload
+
+```python
+Workload(self,
+ name: str = 'd3043820717d74d9a17694c176d39733',
+ workload_type: str = 'd3043820717d74d9a17694c176d39733',
+ regex_name: str = 'd3043820717d74d9a17694c176d39733')
+```
+
+__Arguments__
+
+- __name__: str
+- __workload_type__: str
+- __regex_name__: str
+
+Namespace
+
+```python
+Namespace(
+ self,
+ namespace_name: str = 'd3043820717d74d9a17694c176d39733',
+ labels:
+ typing.List[spotinst_sdk2.models.ocean.rightsizing.Label] = 'd3043820717d74d9a17694c176d39733',
+ workloads:
+ typing.List[spotinst_sdk2.models.ocean.rightsizing.Workload] = 'd3043820717d74d9a17694c176d39733'
+)
+```
+
+__Arguments__
+
+- __namespace_name__: str
+- __labels__: List[Label]
+- __workloads__: List[Workload]
+
+ClusterResources
+
+```python
+ClusterResources(self, data: dict)
+```
+
+__Arguments__
+
+- __data__: dict
+
+ClusterLabels
+
+```python
+ClusterLabels(self, data: dict)
+```
+
+__Arguments__
+
+- __data__: dict
+
+RestartReplicas
+
+```python
+RestartReplicas(cls,
+ value,
+ names=None,
+ *,
+ module,
+ qualname,
+ type,
+ start)
+```
+An enumeration.
+All_manifest
+
+
+More_than_one_replica
+
+
+No_restart
+
+
diff --git a/pydocmd.yml b/pydocmd.yml
index 0a724792..2fa4a709 100755
--- a/pydocmd.yml
+++ b/pydocmd.yml
@@ -27,8 +27,8 @@ generate:
- spotinst_sdk2.clients.ocean.OceanGcpClient++
- clients/ocean/ocean_ecs_client.md:
- spotinst_sdk2.clients.ocean.OceanEcsClient++
-# - clients/ocean/ocean_rightsizing_client.md:
-# - spotinst_sdk2.clients.ocean.OceanRightSizingClient++
+ - clients/ocean/ocean_rightsizing_client.md:
+ - spotinst_sdk2.clients.ocean.OceanRightSizingClient++
- clients/ocean_cd/ocean_cd_client.md:
- spotinst_sdk2.clients.ocean_cd.OceanCDClient++
- clients/subscription/subscription_client.md:
@@ -63,8 +63,8 @@ generate:
- spotinst_sdk2.models.ocean.gcp++
- models/ocean/ecs.md:
- spotinst_sdk2.models.ocean.ecs++
-# - models/ocean/rightsizing.md:
-# - spotinst_sdk2.models.ocean.rightsizing++
+ - models/ocean/rightsizing.md:
+ - spotinst_sdk2.models.ocean.rightsizing++
- models/ocean_cd.md:
- spotinst_sdk2.models.ocean_cd++
- spotinst_sdk2.models.ocean_cd.rollout_spec++
diff --git a/spotinst_sdk2/__init__.py b/spotinst_sdk2/__init__.py
index d5334e54..32c8afc6 100644
--- a/spotinst_sdk2/__init__.py
+++ b/spotinst_sdk2/__init__.py
@@ -13,6 +13,7 @@
from spotinst_sdk2.clients.ocean_cd import *
from spotinst_sdk2.clients.hpc import *
+
class SpotinstSession:
def __init__(self,
base_url=None,
@@ -54,25 +55,25 @@ def client(self, service, print_output=True, log_level=None, user_agent=None, ti
"ocean_aws": OceanAwsClient(session=self.session, print_output=print_output, log_level=log_level,
user_agent=user_agent, timeout=timeout),
"ocean_azure": OceanAzureClient(session=self.session, print_output=print_output, log_level=log_level,
- user_agent=user_agent, timeout=timeout),
- "ocean_gcp": OceanGcpClient(session=self.session, print_output=print_output, log_level=log_level,
user_agent=user_agent, timeout=timeout),
+ "ocean_gcp": OceanGcpClient(session=self.session, print_output=print_output, log_level=log_level,
+ user_agent=user_agent, timeout=timeout),
"ocean_ecs": OceanEcsClient(session=self.session, print_output=print_output, log_level=log_level,
user_agent=user_agent, timeout=timeout),
"ocean_rightsizing": OceanRightSizingClient(session=self.session, print_output=print_output, log_level=log_level,
- user_agent=user_agent, timeout=timeout),
+ user_agent=user_agent, timeout=timeout),
"oceancd": OceanCDClient(session=self.session, print_output=print_output, log_level=log_level,
- user_agent=user_agent, timeout=timeout),
+ user_agent=user_agent, timeout=timeout),
"managed_instance_aws": ManagedInstanceAwsClient(session=self.session, print_output=print_output,
log_level=log_level, user_agent=user_agent,
timeout=timeout),
"subscription": SubscriptionClient(session=self.session, print_output=print_output, log_level=log_level,
user_agent=user_agent, timeout=timeout),
"hpc": HPCAwsClient(session=self.session, print_output=print_output,
- log_level=log_level, user_agent=user_agent, timeout=timeout)
+ log_level=log_level, user_agent=user_agent, timeout=timeout)
}
client = switcher.get(service)
if client is None:
raise ValueError(f"Invalid service selected: {service}")
- return client
\ No newline at end of file
+ return client
diff --git a/spotinst_sdk2/models/setup/azure/__init__.py b/spotinst_sdk2/models/setup/azure/__init__.py
index 9d1373bb..dbda7e23 100644
--- a/spotinst_sdk2/models/setup/azure/__init__.py
+++ b/spotinst_sdk2/models/setup/azure/__init__.py
@@ -3,6 +3,8 @@
none = "d3043820717d74d9a17694c176d39733"
# region AzureCredentials
+
+
class AzureCredentials:
"""
# Arguments
@@ -11,11 +13,12 @@ class AzureCredentials:
tenant_id: str
subscription_id: str
"""
+
def __init__(
- self,
- client_id,
- client_secret,
- tenant_id,
+ self,
+ client_id,
+ client_secret,
+ tenant_id,
subscription_id):
self.client_id = client_id
@@ -23,11 +26,13 @@ def __init__(
self.tenant_id = tenant_id
self.subscription_id = subscription_id
+
class AzureSetCredentialsRequest:
"""
# Arguments
azure_credentials: AzureCredentials
"""
+
def __init__(self, azure_credentials):
self.client_id = azure_credentials.client_id
self.client_secret = azure_credentials.client_secret
@@ -40,4 +45,4 @@ def to_json(self):
default=lambda o: o.__dict__,
sort_keys=True,
indent=4)
-# endregion
\ No newline at end of file
+# endregion
diff --git a/spotinst_sdk2/models/setup/gcp/__init__.py b/spotinst_sdk2/models/setup/gcp/__init__.py
index 8d0069db..ba175646 100644
--- a/spotinst_sdk2/models/setup/gcp/__init__.py
+++ b/spotinst_sdk2/models/setup/gcp/__init__.py
@@ -3,17 +3,21 @@
none = "d3043820717d74d9a17694c176d39733"
# region GcpCredentials
+
+
class GcpCredentials:
"""
# Arguments
serviceAccount: ServiceAccount
"""
+
def __init__(
- self,
+ self,
serviceAccount):
self.serviceAccount = serviceAccount
+
class ServiceAccount:
"""
# Arguments
@@ -28,8 +32,9 @@ class ServiceAccount:
auth_provider_x509_cert_url: str
client_x509_cert_url: str
"""
+
def __init__(
- self,
+ self,
type,
project_id,
private_key_id,
@@ -52,11 +57,13 @@ def __init__(
self.auth_provider_x509_cert_url = auth_provider_x509_cert_url
self.client_x509_cert_url = client_x509_cert_url
+
class GcpSetCredentialsRequest:
"""
# Arguments
gcp_credentials: GcpCredentials
"""
+
def __init__(self, gcp_credentials):
self.serviceAccount = gcp_credentials.serviceAccount
@@ -66,4 +73,4 @@ def to_json(self):
default=lambda o: o.__dict__,
sort_keys=True,
indent=4)
-# endregion
\ No newline at end of file
+# endregion
diff --git a/spotinst_sdk2/version.py b/spotinst_sdk2/version.py
index 6e9b3ce4..254db7b7 100644
--- a/spotinst_sdk2/version.py
+++ b/spotinst_sdk2/version.py
@@ -1 +1 @@
-__version__ = '3.14.0'
+__version__ = '3.15.0'