public List<Models.AssignedVmModel> GenerateVMsForUsers(string serviceNameBase, VMConfigModel vmConfig, List<Models.VMUserModel> users) { _logger.Info("Entering GenerateVMsForUsers stub. [serviceNameBase:{0}; sourceVhdName:{1}; users:{2}]", serviceNameBase, vmConfig.ImageName, users.Count); List<AssignedVmModel> result = new List<AssignedVmModel>(); foreach (VMUserModel user in users) { AssignedVmModel assignedVm = new AssignedVmModel { UserId = user.IdentityId, UserName = user.Username, Password = user.Password, VmName = "VM_" + user.Username, VmRdpPort = 567 }; result.Add(assignedVm); } Thread.Sleep(1000); _logger.Info("Exiting GenerateVMsForUsers stub. [serviceNameBase:{0}; sourceVhdName:{1}; users:{2}]", serviceNameBase, vmConfig.ImageName, users.Count); return result; }
public AssignedVmModel GenerateVm(string serviceBaseName, VMConfigModel vmConfig, VMUserModel user) { //TODO: refactor GenerateVMsForUsers to be used instead of this one if (serviceBaseName.Length > 10) throw new ArgumentOutOfRangeException("serviceBaseName can't have more than 10 characters."); //find a name that is available Random r = new Random(); string serviceName = null; HostedServiceCheckNameAvailabilityResponse availableResponse; do { int randomValue = r.Next(99999); serviceName = serviceBaseName + randomValue; availableResponse = _compute.HostedServices.CheckNameAvailability(serviceName); } while (!availableResponse.IsAvailable); var createCloudService = _compute.HostedServices.Create( new HostedServiceCreateParameters { ServiceName = serviceName, Location = vmConfig.Region }); string virtualMachineName = serviceName; //TODO: need a status check GenerateVM(serviceName, vmConfig, virtualMachineName, RdpPortBase, user, firstVMInDeployment: true); AssignedVmModel assignedVm = new AssignedVmModel { UserId = user.IdentityId, UserName = user.Username, VmName = virtualMachineName, VmRdpPort = RdpPortBase, Password = user.Password }; return assignedVm; }