public override void deleteZVol(volume vol) { lock (events) { events.Add(new mockedCall("deleteZVol", "vol: " + vol)); } }
public override volume findVolumeByMountpoint(List <volume> volumesToSearch, string mountpoint) { lock (events) { events.Add(new mockedCall("findVolumeByMountpoint", "vols: '" + volumesToSearch + "' mountpoint: " + mountpoint)); } if (volumesToSearch == null) { return(null); } volume toRet = volumesToSearch.SingleOrDefault(x => x.mountpoint == mountpoint); if (toRet != null) { return(toRet); } if (volumesToSearch.All(x => x.children != null && x.children.Count == 0) || volumesToSearch.Count == 0) { return(null); } foreach (volume vol in volumesToSearch) { volume maybeThis = findVolumeByMountpoint(vol.children, mountpoint); if (maybeThis != null) { return(maybeThis); } } return(null); }
public override volume findVolumeByName(List <volume> vols, string name) { if (vols == null) { return(null); } volume toRet = vols.SingleOrDefault(x => x.name == name); if (toRet != null) { return(toRet); } if (vols.All(x => x.children != null && x.children.Count == 0) || vols.Count == 0) { return(null); } foreach (volume vol in vols) { volume maybeThis = findVolumeByName(vol.children, name); if (maybeThis != null) { return(maybeThis); } } return(null); }
public override volume findVolumeByName(List <volume> volsToSearch, string cloneName) { lock (events) { events.Add(new mockedCall("findVolumeByName", "volumes: '" + volsToSearch + "' cloneName: " + cloneName)); } if (volsToSearch == null) { return(null); } volume toRet = volsToSearch.SingleOrDefault(x => x.name == cloneName); if (toRet != null) { return(toRet); } if (volsToSearch.All(x => x.children != null && x.children.Count == 0) || volsToSearch.Count == 0) { return(null); } foreach (volume vol in volsToSearch) { volume maybeThis = findVolumeByName(vol.children, cloneName); if (maybeThis != null) { return(maybeThis); } } return(null); }
public override volume findParentVolume(List <volume> volumesToSearch, volume volToFind) { lock (events) { events.Add(new mockedCall("findParentVolume", "vols: '" + volumesToSearch + "' volToFind: " + volToFind)); } return(volumesToSearch.Single(x => x.children.Contains(volToFind))); }
public void addVolume(volume toAdd) { lock (events) { events.Add(new mockedCall("addVolume", "toAdd: " + toAdd)); } lock (volumes) { volumes.Add(toAdd); } }
public override void deleteZVol(volume toDelete) { // Oh no, the freenas API keeps returning HTTP 404 when I try to delete a volume! :( We ignore it and use the web UI // instead. ;_; lock (nonAPIReqLock) { DoNonAPIReq("", HttpStatusCode.OK); string url = "account/login/"; string payloadStr = string.Format("username={0}&password={1}", _username, _password); DoNonAPIReq(url, HttpStatusCode.OK, payloadStr); // Now we can do the request to delete the snapshot. string resp = DoNonAPIReq("storage/zvol/delete/" + toDelete.path + "/", HttpStatusCode.OK, ""); if (resp.Contains("\"error\": true") || !resp.Contains("Volume successfully destroyed")) { throw new nasAccessException("Volume deletion failed: " + resp); } } }
public override volume findParentVolume(List <volume> vols, volume volToFind) { volume toRet = vols.SingleOrDefault(x => x.children.Count(y => y.name == volToFind.name && x.volType == "dataset") > 0); if (toRet != null) { return(toRet); } if (vols.All(x => x.children.Count == 0) || vols.Count == 0) { return(null); } foreach (volume vol in vols) { return(findParentVolume(vol.children, volToFind)); } return(null); }
public abstract void deleteZVol(volume vol);
public abstract volume findParentVolume(List <volume> vols, volume volToFind);
public override void deleteZVol(volume vol) { waitUntilISCSIConfigFlushed(); uncachedNAS.deleteZVol(vol); }
public override volume findParentVolume(List <volume> vols, volume volToFind) { return(uncachedNAS.findParentVolume(vols, volToFind)); }