public JobResult ModifyKVPItems(string vmId, KvpExchangeDataItem[] items)
 {
     try
     {
         Log.WriteStart("'{0}' ModifyKVPItems", ProviderSettings.ProviderName);
         JobResult result = VirtualizationProvider.ModifyKVPItems(vmId, items);
         Log.WriteEnd("'{0}' ModifyKVPItems", ProviderSettings.ProviderName);
         return result;
     }
     catch (Exception ex)
     {
         Log.WriteError(String.Format("'{0}' ModifyKVPItems", ProviderSettings.ProviderName), ex);
         throw;
     }
 }
Ejemplo n.º 2
0
        public JobResult AddKVPItems(string vmId, KvpExchangeDataItem[] items)
        {
            // get KVP management object
            ManagementObject objVmsvc = GetVirtualSystemManagementService();

            // create KVP items array
            string[] wmiItems = new string[items.Length];

            for (int i = 0; i < items.Length; i++)
            {
                ManagementClass clsKvp = wmi.GetWmiClass("Msvm_KvpExchangeDataItem");
                ManagementObject objKvp = clsKvp.CreateInstance();
                objKvp["Name"] = items[i].Name;
                objKvp["Data"] = items[i].Data;
                objKvp["Source"] = 0;

                // convert to WMI format
                wmiItems[i] = objKvp.GetText(TextFormat.CimDtd20);
            }

            ManagementBaseObject inParams = objVmsvc.GetMethodParameters("AddKvpItems");
            inParams["TargetSystem"] = GetVirtualMachineObject(vmId);
            inParams["DataItems"] = wmiItems;

            // invoke method
            ManagementBaseObject outParams = objVmsvc.InvokeMethod("AddKvpItems", inParams, null);
            return CreateJobResultFromWmiMethodResults(outParams);
        }
Ejemplo n.º 3
0
		public JobResult ModifyKVPItems(string vmId, KvpExchangeDataItem[] items)
		{
			throw new NotImplementedException();
		}
        private static JobResult SendKvpItems(int itemId, string taskName, Dictionary<string, string> taskProps)
        {
            string TASK_PREFIX = "WSP-";

            // load item
            VirtualMachine vm = GetVirtualMachineByItemId(itemId);
            if (vm == null)
                return null;

            JobResult result = null;

            // load proxy
            VirtualizationServer2012 vs = GetVirtualizationProxy(vm.ServiceId);

            try
            {
                // delete completed task definitions
                List<string> completedTasks = new List<string>();
                KvpExchangeDataItem[] vmKvps = vs.GetKVPItems(vm.VirtualMachineId);
                foreach (KvpExchangeDataItem vmKvp in vmKvps)
                {
                    if (vmKvp.Name.StartsWith(TASK_PREFIX))
                        completedTasks.Add(vmKvp.Name);
                }

                // delete completed items
                vs.RemoveKVPItems(vm.VirtualMachineId, completedTasks.ToArray());
            }
            catch (Exception ex)
            {
                // log error
                TaskManager.WriteWarning(String.Format("Error deleting KVP items: {0}", ex.Message));
            }

            // build items array
            List<string> items = new List<string>();
            foreach (string propName in taskProps.Keys)
                items.Add(propName + "=" + taskProps[propName]);

            taskName = String.Format("{0}{1}-{2}", TASK_PREFIX, taskName, DateTime.Now.Ticks);
            string taskData = String.Join("|", items.ToArray());

            // create KVP item
            KvpExchangeDataItem[] kvp = new KvpExchangeDataItem[1];
            kvp[0] = new KvpExchangeDataItem();
            kvp[0].Name = taskName;
            kvp[0].Data = taskData;

            try
            {
                // try adding KVP items
                result = vs.AddKVPItems(vm.VirtualMachineId, kvp);

                if (result.Job != null && result.Job.JobState == ConcreteJobState.Exception)
                {
                    // try updating KVP items
                    return vs.ModifyKVPItems(vm.VirtualMachineId, kvp);
                }
                else
                {
                    return result;
                }
            }
            catch (Exception ex)
            {
                // log error
                TaskManager.WriteWarning(String.Format("Error setting KVP items '{0}': {1}", kvp[0].Data, ex.Message));
            }

            return null;
        }
		/// <remarks/>
		public void ModifyKVPItemsAsync(string vmId, KvpExchangeDataItem[] items, object userState)
		{
			if ((this.ModifyKVPItemsOperationCompleted == null))
			{
				this.ModifyKVPItemsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnModifyKVPItemsOperationCompleted);
			}
			this.InvokeAsync("ModifyKVPItems", new object[] {
                        vmId,
                        items}, this.ModifyKVPItemsOperationCompleted, userState);
		}
		/// <remarks/>
		public void ModifyKVPItemsAsync(string vmId, KvpExchangeDataItem[] items)
		{
			this.ModifyKVPItemsAsync(vmId, items, null);
		}
		/// <remarks/>
		public System.IAsyncResult BeginModifyKVPItems(string vmId, KvpExchangeDataItem[] items, System.AsyncCallback callback, object asyncState)
		{
			return this.BeginInvoke("ModifyKVPItems", new object[] {
                        vmId,
                        items}, callback, asyncState);
		}
		public JobResult ModifyKVPItems(string vmId, KvpExchangeDataItem[] items)
		{
			object[] results = this.Invoke("ModifyKVPItems", new object[] {
                        vmId,
                        items});
			return ((JobResult)(results[0]));
		}