Beispiel #1
0
        public async void CreateRaidAsync(List <PhysicalDisk> disks, Enclousure enclousure, string level, string name, long capacity, long optimal)
        {
            try
            {
                var      idrac = new StorageController(server);
                IdracJob job   = await idrac.CreateVirtualDiskAsync(disks, enclousure, level, capacity, optimal, name);

                var load = new LoadWindow(server, job)
                {
                    Title = server.Host
                };
                load.Closed += (object sender, EventArgs e) =>
                {
                    var window = (LoadWindow)sender;
                    job = window.Job;
                    if (job.JobState.Contains("Completed"))
                    {
                        MessageBox.Show("Raid criado com sucesso !", "Sucesso", MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                };
                load.Show();
            }
            catch (Exception ex)
            {
                MessageBox.Show(string.Format("Falha ao criar o Job {0}", ex.Message), "Erro", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
Beispiel #2
0
        /// <summary>
        /// Retorna todos os discos associados a uma determinada Controladora
        /// </summary>
        /// <param name="enclousure">Controladora que abriga os discos</param>
        /// <returns>Lista com todos os discos da controladora</returns>
        public async Task <List <PhysicalDisk> > GetPhysicalDisksAsync(Enclousure enclousure)
        {
            if (enclousure == null)
            {
                throw new ArgumentNullException("enclousure", "O argumento não pode ser nulo");
            }

            List <PhysicalDisk> disks = new List <PhysicalDisk>();

            foreach (var item in enclousure.Drives)
            {
                disks.Add(await GetResourceAsync <PhysicalDisk>(BaseUri + item.Id));
            }
            return(disks);
        }
Beispiel #3
0
        /// <summary>
        /// Retorna todos os discos virtuais de uma enclousure
        /// </summary>
        /// <param name="enclousure">Enclousure onde estão os discos</param>
        /// <returns>Lista com todos os discos virtuais</returns>
        public async Task <List <VirtualDisk> > GetVirtualDisksAsync(Enclousure enclousure)
        {
            if (enclousure == null)
            {
                throw new ArgumentNullException("enclousure", "O argumento não pode ser nulo");
            }

            string location = enclousure.Volumes.Id;

            using (var request = new HttpRequestMessage(HttpMethod.Get, BaseUri + location))
            {
                request.Headers.Authorization = Credentials;
                using (var response = await Client.SendAsync(request))
                {
                    if (response.StatusCode == System.Net.HttpStatusCode.Forbidden)
                    {
                        throw new UnauthorizedAccessException("Acesso negado, verifique usuario/senha");
                    }

                    if (!response.IsSuccessStatusCode)
                    {
                        throw new HttpRequestException(string.Format("Falha ao obter discos virtuais {0}", response.ReasonPhrase));
                    }

                    var volumesCollection = new
                    {
                        Members = new List <OdataObject>()
                    };
                    string jsonData = await response.Content.ReadAsStringAsync();

                    var collection   = JsonConvert.DeserializeAnonymousType(jsonData, volumesCollection);
                    var virtualDisks = new List <VirtualDisk>();
                    foreach (var item in collection.Members)
                    {
                        virtualDisks.Add(await GetResourceAsync <VirtualDisk>(BaseUri + item.Id));
                    }
                    return(virtualDisks);
                }
            }
        }
Beispiel #4
0
        /// <summary>
        /// Cria um disco virtual
        /// </summary>
        /// <param name="disks">Lsta de discos fisicos</param>
        /// <param name="enclousure">Enclousure resposavel pelos discos</param>
        /// <param name="level">Nivel de Raid</param>
        /// <param name="name">Nome do disco virtual</param>
        /// <returns></returns>
        public async Task <IdracJob> CreateVirtualDiskAsync(List <PhysicalDisk> disks, Enclousure enclousure, string level, string name)
        {
            List <OdataObject> drives = new List <OdataObject>();

            foreach (var disk in disks)
            {
                drives.Add(new OdataObject()
                {
                    Id = disk.OdataId
                });
            }
            var content = new
            {
                VolumeType = level,
                Drives     = drives,
                Name       = name,
            };
            var jsonContent = JsonConvert.SerializeObject(content);
            var httpContent = new StringContent(jsonContent, Encoding.UTF8, "application/json");
            var idrac       = new JobController(Server);

            return(await idrac.CreateJobAsync(string.Format("{0}{1}/Volumes", BaseUri, enclousure.OdataId), httpContent));
        }