use std::sync::Arc;
use crate::core::client::{VimClient, Result};
#[derive(Clone)]
pub struct DirectPathProfileManager {
client: Arc<dyn VimClient>,
mo_id: String,
}
impl DirectPathProfileManager {
pub fn new(client: Arc<dyn VimClient>, mo_id: &str) -> Self {
Self {
client,
mo_id: mo_id.to_string(),
}
}
pub async fn direct_path_profile_manager_create(&self, spec: &crate::types::structs::DirectPathProfileManagerCreateSpec) -> Result<String> {
let input = DirectPathProfileManagerCreateRequestType {spec, };
let bytes = self.client.invoke("", "DirectPathProfileManager", &self.mo_id, "DirectPathProfileManagerCreate", Some(&input)).await?;
let result: String = crate::core::client::unmarshal(self.client.transport(), &bytes)?;
Ok(result)
}
pub async fn direct_path_profile_manager_delete(&self, id: &str) -> Result<()> {
let input = DirectPathProfileManagerDeleteRequestType {id, };
self.client.invoke_void("", "DirectPathProfileManager", &self.mo_id, "DirectPathProfileManagerDelete", Some(&input)).await
}
pub async fn direct_path_profile_manager_list(&self, filter_spec: &crate::types::structs::DirectPathProfileManagerFilterSpec) -> Result<Option<Vec<crate::types::structs::DirectPathProfileInfo>>> {
let input = DirectPathProfileManagerListRequestType {filter_spec, };
let bytes_opt = self.client.invoke_optional("", "DirectPathProfileManager", &self.mo_id, "DirectPathProfileManagerList", 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 direct_path_profile_manager_query_capacity(&self, target: &dyn crate::types::traits::DirectPathProfileManagerTargetEntityTrait, query_spec: Option<&[Box<dyn crate::types::traits::DirectPathProfileManagerCapacityQuerySpecTrait>]>) -> Result<Option<Vec<Box<dyn crate::types::traits::DirectPathProfileManagerCapacityResultTrait>>>> {
let input = DirectPathProfileManagerQueryCapacityRequestType {target, query_spec, };
let bytes_opt = self.client.invoke_optional("", "DirectPathProfileManager", &self.mo_id, "DirectPathProfileManagerQueryCapacity", 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 direct_path_profile_manager_update(&self, id: &str, spec: &crate::types::structs::DirectPathProfileManagerUpdateSpec) -> Result<()> {
let input = DirectPathProfileManagerUpdateRequestType {id, spec, };
self.client.invoke_void("", "DirectPathProfileManager", &self.mo_id, "DirectPathProfileManagerUpdate", Some(&input)).await
}
}
struct DirectPathProfileManagerCreateRequestType<'a> {
spec: &'a crate::types::structs::DirectPathProfileManagerCreateSpec,
}
impl<'a> miniserde::Serialize for DirectPathProfileManagerCreateRequestType<'a> {
fn begin(&self) -> miniserde::ser::Fragment<'_> {
miniserde::ser::Fragment::Map(Box::new(DirectPathProfileManagerCreateRequestTypeSer { data: self, seq: 0 }))
}
}
struct DirectPathProfileManagerCreateRequestTypeSer<'b, 'a> {
data: &'b DirectPathProfileManagerCreateRequestType<'a>,
seq: usize,
}
impl<'b, 'a> miniserde::ser::Map for DirectPathProfileManagerCreateRequestTypeSer<'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"), &"DirectPathProfileManagerCreateRequestType")),
1 => return Some((std::borrow::Cow::Borrowed("spec"), &self.data.spec as &dyn miniserde::Serialize)),
_ => return None,
}
}
}
struct DirectPathProfileManagerDeleteRequestType<'a> {
id: &'a str,
}
impl<'a> miniserde::Serialize for DirectPathProfileManagerDeleteRequestType<'a> {
fn begin(&self) -> miniserde::ser::Fragment<'_> {
miniserde::ser::Fragment::Map(Box::new(DirectPathProfileManagerDeleteRequestTypeSer { data: self, seq: 0 }))
}
}
struct DirectPathProfileManagerDeleteRequestTypeSer<'b, 'a> {
data: &'b DirectPathProfileManagerDeleteRequestType<'a>,
seq: usize,
}
impl<'b, 'a> miniserde::ser::Map for DirectPathProfileManagerDeleteRequestTypeSer<'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"), &"DirectPathProfileManagerDeleteRequestType")),
1 => return Some((std::borrow::Cow::Borrowed("id"), &self.data.id as &dyn miniserde::Serialize)),
_ => return None,
}
}
}
struct DirectPathProfileManagerListRequestType<'a> {
filter_spec: &'a crate::types::structs::DirectPathProfileManagerFilterSpec,
}
impl<'a> miniserde::Serialize for DirectPathProfileManagerListRequestType<'a> {
fn begin(&self) -> miniserde::ser::Fragment<'_> {
miniserde::ser::Fragment::Map(Box::new(DirectPathProfileManagerListRequestTypeSer { data: self, seq: 0 }))
}
}
struct DirectPathProfileManagerListRequestTypeSer<'b, 'a> {
data: &'b DirectPathProfileManagerListRequestType<'a>,
seq: usize,
}
impl<'b, 'a> miniserde::ser::Map for DirectPathProfileManagerListRequestTypeSer<'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"), &"DirectPathProfileManagerListRequestType")),
1 => return Some((std::borrow::Cow::Borrowed("filterSpec"), &self.data.filter_spec as &dyn miniserde::Serialize)),
_ => return None,
}
}
}
struct DirectPathProfileManagerQueryCapacityRequestType<'a> {
target: &'a dyn crate::types::traits::DirectPathProfileManagerTargetEntityTrait,
query_spec: Option<&'a [Box<dyn crate::types::traits::DirectPathProfileManagerCapacityQuerySpecTrait>]>,
}
impl<'a> miniserde::Serialize for DirectPathProfileManagerQueryCapacityRequestType<'a> {
fn begin(&self) -> miniserde::ser::Fragment<'_> {
miniserde::ser::Fragment::Map(Box::new(DirectPathProfileManagerQueryCapacityRequestTypeSer { data: self, seq: 0 }))
}
}
struct DirectPathProfileManagerQueryCapacityRequestTypeSer<'b, 'a> {
data: &'b DirectPathProfileManagerQueryCapacityRequestType<'a>,
seq: usize,
}
impl<'b, 'a> miniserde::ser::Map for DirectPathProfileManagerQueryCapacityRequestTypeSer<'b, 'a> {
fn next(&mut self) -> Option<(std::borrow::Cow<'_, str>, &dyn miniserde::Serialize)> {
loop {
let seq = self.seq;
self.seq += 1;
match seq {
0 => return Some((std::borrow::Cow::Borrowed("_typeName"), &"DirectPathProfileManagerQueryCapacityRequestType")),
1 => return Some((std::borrow::Cow::Borrowed("target"), &self.data.target as &dyn miniserde::Serialize)),
2 => {
let Some(ref val) = self.data.query_spec else { continue; };
return Some((std::borrow::Cow::Borrowed("querySpec"), val as &dyn miniserde::Serialize));
}
_ => return None,
}
}
}
}
struct DirectPathProfileManagerUpdateRequestType<'a> {
id: &'a str,
spec: &'a crate::types::structs::DirectPathProfileManagerUpdateSpec,
}
impl<'a> miniserde::Serialize for DirectPathProfileManagerUpdateRequestType<'a> {
fn begin(&self) -> miniserde::ser::Fragment<'_> {
miniserde::ser::Fragment::Map(Box::new(DirectPathProfileManagerUpdateRequestTypeSer { data: self, seq: 0 }))
}
}
struct DirectPathProfileManagerUpdateRequestTypeSer<'b, 'a> {
data: &'b DirectPathProfileManagerUpdateRequestType<'a>,
seq: usize,
}
impl<'b, 'a> miniserde::ser::Map for DirectPathProfileManagerUpdateRequestTypeSer<'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"), &"DirectPathProfileManagerUpdateRequestType")),
1 => return Some((std::borrow::Cow::Borrowed("id"), &self.data.id as &dyn miniserde::Serialize)),
2 => return Some((std::borrow::Cow::Borrowed("spec"), &self.data.spec as &dyn miniserde::Serialize)),
_ => return None,
}
}
}