use std::sync::Arc;
use crate::core::client::{VimClient, Result};
#[derive(Clone)]
pub struct VStorageObjectManagerBase {
client: Arc<dyn VimClient>,
mo_id: String,
}
impl VStorageObjectManagerBase {
pub fn new(client: Arc<dyn VimClient>, mo_id: &str) -> Self {
Self {
client,
mo_id: mo_id.to_string(),
}
}
pub async fn v_storage_object_create_snapshot_ex_task(&self, id: &crate::types::structs::Id, datastore: &crate::types::structs::ManagedObjectReference, description: &str) -> Result<crate::types::structs::ManagedObjectReference> {
let input = VStorageObjectCreateSnapshotExRequestType {id, datastore, description, };
let bytes = self.client.invoke("", "VStorageObjectManagerBase", &self.mo_id, "VStorageObjectCreateSnapshotEx_Task", Some(&input)).await?;
let result: crate::types::structs::ManagedObjectReference = crate::core::client::unmarshal(self.client.transport(), &bytes)?;
Ok(result)
}
pub async fn v_storage_object_delete_snapshot_ex_task(&self, id: &crate::types::structs::Id, datastore: &crate::types::structs::ManagedObjectReference, snapshot_id: &crate::types::structs::Id) -> Result<crate::types::structs::ManagedObjectReference> {
let input = VStorageObjectDeleteSnapshotExRequestType {id, datastore, snapshot_id, };
let bytes = self.client.invoke("", "VStorageObjectManagerBase", &self.mo_id, "VStorageObjectDeleteSnapshotEx_Task", Some(&input)).await?;
let result: crate::types::structs::ManagedObjectReference = crate::core::client::unmarshal(self.client.transport(), &bytes)?;
Ok(result)
}
pub async fn v_storage_object_delete_snapshot_ex_2_task(&self, id: &crate::types::structs::Id, datastore: &crate::types::structs::ManagedObjectReference, snapshot_id: &crate::types::structs::Id) -> Result<crate::types::structs::ManagedObjectReference> {
let input = VStorageObjectDeleteSnapshotEx2RequestType {id, datastore, snapshot_id, };
let bytes = self.client.invoke("", "VStorageObjectManagerBase", &self.mo_id, "VStorageObjectDeleteSnapshotEx2_Task", Some(&input)).await?;
let result: crate::types::structs::ManagedObjectReference = crate::core::client::unmarshal(self.client.transport(), &bytes)?;
Ok(result)
}
pub async fn v_storage_object_extend_disk_ex_task(&self, id: &crate::types::structs::Id, datastore: &crate::types::structs::ManagedObjectReference, new_capacity_in_mb: i64) -> Result<crate::types::structs::ManagedObjectReference> {
let input = VStorageObjectExtendDiskExRequestType {id, datastore, new_capacity_in_mb, };
let bytes = self.client.invoke("", "VStorageObjectManagerBase", &self.mo_id, "VStorageObjectExtendDiskEx_Task", Some(&input)).await?;
let result: crate::types::structs::ManagedObjectReference = crate::core::client::unmarshal(self.client.transport(), &bytes)?;
Ok(result)
}
pub async fn rename_v_storage_object_ex(&self, id: &crate::types::structs::Id, datastore: &crate::types::structs::ManagedObjectReference, name: &str) -> Result<crate::types::structs::VslmVClockInfo> {
let input = RenameVStorageObjectExRequestType {id, datastore, name, };
let bytes = self.client.invoke("", "VStorageObjectManagerBase", &self.mo_id, "RenameVStorageObjectEx", Some(&input)).await?;
let result: crate::types::structs::VslmVClockInfo = crate::core::client::unmarshal(self.client.transport(), &bytes)?;
Ok(result)
}
pub async fn revert_v_storage_object_ex_task(&self, id: &crate::types::structs::Id, datastore: &crate::types::structs::ManagedObjectReference, snapshot_id: &crate::types::structs::Id) -> Result<crate::types::structs::ManagedObjectReference> {
let input = RevertVStorageObjectExRequestType {id, datastore, snapshot_id, };
let bytes = self.client.invoke("", "VStorageObjectManagerBase", &self.mo_id, "RevertVStorageObjectEx_Task", Some(&input)).await?;
let result: crate::types::structs::ManagedObjectReference = crate::core::client::unmarshal(self.client.transport(), &bytes)?;
Ok(result)
}
}
struct VStorageObjectCreateSnapshotExRequestType<'a> {
id: &'a crate::types::structs::Id,
datastore: &'a crate::types::structs::ManagedObjectReference,
description: &'a str,
}
impl<'a> miniserde::Serialize for VStorageObjectCreateSnapshotExRequestType<'a> {
fn begin(&self) -> miniserde::ser::Fragment<'_> {
miniserde::ser::Fragment::Map(Box::new(VStorageObjectCreateSnapshotExRequestTypeSer { data: self, seq: 0 }))
}
}
struct VStorageObjectCreateSnapshotExRequestTypeSer<'b, 'a> {
data: &'b VStorageObjectCreateSnapshotExRequestType<'a>,
seq: usize,
}
impl<'b, 'a> miniserde::ser::Map for VStorageObjectCreateSnapshotExRequestTypeSer<'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"), &"VStorageObjectCreateSnapshotExRequestType")),
1 => return Some((std::borrow::Cow::Borrowed("id"), &self.data.id as &dyn miniserde::Serialize)),
2 => return Some((std::borrow::Cow::Borrowed("datastore"), &self.data.datastore as &dyn miniserde::Serialize)),
3 => return Some((std::borrow::Cow::Borrowed("description"), &self.data.description as &dyn miniserde::Serialize)),
_ => return None,
}
}
}
struct VStorageObjectDeleteSnapshotExRequestType<'a> {
id: &'a crate::types::structs::Id,
datastore: &'a crate::types::structs::ManagedObjectReference,
snapshot_id: &'a crate::types::structs::Id,
}
impl<'a> miniserde::Serialize for VStorageObjectDeleteSnapshotExRequestType<'a> {
fn begin(&self) -> miniserde::ser::Fragment<'_> {
miniserde::ser::Fragment::Map(Box::new(VStorageObjectDeleteSnapshotExRequestTypeSer { data: self, seq: 0 }))
}
}
struct VStorageObjectDeleteSnapshotExRequestTypeSer<'b, 'a> {
data: &'b VStorageObjectDeleteSnapshotExRequestType<'a>,
seq: usize,
}
impl<'b, 'a> miniserde::ser::Map for VStorageObjectDeleteSnapshotExRequestTypeSer<'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"), &"VStorageObjectDeleteSnapshotExRequestType")),
1 => return Some((std::borrow::Cow::Borrowed("id"), &self.data.id as &dyn miniserde::Serialize)),
2 => return Some((std::borrow::Cow::Borrowed("datastore"), &self.data.datastore as &dyn miniserde::Serialize)),
3 => return Some((std::borrow::Cow::Borrowed("snapshotId"), &self.data.snapshot_id as &dyn miniserde::Serialize)),
_ => return None,
}
}
}
struct VStorageObjectDeleteSnapshotEx2RequestType<'a> {
id: &'a crate::types::structs::Id,
datastore: &'a crate::types::structs::ManagedObjectReference,
snapshot_id: &'a crate::types::structs::Id,
}
impl<'a> miniserde::Serialize for VStorageObjectDeleteSnapshotEx2RequestType<'a> {
fn begin(&self) -> miniserde::ser::Fragment<'_> {
miniserde::ser::Fragment::Map(Box::new(VStorageObjectDeleteSnapshotEx2RequestTypeSer { data: self, seq: 0 }))
}
}
struct VStorageObjectDeleteSnapshotEx2RequestTypeSer<'b, 'a> {
data: &'b VStorageObjectDeleteSnapshotEx2RequestType<'a>,
seq: usize,
}
impl<'b, 'a> miniserde::ser::Map for VStorageObjectDeleteSnapshotEx2RequestTypeSer<'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"), &"VStorageObjectDeleteSnapshotEx2RequestType")),
1 => return Some((std::borrow::Cow::Borrowed("id"), &self.data.id as &dyn miniserde::Serialize)),
2 => return Some((std::borrow::Cow::Borrowed("datastore"), &self.data.datastore as &dyn miniserde::Serialize)),
3 => return Some((std::borrow::Cow::Borrowed("snapshotId"), &self.data.snapshot_id as &dyn miniserde::Serialize)),
_ => return None,
}
}
}
struct VStorageObjectExtendDiskExRequestType<'a> {
id: &'a crate::types::structs::Id,
datastore: &'a crate::types::structs::ManagedObjectReference,
new_capacity_in_mb: i64,
}
impl<'a> miniserde::Serialize for VStorageObjectExtendDiskExRequestType<'a> {
fn begin(&self) -> miniserde::ser::Fragment<'_> {
miniserde::ser::Fragment::Map(Box::new(VStorageObjectExtendDiskExRequestTypeSer { data: self, seq: 0 }))
}
}
struct VStorageObjectExtendDiskExRequestTypeSer<'b, 'a> {
data: &'b VStorageObjectExtendDiskExRequestType<'a>,
seq: usize,
}
impl<'b, 'a> miniserde::ser::Map for VStorageObjectExtendDiskExRequestTypeSer<'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"), &"VStorageObjectExtendDiskExRequestType")),
1 => return Some((std::borrow::Cow::Borrowed("id"), &self.data.id as &dyn miniserde::Serialize)),
2 => return Some((std::borrow::Cow::Borrowed("datastore"), &self.data.datastore as &dyn miniserde::Serialize)),
3 => return Some((std::borrow::Cow::Borrowed("newCapacityInMB"), &self.data.new_capacity_in_mb as &dyn miniserde::Serialize)),
_ => return None,
}
}
}
struct RenameVStorageObjectExRequestType<'a> {
id: &'a crate::types::structs::Id,
datastore: &'a crate::types::structs::ManagedObjectReference,
name: &'a str,
}
impl<'a> miniserde::Serialize for RenameVStorageObjectExRequestType<'a> {
fn begin(&self) -> miniserde::ser::Fragment<'_> {
miniserde::ser::Fragment::Map(Box::new(RenameVStorageObjectExRequestTypeSer { data: self, seq: 0 }))
}
}
struct RenameVStorageObjectExRequestTypeSer<'b, 'a> {
data: &'b RenameVStorageObjectExRequestType<'a>,
seq: usize,
}
impl<'b, 'a> miniserde::ser::Map for RenameVStorageObjectExRequestTypeSer<'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"), &"RenameVStorageObjectExRequestType")),
1 => return Some((std::borrow::Cow::Borrowed("id"), &self.data.id as &dyn miniserde::Serialize)),
2 => return Some((std::borrow::Cow::Borrowed("datastore"), &self.data.datastore as &dyn miniserde::Serialize)),
3 => return Some((std::borrow::Cow::Borrowed("name"), &self.data.name as &dyn miniserde::Serialize)),
_ => return None,
}
}
}
struct RevertVStorageObjectExRequestType<'a> {
id: &'a crate::types::structs::Id,
datastore: &'a crate::types::structs::ManagedObjectReference,
snapshot_id: &'a crate::types::structs::Id,
}
impl<'a> miniserde::Serialize for RevertVStorageObjectExRequestType<'a> {
fn begin(&self) -> miniserde::ser::Fragment<'_> {
miniserde::ser::Fragment::Map(Box::new(RevertVStorageObjectExRequestTypeSer { data: self, seq: 0 }))
}
}
struct RevertVStorageObjectExRequestTypeSer<'b, 'a> {
data: &'b RevertVStorageObjectExRequestType<'a>,
seq: usize,
}
impl<'b, 'a> miniserde::ser::Map for RevertVStorageObjectExRequestTypeSer<'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"), &"RevertVStorageObjectExRequestType")),
1 => return Some((std::borrow::Cow::Borrowed("id"), &self.data.id as &dyn miniserde::Serialize)),
2 => return Some((std::borrow::Cow::Borrowed("datastore"), &self.data.datastore as &dyn miniserde::Serialize)),
3 => return Some((std::borrow::Cow::Borrowed("snapshotId"), &self.data.snapshot_id as &dyn miniserde::Serialize)),
_ => return None,
}
}
}