use std::sync::Arc;
use crate::core::client::{VimClient, Result};
#[derive(Clone)]
pub struct StorageResourceManager {
client: Arc<dyn VimClient>,
mo_id: String,
}
impl StorageResourceManager {
pub fn new(client: Arc<dyn VimClient>, mo_id: &str) -> Self {
Self {
client,
mo_id: mo_id.to_string(),
}
}
pub async fn configure_datastore_iorm_task(&self, datastore: &crate::types::structs::ManagedObjectReference, spec: &crate::types::structs::StorageIormConfigSpec) -> Result<crate::types::structs::ManagedObjectReference> {
let input = ConfigureDatastoreIormRequestType {datastore, spec, };
let bytes = self.client.invoke("", "StorageResourceManager", &self.mo_id, "ConfigureDatastoreIORM_Task", Some(&input)).await?;
let result: crate::types::structs::ManagedObjectReference = crate::core::client::unmarshal(self.client.transport(), &bytes)?;
Ok(result)
}
pub async fn query_iorm_config_option(&self, host: &crate::types::structs::ManagedObjectReference) -> Result<crate::types::structs::StorageIormConfigOption> {
let input = QueryIormConfigOptionRequestType {host, };
let bytes = self.client.invoke("", "StorageResourceManager", &self.mo_id, "QueryIORMConfigOption", Some(&input)).await?;
let result: crate::types::structs::StorageIormConfigOption = crate::core::client::unmarshal(self.client.transport(), &bytes)?;
Ok(result)
}
pub async fn apply_storage_drs_recommendation_task(&self, key: &[String]) -> Result<crate::types::structs::ManagedObjectReference> {
let input = ApplyStorageDrsRecommendationRequestType {key, };
let bytes = self.client.invoke("", "StorageResourceManager", &self.mo_id, "ApplyStorageDrsRecommendation_Task", Some(&input)).await?;
let result: crate::types::structs::ManagedObjectReference = crate::core::client::unmarshal(self.client.transport(), &bytes)?;
Ok(result)
}
pub async fn apply_storage_drs_recommendation_to_pod_task(&self, pod: &crate::types::structs::ManagedObjectReference, key: &str) -> Result<crate::types::structs::ManagedObjectReference> {
let input = ApplyStorageDrsRecommendationToPodRequestType {pod, key, };
let bytes = self.client.invoke("", "StorageResourceManager", &self.mo_id, "ApplyStorageDrsRecommendationToPod_Task", Some(&input)).await?;
let result: crate::types::structs::ManagedObjectReference = crate::core::client::unmarshal(self.client.transport(), &bytes)?;
Ok(result)
}
pub async fn cancel_storage_drs_recommendation(&self, key: &[String]) -> Result<()> {
let input = CancelStorageDrsRecommendationRequestType {key, };
self.client.invoke_void("", "StorageResourceManager", &self.mo_id, "CancelStorageDrsRecommendation", Some(&input)).await
}
pub async fn configure_storage_drs_for_pod_task(&self, pod: &crate::types::structs::ManagedObjectReference, spec: &crate::types::structs::StorageDrsConfigSpec, modify: bool) -> Result<crate::types::structs::ManagedObjectReference> {
let input = ConfigureStorageDrsForPodRequestType {pod, spec, modify, };
let bytes = self.client.invoke("", "StorageResourceManager", &self.mo_id, "ConfigureStorageDrsForPod_Task", Some(&input)).await?;
let result: crate::types::structs::ManagedObjectReference = crate::core::client::unmarshal(self.client.transport(), &bytes)?;
Ok(result)
}
pub async fn query_datastore_performance_summary(&self, datastore: &crate::types::structs::ManagedObjectReference) -> Result<Option<Vec<crate::types::structs::StoragePerformanceSummary>>> {
let input = QueryDatastorePerformanceSummaryRequestType {datastore, };
let bytes_opt = self.client.invoke_optional("", "StorageResourceManager", &self.mo_id, "QueryDatastorePerformanceSummary", Some(&input)).await?;
match bytes_opt {
Some(ref b) => Ok(Some(crate::core::client::unmarshal_array(self.client.transport(), b)?)),
None => Ok(None),
}
}
pub async fn recommend_datastores(&self, storage_spec: &crate::types::structs::StoragePlacementSpec) -> Result<crate::types::structs::StoragePlacementResult> {
let input = RecommendDatastoresRequestType {storage_spec, };
let bytes = self.client.invoke("", "StorageResourceManager", &self.mo_id, "RecommendDatastores", Some(&input)).await?;
let result: crate::types::structs::StoragePlacementResult = crate::core::client::unmarshal(self.client.transport(), &bytes)?;
Ok(result)
}
pub async fn refresh_storage_drs_recommendation(&self, pod: &crate::types::structs::ManagedObjectReference) -> Result<()> {
let input = RefreshStorageDrsRecommendationRequestType {pod, };
self.client.invoke_void("", "StorageResourceManager", &self.mo_id, "RefreshStorageDrsRecommendation", Some(&input)).await
}
pub async fn refresh_storage_drs_recommendations_for_pod_task(&self, pod: &crate::types::structs::ManagedObjectReference) -> Result<crate::types::structs::ManagedObjectReference> {
let input = RefreshStorageDrsRecommendationsForPodRequestType {pod, };
let bytes = self.client.invoke("", "StorageResourceManager", &self.mo_id, "RefreshStorageDrsRecommendationsForPod_Task", Some(&input)).await?;
let result: crate::types::structs::ManagedObjectReference = crate::core::client::unmarshal(self.client.transport(), &bytes)?;
Ok(result)
}
pub async fn validate_storage_pod_config(&self, pod: &crate::types::structs::ManagedObjectReference, spec: &crate::types::structs::StorageDrsConfigSpec) -> Result<Option<crate::types::structs::MethodFault>> {
let input = ValidateStoragePodConfigRequestType {pod, spec, };
let bytes_opt = self.client.invoke_optional("", "StorageResourceManager", &self.mo_id, "ValidateStoragePodConfig", Some(&input)).await?;
match bytes_opt {
Some(ref b) => Ok(Some(crate::core::client::unmarshal(self.client.transport(), b)?)),
None => Ok(None),
}
}
}
struct ConfigureDatastoreIormRequestType<'a> {
datastore: &'a crate::types::structs::ManagedObjectReference,
spec: &'a crate::types::structs::StorageIormConfigSpec,
}
impl<'a> miniserde::Serialize for ConfigureDatastoreIormRequestType<'a> {
fn begin(&self) -> miniserde::ser::Fragment<'_> {
miniserde::ser::Fragment::Map(Box::new(ConfigureDatastoreIormRequestTypeSer { data: self, seq: 0 }))
}
}
struct ConfigureDatastoreIormRequestTypeSer<'b, 'a> {
data: &'b ConfigureDatastoreIormRequestType<'a>,
seq: usize,
}
impl<'b, 'a> miniserde::ser::Map for ConfigureDatastoreIormRequestTypeSer<'b, 'a> {
fn next(&mut self) -> Option<(std::borrow::Cow<'_, str>, &dyn miniserde::Serialize)> {
let seq = self.seq;
self.seq += 1;
match seq {
0 => return Some((std::borrow::Cow::Borrowed("_typeName"), &"ConfigureDatastoreIORMRequestType")),
1 => return Some((std::borrow::Cow::Borrowed("datastore"), &self.data.datastore as &dyn miniserde::Serialize)),
2 => return Some((std::borrow::Cow::Borrowed("spec"), &self.data.spec as &dyn miniserde::Serialize)),
_ => return None,
}
}
}
struct QueryIormConfigOptionRequestType<'a> {
host: &'a crate::types::structs::ManagedObjectReference,
}
impl<'a> miniserde::Serialize for QueryIormConfigOptionRequestType<'a> {
fn begin(&self) -> miniserde::ser::Fragment<'_> {
miniserde::ser::Fragment::Map(Box::new(QueryIormConfigOptionRequestTypeSer { data: self, seq: 0 }))
}
}
struct QueryIormConfigOptionRequestTypeSer<'b, 'a> {
data: &'b QueryIormConfigOptionRequestType<'a>,
seq: usize,
}
impl<'b, 'a> miniserde::ser::Map for QueryIormConfigOptionRequestTypeSer<'b, 'a> {
fn next(&mut self) -> Option<(std::borrow::Cow<'_, str>, &dyn miniserde::Serialize)> {
let seq = self.seq;
self.seq += 1;
match seq {
0 => return Some((std::borrow::Cow::Borrowed("_typeName"), &"QueryIORMConfigOptionRequestType")),
1 => return Some((std::borrow::Cow::Borrowed("host"), &self.data.host as &dyn miniserde::Serialize)),
_ => return None,
}
}
}
struct ApplyStorageDrsRecommendationRequestType<'a> {
key: &'a [String],
}
impl<'a> miniserde::Serialize for ApplyStorageDrsRecommendationRequestType<'a> {
fn begin(&self) -> miniserde::ser::Fragment<'_> {
miniserde::ser::Fragment::Map(Box::new(ApplyStorageDrsRecommendationRequestTypeSer { data: self, seq: 0 }))
}
}
struct ApplyStorageDrsRecommendationRequestTypeSer<'b, 'a> {
data: &'b ApplyStorageDrsRecommendationRequestType<'a>,
seq: usize,
}
impl<'b, 'a> miniserde::ser::Map for ApplyStorageDrsRecommendationRequestTypeSer<'b, 'a> {
fn next(&mut self) -> Option<(std::borrow::Cow<'_, str>, &dyn miniserde::Serialize)> {
let seq = self.seq;
self.seq += 1;
match seq {
0 => return Some((std::borrow::Cow::Borrowed("_typeName"), &"ApplyStorageDrsRecommendationRequestType")),
1 => return Some((std::borrow::Cow::Borrowed("key"), &self.data.key as &dyn miniserde::Serialize)),
_ => return None,
}
}
}
struct ApplyStorageDrsRecommendationToPodRequestType<'a> {
pod: &'a crate::types::structs::ManagedObjectReference,
key: &'a str,
}
impl<'a> miniserde::Serialize for ApplyStorageDrsRecommendationToPodRequestType<'a> {
fn begin(&self) -> miniserde::ser::Fragment<'_> {
miniserde::ser::Fragment::Map(Box::new(ApplyStorageDrsRecommendationToPodRequestTypeSer { data: self, seq: 0 }))
}
}
struct ApplyStorageDrsRecommendationToPodRequestTypeSer<'b, 'a> {
data: &'b ApplyStorageDrsRecommendationToPodRequestType<'a>,
seq: usize,
}
impl<'b, 'a> miniserde::ser::Map for ApplyStorageDrsRecommendationToPodRequestTypeSer<'b, 'a> {
fn next(&mut self) -> Option<(std::borrow::Cow<'_, str>, &dyn miniserde::Serialize)> {
let seq = self.seq;
self.seq += 1;
match seq {
0 => return Some((std::borrow::Cow::Borrowed("_typeName"), &"ApplyStorageDrsRecommendationToPodRequestType")),
1 => return Some((std::borrow::Cow::Borrowed("pod"), &self.data.pod as &dyn miniserde::Serialize)),
2 => return Some((std::borrow::Cow::Borrowed("key"), &self.data.key as &dyn miniserde::Serialize)),
_ => return None,
}
}
}
struct CancelStorageDrsRecommendationRequestType<'a> {
key: &'a [String],
}
impl<'a> miniserde::Serialize for CancelStorageDrsRecommendationRequestType<'a> {
fn begin(&self) -> miniserde::ser::Fragment<'_> {
miniserde::ser::Fragment::Map(Box::new(CancelStorageDrsRecommendationRequestTypeSer { data: self, seq: 0 }))
}
}
struct CancelStorageDrsRecommendationRequestTypeSer<'b, 'a> {
data: &'b CancelStorageDrsRecommendationRequestType<'a>,
seq: usize,
}
impl<'b, 'a> miniserde::ser::Map for CancelStorageDrsRecommendationRequestTypeSer<'b, 'a> {
fn next(&mut self) -> Option<(std::borrow::Cow<'_, str>, &dyn miniserde::Serialize)> {
let seq = self.seq;
self.seq += 1;
match seq {
0 => return Some((std::borrow::Cow::Borrowed("_typeName"), &"CancelStorageDrsRecommendationRequestType")),
1 => return Some((std::borrow::Cow::Borrowed("key"), &self.data.key as &dyn miniserde::Serialize)),
_ => return None,
}
}
}
struct ConfigureStorageDrsForPodRequestType<'a> {
pod: &'a crate::types::structs::ManagedObjectReference,
spec: &'a crate::types::structs::StorageDrsConfigSpec,
modify: bool,
}
impl<'a> miniserde::Serialize for ConfigureStorageDrsForPodRequestType<'a> {
fn begin(&self) -> miniserde::ser::Fragment<'_> {
miniserde::ser::Fragment::Map(Box::new(ConfigureStorageDrsForPodRequestTypeSer { data: self, seq: 0 }))
}
}
struct ConfigureStorageDrsForPodRequestTypeSer<'b, 'a> {
data: &'b ConfigureStorageDrsForPodRequestType<'a>,
seq: usize,
}
impl<'b, 'a> miniserde::ser::Map for ConfigureStorageDrsForPodRequestTypeSer<'b, 'a> {
fn next(&mut self) -> Option<(std::borrow::Cow<'_, str>, &dyn miniserde::Serialize)> {
let seq = self.seq;
self.seq += 1;
match seq {
0 => return Some((std::borrow::Cow::Borrowed("_typeName"), &"ConfigureStorageDrsForPodRequestType")),
1 => return Some((std::borrow::Cow::Borrowed("pod"), &self.data.pod as &dyn miniserde::Serialize)),
2 => return Some((std::borrow::Cow::Borrowed("spec"), &self.data.spec as &dyn miniserde::Serialize)),
3 => return Some((std::borrow::Cow::Borrowed("modify"), &self.data.modify as &dyn miniserde::Serialize)),
_ => return None,
}
}
}
struct QueryDatastorePerformanceSummaryRequestType<'a> {
datastore: &'a crate::types::structs::ManagedObjectReference,
}
impl<'a> miniserde::Serialize for QueryDatastorePerformanceSummaryRequestType<'a> {
fn begin(&self) -> miniserde::ser::Fragment<'_> {
miniserde::ser::Fragment::Map(Box::new(QueryDatastorePerformanceSummaryRequestTypeSer { data: self, seq: 0 }))
}
}
struct QueryDatastorePerformanceSummaryRequestTypeSer<'b, 'a> {
data: &'b QueryDatastorePerformanceSummaryRequestType<'a>,
seq: usize,
}
impl<'b, 'a> miniserde::ser::Map for QueryDatastorePerformanceSummaryRequestTypeSer<'b, 'a> {
fn next(&mut self) -> Option<(std::borrow::Cow<'_, str>, &dyn miniserde::Serialize)> {
let seq = self.seq;
self.seq += 1;
match seq {
0 => return Some((std::borrow::Cow::Borrowed("_typeName"), &"QueryDatastorePerformanceSummaryRequestType")),
1 => return Some((std::borrow::Cow::Borrowed("datastore"), &self.data.datastore as &dyn miniserde::Serialize)),
_ => return None,
}
}
}
struct RecommendDatastoresRequestType<'a> {
storage_spec: &'a crate::types::structs::StoragePlacementSpec,
}
impl<'a> miniserde::Serialize for RecommendDatastoresRequestType<'a> {
fn begin(&self) -> miniserde::ser::Fragment<'_> {
miniserde::ser::Fragment::Map(Box::new(RecommendDatastoresRequestTypeSer { data: self, seq: 0 }))
}
}
struct RecommendDatastoresRequestTypeSer<'b, 'a> {
data: &'b RecommendDatastoresRequestType<'a>,
seq: usize,
}
impl<'b, 'a> miniserde::ser::Map for RecommendDatastoresRequestTypeSer<'b, 'a> {
fn next(&mut self) -> Option<(std::borrow::Cow<'_, str>, &dyn miniserde::Serialize)> {
let seq = self.seq;
self.seq += 1;
match seq {
0 => return Some((std::borrow::Cow::Borrowed("_typeName"), &"RecommendDatastoresRequestType")),
1 => return Some((std::borrow::Cow::Borrowed("storageSpec"), &self.data.storage_spec as &dyn miniserde::Serialize)),
_ => return None,
}
}
}
struct RefreshStorageDrsRecommendationRequestType<'a> {
pod: &'a crate::types::structs::ManagedObjectReference,
}
impl<'a> miniserde::Serialize for RefreshStorageDrsRecommendationRequestType<'a> {
fn begin(&self) -> miniserde::ser::Fragment<'_> {
miniserde::ser::Fragment::Map(Box::new(RefreshStorageDrsRecommendationRequestTypeSer { data: self, seq: 0 }))
}
}
struct RefreshStorageDrsRecommendationRequestTypeSer<'b, 'a> {
data: &'b RefreshStorageDrsRecommendationRequestType<'a>,
seq: usize,
}
impl<'b, 'a> miniserde::ser::Map for RefreshStorageDrsRecommendationRequestTypeSer<'b, 'a> {
fn next(&mut self) -> Option<(std::borrow::Cow<'_, str>, &dyn miniserde::Serialize)> {
let seq = self.seq;
self.seq += 1;
match seq {
0 => return Some((std::borrow::Cow::Borrowed("_typeName"), &"RefreshStorageDrsRecommendationRequestType")),
1 => return Some((std::borrow::Cow::Borrowed("pod"), &self.data.pod as &dyn miniserde::Serialize)),
_ => return None,
}
}
}
struct RefreshStorageDrsRecommendationsForPodRequestType<'a> {
pod: &'a crate::types::structs::ManagedObjectReference,
}
impl<'a> miniserde::Serialize for RefreshStorageDrsRecommendationsForPodRequestType<'a> {
fn begin(&self) -> miniserde::ser::Fragment<'_> {
miniserde::ser::Fragment::Map(Box::new(RefreshStorageDrsRecommendationsForPodRequestTypeSer { data: self, seq: 0 }))
}
}
struct RefreshStorageDrsRecommendationsForPodRequestTypeSer<'b, 'a> {
data: &'b RefreshStorageDrsRecommendationsForPodRequestType<'a>,
seq: usize,
}
impl<'b, 'a> miniserde::ser::Map for RefreshStorageDrsRecommendationsForPodRequestTypeSer<'b, 'a> {
fn next(&mut self) -> Option<(std::borrow::Cow<'_, str>, &dyn miniserde::Serialize)> {
let seq = self.seq;
self.seq += 1;
match seq {
0 => return Some((std::borrow::Cow::Borrowed("_typeName"), &"RefreshStorageDrsRecommendationsForPodRequestType")),
1 => return Some((std::borrow::Cow::Borrowed("pod"), &self.data.pod as &dyn miniserde::Serialize)),
_ => return None,
}
}
}
struct ValidateStoragePodConfigRequestType<'a> {
pod: &'a crate::types::structs::ManagedObjectReference,
spec: &'a crate::types::structs::StorageDrsConfigSpec,
}
impl<'a> miniserde::Serialize for ValidateStoragePodConfigRequestType<'a> {
fn begin(&self) -> miniserde::ser::Fragment<'_> {
miniserde::ser::Fragment::Map(Box::new(ValidateStoragePodConfigRequestTypeSer { data: self, seq: 0 }))
}
}
struct ValidateStoragePodConfigRequestTypeSer<'b, 'a> {
data: &'b ValidateStoragePodConfigRequestType<'a>,
seq: usize,
}
impl<'b, 'a> miniserde::ser::Map for ValidateStoragePodConfigRequestTypeSer<'b, 'a> {
fn next(&mut self) -> Option<(std::borrow::Cow<'_, str>, &dyn miniserde::Serialize)> {
let seq = self.seq;
self.seq += 1;
match seq {
0 => return Some((std::borrow::Cow::Borrowed("_typeName"), &"ValidateStoragePodConfigRequestType")),
1 => return Some((std::borrow::Cow::Borrowed("pod"), &self.data.pod as &dyn miniserde::Serialize)),
2 => return Some((std::borrow::Cow::Borrowed("spec"), &self.data.spec as &dyn miniserde::Serialize)),
_ => return None,
}
}
}