Beispiel #1
0
            public override void Handle(HitInfo hit)
            {
                if (Group.HasEntity(hit.HitEntity))
                {
                    Instance.SendReply(Player, Messages.CannotAddEntityAlreadyEnrolledInGroup, Group.Name);
                    return;
                }

                var entity = ManagedEntity.Create(hit.HitEntity);

                if (entity == null)
                {
                    Instance.SendReply(Player, Messages.InvalidEntitySelected);
                    return;
                }

                if (!entity.IsAuthorized(Player))
                {
                    Instance.SendReply(Player, Messages.CannotAddEntityNotAuthorized);
                    return;
                }

                Group.AddEntity(entity);
                Instance.SendReply(Player, Messages.EntityAdded, Group.Name, Group.MemberIds.Count);
            }
        static void Main(string[] args)
        {
            var entity = new ManagedEntity();

            for (int i = 0; i < entity.GetVec().Length; i++)
            {
                Console.WriteLine(entity.GetVec()[i]);
            }
        }
Beispiel #3
0
            public bool RemoveEntity(ManagedEntity entity)
            {
                if (!Entities.Remove(entity))
                {
                    return(false);
                }

                entity.DeauthorizeAll();
                return(true);
            }
Beispiel #4
0
            public bool RemoveEntity(BaseEntity entity)
            {
                ManagedEntity managedEntity = GetManagedEntity(entity);

                if (managedEntity == null)
                {
                    return(false);
                }

                return(RemoveEntity(managedEntity));
            }
Beispiel #5
0
            public bool AddEntity(ManagedEntity entity)
            {
                if (Entities.Any(e => e.Id == entity.Id))
                {
                    return(false);
                }

                Entities.Add(entity);

                entity.DeauthorizeAll();
                entity.Authorize(GetActiveAndSleepingMembers());

                return(true);
            }
        public DescriptiveResponse <TId> Save(TWrite item)
        {
            try
            {
                // If item is null
                if (item == null)
                {
                    // Return error response with input is null error
                    return(DescriptiveResponse <TId> .Error(ErrorStatus.INPUT_IS_NULL));
                }

                // TWrite is manged entity
                if (item is ManagedEntity <TId, TUId> )
                {
                    ManagedEntity <TId, TUId> managedEntity = item as ManagedEntity <TId, TUId>;

                    // If model in adding mode
                    if (managedEntity.Id.Equals(default(TId)))
                    {
                        // Update creation log properties
                        managedEntity.CreatedBy    = UserUtility <TUId> .CurrentUser.UserId;
                        managedEntity.CreationDate = DateTime.UtcNow;
                    }
                    else // If model in update mode
                    {
                        //Update modification log properties
                        managedEntity.LastModifiedBy   = UserUtility <TUId> .CurrentUser.UserId;
                        managedEntity.LastModifiedDate = DateTime.UtcNow;
                    }
                }

                // Attach entity
                _writeRepository.Attach(item);

                // Save Changes
                _writeRepository.UnitOfWork.SaveChanges();

                return(DescriptiveResponse <TId> .Success(item.Id));
            }
            catch (Exception ex)
            {
                Logger.Log(ex);
                return(DescriptiveResponse <TId> .Error(ErrorStatus.UNEXPECTED_ERROR));
            }
        }
Beispiel #7
0
            public override void Handle(HitInfo hit)
            {
                ManagedEntity entity = Group.GetManagedEntity(hit.HitEntity);

                if (entity == null)
                {
                    Instance.SendReply(Player, Messages.CannotRemoveEntityNotEnrolledInGroup, Group.Name);
                    return;
                }

                if (!entity.IsAuthorized(Player))
                {
                    Instance.SendReply(Player, Messages.CannotRemoveEntityNotAuthorized);
                    return;
                }

                Group.RemoveEntity(entity);
                Instance.SendReply(Player, Messages.EntityRemoved, Group.Name);
            }
Beispiel #8
0
        static void Main(string[] args)
        {
            var entity = new ManagedEntity();

            double myDouble     = -1.1;
            int    myInt        = -1;
            string myCharString = "c# empty charstring";
            string myString     = "c# empty string";

            double[] myArray = { -1.1, -2.1, -3.1 };


            //Test Double
            System.Console.WriteLine("C# - Value for double: {0}", myDouble);
            System.Console.WriteLine("C# - C++ Value stored for the double: {0}", entity.GetDouble());
            myDouble = entity.GetDouble();
            System.Console.WriteLine("C# - Value for double after GetDouble: {0}", myDouble);
            entity.SetDouble(100.1);
            System.Console.WriteLine("C# - C++ Value stored for the double: {0} \n", entity.GetDouble());

            //Test Int
            System.Console.WriteLine("C# - Value for int: {0}", myInt);
            System.Console.WriteLine("C# - C++ Value stored for the int: {0}", entity.GetInt());
            myInt = entity.GetInt();
            System.Console.WriteLine("C# - Value for int after GetInt: {0}", myInt);
            entity.SetInt(100);
            System.Console.WriteLine("C# - C++ Value stored for the int: {0} \n", entity.GetInt());

            //Test CharString
            System.Console.WriteLine("C# - Value for charstring: {0}", myCharString);
            System.Console.WriteLine("C# - C++ Value stored for the charstring: {0}", entity.GetCharString());
            myCharString = entity.GetCharString();
            System.Console.WriteLine("C# - Value for charstring after GetCharString: {0}", myCharString);
            entity.SetCharString("one-hundred point one");
            System.Console.WriteLine("C# - C++ Value stored for the charstring: {0} \n", entity.GetCharString());

            //Test String
            System.Console.WriteLine("C# - Value for string: {0}", myString);
            System.Console.WriteLine("C# - C++ Value stored for the string: {0}", entity.GetString());
            myString = entity.GetString();
            System.Console.WriteLine("C# - Value for string after GetString: {0}", myString);
            entity.SetString("one-hundred point two");
            System.Console.WriteLine("C# - C++ Value stored for the string: {0} \n", entity.GetString());

            //Test Array
            System.Console.WriteLine("C# - Value for array: {0}", string.Join(", ", myArray));
            System.Console.WriteLine("C# - C++ Value stored for the string: {0}", string.Join(", ", entity.GetVector()));
            myArray = entity.GetVector();
            System.Console.WriteLine("C# - Value for array after GetVector: {0}", string.Join(", ", myArray));
            entity.SetVector(new double[] { 100.1, 100.2, 100.3, 100.4 });
            System.Console.WriteLine("C# - C++ Value stored for the string: {0}", string.Join(", ", entity.GetVector()));


            //array,comma trick needs .NET 4+ if it does not work use code below to print array to console
            // foreach (var item in myArray)
            // {
            //     Console.Write("{0}", item);
            //     if (item != myArray.Last())
            //         Console.Write(",");
            // }
        }
Beispiel #9
0
 protected void cmdProvision_Click(object sender, EventArgs e)
 {
     //
     // Ready to provision
     //
     //
     // Need a random number to pick a random virtual host to place the new vm on
     //
     Random rand = new Random();
     //
     // Validate user entries
     //
     //
     // Do we have a value for the target vm?
     //
     if (txtTargetVm.Text == null || txtTargetVm.Text == "")
     {
         txtErrors.Text = "Please enter a name for the virtual machine.";
         Error_Panel.Visible = true;
         return;
     }
     //
     // Has a valid IP address been entered?
     //
     IPAddress theIp;
     bool ipResult = IPAddress.TryParse(txtIpAddress.Text, out theIp);
     if (ipResult != true)
     {
         txtErrors.Text = "Please enter a valid IP Address.";
         Error_Panel.Visible = true;
         return;
     }
     //
     // This does some basic checking on a subnet
     //
     IPAddress theMask;
     bool mskResult = IPAddress.TryParse(txtSubnet.Text, out theMask);
     if (mskResult != true)
     {
         txtErrors.Text = "Please enter a valid Subnet Mask.";
         Error_Panel.Visible = true;
         return;
     }
     //
     // Has a valid IP been entered for the gateway?
     //
     IPAddress theGateway;
     bool gwResult = IPAddress.TryParse(txtGateway.Text, out theGateway);
     if (gwResult != true)
     {
         txtErrors.Text = "Please entera valid IP Address for the default gateway.";
         Error_Panel.Visible = true;
         return;
     }
     //
     // Does a vm by this name already exist?
     //
     VimClient vimClient = ConnectServer(Globals.sViServer, Globals.sUsername, Globals.sPassword);
     List<VirtualMachine> chkVirtualMachines = GetVirtualMachines(vimClient, null, txtTargetVm.Text);
     if (chkVirtualMachines != null)
     {
         vimClient.Disconnect();
         txtErrors.Text = "virtual machine " + txtTargetVm.Text + " already exists";
         Error_Panel.Visible = true;
         return;
     }
     //
     // Need to parse the value of the dropdown
     //
     char[] splitChar = { '.' };
     string[] specType = cboCustomizations.SelectedValue.Split(splitChar);
     //
     // Connect to selected datacenter
     //
     List<ClusterComputeResource> lstClusters = GetClusters(vimClient, cboClusters.SelectedItem.Text);
     List<Datacenter> lstDatacenters = GetDcFromCluster(vimClient, lstClusters[0].Parent.Value);
     Datacenter itmDatacenter = lstDatacenters[0];
     //
     // Get a list of hosts in the selected cluster
     //
     List<HostSystem> lstHosts = GetHosts(vimClient, cboClusters.SelectedValue);
     //
     // Randomly pick host
     //
     HostSystem selectedHost = lstHosts[rand.Next(0, lstHosts.Count)];
     txtResults.Text = "Host : " + selectedHost.Name + "\r\n";
     //
     // Connect to selected vm to clone
     //
     List<VirtualMachine> lstVirtualMachines = GetVirtualMachines(vimClient, null, cboSourceVms.SelectedItem.Text);
     VirtualMachine itmVirtualMachine = lstVirtualMachines[0];
     //
     // Make sure the spec file type matches the guest os
     //
     //
     // The commented code could be used to poweron a vm, check it's guestfamily and then turn it off.
     //
     //string GuestFamily = null;
     //if (itmVirtualMachine.Runtime.PowerState == VirtualMachinePowerState.poweredOff)
     //{
     //    //
     //    // We can power on the vm to get the guestfamily property
     //    //
     //    itmVirtualMachine.PowerOnVM(null);
     //    //
     //    // Set the GuestFamily var
     //    //
     //    while (itmVirtualMachine.Guest.GuestFamily == null)
     //    {
     //        //
     //        // Need to grab the current guest status from the vm
     //        //
     //        itmVirtualMachine.Reload();
     //        GuestFamily = itmVirtualMachine.Guest.GuestFamily;
     //    }
     //    //
     //    // Turn the VM back off
     //    //
     //    itmVirtualMachine.PowerOffVM();
     //}
     //
     // Added this test to accomodate cloning templates to vm's, per Ryan Lawrence.
     //
     if (!(chkTemplate.Checked))
     {
         if (itmVirtualMachine.Guest.GuestFamily != null)
         {
             if ((itmVirtualMachine.Guest.GuestFamily).Contains(specType[specType.GetUpperBound(0)]) == false)
             {
                 vimClient.Disconnect();
                 txtErrors.Text = "You specified a " + specType[specType.GetUpperBound(0)] + " spec file to clone a " + itmVirtualMachine.Guest.GuestFamily + " virtual machine.";
                 Error_Panel.Visible = true;
                 return;
             }
         }
         else
         {
             //
             // Sometimes the GuestFamily property isn't populated
             //
             vimClient.Disconnect();
             txtErrors.Text = "The virtual machine " + itmVirtualMachine.Name.ToString() + " has no GuestFamily property populated, please power on this VM and verify that it's a supported Guest Os.";
             Error_Panel.Visible = true;
             return;
         }
     }
     txtResults.Text += "Source : " + itmVirtualMachine.Name + "\r\n";
     //
     // Connect to the selected datastore
     //
     List<Datastore> lstDatastores = GetDataStore(vimClient, null, cboDatastores.SelectedItem.Text);
     Datastore itmDatastore = lstDatastores[0];
     txtResults.Text += "Datastore : " + itmDatastore.Name + "\r\n";
     //
     // Connect to portgroup
     //
     List<DistributedVirtualPortgroup> lstDvPortGroups = GetDVPortGroups(vimClient, itmDatacenter, cboPortGroups.SelectedItem.Text);
     DistributedVirtualPortgroup itmDvPortGroup = lstDvPortGroups[0];
     txtResults.Text += "Portgroup : " + itmDvPortGroup.Name + "\r\n";
     //
     // Connect to the customizationspec
     //
     CustomizationSpecItem itmSpecItem = GetCustomizationSpecItem(vimClient, cboCustomizations.SelectedItem.Text);
     txtResults.Text += "Spec : " + cboCustomizations.SelectedItem.Text + "\r\n";
     //
     // Create a new VirtualMachineCloneSpec
     //
     VirtualMachineCloneSpec mySpec = new VirtualMachineCloneSpec();
     mySpec.Location = new VirtualMachineRelocateSpec();
     mySpec.Location.Datastore = itmDatastore.MoRef;
     mySpec.Location.Host = selectedHost.MoRef;
     //
     // Get resource pool for selected cluster
     //
     List<ResourcePool> lstResPools = GetResPools(vimClient, cboClusters.SelectedValue);
     ResourcePool itmResPool = lstResPools[0];
     //
     // Assign resource pool to specitem
     //
     mySpec.Location.Pool = itmResPool.MoRef;
     //
     // Add selected CloneSpec customizations to this CloneSpec
     //
     mySpec.Customization = itmSpecItem.Spec;
     //
     // Handle hostname for either windows or linux
     //
     if (specType[specType.GetUpperBound(0)] == "Windows")
     {
         //
         // Create a windows sysprep object
         //
         CustomizationSysprep winIdent = (CustomizationSysprep)itmSpecItem.Spec.Identity;
         CustomizationFixedName hostname = new CustomizationFixedName();
         hostname.Name = txtTargetVm.Text;
         winIdent.UserData.ComputerName = hostname;
         //
         // Store identity in this CloneSpec
         //
         mySpec.Customization.Identity = winIdent;
     }
     if (specType[specType.GetUpperBound(0)] == "Linux")
     {
         //
         // Create a Linux "sysprep" object
         //
         CustomizationLinuxPrep linIdent = (CustomizationLinuxPrep)itmSpecItem.Spec.Identity;
         CustomizationFixedName hostname = new CustomizationFixedName();
         hostname.Name = txtTargetVm.Text;
         linIdent.HostName = hostname;
         //
         // Uncomment the line below to add a suffix to linux vm's
         //
         // linIdent.Domain = WebConfigurationManager.AppSettings["dnsSuffix"].ToString();
         //
         // Store identity in this CloneSpec
         //
         mySpec.Customization.Identity = linIdent;
     }
     //
     // Create a new ConfigSpec
     //
     mySpec.Config = new VirtualMachineConfigSpec();
     //
     // Set number of CPU's
     //
     int numCpus = new int();
     numCpus = Convert.ToInt16(cboCpus.SelectedValue);
     mySpec.Config.NumCPUs = numCpus;
     txtResults.Text += "CPU : " + numCpus + "\r\n";
     //
     // Set amount of RAM
     //
     long memoryMb = new long();
     memoryMb = (long)(Convert.ToInt16(cboRam.SelectedValue) * 1024);
     mySpec.Config.MemoryMB = memoryMb;
     txtResults.Text += "Ram : " + memoryMb + "\r\n";
     //
     // Only handle the first network card
     //
     mySpec.Customization.NicSettingMap = new CustomizationAdapterMapping[1];
     mySpec.Customization.NicSettingMap[0] = new CustomizationAdapterMapping();
     //
     // Read in the DNS from web.config and assign
     //
     string[] ipDns = new string[1];
     ipDns[0] = txtDnsServer.Text;
     mySpec.Customization.GlobalIPSettings = new CustomizationGlobalIPSettings();
     mySpec.Customization.GlobalIPSettings.DnsServerList = ipDns;
     txtResults.Text += "DNS : " + ipDns[0] + "\r\n";
     //
     // Create a new networkDevice
     //
     VirtualDevice networkDevice = new VirtualDevice();
     foreach (VirtualDevice vDevice in itmVirtualMachine.Config.Hardware.Device)
     {
         //
         // get nic on vm
         //
         if (vDevice.DeviceInfo.Label.Contains("Network"))
         {
             networkDevice = vDevice;
         }
     }
     //
     // Create a DeviceSpec
     //
     VirtualDeviceConfigSpec[] devSpec = new VirtualDeviceConfigSpec[0];
     mySpec.Config.DeviceChange = new VirtualDeviceConfigSpec[1];
     mySpec.Config.DeviceChange[0] = new VirtualDeviceConfigSpec();
     mySpec.Config.DeviceChange[0].Operation = VirtualDeviceConfigSpecOperation.edit;
     mySpec.Config.DeviceChange[0].Device = networkDevice;
     //
     // Define network settings for the new vm
     //
     //
     // Assign IP Address
     //
     CustomizationFixedIp ipAddress = new CustomizationFixedIp();
     ipAddress.IpAddress = txtIpAddress.Text;
     mySpec.Customization.NicSettingMap[0].Adapter = new CustomizationIPSettings();
     txtResults.Text += "IP : " + txtIpAddress.Text + "\r\n";
     //
     // Assign subnet mask
     //
     mySpec.Customization.NicSettingMap[0].Adapter.Ip = ipAddress;
     mySpec.Customization.NicSettingMap[0].Adapter.SubnetMask = txtSubnet.Text;
     txtResults.Text += "Subnet : " + txtSubnet.Text + "\r\n";
     //
     // Assign default gateway
     //
     string[] ipGateway = new string[1];
     ipGateway[0] = txtGateway.Text;
     mySpec.Customization.NicSettingMap[0].Adapter.Gateway = ipGateway;
     txtResults.Text += "Gateway : " + txtGateway.Text + "\r\n";
     //
     // Create network backing information
     //
     VirtualEthernetCardDistributedVirtualPortBackingInfo nicBack = new VirtualEthernetCardDistributedVirtualPortBackingInfo();
     nicBack.Port = new DistributedVirtualSwitchPortConnection();
     //
     // Connect to the virtual switch
     //
     VmwareDistributedVirtualSwitch dvSwitch = GetDvSwitch(vimClient, itmDvPortGroup.Config.DistributedVirtualSwitch);
     //
     // Assign the proper switch port
     //
     nicBack.Port.SwitchUuid = dvSwitch.Uuid;
     //
     // Connect the network card to proper port group
     //
     nicBack.Port.PortgroupKey = itmDvPortGroup.MoRef.Value;
     mySpec.Config.DeviceChange[0].Device.Backing = nicBack;
     //
     // Enable the network card at bootup
     //
     mySpec.Config.DeviceChange[0].Device.Connectable = new VirtualDeviceConnectInfo();
     mySpec.Config.DeviceChange[0].Device.Connectable.StartConnected = true;
     mySpec.Config.DeviceChange[0].Device.Connectable.AllowGuestControl = true;
     mySpec.Config.DeviceChange[0].Device.Connectable.Connected = true;
     //
     // Get the vmfolder from the datacenter
     //
     //
     // Perform the clone
     //
     ManagedObjectReference taskMoRef = itmVirtualMachine.CloneVM_Task(itmDatacenter.VmFolder, txtTargetVm.Text, mySpec);
     Task cloneVmTask = new Task(vimClient, taskMoRef);
     //
     // The following will make the browser appear to hang, I need to hide this panel, and show a working panel
     //
     ManagedObjectReference clonedMorRef = (ManagedObjectReference)vimClient.WaitForTask(cloneVmTask.MoRef);
     //
     // Connect to the VM in order to set the custom fields
     //
     List<VirtualMachine> clonedVMs = GetVirtualMachines(vimClient, null, txtTargetVm.Text);
     VirtualMachine clonedVM = clonedVMs[0];
     NameValueCollection vmFilter = new NameValueCollection();
     vmFilter.Add("name",txtTargetVm.Text);
     EntityViewBase vmViewBase = vimClient.FindEntityView(typeof(VirtualMachine),null,vmFilter,null);
     ManagedEntity vmEntity = new ManagedEntity(vimClient, clonedVM.MoRef);
     CustomFieldsManager fieldManager = new CustomFieldsManager(vimClient, clonedVM.MoRef);
     //
     // One or more custom field names could be stored in the web.config and processed in some fashion
     //
     foreach (CustomFieldDef thisField in clonedVM.AvailableField)
     { 
         if (thisField.Name.Equals("CreatedBy"))
         {
             fieldManager.SetField(clonedVM.MoRef, 1, txtUsername.Text);
         }
     }
     vimClient.Disconnect();
     //
     // Hide the vm controls and show the result box
     //
     Vm_Panel.Visible = false;
     Results_Panel.Visible = true;
 }