public storageVolumeInfo GetSampleStorageVolume()
 {
     var sv = new storageVolumeInfo();
     sv.displayName = "";
     sv.friendlyName = "";
     sv.serialNum = "serialNum";
     sv.sizeInMB = 5000;
     sv.storagePoolId = "storagePoolInfo";
     sv.storageSystemId = "storageSystemId";
     sv.storageVolumeId = "storageVolumeId";
     sv.usedSpaceInMB = 1000;
     sv.objectId = "storageVolumeId";
     return sv;
 }
Example #2
0
        public storageVolumeInfo GetSampleStorageVolume()
        {
            var sv = new storageVolumeInfo();

            sv.displayName     = "";
            sv.friendlyName    = "";
            sv.serialNum       = "serialNum";
            sv.sizeInMB        = 5000;
            sv.storagePoolId   = "storagePoolInfo";
            sv.storageSystemId = "storageSystemId";
            sv.storageVolumeId = "storageVolumeId";
            sv.usedSpaceInMB   = 1000;
            sv.objectId        = "storageVolumeId";
            return(sv);
        }
            private void RefreshStorageLinkSystem(string storageSystemId)
            {
                StorageLinkSystem system = new List <StorageLinkSystem>(_connection.Cache.StorageSystems).Find(s => s.opaque_ref == storageSystemId);

                if (system != null)
                {
                    storagePoolInfo[]   storagePools   = new storagePoolInfo[0];
                    storageVolumeInfo[] storageVolumes = new storageVolumeInfo[0];

                    try
                    {
                        _connection._service.enumStoragePools(storageSystemId, string.Empty, (int)StorageLinkEnums.FlagsType.NONE, out storagePools);
                        _connection._service.enumStorageNodes(storageSystemId, string.Empty, string.Empty, (int)StorageLinkEnums.FlagsType.NONE, out storageVolumes);
                    }
                    catch (SoapException e)
                    {
                        // if the creds have just been removed then don't throw the exception on.
                        if (e.Detail == null || e.Detail.InnerText.IndexOf("SL_MSG_ERR_NO_STORAGE_MANAGEMENT_CREDENTIALS_COULD_BE_FOUND_FOR_STORAGE_SYSTEM") < 0)
                        {
                            throw;
                        }
                    }

                    List <StorageLinkPool>   pools   = new List <StorageLinkPool>();
                    List <StorageLinkVolume> volumes = new List <StorageLinkVolume>();

                    foreach (storagePoolInfo poolInfo in storagePools)
                    {
                        pools.Add(new StorageLinkPool(_connection, poolInfo.objectId, poolInfo.friendlyName, poolInfo.parentPool, poolInfo.storageSystemId, poolInfo.sizeInMB, poolInfo.sizeInMB - poolInfo.freeSpaceInMB, (StorageLinkEnums.RaidType)poolInfo.supportedRaidTypes, (StorageLinkEnums.ProvisioningType)poolInfo.supportedProvisioningTypes));
                    }

                    foreach (storageVolumeInfo volumeInfo in storageVolumes)
                    {
                        volumes.Add(new StorageLinkVolume(_connection,
                                                          volumeInfo.objectId,
                                                          system.StorageLinkServer,
                                                          volumeInfo.friendlyName,
                                                          volumeInfo.storageSystemId,
                                                          volumeInfo.storagePoolId,
                                                          volumeInfo.sizeInMB,
                                                          volumeInfo.usedSpaceInMB));
                    }

                    _connection.Invoke(() => _connection.Cache.Update(storageSystemId, pools, volumes));
                }
            }
        public void TestStorageSystemExistsOnConnect()
        {
            storageSystemInfo ss = _ws.GetSampleStorageSystem();
            storagePoolInfo   sp = _ws.GetSampleStoragePool();
            storageVolumeInfo sv = _ws.GetSampleStorageVolume();

            _ws.StorageSystemsAndPools.Add(ss, new[] { sp });
            _ws.StoragePoolsAndVolumes.Add(sp, new[] { sv });

            Connect();

            WaitFor(() => _con.Cache.StorageSystems.Count == 1, "Storage System didn't get added.");

            Assert.AreEqual(_con.Cache.StorageSystems[0].opaque_ref, ss.objectId);
            Assert.AreEqual(_con.Cache.StorageSystems[0].SerialNumber, ss.serialNum);
            Assert.AreEqual(_con.Cache.StorageSystems[0].Model, ss.model);
            Assert.AreEqual(_con.Cache.StorageSystems[0].FullName, ss.displayName);
            Assert.AreEqual((uint)_con.Cache.StorageSystems[0].Capabilities, ss.capabilities);
            Assert.AreEqual(_con.Cache.StorageSystems[0].FriendlyName, ss.friendlyName);

            Assert.AreEqual(_con.Cache.StoragePools[0].opaque_ref, sp.objectId);

            Assert.AreEqual(_con.Cache.StorageVolumes[0].opaque_ref, sv.objectId);
        }
        public jobInfo enumStorageNodes(string storageSystemId, string storagePoolId, string filters, int flags, out storageVolumeInfo[] snInfoList)
        {
            var output = new List<storageVolumeInfo>();

            foreach (storageSystemInfo ss in StorageSystemsAndPools.Keys)
            {
                if (ss.storageSystemId == storageSystemId)
                {
                    foreach (storagePoolInfo sp in StoragePoolsAndVolumes.Keys)
                    {
                        if (storagePoolId.Length == 0)
                        {
                            output.AddRange(StoragePoolsAndVolumes[sp]);
                        }
                        else if (sp.storagePoolId == storagePoolId)
                        {
                            snInfoList = new List<storageVolumeInfo>(StoragePoolsAndVolumes[sp]).ToArray();
                            return null;
                        }
                    }
                }
            }
            snInfoList = output.ToArray();
            return null;
        }
            private void RefreshStorageLinkSystem(string storageSystemId)
            {
                StorageLinkSystem system = new List<StorageLinkSystem>(_connection.Cache.StorageSystems).Find(s => s.opaque_ref == storageSystemId);

                if (system != null)
                {
                    storagePoolInfo[] storagePools = new storagePoolInfo[0];
                    storageVolumeInfo[] storageVolumes = new storageVolumeInfo[0];

                    try
                    {
                        _connection._service.enumStoragePools(storageSystemId, string.Empty, (int)StorageLinkEnums.FlagsType.NONE, out storagePools);
                        _connection._service.enumStorageNodes(storageSystemId, string.Empty, string.Empty, (int)StorageLinkEnums.FlagsType.NONE, out storageVolumes);
                    }
                    catch (SoapException e)
                    {
                        // if the creds have just been removed then don't throw the exception on.
                        if (e.Detail == null || e.Detail.InnerText.IndexOf("SL_MSG_ERR_NO_STORAGE_MANAGEMENT_CREDENTIALS_COULD_BE_FOUND_FOR_STORAGE_SYSTEM") < 0)
                        {
                            throw;
                        }
                    }

                    List<StorageLinkPool> pools = new List<StorageLinkPool>();
                    List<StorageLinkVolume> volumes = new List<StorageLinkVolume>();

                    foreach (storagePoolInfo poolInfo in storagePools)
                    {
                        pools.Add(new StorageLinkPool(_connection, poolInfo.objectId, poolInfo.friendlyName, poolInfo.parentPool, poolInfo.storageSystemId, poolInfo.sizeInMB, poolInfo.sizeInMB - poolInfo.freeSpaceInMB, (StorageLinkEnums.RaidType)poolInfo.supportedRaidTypes, (StorageLinkEnums.ProvisioningType)poolInfo.supportedProvisioningTypes));
                    }

                    foreach (storageVolumeInfo volumeInfo in storageVolumes)
                    {
                        volumes.Add(new StorageLinkVolume(_connection,
                            volumeInfo.objectId,
                            system.StorageLinkServer,
                            volumeInfo.friendlyName,
                            volumeInfo.storageSystemId,
                            volumeInfo.storagePoolId,
                            volumeInfo.sizeInMB,
                            volumeInfo.usedSpaceInMB));
                    }

                    _connection.Invoke(() => _connection.Cache.Update(storageSystemId, pools, volumes));
                }
            }