static void Test_CreateVmExisting(Host host)
        {
            //Get vm iso
            XenConnect         conn  = new XenConnect(host, testServerId, testip);
            List <VirtualDisk> disks = conn.getISOStorageList();

            string filename = null;

            //check if the disk exists
            foreach (VirtualDisk disk in disks)
            {
                if (disk.NameCanonical.Contains("Ubuntu14"))
                {
                    filename = disk.Name;
                    break;
                }
            }

            string vmName = "SeniorBuntu";
            int    memory = 2000000;
            int    vcpus  = 1;

            VirtualMachineBuilder.DomainType domType = VirtualMachineBuilder.DomainType.TRANSIENT;
            VirtualMachineBuilder            builder = new VirtualMachineBuilder(vmName, memory, vcpus, VirtualMachineBuilder.XEN_PATH_DEFAULT_ISO + filename, domType);

            //builder.setHardDrive(20000, true); //set hard drive size to 20 GB (20k MB)
            builder.setHardDriveExisting(true, false, VirtualMachineBuilder.XEN_PATH_DEFAULT_DISK + "BuntuMaster.img");
            conn.createVm(builder);
            //string xml = builder.toXMLString();
        }
        public void TestNotEmpty()
        {
            MemoryStream          xvaStream = new MemoryStream();
            VirtualMachineBuilder vmb       = new VirtualMachineBuilder();

            MemoryStream ms = new MemoryStream();

            for (int i = 0; i < 1024 * 1024; ++i)
            {
                ms.Position = i * 10;
                ms.WriteByte((byte)(i ^ (i >> 8) ^ (i >> 16) ^ (i >> 24)));
            }

            vmb.AddDisk("Foo", ms, Ownership.Dispose);
            vmb.Build(xvaStream);

            Assert.NotEqual(0, xvaStream.Length);

            VirtualMachine vm    = new VirtualMachine(xvaStream);
            List <Disk>    disks = new List <Disk>(vm.Disks);

            Assert.Equal(1, disks.Count);
            Assert.Equal(10 * 1024 * 1024, disks[0].Capacity);

            Stream diskContent = disks[0].Content;

            for (int i = 0; i < 1024 * 1024; ++i)
            {
                diskContent.Position = i * 10;
                if ((byte)(i ^ (i >> 8) ^ (i >> 16) ^ (i >> 24)) != diskContent.ReadByte())
                {
                    Assert.True(false, "Mismatch at offset " + i);
                }
            }
        }
示例#3
0
        // // Driven by user IDE subs:

        public bool NewIDEbyUser(out IIDE newIde)
        {
            if (VirtualMachineBuilder?.VisibleTypes.Count < 1)
            {
                OnShowingMessage("There're no available Virtual Machine types to add in a new IDE. Check types settings via Component Manager."
                                 , "Workplace Configuration Warning in " + Title, MessageBoxIcon.Exclamation);
                newIde = null;
                return(false);
            }
            if (CodeEditorBuilder?.VisibleTypes.Count < 1)
            {
                OnShowingMessage("There're no available Code Editor types to add in a new IDE. Check types settings via Component Manager."
                                 , "Workplace Configuration Warning in " + Title, MessageBoxIcon.Exclamation);
                newIde = null;
                return(false);
            }
            //

            IVirtualMachine machine             = null;
            ICodeEditor     codeEditor          = null;
            IInputPort      inputPort           = null;
            int             withInputPortIndex  = -1;
            IOutputPort     outputPort          = null;
            int             withOutputPortIndex = -1;
            bool            withConsole         = false;

            newIde = null;

            DialogResult newIDEdialogResult;

            using (var newIDEdialog = new NewIdeDialog(VirtualMachineBuilder.VisibleTypes, CodeEditorBuilder.VisibleTypes
                                                       , InputPortBuilder.VisibleTypes, OutputPortBuilder.VisibleTypes
                                                       , InputDeviceBuilder.VisibleTypes.Any(t => t.TypeName == typeof(ConsoleDevice).Name) ||
                                                       OutputDeviceBuilder.VisibleTypes.Any(t => t.TypeName == typeof(ConsoleDevice).Name)))
            {
                newIDEdialogResult = newIDEdialog.ShowDialog(MainForm as Form);
                if (newIDEdialogResult == DialogResult.OK)
                {
                    machine = VirtualMachineBuilder.GetNew(VirtualMachineBuilder.VisibleTypes[newIDEdialog.ChosenMachineTypeIndex]);
                    machine.CurrentLanguage = newIDEdialog.ChosenLanguage;
                    codeEditor = CodeEditorBuilder.GetNew(CodeEditorBuilder.VisibleTypes[newIDEdialog.ChosenCodeEditorTypeIndex]);
                    inputPort  = newIDEdialog.ChosenInputPortTypeFullName.IsNotNullOrEmpty()
                            ? InputPortBuilder.GetNew(InputPortBuilder.VisibleTypes[newIDEdialog.ChosenInputPortTypeIndex]) : null;
                    withInputPortIndex = newIDEdialog.ChosenInputPortIndex;
                    outputPort         = newIDEdialog.ChosenOutputPortTypeFullName.IsNotNullOrEmpty()
                            ? OutputPortBuilder.GetNew(OutputPortBuilder.VisibleTypes[newIDEdialog.ChosenOutputPortTypeIndex]) : null;
                    withOutputPortIndex = newIDEdialog.ChosenOutputPortIndex;
                    withConsole         = newIDEdialog.ChosenWithConsole;
                }
            }
            if (newIDEdialogResult != DialogResult.OK)
            {
                return(false);
            }

            newIde = NewIDE(machine, codeEditor, inputPort, withInputPortIndex
                            , outputPort, withOutputPortIndex, withConsole);

            return(true);
        }
        public void TestEmpty()
        {
            MemoryStream          xvaStream = new MemoryStream();
            VirtualMachineBuilder vmb       = new VirtualMachineBuilder();

            vmb.AddDisk("Foo", new MemoryStream(), Ownership.Dispose);
            vmb.Build(xvaStream);

            Assert.NotEqual(0, xvaStream.Length);

            VirtualMachine vm    = new VirtualMachine(xvaStream);
            List <Disk>    disks = new List <Disk>(vm.Disks);

            Assert.Equal(1, disks.Count);
            Assert.Equal(0, disks[0].Capacity);
        }
        static void Test_CreateVmExisting2(Host host)
        {
            //Get vm iso
            XenConnect conn = new XenConnect(host, testServerId, testip);


            string vmName = "IntrospectionTestBuntu";
            int    memory = 2000000;
            int    vcpus  = 1;

            VirtualMachineBuilder.DomainType domType = VirtualMachineBuilder.DomainType.TRANSIENT;
            VirtualMachineBuilder            builder = new VirtualMachineBuilder(vmName, "Ubuntu14-04", memory, vcpus, domType);

            //builder.setHardDrive(20000, true); //set hard drive size to 20 GB (20k MB)
            builder.setHardDriveExisting(true, false, "");
            string xml = builder.toXMLString();

            conn.createVm(builder);
            //string xml = builder.toXMLString();
        }
        public static LibvirtMessageWrapper BuildMessage(LIBVIRT_MESSAGE_TYPE type, object Payload, string requestor, string requestorid)
        {
            LibvirtMessageWrapper wrapper = new LibvirtMessageWrapper();

            switch (type)
            {
            case LIBVIRT_MESSAGE_TYPE.CREATE_VM:
                LibvirtCommand createVmMessage = new LibvirtCommand();
                wrapper.Message     = createVmMessage;
                wrapper.Command     = MessageTypeToString(type);
                wrapper.Requestor   = requestor;
                wrapper.RequestorId = requestorid;

                VirtualMachineBuilder builder = (VirtualMachineBuilder)Payload;
                wrapper.VirtualMachineBuilder = builder;
                break;
            }

            return(wrapper);
        }
        private void btn_create_vm_Click(object sender, RoutedEventArgs e)
        {
            XenConnect conn = new XenConnect(_selectedHost, _settings.SystemIdentifier, _settings.SystemIp);

            string iso     = (string)combobox_os_image.SelectedItem;
            string vmName  = textbox_vm_name.Text;
            int    memory  = int.Parse(textbox_vm_memory.Text.Replace(",", ""));
            int    vcpus   = int.Parse(textbox_vm_vcpu.Text.Replace(",", ""));
            int    diskMem = int.Parse(textbox_vm_hd.Text.Replace(",", ""));

            VirtualMachineBuilder builder = null;


            if (!(bool)checkbox_existing.IsChecked)
            {
                VirtualMachineBuilder.DomainType domType = VirtualMachineBuilder.DomainType.TRANSIENT;
                builder = new VirtualMachineBuilder(vmName, memory * 1000, vcpus, VirtualMachineBuilder.XEN_PATH_DEFAULT_ISO + iso + ".iso", domType);
                builder.setHardDrive(diskMem * 1000, true); //set hard drive size to n GB (nk MB)
            }
            else
            {
                List <VirtualDisk> disks = conn.getISOStorageList();

                string filename = null;

                //hard coded for fluff
                foreach (VirtualDisk disk in disks)
                {
                    if (disk.NameCanonical.Contains("Ubuntu14"))
                    {
                        filename = disk.Name;
                        break;
                    }
                }

                VirtualMachineBuilder.DomainType domType = VirtualMachineBuilder.DomainType.TRANSIENT;
                builder = new VirtualMachineBuilder(vmName, memory * 1000, vcpus, VirtualMachineBuilder.XEN_PATH_DEFAULT_ISO + filename, domType);
                builder.setHardDriveExisting(true, false, VirtualMachineBuilder.XEN_PATH_DEFAULT_DISK + ((string)combobox_os_image.SelectedItem) + ".img");
                conn.createVm(builder);
            }

            XenError status = conn.createVm(builder);

            MessageBoxResult mbr;

            if (status.Type == XenError.XenErrorType.SUCCESS)
            {
                mbr = MessageBox.Show("Succesessfully created virtual machine " + vmName, "Create Virtual Machine", MessageBoxButton.OK, MessageBoxImage.Information);
            }
            else
            {
                mbr = MessageBox.Show(status.Message, "Create Virtual Machine", MessageBoxButton.OK, MessageBoxImage.Information);
            }

            if (mbr.CompareTo(MessageBoxResult.OK) == 0)
            {
                if (status.Type == XenError.XenErrorType.SUCCESS)
                {
                    Close();
                }
            }
        }