CP-25081: Set platform parameters. (#1820)

* CP-25081: Set platform parameters.

* Optimize qemu-upstream handling code.

* Support Enter/Esc keyboard handling in AttachUsbDialog.

* Fix a logic error in showing qemu-upstream warning.

* Update bindings from REQ-158 XenServer build 129.
This commit is contained in:
Michael 2017-10-18 19:52:53 +08:00 committed by Mihaela Stoica
parent 16b52d1c3f
commit a375c8a119
26 changed files with 868 additions and 212 deletions

View File

@ -125,8 +125,10 @@
//
// AttachUsbDialog
//
this.AcceptButton = this.buttonAttach;
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.CancelButton = this.buttonCancel;
this.Controls.Add(this.tableLayoutPanel1);
this.Name = "AttachUsbDialog";
((System.ComponentModel.ISupportInitialize)(this.pictureBoxAlert)).EndInit();

View File

@ -42,7 +42,7 @@ namespace XenAdmin.Dialogs
{
private VM _vm;
private List<Host> possibleHosts;
public AttachUsbDialog(VM vm): base(vm.Connection)
{
_vm = vm;
@ -72,6 +72,8 @@ namespace XenAdmin.Dialogs
{
Program.AssertOnEventThread();
labelWarningLine3.Visible = !_vm.UsingUpstreamQemu();
treeUsbList.ClearAllNodes();
treeUsbList.BeginUpdate();
try

View File

@ -474,6 +474,9 @@
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>96, 96</value>
</data>
<data name="$this.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="$this.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>

View File

@ -41,19 +41,26 @@ namespace XenAdmin.Actions
public class CreateVUSBAction : PureAsyncAction
{
private PUSB _pusb;
private VM _vm;
private Dictionary<string, string> _other_config = null;
public CreateVUSBAction(PUSB pusb, VM vm) :
base(pusb.Connection, String.Format(Messages.ACTION_VUSB_CREATING, pusb.Name(), vm.Name()))
{
_pusb = pusb;
_vm = vm;
VM = vm;
}
protected override void Run()
{
XenRef<VUSB> vusbRef = VUSB.create(Session, _vm.opaque_ref, _pusb.USB_group, _other_config);
if (!VM.UsingUpstreamQemu())
{
Dictionary<string, string> platform = VM.platform == null ?
new Dictionary<string, string>() :
new Dictionary<string, string>(VM.platform);
platform["device-model"] = "qemu-upstream-compat";
VM.set_platform(Session, VM.opaque_ref, platform);
}
XenRef<VUSB> vusbRef = VUSB.create(Session, VM.opaque_ref, _pusb.USB_group, null);
Description = Messages.ACTION_VUSB_CREATED;
}
}

View File

@ -1824,6 +1824,13 @@ namespace XenAPI
return vm != null && vm.Equals(this);
}); // null if none
}
public bool UsingUpstreamQemu()
{
return (platform != null) &&
platform.ContainsKey("device-model") &&
platform["device-model"] == "qemu-upstream-compat";
}
}
public struct VMStartupOptions

View File

@ -261,6 +261,9 @@
<data name="COULD_NOT_IMPORT_DATABASE" xml:space="preserve">
<value>An error occurred while attempting to import a database from a metadata VDI</value>
</data>
<data name="COULD_NOT_UPDATE_IGMP_SNOOPING_EVERYWHERE" xml:space="preserve">
<value>The IGMP Snooping setting cannot be applied for some of the host, network(s).</value>
</data>
<data name="CPU_FEATURE_MASKING_NOT_SUPPORTED" xml:space="preserve">
<value>The CPU does not support masking of features.</value>
</data>
@ -687,6 +690,9 @@
<data name="NETWORK_CONTAINS_VIF" xml:space="preserve">
<value>The network contains active VIFs ({0}) and cannot be deleted.</value>
</data>
<data name="NETWORK_INCOMPATIBLE_PURPOSES" xml:space="preserve">
<value>You tried to add a purpose to a network but the new purpose is not compatible with an existing purpose of the network or other networks.</value>
</data>
<data name="NETWORK_UNMANAGED" xml:space="preserve">
<value>The network is not managed by xapi.</value>
</data>
@ -735,6 +741,9 @@
<data name="OUT_OF_SPACE" xml:space="preserve">
<value>There is not enough space to upload the update</value>
</data>
<data name="PASSTHROUGH_NOT_ENABLED" xml:space="preserve">
<value>The passthrough_enabled must be true before passthrough usb to vm.</value>
</data>
<data name="PATCH_ALREADY_APPLIED" xml:space="preserve">
<value>The update {0} has already been applied</value>
</data>
@ -1223,6 +1232,12 @@ Authorized Roles: {1}</value>
<data name="SR_BACKEND_FAILURE_226" xml:space="preserve">
<value>Invalid local path</value>
</data>
<data name="SR_BACKEND_FAILURE_227" xml:space="preserve">
<value>Given SMB version is not allowed. Choose either 1.0 or 3.0</value>
</data>
<data name="SR_BACKEND_FAILURE_228" xml:space="preserve">
<value>Require &quot;-o&quot; along with xe-mount-isosr</value>
</data>
<data name="SR_BACKEND_FAILURE_24" xml:space="preserve">
<value>The specified VDI is currently in use</value>
</data>
@ -1409,6 +1424,9 @@ Authorized Roles: {1}</value>
<data name="SR_BACKEND_FAILURE_46" xml:space="preserve">
<value>The VDI is not available</value>
</data>
<data name="SR_BACKEND_FAILURE_460" xml:space="preserve">
<value>Failed to calculate changed blocks for given VDIs.</value>
</data>
<data name="SR_BACKEND_FAILURE_47" xml:space="preserve">
<value>The storage repository is not available</value>
</data>
@ -1649,6 +1667,9 @@ Authorized Roles: {1}</value>
<data name="TOO_MANY_STORAGE_MIGRATES" xml:space="preserve">
<value>You reached the maximal number of concurrently migrating VMs.</value>
</data>
<data name="TOO_MANY_VUSBS" xml:space="preserve">
<value>The VM has too many VUSBs.</value>
</data>
<data name="TRANSPORT_PIF_NOT_CONFIGURED" xml:space="preserve">
<value>The tunnel transport PIF has no IP configuration set.</value>
</data>
@ -1694,6 +1715,21 @@ Authorized Roles: {1}</value>
<data name="UPDATE_PRECHECK_FAILED_WRONG_SERVER_VERSION" xml:space="preserve">
<value>The update precheck stage failed: the server is of an incorrect version.</value>
</data>
<data name="USB_ALREADY_ATTACHED" xml:space="preserve">
<value>The USB device is currently attached to a VM.</value>
</data>
<data name="USB_GROUP_CONFLICT" xml:space="preserve">
<value>USB_groups are currently restricted to contain no more than one VUSB.</value>
</data>
<data name="USB_GROUP_CONTAINS_NO_PUSBS" xml:space="preserve">
<value>The USB group does not contain any PUSBs.</value>
</data>
<data name="USB_GROUP_CONTAINS_PUSB" xml:space="preserve">
<value>The USB group contains active PUSBs and cannot be deleted.</value>
</data>
<data name="USB_GROUP_CONTAINS_VUSB" xml:space="preserve">
<value>The USB group contains active VUSBs and cannot be deleted.</value>
</data>
<data name="USER_IS_NOT_LOCAL_SUPERUSER" xml:space="preserve">
<value>Only the local superuser can perform this operation</value>
</data>
@ -1845,7 +1881,7 @@ Authorized Roles: {1}</value>
<value>You attempted an operation on a VM that needed it to be in state &apos;{1}&apos; but was in state &apos;{2}&apos;.</value>
</data>
<data name="VM_BIOS_STRINGS_ALREADY_SET" xml:space="preserve">
<value>The BIOS strings for this VM have already been set and cannot be changed anymore.</value>
<value>The BIOS strings for this VM have already been set and cannot be changed.</value>
</data>
<data name="VM_CALL_PLUGIN_RATE_LIMIT" xml:space="preserve">
<value>There is a minimal interval required between consecutive plugin calls made on the same VM, please wait before retry.</value>
@ -1886,11 +1922,14 @@ Authorized Roles: {1}</value>
<data name="VM_HAS_VGPU" xml:space="preserve">
<value>This operation could not be performed, because the VM has one or more virtual GPUs.</value>
</data>
<data name="VM_HAS_VUSBS" xml:space="preserve">
<value>The operation is not allowed when the VM has VUSBs.</value>
</data>
<data name="VM_HOST_INCOMPATIBLE_VERSION" xml:space="preserve">
<value>This VM operation cannot be performed on an older-versioned host during an upgrade.</value>
</data>
<data name="VM_HOST_INCOMPATIBLE_VERSION_MIGRATE" xml:space="preserve">
<value>You attempted to migrate a VM to a destination host running a version of XenServer older than the source host.</value>
<value>You attempted to migrate a VM to a destination host which is older than the source host.</value>
</data>
<data name="VM_HOST_INCOMPATIBLE_VIRTUAL_HARDWARE_PLATFORM_VERSION" xml:space="preserve">
<value>The VM&apos;s Virtual Hardware Platform version is incompatible with this host.</value>
@ -1994,6 +2033,9 @@ Authorized Roles: {1}</value>
<data name="VM_REQUIRES_VGPU" xml:space="preserve">
<value>The VM cannot start because no GPU is available</value>
</data>
<data name="VM_REQUIRES_VUSB" xml:space="preserve">
<value>You attempted to run a VM on a host on which the VUSB required by the VM cannot be allocated on any PUSBs in the USB_group needed by the VM.</value>
</data>
<data name="VM_REVERT_FAILED" xml:space="preserve">
<value>An error occurred while reverting the specified virtual machine to the specified snapshot</value>
</data>

View File

@ -281,6 +281,16 @@ namespace XenAPI
return result;
}
internal static List<Vdi_nbd_server_info> Proxy_Vdi_nbd_server_infoArrayToVdi_nbd_server_infoList(Proxy_Vdi_nbd_server_info[] input)
{
List<Vdi_nbd_server_info> result = new List<Vdi_nbd_server_info>();
foreach (Proxy_Vdi_nbd_server_info pd in input)
{
result.Add(new Vdi_nbd_server_info(pd));
}
return result;
}
internal static Object EnumParseDefault(Type t, string s)
{
try

View File

@ -1119,7 +1119,7 @@ namespace XenAPI
/// <param name="_host">The opaque_ref of the given host</param>
public static List<XenRef<PUSB>> get_PUSBs(Session session, string _host)
{
return XenRef<PUSB>.Create(session.proxy.host_get_pusbs(session.uuid, (_host != null) ? _host : "").parse());
return XenRef<PUSB>.Create(session.proxy.host_get_pusbs(session.uuid, _host ?? "").parse());
}
/// <summary>
@ -2343,7 +2343,7 @@ namespace XenAPI
}
/// <summary>
/// Get the installed server SSL certificate.
/// Get the installed server public TLS certificate.
/// First published in XenServer 5.5.
/// </summary>
/// <param name="session">The session</param>
@ -2354,7 +2354,7 @@ namespace XenAPI
}
/// <summary>
/// Get the installed server SSL certificate.
/// Get the installed server public TLS certificate.
/// First published in XenServer 5.5.
/// </summary>
/// <param name="session">The session</param>

View File

@ -636,7 +636,7 @@ namespace XenAPI
{
try
{
string k = (key != null) ? key : "";
string k = key ?? "";
string v = vusb_operations_helper.ToString(table[key]);
result[k] = v;
}

View File

@ -42,7 +42,7 @@ namespace XenAPI
/// </summary>
public partial class Message : XenObject<Message>
{
public enum MessageType { POOL_CPU_FEATURES_UP, POOL_CPU_FEATURES_DOWN, HOST_CPU_FEATURES_UP, HOST_CPU_FEATURES_DOWN, BOND_STATUS_CHANGED, VMSS_SNAPSHOT_MISSED_EVENT, VMSS_XAPI_LOGON_FAILURE, VMSS_LICENSE_ERROR, VMSS_SNAPSHOT_FAILED, VMSS_SNAPSHOT_SUCCEEDED, VMSS_SNAPSHOT_LOCK_FAILED, VMPP_SNAPSHOT_ARCHIVE_ALREADY_EXISTS, VMPP_ARCHIVE_MISSED_EVENT, VMPP_SNAPSHOT_MISSED_EVENT, VMPP_XAPI_LOGON_FAILURE, VMPP_LICENSE_ERROR, VMPP_ARCHIVE_TARGET_UNMOUNT_FAILED, VMPP_ARCHIVE_TARGET_MOUNT_FAILED, VMPP_ARCHIVE_SUCCEEDED, VMPP_ARCHIVE_FAILED_0, VMPP_ARCHIVE_LOCK_FAILED, VMPP_SNAPSHOT_FAILED, VMPP_SNAPSHOT_SUCCEEDED, VMPP_SNAPSHOT_LOCK_FAILED, PVS_PROXY_SR_OUT_OF_SPACE, PVS_PROXY_NO_SERVER_AVAILABLE, PVS_PROXY_SETUP_FAILED, PVS_PROXY_NO_CACHE_SR_AVAILABLE, LICENSE_SERVER_VERSION_OBSOLETE, LICENSE_SERVER_UNREACHABLE, LICENSE_NOT_AVAILABLE, GRACE_LICENSE, LICENSE_SERVER_UNAVAILABLE, LICENSE_SERVER_CONNECTED, LICENSE_EXPIRED, LICENSE_EXPIRES_SOON, LICENSE_DOES_NOT_SUPPORT_POOLING, MULTIPATH_PERIODIC_ALERT, EXTAUTH_IN_POOL_IS_NON_HOMOGENEOUS, EXTAUTH_INIT_IN_HOST_FAILED, WLB_OPTIMIZATION_ALERT, WLB_CONSULTATION_FAILED, ALARM, PBD_PLUG_FAILED_ON_SERVER_START, POOL_MASTER_TRANSITION, HOST_CLOCK_WENT_BACKWARDS, HOST_CLOCK_SKEW_DETECTED, HOST_SYNC_DATA_FAILED, VM_CLONED, VM_CRASHED, VM_RESUMED, VM_SUSPENDED, VM_REBOOTED, VM_SHUTDOWN, VM_STARTED, VCPU_QOS_FAILED, VBD_QOS_FAILED, VIF_QOS_FAILED, IP_CONFIGURED_PIF_CAN_UNPLUG, METADATA_LUN_BROKEN, METADATA_LUN_HEALTHY, HA_HOST_WAS_FENCED, HA_HOST_FAILED, HA_PROTECTED_VM_RESTART_FAILED, HA_POOL_DROP_IN_PLAN_EXISTS_FOR, HA_POOL_OVERCOMMITTED, HA_NETWORK_BONDING_ERROR, HA_XAPI_HEALTHCHECK_APPROACHING_TIMEOUT, HA_STATEFILE_APPROACHING_TIMEOUT, HA_HEARTBEAT_APPROACHING_TIMEOUT, HA_STATEFILE_LOST, unknown };
public enum MessageType { POOL_CPU_FEATURES_UP, POOL_CPU_FEATURES_DOWN, HOST_CPU_FEATURES_UP, HOST_CPU_FEATURES_DOWN, BOND_STATUS_CHANGED, VDI_CBT_RESIZE_FAILED, VDI_CBT_SNAPSHOT_FAILED, VDI_CBT_METADATA_INCONSISTENT, VMSS_SNAPSHOT_MISSED_EVENT, VMSS_XAPI_LOGON_FAILURE, VMSS_LICENSE_ERROR, VMSS_SNAPSHOT_FAILED, VMSS_SNAPSHOT_SUCCEEDED, VMSS_SNAPSHOT_LOCK_FAILED, VMPP_SNAPSHOT_ARCHIVE_ALREADY_EXISTS, VMPP_ARCHIVE_MISSED_EVENT, VMPP_SNAPSHOT_MISSED_EVENT, VMPP_XAPI_LOGON_FAILURE, VMPP_LICENSE_ERROR, VMPP_ARCHIVE_TARGET_UNMOUNT_FAILED, VMPP_ARCHIVE_TARGET_MOUNT_FAILED, VMPP_ARCHIVE_SUCCEEDED, VMPP_ARCHIVE_FAILED_0, VMPP_ARCHIVE_LOCK_FAILED, VMPP_SNAPSHOT_FAILED, VMPP_SNAPSHOT_SUCCEEDED, VMPP_SNAPSHOT_LOCK_FAILED, PVS_PROXY_SR_OUT_OF_SPACE, PVS_PROXY_NO_SERVER_AVAILABLE, PVS_PROXY_SETUP_FAILED, PVS_PROXY_NO_CACHE_SR_AVAILABLE, LICENSE_SERVER_VERSION_OBSOLETE, LICENSE_SERVER_UNREACHABLE, LICENSE_NOT_AVAILABLE, GRACE_LICENSE, LICENSE_SERVER_UNAVAILABLE, LICENSE_SERVER_CONNECTED, LICENSE_EXPIRED, LICENSE_EXPIRES_SOON, LICENSE_DOES_NOT_SUPPORT_POOLING, MULTIPATH_PERIODIC_ALERT, EXTAUTH_IN_POOL_IS_NON_HOMOGENEOUS, EXTAUTH_INIT_IN_HOST_FAILED, WLB_OPTIMIZATION_ALERT, WLB_CONSULTATION_FAILED, ALARM, PBD_PLUG_FAILED_ON_SERVER_START, POOL_MASTER_TRANSITION, HOST_CLOCK_WENT_BACKWARDS, HOST_CLOCK_SKEW_DETECTED, HOST_SYNC_DATA_FAILED, VM_CLONED, VM_CRASHED, VM_RESUMED, VM_SUSPENDED, VM_REBOOTED, VM_SHUTDOWN, VM_STARTED, VCPU_QOS_FAILED, VBD_QOS_FAILED, VIF_QOS_FAILED, IP_CONFIGURED_PIF_CAN_UNPLUG, METADATA_LUN_BROKEN, METADATA_LUN_HEALTHY, HA_HOST_WAS_FENCED, HA_HOST_FAILED, HA_PROTECTED_VM_RESTART_FAILED, HA_POOL_DROP_IN_PLAN_EXISTS_FOR, HA_POOL_OVERCOMMITTED, HA_NETWORK_BONDING_ERROR, HA_XAPI_HEALTHCHECK_APPROACHING_TIMEOUT, HA_STATEFILE_APPROACHING_TIMEOUT, HA_HEARTBEAT_APPROACHING_TIMEOUT, HA_STATEFILE_LOST, unknown };
public MessageType Type
{
@ -60,6 +60,12 @@ namespace XenAPI
return MessageType.HOST_CPU_FEATURES_DOWN;
case "BOND_STATUS_CHANGED":
return MessageType.BOND_STATUS_CHANGED;
case "VDI_CBT_RESIZE_FAILED":
return MessageType.VDI_CBT_RESIZE_FAILED;
case "VDI_CBT_SNAPSHOT_FAILED":
return MessageType.VDI_CBT_SNAPSHOT_FAILED;
case "VDI_CBT_METADATA_INCONSISTENT":
return MessageType.VDI_CBT_METADATA_INCONSISTENT;
case "VMSS_SNAPSHOT_MISSED_EVENT":
return MessageType.VMSS_SNAPSHOT_MISSED_EVENT;
case "VMSS_XAPI_LOGON_FAILURE":

View File

@ -60,7 +60,8 @@ namespace XenAPI
Dictionary<string, XenRef<Blob>> blobs,
string[] tags,
network_default_locking_mode default_locking_mode,
Dictionary<XenRef<VIF>, string> assigned_ips)
Dictionary<XenRef<VIF>, string> assigned_ips,
List<network_purpose> purpose)
{
this.uuid = uuid;
this.name_label = name_label;
@ -77,6 +78,7 @@ namespace XenAPI
this.tags = tags;
this.default_locking_mode = default_locking_mode;
this.assigned_ips = assigned_ips;
this.purpose = purpose;
}
/// <summary>
@ -105,6 +107,7 @@ namespace XenAPI
tags = update.tags;
default_locking_mode = update.default_locking_mode;
assigned_ips = update.assigned_ips;
purpose = update.purpose;
}
internal void UpdateFromProxy(Proxy_Network proxy)
@ -124,6 +127,7 @@ namespace XenAPI
tags = proxy.tags == null ? new string[] {} : (string [])proxy.tags;
default_locking_mode = proxy.default_locking_mode == null ? (network_default_locking_mode) 0 : (network_default_locking_mode)Helper.EnumParseDefault(typeof(network_default_locking_mode), (string)proxy.default_locking_mode);
assigned_ips = proxy.assigned_ips == null ? null : Maps.convert_from_proxy_XenRefVIF_string(proxy.assigned_ips);
purpose = proxy.purpose == null ? null : Helper.StringArrayToEnumList<network_purpose>(proxy.purpose);
}
public Proxy_Network ToProxy()
@ -144,6 +148,7 @@ namespace XenAPI
result_.tags = tags;
result_.default_locking_mode = network_default_locking_mode_helper.ToString(default_locking_mode);
result_.assigned_ips = Maps.convert_to_proxy_XenRefVIF_string(assigned_ips);
result_.purpose = (purpose != null) ? Helper.ObjectListToStringArray(purpose) : new string[] {};
return result_;
}
@ -168,6 +173,7 @@ namespace XenAPI
tags = Marshalling.ParseStringArray(table, "tags");
default_locking_mode = (network_default_locking_mode)Helper.EnumParseDefault(typeof(network_default_locking_mode), Marshalling.ParseString(table, "default_locking_mode"));
assigned_ips = Maps.convert_from_proxy_XenRefVIF_string(Marshalling.ParseHashTable(table, "assigned_ips"));
purpose = Helper.StringArrayToEnumList<network_purpose>(Marshalling.ParseStringArray(table, "purpose"));
}
public bool DeepEquals(Network other, bool ignoreCurrentOperations)
@ -193,7 +199,8 @@ namespace XenAPI
Helper.AreEqual2(this._blobs, other._blobs) &&
Helper.AreEqual2(this._tags, other._tags) &&
Helper.AreEqual2(this._default_locking_mode, other._default_locking_mode) &&
Helper.AreEqual2(this._assigned_ips, other._assigned_ips);
Helper.AreEqual2(this._assigned_ips, other._assigned_ips) &&
Helper.AreEqual2(this._purpose, other._purpose);
}
public override string SaveChanges(Session session, string opaqueRef, Network server)
@ -471,6 +478,17 @@ namespace XenAPI
return Maps.convert_from_proxy_XenRefVIF_string(session.proxy.network_get_assigned_ips(session.uuid, _network ?? "").parse());
}
/// <summary>
/// Get the purpose field of the given network.
/// First published in Unreleased.
/// </summary>
/// <param name="session">The session</param>
/// <param name="_network">The opaque_ref of the given network</param>
public static List<network_purpose> get_purpose(Session session, string _network)
{
return Helper.StringArrayToEnumList<network_purpose>(session.proxy.network_get_purpose(session.uuid, _network ?? "").parse());
}
/// <summary>
/// Set the name/label field of the given network.
/// First published in XenServer 4.0.
@ -658,6 +676,54 @@ namespace XenAPI
return XenRef<Task>.Create(session.proxy.async_network_set_default_locking_mode(session.uuid, _network ?? "", network_default_locking_mode_helper.ToString(_value)).parse());
}
/// <summary>
/// Give a network a new purpose (if not present already)
/// First published in Unreleased.
/// </summary>
/// <param name="session">The session</param>
/// <param name="_network">The opaque_ref of the given network</param>
/// <param name="_value">The purpose to add</param>
public static void add_purpose(Session session, string _network, network_purpose _value)
{
session.proxy.network_add_purpose(session.uuid, _network ?? "", network_purpose_helper.ToString(_value)).parse();
}
/// <summary>
/// Give a network a new purpose (if not present already)
/// First published in Unreleased.
/// </summary>
/// <param name="session">The session</param>
/// <param name="_network">The opaque_ref of the given network</param>
/// <param name="_value">The purpose to add</param>
public static XenRef<Task> async_add_purpose(Session session, string _network, network_purpose _value)
{
return XenRef<Task>.Create(session.proxy.async_network_add_purpose(session.uuid, _network ?? "", network_purpose_helper.ToString(_value)).parse());
}
/// <summary>
/// Remove a purpose from a network (if present)
/// First published in Unreleased.
/// </summary>
/// <param name="session">The session</param>
/// <param name="_network">The opaque_ref of the given network</param>
/// <param name="_value">The purpose to remove</param>
public static void remove_purpose(Session session, string _network, network_purpose _value)
{
session.proxy.network_remove_purpose(session.uuid, _network ?? "", network_purpose_helper.ToString(_value)).parse();
}
/// <summary>
/// Remove a purpose from a network (if present)
/// First published in Unreleased.
/// </summary>
/// <param name="session">The session</param>
/// <param name="_network">The opaque_ref of the given network</param>
/// <param name="_value">The purpose to remove</param>
public static XenRef<Task> async_remove_purpose(Session session, string _network, network_purpose _value)
{
return XenRef<Task>.Create(session.proxy.async_network_remove_purpose(session.uuid, _network ?? "", network_purpose_helper.ToString(_value)).parse());
}
/// <summary>
/// Return a list of all the networks known to the system.
/// First published in XenServer 4.0.
@ -953,5 +1019,24 @@ namespace XenAPI
}
}
private Dictionary<XenRef<VIF>, string> _assigned_ips;
/// <summary>
/// Set of purposes for which the server will use this network
/// First published in Unreleased.
/// </summary>
public virtual List<network_purpose> purpose
{
get { return _purpose; }
set
{
if (!Helper.AreEqual(value, _purpose))
{
_purpose = value;
Changed = true;
NotifyPropertyChanged("purpose");
}
}
}
private List<network_purpose> _purpose;
}
}

View File

@ -76,7 +76,8 @@ namespace XenAPI
primary_address_type primary_address_type,
bool managed,
Dictionary<string, string> properties,
string[] capabilities)
string[] capabilities,
pif_igmp_status igmp_snooping_status)
{
this.uuid = uuid;
this.device = device;
@ -109,6 +110,7 @@ namespace XenAPI
this.managed = managed;
this.properties = properties;
this.capabilities = capabilities;
this.igmp_snooping_status = igmp_snooping_status;
}
/// <summary>
@ -153,6 +155,7 @@ namespace XenAPI
managed = update.managed;
properties = update.properties;
capabilities = update.capabilities;
igmp_snooping_status = update.igmp_snooping_status;
}
internal void UpdateFromProxy(Proxy_PIF proxy)
@ -188,6 +191,7 @@ namespace XenAPI
managed = (bool)proxy.managed;
properties = proxy.properties == null ? null : Maps.convert_from_proxy_string_string(proxy.properties);
capabilities = proxy.capabilities == null ? new string[] {} : (string [])proxy.capabilities;
igmp_snooping_status = proxy.igmp_snooping_status == null ? (pif_igmp_status) 0 : (pif_igmp_status)Helper.EnumParseDefault(typeof(pif_igmp_status), (string)proxy.igmp_snooping_status);
}
public Proxy_PIF ToProxy()
@ -224,6 +228,7 @@ namespace XenAPI
result_.managed = managed;
result_.properties = Maps.convert_to_proxy_string_string(properties);
result_.capabilities = capabilities;
result_.igmp_snooping_status = pif_igmp_status_helper.ToString(igmp_snooping_status);
return result_;
}
@ -264,6 +269,7 @@ namespace XenAPI
managed = Marshalling.ParseBool(table, "managed");
properties = Maps.convert_from_proxy_string_string(Marshalling.ParseHashTable(table, "properties"));
capabilities = Marshalling.ParseStringArray(table, "capabilities");
igmp_snooping_status = (pif_igmp_status)Helper.EnumParseDefault(typeof(pif_igmp_status), Marshalling.ParseString(table, "igmp_snooping_status"));
}
public bool DeepEquals(PIF other)
@ -303,7 +309,8 @@ namespace XenAPI
Helper.AreEqual2(this._primary_address_type, other._primary_address_type) &&
Helper.AreEqual2(this._managed, other._managed) &&
Helper.AreEqual2(this._properties, other._properties) &&
Helper.AreEqual2(this._capabilities, other._capabilities);
Helper.AreEqual2(this._capabilities, other._capabilities) &&
Helper.AreEqual2(this._igmp_snooping_status, other._igmp_snooping_status);
}
public override string SaveChanges(Session session, string opaqueRef, PIF server)
@ -690,6 +697,17 @@ namespace XenAPI
return (string [])session.proxy.pif_get_capabilities(session.uuid, _pif ?? "").parse();
}
/// <summary>
/// Get the igmp_snooping_status field of the given PIF.
/// First published in Unreleased.
/// </summary>
/// <param name="session">The session</param>
/// <param name="_pif">The opaque_ref of the given pif</param>
public static pif_igmp_status get_igmp_snooping_status(Session session, string _pif)
{
return (pif_igmp_status)Helper.EnumParseDefault(typeof(pif_igmp_status), (string)session.proxy.pif_get_igmp_snooping_status(session.uuid, _pif ?? "").parse());
}
/// <summary>
/// Set the other_config field of the given PIF.
/// First published in XenServer 4.1.
@ -1919,5 +1937,24 @@ namespace XenAPI
}
}
private string[] _capabilities;
/// <summary>
/// The IGMP snooping status of the corresponding network bridge
/// First published in Unreleased.
/// </summary>
public virtual pif_igmp_status igmp_snooping_status
{
get { return _igmp_snooping_status; }
set
{
if (!Helper.AreEqual(value, _igmp_snooping_status))
{
_igmp_snooping_status = value;
Changed = true;
NotifyPropertyChanged("igmp_snooping_status");
}
}
}
private pif_igmp_status _igmp_snooping_status;
}
}

View File

@ -33,13 +33,11 @@ using System;
using System.Collections;
using System.Collections.Generic;
using CookComputing.XmlRpc;
namespace XenAPI
{
/// <summary>
/// Describes the physical usb device
/// A physical USB device
/// First published in Unreleased.
/// </summary>
public partial class PUSB : XenObject<PUSB>
@ -127,18 +125,18 @@ namespace XenAPI
public Proxy_PUSB ToProxy()
{
Proxy_PUSB result_ = new Proxy_PUSB();
result_.uuid = (uuid != null) ? uuid : "";
result_.USB_group = (USB_group != null) ? USB_group : "";
result_.attached = (attached != null) ? attached : "";
result_.host = (host != null) ? host : "";
result_.path = (path != null) ? path : "";
result_.vendor_id = (vendor_id != null) ? vendor_id : "";
result_.vendor_desc = (vendor_desc != null) ? vendor_desc : "";
result_.product_id = (product_id != null) ? product_id : "";
result_.product_desc = (product_desc != null) ? product_desc : "";
result_.serial = (serial != null) ? serial : "";
result_.version = (version != null) ? version : "";
result_.description = (description != null) ? description : "";
result_.uuid = uuid ?? "";
result_.USB_group = USB_group ?? "";
result_.attached = attached ?? "";
result_.host = host ?? "";
result_.path = path ?? "";
result_.vendor_id = vendor_id ?? "";
result_.vendor_desc = vendor_desc ?? "";
result_.product_id = product_id ?? "";
result_.product_desc = product_desc ?? "";
result_.serial = serial ?? "";
result_.version = version ?? "";
result_.description = description ?? "";
result_.passthrough_enabled = passthrough_enabled;
result_.other_config = Maps.convert_to_proxy_string_string(other_config);
return result_;
@ -198,18 +196,10 @@ namespace XenAPI
}
else
{
if (!Helper.AreEqual2(_passthrough_enabled, server._passthrough_enabled))
{
PUSB.set_passthrough_enabled(session, opaqueRef, _passthrough_enabled);
}
if (!Helper.AreEqual2(_other_config, server._other_config))
{
PUSB.set_other_config(session, opaqueRef, _other_config);
}
if (!Helper.AreEqual2(_USB_group, server._USB_group))
{
PUSB.set_USB_group(session, opaqueRef, _USB_group);
}
return null;
}
@ -222,7 +212,7 @@ namespace XenAPI
/// <param name="_pusb">The opaque_ref of the given pusb</param>
public static PUSB get_record(Session session, string _pusb)
{
return new PUSB((Proxy_PUSB)session.proxy.pusb_get_record(session.uuid, (_pusb != null) ? _pusb : "").parse());
return new PUSB((Proxy_PUSB)session.proxy.pusb_get_record(session.uuid, _pusb ?? "").parse());
}
/// <summary>
@ -233,7 +223,7 @@ namespace XenAPI
/// <param name="_uuid">UUID of object to return</param>
public static XenRef<PUSB> get_by_uuid(Session session, string _uuid)
{
return XenRef<PUSB>.Create(session.proxy.pusb_get_by_uuid(session.uuid, (_uuid != null) ? _uuid : "").parse());
return XenRef<PUSB>.Create(session.proxy.pusb_get_by_uuid(session.uuid, _uuid ?? "").parse());
}
/// <summary>
@ -244,7 +234,7 @@ namespace XenAPI
/// <param name="_pusb">The opaque_ref of the given pusb</param>
public static string get_uuid(Session session, string _pusb)
{
return (string)session.proxy.pusb_get_uuid(session.uuid, (_pusb != null) ? _pusb : "").parse();
return (string)session.proxy.pusb_get_uuid(session.uuid, _pusb ?? "").parse();
}
/// <summary>
@ -255,7 +245,7 @@ namespace XenAPI
/// <param name="_pusb">The opaque_ref of the given pusb</param>
public static XenRef<USB_group> get_USB_group(Session session, string _pusb)
{
return XenRef<USB_group>.Create(session.proxy.pusb_get_usb_group(session.uuid, (_pusb != null) ? _pusb : "").parse());
return XenRef<USB_group>.Create(session.proxy.pusb_get_usb_group(session.uuid, _pusb ?? "").parse());
}
/// <summary>
@ -266,7 +256,7 @@ namespace XenAPI
/// <param name="_pusb">The opaque_ref of the given pusb</param>
public static XenRef<VUSB> get_attached(Session session, string _pusb)
{
return XenRef<VUSB>.Create(session.proxy.pusb_get_attached(session.uuid, (_pusb != null) ? _pusb : "").parse());
return XenRef<VUSB>.Create(session.proxy.pusb_get_attached(session.uuid, _pusb ?? "").parse());
}
/// <summary>
@ -277,7 +267,7 @@ namespace XenAPI
/// <param name="_pusb">The opaque_ref of the given pusb</param>
public static XenRef<Host> get_host(Session session, string _pusb)
{
return XenRef<Host>.Create(session.proxy.pusb_get_host(session.uuid, (_pusb != null) ? _pusb : "").parse());
return XenRef<Host>.Create(session.proxy.pusb_get_host(session.uuid, _pusb ?? "").parse());
}
/// <summary>
@ -288,7 +278,7 @@ namespace XenAPI
/// <param name="_pusb">The opaque_ref of the given pusb</param>
public static string get_path(Session session, string _pusb)
{
return (string)session.proxy.pusb_get_path(session.uuid, (_pusb != null) ? _pusb : "").parse();
return (string)session.proxy.pusb_get_path(session.uuid, _pusb ?? "").parse();
}
/// <summary>
@ -299,7 +289,7 @@ namespace XenAPI
/// <param name="_pusb">The opaque_ref of the given pusb</param>
public static string get_vendor_id(Session session, string _pusb)
{
return (string)session.proxy.pusb_get_vendor_id(session.uuid, (_pusb != null) ? _pusb : "").parse();
return (string)session.proxy.pusb_get_vendor_id(session.uuid, _pusb ?? "").parse();
}
/// <summary>
@ -310,7 +300,7 @@ namespace XenAPI
/// <param name="_pusb">The opaque_ref of the given pusb</param>
public static string get_vendor_desc(Session session, string _pusb)
{
return (string)session.proxy.pusb_get_vendor_desc(session.uuid, (_pusb != null) ? _pusb : "").parse();
return (string)session.proxy.pusb_get_vendor_desc(session.uuid, _pusb ?? "").parse();
}
/// <summary>
@ -321,7 +311,7 @@ namespace XenAPI
/// <param name="_pusb">The opaque_ref of the given pusb</param>
public static string get_product_id(Session session, string _pusb)
{
return (string)session.proxy.pusb_get_product_id(session.uuid, (_pusb != null) ? _pusb : "").parse();
return (string)session.proxy.pusb_get_product_id(session.uuid, _pusb ?? "").parse();
}
/// <summary>
@ -332,7 +322,7 @@ namespace XenAPI
/// <param name="_pusb">The opaque_ref of the given pusb</param>
public static string get_product_desc(Session session, string _pusb)
{
return (string)session.proxy.pusb_get_product_desc(session.uuid, (_pusb != null) ? _pusb : "").parse();
return (string)session.proxy.pusb_get_product_desc(session.uuid, _pusb ?? "").parse();
}
/// <summary>
@ -343,7 +333,7 @@ namespace XenAPI
/// <param name="_pusb">The opaque_ref of the given pusb</param>
public static string get_serial(Session session, string _pusb)
{
return (string)session.proxy.pusb_get_serial(session.uuid, (_pusb != null) ? _pusb : "").parse();
return (string)session.proxy.pusb_get_serial(session.uuid, _pusb ?? "").parse();
}
/// <summary>
@ -354,7 +344,7 @@ namespace XenAPI
/// <param name="_pusb">The opaque_ref of the given pusb</param>
public static string get_version(Session session, string _pusb)
{
return (string)session.proxy.pusb_get_version(session.uuid, (_pusb != null) ? _pusb : "").parse();
return (string)session.proxy.pusb_get_version(session.uuid, _pusb ?? "").parse();
}
/// <summary>
@ -365,7 +355,7 @@ namespace XenAPI
/// <param name="_pusb">The opaque_ref of the given pusb</param>
public static string get_description(Session session, string _pusb)
{
return (string)session.proxy.pusb_get_description(session.uuid, (_pusb != null) ? _pusb : "").parse();
return (string)session.proxy.pusb_get_description(session.uuid, _pusb ?? "").parse();
}
/// <summary>
@ -376,7 +366,7 @@ namespace XenAPI
/// <param name="_pusb">The opaque_ref of the given pusb</param>
public static bool get_passthrough_enabled(Session session, string _pusb)
{
return (bool)session.proxy.pusb_get_passthrough_enabled(session.uuid, (_pusb != null) ? _pusb : "").parse();
return (bool)session.proxy.pusb_get_passthrough_enabled(session.uuid, _pusb ?? "").parse();
}
/// <summary>
@ -387,19 +377,7 @@ namespace XenAPI
/// <param name="_pusb">The opaque_ref of the given pusb</param>
public static Dictionary<string, string> get_other_config(Session session, string _pusb)
{
return Maps.convert_from_proxy_string_string(session.proxy.pusb_get_other_config(session.uuid, (_pusb != null) ? _pusb : "").parse());
}
/// <summary>
/// Set the passthrough_enabled field of the given PUSB.
/// First published in Unreleased.
/// </summary>
/// <param name="session">The session</param>
/// <param name="_pusb">The opaque_ref of the given pusb</param>
/// <param name="_passthrough_enabled">New value to set</param>
public static void set_passthrough_enabled(Session session, string _pusb, bool _passthrough_enabled)
{
session.proxy.pusb_set_passthrough_enabled(session.uuid, (_pusb != null) ? _pusb : "", _passthrough_enabled).parse();
return Maps.convert_from_proxy_string_string(session.proxy.pusb_get_other_config(session.uuid, _pusb ?? "").parse());
}
/// <summary>
@ -411,7 +389,7 @@ namespace XenAPI
/// <param name="_other_config">New value to set</param>
public static void set_other_config(Session session, string _pusb, Dictionary<string, string> _other_config)
{
session.proxy.pusb_set_other_config(session.uuid, (_pusb != null) ? _pusb : "", Maps.convert_to_proxy_string_string(_other_config)).parse();
session.proxy.pusb_set_other_config(session.uuid, _pusb ?? "", Maps.convert_to_proxy_string_string(_other_config)).parse();
}
/// <summary>
@ -424,7 +402,7 @@ namespace XenAPI
/// <param name="_value">Value to add</param>
public static void add_to_other_config(Session session, string _pusb, string _key, string _value)
{
session.proxy.pusb_add_to_other_config(session.uuid, (_pusb != null) ? _pusb : "", (_key != null) ? _key : "", (_value != null) ? _value : "").parse();
session.proxy.pusb_add_to_other_config(session.uuid, _pusb ?? "", _key ?? "", _value ?? "").parse();
}
/// <summary>
@ -436,7 +414,29 @@ namespace XenAPI
/// <param name="_key">Key to remove</param>
public static void remove_from_other_config(Session session, string _pusb, string _key)
{
session.proxy.pusb_remove_from_other_config(session.uuid, (_pusb != null) ? _pusb : "", (_key != null) ? _key : "").parse();
session.proxy.pusb_remove_from_other_config(session.uuid, _pusb ?? "", _key ?? "").parse();
}
/// <summary>
///
/// First published in Unreleased.
/// </summary>
/// <param name="session">The session</param>
/// <param name="_host">The host</param>
public static void scan(Session session, string _host)
{
session.proxy.pusb_scan(session.uuid, _host ?? "").parse();
}
/// <summary>
///
/// First published in Unreleased.
/// </summary>
/// <param name="session">The session</param>
/// <param name="_host">The host</param>
public static XenRef<Task> async_scan(Session session, string _host)
{
return XenRef<Task>.Create(session.proxy.async_pusb_scan(session.uuid, _host ?? "").parse());
}
/// <summary>
@ -445,10 +445,10 @@ namespace XenAPI
/// </summary>
/// <param name="session">The session</param>
/// <param name="_pusb">The opaque_ref of the given pusb</param>
/// <param name="_value">The group to which the PUSB will be moved</param>
public static void set_USB_group(Session session, string _pusb, string _value)
/// <param name="_value">passthrough is enabled when true and disabled with false</param>
public static void set_passthrough_enabled(Session session, string _pusb, bool _value)
{
session.proxy.pusb_set_usb_group(session.uuid, (_pusb != null) ? _pusb : "", (_value != null) ? _value : "").parse();
session.proxy.pusb_set_passthrough_enabled(session.uuid, _pusb ?? "", _value).parse();
}
/// <summary>
@ -457,30 +457,10 @@ namespace XenAPI
/// </summary>
/// <param name="session">The session</param>
/// <param name="_pusb">The opaque_ref of the given pusb</param>
/// <param name="_value">The group to which the PUSB will be moved</param>
public static XenRef<Task> async_set_USB_group(Session session, string _pusb, string _value)
/// <param name="_value">passthrough is enabled when true and disabled with false</param>
public static XenRef<Task> async_set_passthrough_enabled(Session session, string _pusb, bool _value)
{
return XenRef<Task>.Create(session.proxy.async_pusb_set_usb_group(session.uuid, (_pusb != null) ? _pusb : "", (_value != null) ? _value : "").parse());
}
/// <summary>
///
/// First published in Unreleased.
/// </summary>
/// <param name="session">The session</param>
public static void scan(Session session)
{
session.proxy.pusb_scan(session.uuid).parse();
}
/// <summary>
///
/// First published in Unreleased.
/// </summary>
/// <param name="session">The session</param>
public static XenRef<Task> async_scan(Session session)
{
return XenRef<Task>.Create(session.proxy.async_pusb_scan(session.uuid).parse());
return XenRef<Task>.Create(session.proxy.async_pusb_set_passthrough_enabled(session.uuid, _pusb ?? "", _value).parse());
}
/// <summary>
@ -522,7 +502,7 @@ namespace XenAPI
private string _uuid;
/// <summary>
/// USB group the pUSB is contained in
/// USB group the PUSB is contained in
/// </summary>
public virtual XenRef<USB_group> USB_group
{
@ -576,7 +556,7 @@ namespace XenAPI
private XenRef<Host> _host;
/// <summary>
/// port path of usb device
/// port path of USB device
/// </summary>
public virtual string path
{
@ -594,7 +574,7 @@ namespace XenAPI
private string _path;
/// <summary>
/// vendor id of the usb device
/// vendor id of the USB device
/// </summary>
public virtual string vendor_id
{
@ -612,7 +592,7 @@ namespace XenAPI
private string _vendor_id;
/// <summary>
/// vendor description of the usb device
/// vendor description of the USB device
/// </summary>
public virtual string vendor_desc
{
@ -630,7 +610,7 @@ namespace XenAPI
private string _vendor_desc;
/// <summary>
/// product id of the usb device
/// product id of the USB device
/// </summary>
public virtual string product_id
{
@ -648,7 +628,7 @@ namespace XenAPI
private string _product_id;
/// <summary>
/// product description of the usb device
/// product description of the USB device
/// </summary>
public virtual string product_desc
{
@ -666,7 +646,7 @@ namespace XenAPI
private string _product_desc;
/// <summary>
/// serial of the usb device
/// serial of the USB device
/// </summary>
public virtual string serial
{
@ -684,7 +664,7 @@ namespace XenAPI
private string _serial;
/// <summary>
/// usb device version
/// USB device version
/// </summary>
public virtual string version
{
@ -702,7 +682,7 @@ namespace XenAPI
private string _version;
/// <summary>
/// usb device descritption
/// USB device description
/// </summary>
public virtual string description
{

View File

@ -80,7 +80,8 @@ namespace XenAPI
Dictionary<string, string> guest_agent_config,
Dictionary<string, string> cpu_info,
bool policy_no_vendor_device,
bool live_patching_disabled)
bool live_patching_disabled,
bool igmp_snooping_enabled)
{
this.uuid = uuid;
this.name_label = name_label;
@ -117,6 +118,7 @@ namespace XenAPI
this.cpu_info = cpu_info;
this.policy_no_vendor_device = policy_no_vendor_device;
this.live_patching_disabled = live_patching_disabled;
this.igmp_snooping_enabled = igmp_snooping_enabled;
}
/// <summary>
@ -165,6 +167,7 @@ namespace XenAPI
cpu_info = update.cpu_info;
policy_no_vendor_device = update.policy_no_vendor_device;
live_patching_disabled = update.live_patching_disabled;
igmp_snooping_enabled = update.igmp_snooping_enabled;
}
internal void UpdateFromProxy(Proxy_Pool proxy)
@ -204,6 +207,7 @@ namespace XenAPI
cpu_info = proxy.cpu_info == null ? null : Maps.convert_from_proxy_string_string(proxy.cpu_info);
policy_no_vendor_device = (bool)proxy.policy_no_vendor_device;
live_patching_disabled = (bool)proxy.live_patching_disabled;
igmp_snooping_enabled = (bool)proxy.igmp_snooping_enabled;
}
public Proxy_Pool ToProxy()
@ -244,6 +248,7 @@ namespace XenAPI
result_.cpu_info = Maps.convert_to_proxy_string_string(cpu_info);
result_.policy_no_vendor_device = policy_no_vendor_device;
result_.live_patching_disabled = live_patching_disabled;
result_.igmp_snooping_enabled = igmp_snooping_enabled;
return result_;
}
@ -288,6 +293,7 @@ namespace XenAPI
cpu_info = Maps.convert_from_proxy_string_string(Marshalling.ParseHashTable(table, "cpu_info"));
policy_no_vendor_device = Marshalling.ParseBool(table, "policy_no_vendor_device");
live_patching_disabled = Marshalling.ParseBool(table, "live_patching_disabled");
igmp_snooping_enabled = Marshalling.ParseBool(table, "igmp_snooping_enabled");
}
public bool DeepEquals(Pool other, bool ignoreCurrentOperations)
@ -333,7 +339,8 @@ namespace XenAPI
Helper.AreEqual2(this._guest_agent_config, other._guest_agent_config) &&
Helper.AreEqual2(this._cpu_info, other._cpu_info) &&
Helper.AreEqual2(this._policy_no_vendor_device, other._policy_no_vendor_device) &&
Helper.AreEqual2(this._live_patching_disabled, other._live_patching_disabled);
Helper.AreEqual2(this._live_patching_disabled, other._live_patching_disabled) &&
Helper.AreEqual2(this._igmp_snooping_enabled, other._igmp_snooping_enabled);
}
public override string SaveChanges(Session session, string opaqueRef, Pool server)
@ -814,6 +821,17 @@ namespace XenAPI
return (bool)session.proxy.pool_get_live_patching_disabled(session.uuid, _pool ?? "").parse();
}
/// <summary>
/// Get the igmp_snooping_enabled field of the given pool.
/// First published in Unreleased.
/// </summary>
/// <param name="session">The session</param>
/// <param name="_pool">The opaque_ref of the given pool</param>
public static bool get_igmp_snooping_enabled(Session session, string _pool)
{
return (bool)session.proxy.pool_get_igmp_snooping_enabled(session.uuid, _pool ?? "").parse();
}
/// <summary>
/// Set the name_label field of the given pool.
/// First published in XenServer 4.0.
@ -2030,6 +2048,30 @@ namespace XenAPI
return XenRef<Task>.Create(session.proxy.async_pool_disable_ssl_legacy(session.uuid, _pool ?? "").parse());
}
/// <summary>
/// Enable or disable IGMP Snooping on the pool.
/// First published in Unreleased.
/// </summary>
/// <param name="session">The session</param>
/// <param name="_pool">The opaque_ref of the given pool</param>
/// <param name="_value">Enable or disable IGMP Snooping on the pool</param>
public static void set_igmp_snooping_enabled(Session session, string _pool, bool _value)
{
session.proxy.pool_set_igmp_snooping_enabled(session.uuid, _pool ?? "", _value).parse();
}
/// <summary>
/// Enable or disable IGMP Snooping on the pool.
/// First published in Unreleased.
/// </summary>
/// <param name="session">The session</param>
/// <param name="_pool">The opaque_ref of the given pool</param>
/// <param name="_value">Enable or disable IGMP Snooping on the pool</param>
public static XenRef<Task> async_set_igmp_snooping_enabled(Session session, string _pool, bool _value)
{
return XenRef<Task>.Create(session.proxy.async_pool_set_igmp_snooping_enabled(session.uuid, _pool ?? "", _value).parse());
}
/// <summary>
/// Return true if the extension is available on the pool
/// First published in XenServer 7.0.
@ -2778,5 +2820,24 @@ namespace XenAPI
}
}
private bool _live_patching_disabled;
/// <summary>
/// true if IGMP snooping is enabled in the pool, false otherwise.
/// First published in Unreleased.
/// </summary>
public virtual bool igmp_snooping_enabled
{
get { return _igmp_snooping_enabled; }
set
{
if (!Helper.AreEqual(value, _igmp_snooping_enabled))
{
_igmp_snooping_enabled = value;
Changed = true;
NotifyPropertyChanged("igmp_snooping_enabled");
}
}
}
private bool _igmp_snooping_enabled;
}
}

View File

@ -604,6 +604,10 @@ namespace XenAPI
Response<bool>
pool_get_live_patching_disabled(string session, string _pool);
[XmlRpcMethod("pool.get_igmp_snooping_enabled")]
Response<bool>
pool_get_igmp_snooping_enabled(string session, string _pool);
[XmlRpcMethod("pool.set_name_label")]
Response<string>
pool_set_name_label(string session, string _pool, string _name_label);
@ -1024,6 +1028,14 @@ namespace XenAPI
Response<string>
async_pool_disable_ssl_legacy(string session, string _pool);
[XmlRpcMethod("pool.set_igmp_snooping_enabled")]
Response<string>
pool_set_igmp_snooping_enabled(string session, string _pool, bool _value);
[XmlRpcMethod("Async.pool.set_igmp_snooping_enabled")]
Response<string>
async_pool_set_igmp_snooping_enabled(string session, string _pool, bool _value);
[XmlRpcMethod("pool.has_extension")]
Response<bool>
pool_has_extension(string session, string _pool, string _name);
@ -2252,6 +2264,14 @@ namespace XenAPI
Response<string>
async_vm_retrieve_wlb_recommendations(string session, string _vm);
[XmlRpcMethod("VM.set_bios_strings")]
Response<string>
vm_set_bios_strings(string session, string _vm, Object _value);
[XmlRpcMethod("Async.VM.set_bios_strings")]
Response<string>
async_vm_set_bios_strings(string session, string _vm, Object _value);
[XmlRpcMethod("VM.copy_bios_strings")]
Response<string>
vm_copy_bios_strings(string session, string _vm, string _host);
@ -4152,6 +4172,10 @@ namespace XenAPI
Response<Object>
network_get_assigned_ips(string session, string _network);
[XmlRpcMethod("network.get_purpose")]
Response<string []>
network_get_purpose(string session, string _network);
[XmlRpcMethod("network.set_name_label")]
Response<string>
network_set_name_label(string session, string _network, string _label);
@ -4212,6 +4236,22 @@ namespace XenAPI
Response<string>
async_network_set_default_locking_mode(string session, string _network, string _value);
[XmlRpcMethod("network.add_purpose")]
Response<string>
network_add_purpose(string session, string _network, string _value);
[XmlRpcMethod("Async.network.add_purpose")]
Response<string>
async_network_add_purpose(string session, string _network, string _value);
[XmlRpcMethod("network.remove_purpose")]
Response<string>
network_remove_purpose(string session, string _network, string _value);
[XmlRpcMethod("Async.network.remove_purpose")]
Response<string>
async_network_remove_purpose(string session, string _network, string _value);
[XmlRpcMethod("network.get_all")]
Response<string []>
network_get_all(string session);
@ -4672,6 +4712,10 @@ namespace XenAPI
Response<string []>
pif_get_capabilities(string session, string _pif);
[XmlRpcMethod("PIF.get_igmp_snooping_status")]
Response<string>
pif_get_igmp_snooping_status(string session, string _pif);
[XmlRpcMethod("PIF.set_other_config")]
Response<string>
pif_set_other_config(string session, string _pif, Object _other_config);
@ -5964,22 +6008,18 @@ namespace XenAPI
Response<string>
async_vdi_data_destroy(string session, string _vdi);
[XmlRpcMethod("VDI.export_changed_blocks")]
[XmlRpcMethod("VDI.list_changed_blocks")]
Response<string>
vdi_export_changed_blocks(string session, string _vdi, string _vdi_to);
vdi_list_changed_blocks(string session, string _vdi, string _vdi_to);
[XmlRpcMethod("Async.VDI.export_changed_blocks")]
[XmlRpcMethod("Async.VDI.list_changed_blocks")]
Response<string>
async_vdi_export_changed_blocks(string session, string _vdi, string _vdi_to);
async_vdi_list_changed_blocks(string session, string _vdi, string _vdi_to);
[XmlRpcMethod("VDI.get_nbd_info")]
Response<string []>
Response<Proxy_Vdi_nbd_server_info[]>
vdi_get_nbd_info(string session, string _vdi);
[XmlRpcMethod("Async.VDI.get_nbd_info")]
Response<string>
async_vdi_get_nbd_info(string session, string _vdi);
[XmlRpcMethod("VDI.get_all")]
Response<string []>
vdi_get_all(string session);
@ -7608,6 +7648,10 @@ namespace XenAPI
Response<Object>
sdn_controller_get_all_records(string session);
[XmlRpcMethod("vdi_nbd_server_info.get_all_records")]
Response<Object>
vdi_nbd_server_info_get_all_records(string session);
[XmlRpcMethod("PUSB.get_record")]
Response<Proxy_PUSB>
pusb_get_record(string session, string _pusb);
@ -7672,10 +7716,6 @@ namespace XenAPI
Response<Object>
pusb_get_other_config(string session, string _pusb);
[XmlRpcMethod("PUSB.set_passthrough_enabled")]
Response<string>
pusb_set_passthrough_enabled(string session, string _pusb, bool _passthrough_enabled);
[XmlRpcMethod("PUSB.set_other_config")]
Response<string>
pusb_set_other_config(string session, string _pusb, Object _other_config);
@ -7688,21 +7728,21 @@ namespace XenAPI
Response<string>
pusb_remove_from_other_config(string session, string _pusb, string _key);
[XmlRpcMethod("PUSB.set_USB_group")]
Response<string>
pusb_set_usb_group(string session, string _pusb, string _value);
[XmlRpcMethod("Async.PUSB.set_USB_group")]
Response<string>
async_pusb_set_usb_group(string session, string _pusb, string _value);
[XmlRpcMethod("PUSB.scan")]
Response<string>
pusb_scan(string session);
pusb_scan(string session, string _host);
[XmlRpcMethod("Async.PUSB.scan")]
Response<string>
async_pusb_scan(string session);
async_pusb_scan(string session, string _host);
[XmlRpcMethod("PUSB.set_passthrough_enabled")]
Response<string>
pusb_set_passthrough_enabled(string session, string _pusb, bool _value);
[XmlRpcMethod("Async.PUSB.set_passthrough_enabled")]
Response<string>
async_pusb_set_passthrough_enabled(string session, string _pusb, bool _value);
[XmlRpcMethod("PUSB.get_all")]
Response<string []>
@ -7976,6 +8016,7 @@ namespace XenAPI
public Object cpu_info;
public bool policy_no_vendor_device;
public bool live_patching_disabled;
public bool igmp_snooping_enabled;
}
[XmlRpcMissingMapping(MappingAction.Ignore)]
@ -8327,6 +8368,7 @@ namespace XenAPI
public string [] tags;
public string default_locking_mode;
public Object assigned_ips;
public string [] purpose;
}
[XmlRpcMissingMapping(MappingAction.Ignore)]
@ -8405,6 +8447,7 @@ namespace XenAPI
public bool managed;
public Object properties;
public string [] capabilities;
public string igmp_snooping_status;
}
[XmlRpcMissingMapping(MappingAction.Ignore)]
@ -8818,6 +8861,16 @@ namespace XenAPI
public string port;
}
[XmlRpcMissingMapping(MappingAction.Ignore)]
public class Proxy_Vdi_nbd_server_info
{
public string exportname;
public string address;
public string port;
public string cert;
public string subject;
}
[XmlRpcMissingMapping(MappingAction.Ignore)]
public class Proxy_PUSB
{

View File

@ -33,8 +33,6 @@ using System;
using System.Collections;
using System.Collections.Generic;
using CookComputing.XmlRpc;
namespace XenAPI
{
@ -95,9 +93,9 @@ namespace XenAPI
public Proxy_USB_group ToProxy()
{
Proxy_USB_group result_ = new Proxy_USB_group();
result_.uuid = (uuid != null) ? uuid : "";
result_.name_label = (name_label != null) ? name_label : "";
result_.name_description = (name_description != null) ? name_description : "";
result_.uuid = uuid ?? "";
result_.name_label = name_label ?? "";
result_.name_description = name_description ?? "";
result_.PUSBs = (PUSBs != null) ? Helper.RefListToStringArray(PUSBs) : new string[] {};
result_.VUSBs = (VUSBs != null) ? Helper.RefListToStringArray(VUSBs) : new string[] {};
result_.other_config = Maps.convert_to_proxy_string_string(other_config);
@ -166,7 +164,7 @@ namespace XenAPI
/// <param name="_usb_group">The opaque_ref of the given usb_group</param>
public static USB_group get_record(Session session, string _usb_group)
{
return new USB_group((Proxy_USB_group)session.proxy.usb_group_get_record(session.uuid, (_usb_group != null) ? _usb_group : "").parse());
return new USB_group((Proxy_USB_group)session.proxy.usb_group_get_record(session.uuid, _usb_group ?? "").parse());
}
/// <summary>
@ -177,7 +175,7 @@ namespace XenAPI
/// <param name="_uuid">UUID of object to return</param>
public static XenRef<USB_group> get_by_uuid(Session session, string _uuid)
{
return XenRef<USB_group>.Create(session.proxy.usb_group_get_by_uuid(session.uuid, (_uuid != null) ? _uuid : "").parse());
return XenRef<USB_group>.Create(session.proxy.usb_group_get_by_uuid(session.uuid, _uuid ?? "").parse());
}
/// <summary>
@ -188,7 +186,7 @@ namespace XenAPI
/// <param name="_label">label of object to return</param>
public static List<XenRef<USB_group>> get_by_name_label(Session session, string _label)
{
return XenRef<USB_group>.Create(session.proxy.usb_group_get_by_name_label(session.uuid, (_label != null) ? _label : "").parse());
return XenRef<USB_group>.Create(session.proxy.usb_group_get_by_name_label(session.uuid, _label ?? "").parse());
}
/// <summary>
@ -199,7 +197,7 @@ namespace XenAPI
/// <param name="_usb_group">The opaque_ref of the given usb_group</param>
public static string get_uuid(Session session, string _usb_group)
{
return (string)session.proxy.usb_group_get_uuid(session.uuid, (_usb_group != null) ? _usb_group : "").parse();
return (string)session.proxy.usb_group_get_uuid(session.uuid, _usb_group ?? "").parse();
}
/// <summary>
@ -210,7 +208,7 @@ namespace XenAPI
/// <param name="_usb_group">The opaque_ref of the given usb_group</param>
public static string get_name_label(Session session, string _usb_group)
{
return (string)session.proxy.usb_group_get_name_label(session.uuid, (_usb_group != null) ? _usb_group : "").parse();
return (string)session.proxy.usb_group_get_name_label(session.uuid, _usb_group ?? "").parse();
}
/// <summary>
@ -221,7 +219,7 @@ namespace XenAPI
/// <param name="_usb_group">The opaque_ref of the given usb_group</param>
public static string get_name_description(Session session, string _usb_group)
{
return (string)session.proxy.usb_group_get_name_description(session.uuid, (_usb_group != null) ? _usb_group : "").parse();
return (string)session.proxy.usb_group_get_name_description(session.uuid, _usb_group ?? "").parse();
}
/// <summary>
@ -232,7 +230,7 @@ namespace XenAPI
/// <param name="_usb_group">The opaque_ref of the given usb_group</param>
public static List<XenRef<PUSB>> get_PUSBs(Session session, string _usb_group)
{
return XenRef<PUSB>.Create(session.proxy.usb_group_get_pusbs(session.uuid, (_usb_group != null) ? _usb_group : "").parse());
return XenRef<PUSB>.Create(session.proxy.usb_group_get_pusbs(session.uuid, _usb_group ?? "").parse());
}
/// <summary>
@ -243,7 +241,7 @@ namespace XenAPI
/// <param name="_usb_group">The opaque_ref of the given usb_group</param>
public static List<XenRef<VUSB>> get_VUSBs(Session session, string _usb_group)
{
return XenRef<VUSB>.Create(session.proxy.usb_group_get_vusbs(session.uuid, (_usb_group != null) ? _usb_group : "").parse());
return XenRef<VUSB>.Create(session.proxy.usb_group_get_vusbs(session.uuid, _usb_group ?? "").parse());
}
/// <summary>
@ -254,7 +252,7 @@ namespace XenAPI
/// <param name="_usb_group">The opaque_ref of the given usb_group</param>
public static Dictionary<string, string> get_other_config(Session session, string _usb_group)
{
return Maps.convert_from_proxy_string_string(session.proxy.usb_group_get_other_config(session.uuid, (_usb_group != null) ? _usb_group : "").parse());
return Maps.convert_from_proxy_string_string(session.proxy.usb_group_get_other_config(session.uuid, _usb_group ?? "").parse());
}
/// <summary>
@ -266,7 +264,7 @@ namespace XenAPI
/// <param name="_label">New value to set</param>
public static void set_name_label(Session session, string _usb_group, string _label)
{
session.proxy.usb_group_set_name_label(session.uuid, (_usb_group != null) ? _usb_group : "", (_label != null) ? _label : "").parse();
session.proxy.usb_group_set_name_label(session.uuid, _usb_group ?? "", _label ?? "").parse();
}
/// <summary>
@ -278,7 +276,7 @@ namespace XenAPI
/// <param name="_description">New value to set</param>
public static void set_name_description(Session session, string _usb_group, string _description)
{
session.proxy.usb_group_set_name_description(session.uuid, (_usb_group != null) ? _usb_group : "", (_description != null) ? _description : "").parse();
session.proxy.usb_group_set_name_description(session.uuid, _usb_group ?? "", _description ?? "").parse();
}
/// <summary>
@ -290,7 +288,7 @@ namespace XenAPI
/// <param name="_other_config">New value to set</param>
public static void set_other_config(Session session, string _usb_group, Dictionary<string, string> _other_config)
{
session.proxy.usb_group_set_other_config(session.uuid, (_usb_group != null) ? _usb_group : "", Maps.convert_to_proxy_string_string(_other_config)).parse();
session.proxy.usb_group_set_other_config(session.uuid, _usb_group ?? "", Maps.convert_to_proxy_string_string(_other_config)).parse();
}
/// <summary>
@ -303,7 +301,7 @@ namespace XenAPI
/// <param name="_value">Value to add</param>
public static void add_to_other_config(Session session, string _usb_group, string _key, string _value)
{
session.proxy.usb_group_add_to_other_config(session.uuid, (_usb_group != null) ? _usb_group : "", (_key != null) ? _key : "", (_value != null) ? _value : "").parse();
session.proxy.usb_group_add_to_other_config(session.uuid, _usb_group ?? "", _key ?? "", _value ?? "").parse();
}
/// <summary>
@ -315,7 +313,7 @@ namespace XenAPI
/// <param name="_key">Key to remove</param>
public static void remove_from_other_config(Session session, string _usb_group, string _key)
{
session.proxy.usb_group_remove_from_other_config(session.uuid, (_usb_group != null) ? _usb_group : "", (_key != null) ? _key : "").parse();
session.proxy.usb_group_remove_from_other_config(session.uuid, _usb_group ?? "", _key ?? "").parse();
}
/// <summary>
@ -328,7 +326,7 @@ namespace XenAPI
/// <param name="_other_config"></param>
public static XenRef<USB_group> create(Session session, string _name_label, string _name_description, Dictionary<string, string> _other_config)
{
return XenRef<USB_group>.Create(session.proxy.usb_group_create(session.uuid, (_name_label != null) ? _name_label : "", (_name_description != null) ? _name_description : "", Maps.convert_to_proxy_string_string(_other_config)).parse());
return XenRef<USB_group>.Create(session.proxy.usb_group_create(session.uuid, _name_label ?? "", _name_description ?? "", Maps.convert_to_proxy_string_string(_other_config)).parse());
}
/// <summary>
@ -341,7 +339,7 @@ namespace XenAPI
/// <param name="_other_config"></param>
public static XenRef<Task> async_create(Session session, string _name_label, string _name_description, Dictionary<string, string> _other_config)
{
return XenRef<Task>.Create(session.proxy.async_usb_group_create(session.uuid, (_name_label != null) ? _name_label : "", (_name_description != null) ? _name_description : "", Maps.convert_to_proxy_string_string(_other_config)).parse());
return XenRef<Task>.Create(session.proxy.async_usb_group_create(session.uuid, _name_label ?? "", _name_description ?? "", Maps.convert_to_proxy_string_string(_other_config)).parse());
}
/// <summary>
@ -352,7 +350,7 @@ namespace XenAPI
/// <param name="_usb_group">The opaque_ref of the given usb_group</param>
public static void destroy(Session session, string _usb_group)
{
session.proxy.usb_group_destroy(session.uuid, (_usb_group != null) ? _usb_group : "").parse();
session.proxy.usb_group_destroy(session.uuid, _usb_group ?? "").parse();
}
/// <summary>
@ -363,7 +361,7 @@ namespace XenAPI
/// <param name="_usb_group">The opaque_ref of the given usb_group</param>
public static XenRef<Task> async_destroy(Session session, string _usb_group)
{
return XenRef<Task>.Create(session.proxy.async_usb_group_destroy(session.uuid, (_usb_group != null) ? _usb_group : "").parse());
return XenRef<Task>.Create(session.proxy.async_usb_group_destroy(session.uuid, _usb_group ?? "").parse());
}
/// <summary>
@ -441,7 +439,7 @@ namespace XenAPI
private string _name_description;
/// <summary>
/// List of pUSBs in the group
/// List of PUSBs in the group
/// </summary>
public virtual List<XenRef<PUSB>> PUSBs
{
@ -459,7 +457,7 @@ namespace XenAPI
private List<XenRef<PUSB>> _PUSBs;
/// <summary>
/// List of vUSBs using the group
/// List of VUSBs using the group
/// </summary>
public virtual List<XenRef<VUSB>> VUSBs
{

View File

@ -1763,49 +1763,38 @@ namespace XenAPI
}
/// <summary>
/// Reports which blocks differ in the two VDIs. This operation is not allowed when vdi_to is attached to a VM.
/// Compare two VDIs in 64k block increments and report which blocks differ. This operation is not allowed when vdi_to is attached to a VM.
/// First published in Unreleased.
/// </summary>
/// <param name="session">The session</param>
/// <param name="_vdi">The opaque_ref of the given vdi</param>
/// <param name="_vdi_to">The second VDI.</param>
public static string export_changed_blocks(Session session, string _vdi, string _vdi_to)
public static string list_changed_blocks(Session session, string _vdi, string _vdi_to)
{
return (string)session.proxy.vdi_export_changed_blocks(session.uuid, _vdi ?? "", _vdi_to ?? "").parse();
return (string)session.proxy.vdi_list_changed_blocks(session.uuid, _vdi ?? "", _vdi_to ?? "").parse();
}
/// <summary>
/// Reports which blocks differ in the two VDIs. This operation is not allowed when vdi_to is attached to a VM.
/// Compare two VDIs in 64k block increments and report which blocks differ. This operation is not allowed when vdi_to is attached to a VM.
/// First published in Unreleased.
/// </summary>
/// <param name="session">The session</param>
/// <param name="_vdi">The opaque_ref of the given vdi</param>
/// <param name="_vdi_to">The second VDI.</param>
public static XenRef<Task> async_export_changed_blocks(Session session, string _vdi, string _vdi_to)
public static XenRef<Task> async_list_changed_blocks(Session session, string _vdi, string _vdi_to)
{
return XenRef<Task>.Create(session.proxy.async_vdi_export_changed_blocks(session.uuid, _vdi ?? "", _vdi_to ?? "").parse());
return XenRef<Task>.Create(session.proxy.async_vdi_list_changed_blocks(session.uuid, _vdi ?? "", _vdi_to ?? "").parse());
}
/// <summary>
/// Get a list of URIs specifying how to access this VDI via the NBD server of XenServer. A URI will be returned for each PIF of each host that is connected to the VDI's SR. An empty list is returned in case no network has a PIF on a host with access to the relevant SR. To access the given VDI, any of the returned URIs can be passed to the NBD server running at the IP address and port specified by that URI as the export name.
/// Get details specifying how to access this VDI via a Network Block Device server. For each of a set of NBD server addresses on which the VDI is available, the return value set contains a vdi_nbd_server_info object that contains an exportname to request once the NBD connection is established, and connection details for the address. An empty list is returned if there is no network that has a PIF on a host with access to the relevant SR, or if no such network has been assigned an NBD-related purpose in its purpose field. To access the given VDI, any of the vdi_nbd_server_info objects can be used to make a connection to a server, and then the VDI will be available by requesting the exportname.
/// First published in Unreleased.
/// </summary>
/// <param name="session">The session</param>
/// <param name="_vdi">The opaque_ref of the given vdi</param>
public static string[] get_nbd_info(Session session, string _vdi)
public static List<Vdi_nbd_server_info> get_nbd_info(Session session, string _vdi)
{
return (string [])session.proxy.vdi_get_nbd_info(session.uuid, _vdi ?? "").parse();
}
/// <summary>
/// Get a list of URIs specifying how to access this VDI via the NBD server of XenServer. A URI will be returned for each PIF of each host that is connected to the VDI's SR. An empty list is returned in case no network has a PIF on a host with access to the relevant SR. To access the given VDI, any of the returned URIs can be passed to the NBD server running at the IP address and port specified by that URI as the export name.
/// First published in Unreleased.
/// </summary>
/// <param name="session">The session</param>
/// <param name="_vdi">The opaque_ref of the given vdi</param>
public static XenRef<Task> async_get_nbd_info(Session session, string _vdi)
{
return XenRef<Task>.Create(session.proxy.async_vdi_get_nbd_info(session.uuid, _vdi ?? "").parse());
return Helper.Proxy_Vdi_nbd_server_infoArrayToVdi_nbd_server_infoList(session.proxy.vdi_get_nbd_info(session.uuid, _vdi ?? "").parse());
}
/// <summary>

View File

@ -1237,7 +1237,7 @@ namespace XenAPI
/// <param name="_vm">The opaque_ref of the given vm</param>
public static List<XenRef<VUSB>> get_VUSBs(Session session, string _vm)
{
return XenRef<VUSB>.Create(session.proxy.vm_get_vusbs(session.uuid, (_vm != null) ? _vm : "").parse());
return XenRef<VUSB>.Create(session.proxy.vm_get_vusbs(session.uuid, _vm ?? "").parse());
}
/// <summary>
@ -3639,6 +3639,30 @@ namespace XenAPI
return XenRef<Task>.Create(session.proxy.async_vm_retrieve_wlb_recommendations(session.uuid, _vm ?? "").parse());
}
/// <summary>
/// Set custom BIOS strings to this VM. VM will be given a default set of BIOS strings, only some of which can be overridden by the supplied values. Allowed keys are: 'bios-vendor', 'bios-version', 'system-manufacturer', 'system-product-name', 'system-version', 'system-serial-number', 'enclosure-asset-tag'
/// First published in Unreleased.
/// </summary>
/// <param name="session">The session</param>
/// <param name="_vm">The opaque_ref of the given vm</param>
/// <param name="_value">The custom BIOS strings as a list of key-value pairs</param>
public static void set_bios_strings(Session session, string _vm, Dictionary<string, string> _value)
{
session.proxy.vm_set_bios_strings(session.uuid, _vm ?? "", Maps.convert_to_proxy_string_string(_value)).parse();
}
/// <summary>
/// Set custom BIOS strings to this VM. VM will be given a default set of BIOS strings, only some of which can be overridden by the supplied values. Allowed keys are: 'bios-vendor', 'bios-version', 'system-manufacturer', 'system-product-name', 'system-version', 'system-serial-number', 'enclosure-asset-tag'
/// First published in Unreleased.
/// </summary>
/// <param name="session">The session</param>
/// <param name="_vm">The opaque_ref of the given vm</param>
/// <param name="_value">The custom BIOS strings as a list of key-value pairs</param>
public static XenRef<Task> async_set_bios_strings(Session session, string _vm, Dictionary<string, string> _value)
{
return XenRef<Task>.Create(session.proxy.async_vm_set_bios_strings(session.uuid, _vm ?? "", Maps.convert_to_proxy_string_string(_value)).parse());
}
/// <summary>
/// Copy the BIOS strings from the given host to this VM
/// First published in XenServer 5.6.

View File

@ -33,8 +33,6 @@ using System;
using System.Collections;
using System.Collections.Generic;
using CookComputing.XmlRpc;
namespace XenAPI
{
@ -99,13 +97,13 @@ namespace XenAPI
public Proxy_VUSB ToProxy()
{
Proxy_VUSB result_ = new Proxy_VUSB();
result_.uuid = (uuid != null) ? uuid : "";
result_.uuid = uuid ?? "";
result_.allowed_operations = (allowed_operations != null) ? Helper.ObjectListToStringArray(allowed_operations) : new string[] {};
result_.current_operations = Maps.convert_to_proxy_string_vusb_operations(current_operations);
result_.VM = (VM != null) ? VM : "";
result_.USB_group = (USB_group != null) ? USB_group : "";
result_.VM = VM ?? "";
result_.USB_group = USB_group ?? "";
result_.other_config = Maps.convert_to_proxy_string_string(other_config);
result_.attached = (attached != null) ? attached : "";
result_.attached = attached ?? "";
return result_;
}
@ -167,7 +165,7 @@ namespace XenAPI
/// <param name="_vusb">The opaque_ref of the given vusb</param>
public static VUSB get_record(Session session, string _vusb)
{
return new VUSB((Proxy_VUSB)session.proxy.vusb_get_record(session.uuid, (_vusb != null) ? _vusb : "").parse());
return new VUSB((Proxy_VUSB)session.proxy.vusb_get_record(session.uuid, _vusb ?? "").parse());
}
/// <summary>
@ -178,7 +176,7 @@ namespace XenAPI
/// <param name="_uuid">UUID of object to return</param>
public static XenRef<VUSB> get_by_uuid(Session session, string _uuid)
{
return XenRef<VUSB>.Create(session.proxy.vusb_get_by_uuid(session.uuid, (_uuid != null) ? _uuid : "").parse());
return XenRef<VUSB>.Create(session.proxy.vusb_get_by_uuid(session.uuid, _uuid ?? "").parse());
}
/// <summary>
@ -189,7 +187,7 @@ namespace XenAPI
/// <param name="_vusb">The opaque_ref of the given vusb</param>
public static string get_uuid(Session session, string _vusb)
{
return (string)session.proxy.vusb_get_uuid(session.uuid, (_vusb != null) ? _vusb : "").parse();
return (string)session.proxy.vusb_get_uuid(session.uuid, _vusb ?? "").parse();
}
/// <summary>
@ -200,7 +198,7 @@ namespace XenAPI
/// <param name="_vusb">The opaque_ref of the given vusb</param>
public static List<vusb_operations> get_allowed_operations(Session session, string _vusb)
{
return Helper.StringArrayToEnumList<vusb_operations>(session.proxy.vusb_get_allowed_operations(session.uuid, (_vusb != null) ? _vusb : "").parse());
return Helper.StringArrayToEnumList<vusb_operations>(session.proxy.vusb_get_allowed_operations(session.uuid, _vusb ?? "").parse());
}
/// <summary>
@ -211,7 +209,7 @@ namespace XenAPI
/// <param name="_vusb">The opaque_ref of the given vusb</param>
public static Dictionary<string, vusb_operations> get_current_operations(Session session, string _vusb)
{
return Maps.convert_from_proxy_string_vusb_operations(session.proxy.vusb_get_current_operations(session.uuid, (_vusb != null) ? _vusb : "").parse());
return Maps.convert_from_proxy_string_vusb_operations(session.proxy.vusb_get_current_operations(session.uuid, _vusb ?? "").parse());
}
/// <summary>
@ -222,7 +220,7 @@ namespace XenAPI
/// <param name="_vusb">The opaque_ref of the given vusb</param>
public static XenRef<VM> get_VM(Session session, string _vusb)
{
return XenRef<VM>.Create(session.proxy.vusb_get_vm(session.uuid, (_vusb != null) ? _vusb : "").parse());
return XenRef<VM>.Create(session.proxy.vusb_get_vm(session.uuid, _vusb ?? "").parse());
}
/// <summary>
@ -233,7 +231,7 @@ namespace XenAPI
/// <param name="_vusb">The opaque_ref of the given vusb</param>
public static XenRef<USB_group> get_USB_group(Session session, string _vusb)
{
return XenRef<USB_group>.Create(session.proxy.vusb_get_usb_group(session.uuid, (_vusb != null) ? _vusb : "").parse());
return XenRef<USB_group>.Create(session.proxy.vusb_get_usb_group(session.uuid, _vusb ?? "").parse());
}
/// <summary>
@ -244,7 +242,7 @@ namespace XenAPI
/// <param name="_vusb">The opaque_ref of the given vusb</param>
public static Dictionary<string, string> get_other_config(Session session, string _vusb)
{
return Maps.convert_from_proxy_string_string(session.proxy.vusb_get_other_config(session.uuid, (_vusb != null) ? _vusb : "").parse());
return Maps.convert_from_proxy_string_string(session.proxy.vusb_get_other_config(session.uuid, _vusb ?? "").parse());
}
/// <summary>
@ -255,7 +253,7 @@ namespace XenAPI
/// <param name="_vusb">The opaque_ref of the given vusb</param>
public static XenRef<PUSB> get_attached(Session session, string _vusb)
{
return XenRef<PUSB>.Create(session.proxy.vusb_get_attached(session.uuid, (_vusb != null) ? _vusb : "").parse());
return XenRef<PUSB>.Create(session.proxy.vusb_get_attached(session.uuid, _vusb ?? "").parse());
}
/// <summary>
@ -267,7 +265,7 @@ namespace XenAPI
/// <param name="_other_config">New value to set</param>
public static void set_other_config(Session session, string _vusb, Dictionary<string, string> _other_config)
{
session.proxy.vusb_set_other_config(session.uuid, (_vusb != null) ? _vusb : "", Maps.convert_to_proxy_string_string(_other_config)).parse();
session.proxy.vusb_set_other_config(session.uuid, _vusb ?? "", Maps.convert_to_proxy_string_string(_other_config)).parse();
}
/// <summary>
@ -280,7 +278,7 @@ namespace XenAPI
/// <param name="_value">Value to add</param>
public static void add_to_other_config(Session session, string _vusb, string _key, string _value)
{
session.proxy.vusb_add_to_other_config(session.uuid, (_vusb != null) ? _vusb : "", (_key != null) ? _key : "", (_value != null) ? _value : "").parse();
session.proxy.vusb_add_to_other_config(session.uuid, _vusb ?? "", _key ?? "", _value ?? "").parse();
}
/// <summary>
@ -292,11 +290,11 @@ namespace XenAPI
/// <param name="_key">Key to remove</param>
public static void remove_from_other_config(Session session, string _vusb, string _key)
{
session.proxy.vusb_remove_from_other_config(session.uuid, (_vusb != null) ? _vusb : "", (_key != null) ? _key : "").parse();
session.proxy.vusb_remove_from_other_config(session.uuid, _vusb ?? "", _key ?? "").parse();
}
/// <summary>
/// Create a new vusb record in the database only
/// Create a new VUSB record in the database only
/// First published in Unreleased.
/// </summary>
/// <param name="session">The session</param>
@ -305,11 +303,11 @@ namespace XenAPI
/// <param name="_other_config"></param>
public static XenRef<VUSB> create(Session session, string _vm, string _usb_group, Dictionary<string, string> _other_config)
{
return XenRef<VUSB>.Create(session.proxy.vusb_create(session.uuid, (_vm != null) ? _vm : "", (_usb_group != null) ? _usb_group : "", Maps.convert_to_proxy_string_string(_other_config)).parse());
return XenRef<VUSB>.Create(session.proxy.vusb_create(session.uuid, _vm ?? "", _usb_group ?? "", Maps.convert_to_proxy_string_string(_other_config)).parse());
}
/// <summary>
/// Create a new vusb record in the database only
/// Create a new VUSB record in the database only
/// First published in Unreleased.
/// </summary>
/// <param name="session">The session</param>
@ -318,7 +316,7 @@ namespace XenAPI
/// <param name="_other_config"></param>
public static XenRef<Task> async_create(Session session, string _vm, string _usb_group, Dictionary<string, string> _other_config)
{
return XenRef<Task>.Create(session.proxy.async_vusb_create(session.uuid, (_vm != null) ? _vm : "", (_usb_group != null) ? _usb_group : "", Maps.convert_to_proxy_string_string(_other_config)).parse());
return XenRef<Task>.Create(session.proxy.async_vusb_create(session.uuid, _vm ?? "", _usb_group ?? "", Maps.convert_to_proxy_string_string(_other_config)).parse());
}
/// <summary>
@ -329,7 +327,7 @@ namespace XenAPI
/// <param name="_vusb">The opaque_ref of the given vusb</param>
public static void unplug(Session session, string _vusb)
{
session.proxy.vusb_unplug(session.uuid, (_vusb != null) ? _vusb : "").parse();
session.proxy.vusb_unplug(session.uuid, _vusb ?? "").parse();
}
/// <summary>
@ -340,7 +338,7 @@ namespace XenAPI
/// <param name="_vusb">The opaque_ref of the given vusb</param>
public static XenRef<Task> async_unplug(Session session, string _vusb)
{
return XenRef<Task>.Create(session.proxy.async_vusb_unplug(session.uuid, (_vusb != null) ? _vusb : "").parse());
return XenRef<Task>.Create(session.proxy.async_vusb_unplug(session.uuid, _vusb ?? "").parse());
}
/// <summary>
@ -351,7 +349,7 @@ namespace XenAPI
/// <param name="_vusb">The opaque_ref of the given vusb</param>
public static void destroy(Session session, string _vusb)
{
session.proxy.vusb_destroy(session.uuid, (_vusb != null) ? _vusb : "").parse();
session.proxy.vusb_destroy(session.uuid, _vusb ?? "").parse();
}
/// <summary>
@ -362,7 +360,7 @@ namespace XenAPI
/// <param name="_vusb">The opaque_ref of the given vusb</param>
public static XenRef<Task> async_destroy(Session session, string _vusb)
{
return XenRef<Task>.Create(session.proxy.async_vusb_destroy(session.uuid, (_vusb != null) ? _vusb : "").parse());
return XenRef<Task>.Create(session.proxy.async_vusb_destroy(session.uuid, _vusb ?? "").parse());
}
/// <summary>
@ -440,7 +438,7 @@ namespace XenAPI
private Dictionary<string, vusb_operations> _current_operations;
/// <summary>
/// VM that owns the vUSB
/// VM that owns the VUSB
/// </summary>
public virtual XenRef<VM> VM
{
@ -458,7 +456,7 @@ namespace XenAPI
private XenRef<VM> _VM;
/// <summary>
/// USB group used by the vUSB
/// USB group used by the VUSB
/// </summary>
public virtual XenRef<USB_group> USB_group
{
@ -494,7 +492,7 @@ namespace XenAPI
private Dictionary<string, string> _other_config;
/// <summary>
/// The PSUB on which this VUSB is running
/// The PUSB on which this VUSB is running
/// </summary>
public virtual XenRef<PUSB> attached
{

View File

@ -0,0 +1,229 @@
/*
* Copyright (c) Citrix Systems, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2) Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections;
using System.Collections.Generic;
namespace XenAPI
{
/// <summary>
/// Details for connecting to a VDI using the Network Block Device protocol
/// First published in Unreleased.
/// </summary>
public partial class Vdi_nbd_server_info : XenObject<Vdi_nbd_server_info>
{
public Vdi_nbd_server_info()
{
}
public Vdi_nbd_server_info(string exportname,
string address,
long port,
string cert,
string subject)
{
this.exportname = exportname;
this.address = address;
this.port = port;
this.cert = cert;
this.subject = subject;
}
/// <summary>
/// Creates a new Vdi_nbd_server_info from a Proxy_Vdi_nbd_server_info.
/// </summary>
/// <param name="proxy"></param>
public Vdi_nbd_server_info(Proxy_Vdi_nbd_server_info proxy)
{
this.UpdateFromProxy(proxy);
}
public override void UpdateFrom(Vdi_nbd_server_info update)
{
exportname = update.exportname;
address = update.address;
port = update.port;
cert = update.cert;
subject = update.subject;
}
internal void UpdateFromProxy(Proxy_Vdi_nbd_server_info proxy)
{
exportname = proxy.exportname == null ? null : (string)proxy.exportname;
address = proxy.address == null ? null : (string)proxy.address;
port = proxy.port == null ? 0 : long.Parse((string)proxy.port);
cert = proxy.cert == null ? null : (string)proxy.cert;
subject = proxy.subject == null ? null : (string)proxy.subject;
}
public Proxy_Vdi_nbd_server_info ToProxy()
{
Proxy_Vdi_nbd_server_info result_ = new Proxy_Vdi_nbd_server_info();
result_.exportname = exportname ?? "";
result_.address = address ?? "";
result_.port = port.ToString();
result_.cert = cert ?? "";
result_.subject = subject ?? "";
return result_;
}
/// <summary>
/// Creates a new Vdi_nbd_server_info from a Hashtable.
/// </summary>
/// <param name="table"></param>
public Vdi_nbd_server_info(Hashtable table)
{
exportname = Marshalling.ParseString(table, "exportname");
address = Marshalling.ParseString(table, "address");
port = Marshalling.ParseLong(table, "port");
cert = Marshalling.ParseString(table, "cert");
subject = Marshalling.ParseString(table, "subject");
}
public bool DeepEquals(Vdi_nbd_server_info other)
{
if (ReferenceEquals(null, other))
return false;
if (ReferenceEquals(this, other))
return true;
return Helper.AreEqual2(this._exportname, other._exportname) &&
Helper.AreEqual2(this._address, other._address) &&
Helper.AreEqual2(this._port, other._port) &&
Helper.AreEqual2(this._cert, other._cert) &&
Helper.AreEqual2(this._subject, other._subject);
}
public override string SaveChanges(Session session, string opaqueRef, Vdi_nbd_server_info server)
{
if (opaqueRef == null)
{
System.Diagnostics.Debug.Assert(false, "Cannot create instances of this type on the server");
return "";
}
else
{
throw new InvalidOperationException("This type has no read/write properties");
}
}
/// <summary>
/// The exportname to request over NBD. This holds details including an authentication token, so it must be protected appropriately. Clients should regard the exportname as an opaque string or token.
/// </summary>
public virtual string exportname
{
get { return _exportname; }
set
{
if (!Helper.AreEqual(value, _exportname))
{
_exportname = value;
Changed = true;
NotifyPropertyChanged("exportname");
}
}
}
private string _exportname;
/// <summary>
/// An address on which the server can be reached; this can be IPv4, IPv6, or a DNS name.
/// </summary>
public virtual string address
{
get { return _address; }
set
{
if (!Helper.AreEqual(value, _address))
{
_address = value;
Changed = true;
NotifyPropertyChanged("address");
}
}
}
private string _address;
/// <summary>
/// The TCP port
/// </summary>
public virtual long port
{
get { return _port; }
set
{
if (!Helper.AreEqual(value, _port))
{
_port = value;
Changed = true;
NotifyPropertyChanged("port");
}
}
}
private long _port;
/// <summary>
/// The TLS certificate of the server
/// </summary>
public virtual string cert
{
get { return _cert; }
set
{
if (!Helper.AreEqual(value, _cert))
{
_cert = value;
Changed = true;
NotifyPropertyChanged("cert");
}
}
}
private string _cert;
/// <summary>
/// For convenience, this redundant field holds a subject of the certificate.
/// </summary>
public virtual string subject
{
get { return _subject; }
set
{
if (!Helper.AreEqual(value, _subject))
{
_subject = value;
Changed = true;
NotifyPropertyChanged("subject");
}
}
}
private string _subject;
}
}

View File

@ -37,7 +37,7 @@ namespace XenAPI
{
public enum cls
{
VM, Host, SR, Pool, VMPP, VMSS, PVS_proxy, unknown
VM, Host, SR, Pool, VMPP, VMSS, PVS_proxy, VDI, unknown
}
public static class cls_helper
@ -60,6 +60,8 @@ namespace XenAPI
return "VMSS";
case cls.PVS_proxy:
return "PVS_proxy";
case cls.VDI:
return "VDI";
default:
return "unknown";
}

View File

@ -0,0 +1,58 @@
/*
* Copyright (c) Citrix Systems, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2) Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
namespace XenAPI
{
public enum network_purpose
{
nbd, insecure_nbd, unknown
}
public static class network_purpose_helper
{
public static string ToString(network_purpose x)
{
switch (x)
{
case network_purpose.nbd:
return "nbd";
case network_purpose.insecure_nbd:
return "insecure_nbd";
default:
return "unknown";
}
}
}
}

View File

@ -0,0 +1,60 @@
/*
* Copyright (c) Citrix Systems, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2) Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
namespace XenAPI
{
public enum pif_igmp_status
{
enabled, disabled, unknown
}
public static class pif_igmp_status_helper
{
public static string ToString(pif_igmp_status x)
{
switch (x)
{
case pif_igmp_status.enabled:
return "enabled";
case pif_igmp_status.disabled:
return "disabled";
case pif_igmp_status.unknown:
return "unknown";
default:
return "unknown";
}
}
}
}

View File

@ -37,7 +37,7 @@ namespace XenAPI
{
public enum storage_operations
{
scan, destroy, forget, plug, unplug, update, vdi_create, vdi_introduce, vdi_destroy, vdi_resize, vdi_clone, vdi_snapshot, vdi_mirror, vdi_enable_cbt, vdi_disable_cbt, vdi_data_destroy, vdi_export_changed_blocks, vdi_set_on_boot, pbd_create, pbd_destroy, unknown
scan, destroy, forget, plug, unplug, update, vdi_create, vdi_introduce, vdi_destroy, vdi_resize, vdi_clone, vdi_snapshot, vdi_mirror, vdi_enable_cbt, vdi_disable_cbt, vdi_data_destroy, vdi_list_changed_blocks, vdi_set_on_boot, pbd_create, pbd_destroy, unknown
}
public static class storage_operations_helper
@ -78,8 +78,8 @@ namespace XenAPI
return "vdi_disable_cbt";
case storage_operations.vdi_data_destroy:
return "vdi_data_destroy";
case storage_operations.vdi_export_changed_blocks:
return "vdi_export_changed_blocks";
case storage_operations.vdi_list_changed_blocks:
return "vdi_list_changed_blocks";
case storage_operations.vdi_set_on_boot:
return "vdi_set_on_boot";
case storage_operations.pbd_create:

View File

@ -37,7 +37,7 @@ namespace XenAPI
{
public enum vdi_operations
{
clone, copy, resize, resize_online, snapshot, mirror, destroy, forget, update, force_unlock, generate_config, enable_cbt, disable_cbt, data_destroy, export_changed_blocks, set_on_boot, blocked, unknown
clone, copy, resize, resize_online, snapshot, mirror, destroy, forget, update, force_unlock, generate_config, enable_cbt, disable_cbt, data_destroy, list_changed_blocks, set_on_boot, blocked, unknown
}
public static class vdi_operations_helper
@ -74,8 +74,8 @@ namespace XenAPI
return "disable_cbt";
case vdi_operations.data_destroy:
return "data_destroy";
case vdi_operations.export_changed_blocks:
return "export_changed_blocks";
case vdi_operations.list_changed_blocks:
return "list_changed_blocks";
case vdi_operations.set_on_boot:
return "set_on_boot";
case vdi_operations.blocked:

View File

@ -366,9 +366,11 @@
<SubType>Code</SubType>
</Compile>
<Compile Include="XenAPI\network_default_locking_mode.cs" />
<Compile Include="XenAPI\network_purpose.cs" />
<Compile Include="XenAPI\PCI.cs" />
<Compile Include="XenAPI\PGPU.cs" />
<Compile Include="XenAPI\pgpu_dom0_access.cs" />
<Compile Include="XenAPI\pif_igmp_status.cs" />
<Compile Include="XenAPI\pool_allowed_operations.cs" />
<Compile Include="XenAPI\Pool_update.cs" />
<Compile Include="XenAPI\primary_address_type.cs" />
@ -383,6 +385,7 @@
<Compile Include="XenAPI\tristate_type.cs" />
<Compile Include="XenAPI\update_after_apply_guidance.cs" />
<Compile Include="XenAPI\USB_group.cs" />
<Compile Include="XenAPI\Vdi_nbd_server_info.cs" />
<Compile Include="XenAPI\VGPU.cs" />
<Compile Include="XenAPI\VGPU_type.cs" />
<Compile Include="XenAPI\vgpu_type_implementation.cs" />