xenadmin/XenModel/ServerDBs/FakeAPI/fakeSR.cs

131 lines
4.5 KiB
C#
Raw Normal View History

/* Copyright (c) Citrix Systems Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms,
* with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above
* copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the
* following disclaimer in the documentation and/or other
* materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.Text;
using XenAdmin.Core;
using XenAPI;
using System.Collections;
using XenAdmin.Network;
namespace XenAdmin.ServerDBs.FakeAPI
{
internal class fakeSR : fakeXenObject
{
public fakeSR(DbProxy proxy)
: base("sr", proxy)
{
}
public Response<string> get_uuid(string session, string opaque_ref)
{
return new Response<string>((string)proxy.db.GetValue("sr", opaque_ref, "uuid"));
}
public Response<string> probe(string session, string host_ref, Hashtable device_config, string type, Hashtable sm_config)
{
switch (type)
{
case "lvmohba":
return new Response<string>(
@"<?xml version=""1.0"" ?>
<BlockDevice>
<Vendor>Vendor</Vendor>
<Size>500GB</Size>
<Serial>Serial</Serial>
<Path>Path</Path>
<SCSIID>1234-abcd-5678</SCSIID>
<Adapter>1</Adapter>
<Channel>2</Channel>
<ID>3</ID>
<LUN>4</LUN>
</BlockDevice>
");
default:
return new Response<string>(@"<?xml version=""1.0"" ?>
<SRlist>
<SR>
<UUID>5fc2cbc4-8ae9-37aa-ab7e-a19fa24f3e91</UUID>
<Size>197984256</Size>
<Aggregate>SMAPI</Aggregate>
</SR>
</SRlist>");
}
}
public Response<string> assert_can_host_ha_statefile(string session, string opaque_ref)
{
return new Response<string>("");
}
public Response<string> create(string session, string host_ref, Hashtable device_config, string size, string label, string description, string type, string content, bool shared, Hashtable sm_config)
{
// For SrScanAction: fake data so we can step through the New SR Wizard
Response<string> response = new Response<string>();
if (label == Helpers.GuiTempObjectPrefix) // fake create to find list of aggregates on an SR
{
response.Status = ResponseTypes.FAILURE;
if (type == "netapp")
response.ErrorDescription = new string[] { "SR_BACKEND_FAILURE_123", "", "",
@"<?xml version=""1.0"" ?>
<Aggrlist>
<Aggr>
<Name>SMAPI</Name>
<Size>609550192640</Size>
<Disks>6</Disks>
<RAIDType>raid4</RAIDType>
<asis_dedup>True</asis_dedup>
</Aggr>
</Aggrlist>" };
else
// I haven't managed to find out what a real Dell EqualLogic response looks like,
// but this is good enough to make the New SR Wizard work.
response.ErrorDescription = new string[] { "SR_BACKEND_FAILURE_163", "", "",
@"<?xml version=""1.0"" ?>
<Aggrlist>
<StoragePool>
<Name>SMAPI</Name>
<Default>true</Default>
<Members>2</Members>
<Volumes>2</Volumes>
<Capacity>609550192640</Capacity>
<FreeSpace>532573377854</FreeSpace>
</StoragePool>
</Aggrlist>"};
}
return response;
}
}
}