/* * 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; using CookComputing.XmlRpc; namespace XenAPI { /// /// Pool-wide updates to the host software /// First published in . /// public partial class Pool_update : XenObject { public Pool_update() { } public Pool_update(string uuid, string name_label, string name_description, long installation_size, string key, List after_apply_guidance, XenRef vdi, List> hosts) { this.uuid = uuid; this.name_label = name_label; this.name_description = name_description; this.installation_size = installation_size; this.key = key; this.after_apply_guidance = after_apply_guidance; this.vdi = vdi; this.hosts = hosts; } /// /// Creates a new Pool_update from a Proxy_Pool_update. /// /// public Pool_update(Proxy_Pool_update proxy) { this.UpdateFromProxy(proxy); } public override void UpdateFrom(Pool_update update) { uuid = update.uuid; name_label = update.name_label; name_description = update.name_description; installation_size = update.installation_size; key = update.key; after_apply_guidance = update.after_apply_guidance; vdi = update.vdi; hosts = update.hosts; } internal void UpdateFromProxy(Proxy_Pool_update proxy) { uuid = proxy.uuid == null ? null : (string)proxy.uuid; name_label = proxy.name_label == null ? null : (string)proxy.name_label; name_description = proxy.name_description == null ? null : (string)proxy.name_description; installation_size = proxy.installation_size == null ? 0 : long.Parse((string)proxy.installation_size); key = proxy.key == null ? null : (string)proxy.key; after_apply_guidance = proxy.after_apply_guidance == null ? null : Helper.StringArrayToEnumList(proxy.after_apply_guidance); vdi = proxy.vdi == null ? null : XenRef.Create(proxy.vdi); hosts = proxy.hosts == null ? null : XenRef.Create(proxy.hosts); } public Proxy_Pool_update ToProxy() { Proxy_Pool_update result_ = new Proxy_Pool_update(); result_.uuid = (uuid != null) ? uuid : ""; result_.name_label = (name_label != null) ? name_label : ""; result_.name_description = (name_description != null) ? name_description : ""; result_.installation_size = installation_size.ToString(); result_.key = (key != null) ? key : ""; result_.after_apply_guidance = (after_apply_guidance != null) ? Helper.ObjectListToStringArray(after_apply_guidance) : new string[] {}; result_.vdi = (vdi != null) ? vdi : ""; result_.hosts = (hosts != null) ? Helper.RefListToStringArray(hosts) : new string[] {}; return result_; } /// /// Creates a new Pool_update from a Hashtable. /// /// public Pool_update(Hashtable table) { uuid = Marshalling.ParseString(table, "uuid"); name_label = Marshalling.ParseString(table, "name_label"); name_description = Marshalling.ParseString(table, "name_description"); installation_size = Marshalling.ParseLong(table, "installation_size"); key = Marshalling.ParseString(table, "key"); after_apply_guidance = Helper.StringArrayToEnumList(Marshalling.ParseStringArray(table, "after_apply_guidance")); vdi = Marshalling.ParseRef(table, "vdi"); hosts = Marshalling.ParseSetRef(table, "hosts"); } public bool DeepEquals(Pool_update other) { if (ReferenceEquals(null, other)) return false; if (ReferenceEquals(this, other)) return true; return Helper.AreEqual2(this._uuid, other._uuid) && Helper.AreEqual2(this._name_label, other._name_label) && Helper.AreEqual2(this._name_description, other._name_description) && Helper.AreEqual2(this._installation_size, other._installation_size) && Helper.AreEqual2(this._key, other._key) && Helper.AreEqual2(this._after_apply_guidance, other._after_apply_guidance) && Helper.AreEqual2(this._vdi, other._vdi) && Helper.AreEqual2(this._hosts, other._hosts); } public override string SaveChanges(Session session, string opaqueRef, Pool_update 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"); } } /// /// Get a record containing the current state of the given pool_update. /// First published in . /// /// The session /// The opaque_ref of the given pool_update public static Pool_update get_record(Session session, string _pool_update) { return new Pool_update((Proxy_Pool_update)session.proxy.pool_update_get_record(session.uuid, (_pool_update != null) ? _pool_update : "").parse()); } /// /// Get a reference to the pool_update instance with the specified UUID. /// First published in . /// /// The session /// UUID of object to return public static XenRef get_by_uuid(Session session, string _uuid) { return XenRef.Create(session.proxy.pool_update_get_by_uuid(session.uuid, (_uuid != null) ? _uuid : "").parse()); } /// /// Get all the pool_update instances with the given label. /// First published in . /// /// The session /// label of object to return public static List> get_by_name_label(Session session, string _label) { return XenRef.Create(session.proxy.pool_update_get_by_name_label(session.uuid, (_label != null) ? _label : "").parse()); } /// /// Get the uuid field of the given pool_update. /// First published in . /// /// The session /// The opaque_ref of the given pool_update public static string get_uuid(Session session, string _pool_update) { return (string)session.proxy.pool_update_get_uuid(session.uuid, (_pool_update != null) ? _pool_update : "").parse(); } /// /// Get the name/label field of the given pool_update. /// First published in . /// /// The session /// The opaque_ref of the given pool_update public static string get_name_label(Session session, string _pool_update) { return (string)session.proxy.pool_update_get_name_label(session.uuid, (_pool_update != null) ? _pool_update : "").parse(); } /// /// Get the name/description field of the given pool_update. /// First published in . /// /// The session /// The opaque_ref of the given pool_update public static string get_name_description(Session session, string _pool_update) { return (string)session.proxy.pool_update_get_name_description(session.uuid, (_pool_update != null) ? _pool_update : "").parse(); } /// /// Get the installation_size field of the given pool_update. /// First published in . /// /// The session /// The opaque_ref of the given pool_update public static long get_installation_size(Session session, string _pool_update) { return long.Parse((string)session.proxy.pool_update_get_installation_size(session.uuid, (_pool_update != null) ? _pool_update : "").parse()); } /// /// Get the key field of the given pool_update. /// First published in . /// /// The session /// The opaque_ref of the given pool_update public static string get_key(Session session, string _pool_update) { return (string)session.proxy.pool_update_get_key(session.uuid, (_pool_update != null) ? _pool_update : "").parse(); } /// /// Get the after_apply_guidance field of the given pool_update. /// First published in . /// /// The session /// The opaque_ref of the given pool_update public static List get_after_apply_guidance(Session session, string _pool_update) { return Helper.StringArrayToEnumList(session.proxy.pool_update_get_after_apply_guidance(session.uuid, (_pool_update != null) ? _pool_update : "").parse()); } /// /// Get the vdi field of the given pool_update. /// First published in . /// /// The session /// The opaque_ref of the given pool_update public static XenRef get_vdi(Session session, string _pool_update) { return XenRef.Create(session.proxy.pool_update_get_vdi(session.uuid, (_pool_update != null) ? _pool_update : "").parse()); } /// /// Get the hosts field of the given pool_update. /// First published in . /// /// The session /// The opaque_ref of the given pool_update public static List> get_hosts(Session session, string _pool_update) { return XenRef.Create(session.proxy.pool_update_get_hosts(session.uuid, (_pool_update != null) ? _pool_update : "").parse()); } /// /// Introduce update VDI /// First published in . /// /// The session /// The VDI which contains a software update. public static XenRef introduce(Session session, string _vdi) { return XenRef.Create(session.proxy.pool_update_introduce(session.uuid, (_vdi != null) ? _vdi : "").parse()); } /// /// Introduce update VDI /// First published in . /// /// The session /// The VDI which contains a software update. public static XenRef async_introduce(Session session, string _vdi) { return XenRef.Create(session.proxy.async_pool_update_introduce(session.uuid, (_vdi != null) ? _vdi : "").parse()); } /// /// Execute the precheck stage of the selected update on a host /// First published in . /// /// The session /// The opaque_ref of the given pool_update /// The host to run the prechecks on. public static void precheck(Session session, string _pool_update, string _host) { session.proxy.pool_update_precheck(session.uuid, (_pool_update != null) ? _pool_update : "", (_host != null) ? _host : "").parse(); } /// /// Execute the precheck stage of the selected update on a host /// First published in . /// /// The session /// The opaque_ref of the given pool_update /// The host to run the prechecks on. public static XenRef async_precheck(Session session, string _pool_update, string _host) { return XenRef.Create(session.proxy.async_pool_update_precheck(session.uuid, (_pool_update != null) ? _pool_update : "", (_host != null) ? _host : "").parse()); } /// /// Apply the selected update to a host /// First published in . /// /// The session /// The opaque_ref of the given pool_update /// The host to apply the update to. public static void apply(Session session, string _pool_update, string _host) { session.proxy.pool_update_apply(session.uuid, (_pool_update != null) ? _pool_update : "", (_host != null) ? _host : "").parse(); } /// /// Apply the selected update to a host /// First published in . /// /// The session /// The opaque_ref of the given pool_update /// The host to apply the update to. public static XenRef async_apply(Session session, string _pool_update, string _host) { return XenRef.Create(session.proxy.async_pool_update_apply(session.uuid, (_pool_update != null) ? _pool_update : "", (_host != null) ? _host : "").parse()); } /// /// Apply the selected update to all hosts in the pool /// First published in . /// /// The session /// The opaque_ref of the given pool_update public static void pool_apply(Session session, string _pool_update) { session.proxy.pool_update_pool_apply(session.uuid, (_pool_update != null) ? _pool_update : "").parse(); } /// /// Apply the selected update to all hosts in the pool /// First published in . /// /// The session /// The opaque_ref of the given pool_update public static XenRef async_pool_apply(Session session, string _pool_update) { return XenRef.Create(session.proxy.async_pool_update_pool_apply(session.uuid, (_pool_update != null) ? _pool_update : "").parse()); } /// /// Removes the update's files from all hosts in the pool, but does not revert the update /// First published in . /// /// The session /// The opaque_ref of the given pool_update public static void pool_clean(Session session, string _pool_update) { session.proxy.pool_update_pool_clean(session.uuid, (_pool_update != null) ? _pool_update : "").parse(); } /// /// Removes the update's files from all hosts in the pool, but does not revert the update /// First published in . /// /// The session /// The opaque_ref of the given pool_update public static XenRef async_pool_clean(Session session, string _pool_update) { return XenRef.Create(session.proxy.async_pool_update_pool_clean(session.uuid, (_pool_update != null) ? _pool_update : "").parse()); } /// /// Removes the database entry. Only works on unapplied update. /// First published in . /// /// The session /// The opaque_ref of the given pool_update public static void destroy(Session session, string _pool_update) { session.proxy.pool_update_destroy(session.uuid, (_pool_update != null) ? _pool_update : "").parse(); } /// /// Removes the database entry. Only works on unapplied update. /// First published in . /// /// The session /// The opaque_ref of the given pool_update public static XenRef async_destroy(Session session, string _pool_update) { return XenRef.Create(session.proxy.async_pool_update_destroy(session.uuid, (_pool_update != null) ? _pool_update : "").parse()); } /// /// Return a list of all the pool_updates known to the system. /// First published in . /// /// The session public static List> get_all(Session session) { return XenRef.Create(session.proxy.pool_update_get_all(session.uuid).parse()); } /// /// Get all the pool_update Records at once, in a single XML RPC call /// First published in . /// /// The session public static Dictionary, Pool_update> get_all_records(Session session) { return XenRef.Create(session.proxy.pool_update_get_all_records(session.uuid).parse()); } /// /// Unique identifier/object reference /// public virtual string uuid { get { return _uuid; } set { if (!Helper.AreEqual(value, _uuid)) { _uuid = value; Changed = true; NotifyPropertyChanged("uuid"); } } } private string _uuid; /// /// a human-readable name /// public virtual string name_label { get { return _name_label; } set { if (!Helper.AreEqual(value, _name_label)) { _name_label = value; Changed = true; NotifyPropertyChanged("name_label"); } } } private string _name_label; /// /// a notes field containing human-readable description /// public virtual string name_description { get { return _name_description; } set { if (!Helper.AreEqual(value, _name_description)) { _name_description = value; Changed = true; NotifyPropertyChanged("name_description"); } } } private string _name_description; /// /// Size of the update in bytes /// public virtual long installation_size { get { return _installation_size; } set { if (!Helper.AreEqual(value, _installation_size)) { _installation_size = value; Changed = true; NotifyPropertyChanged("installation_size"); } } } private long _installation_size; /// /// GPG key of the update /// public virtual string key { get { return _key; } set { if (!Helper.AreEqual(value, _key)) { _key = value; Changed = true; NotifyPropertyChanged("key"); } } } private string _key; /// /// What the client should do after this update has been applied. /// public virtual List after_apply_guidance { get { return _after_apply_guidance; } set { if (!Helper.AreEqual(value, _after_apply_guidance)) { _after_apply_guidance = value; Changed = true; NotifyPropertyChanged("after_apply_guidance"); } } } private List _after_apply_guidance; /// /// VDI the update was uploaded to /// public virtual XenRef vdi { get { return _vdi; } set { if (!Helper.AreEqual(value, _vdi)) { _vdi = value; Changed = true; NotifyPropertyChanged("vdi"); } } } private XenRef _vdi; /// /// The hosts that have applied this update. /// public virtual List> hosts { get { return _hosts; } set { if (!Helper.AreEqual(value, _hosts)) { _hosts = value; Changed = true; NotifyPropertyChanged("hosts"); } } } private List> _hosts; } }