最近在研究XenServer提供的SDK,其中的C#引用深深的让我无奈了……(其他的没看)
重要的部分一个注释都没有…
而且官方给出的SDK中的方法、属性等的命名真心让我十分之蛋疼…
写这玩意的时候,开发机用的是2G内存的Win7,运行XenServer的是我的本本,运行在VMware中,分配了2G的内存(本本4G)
本来以为会很顺利,结果……………………写的时候,本本没死(这个很正常……)但开发机死了………………蓝屏了………………蓝屏的内容还没来得及看就自动重启了……………………
其他的就没什么好说的了,两种删除方式,直接上代码:
try
{
if (MvcApplication.session == null)
{
MvcApplication.session = new Session(ConfigurationManager.AppSettings["IP"], int.Parse(ConfigurationManager.AppSettings["Port"]));
MvcApplication.session.login_with_password(ConfigurationManager.AppSettings["UserName"], ConfigurationManager.AppSettings["Password"]);
}
XenAPI.Session session = MvcApplication.session;
#region 删除1
//这里假设所有的VM名称全都是唯一的
List<XenRef<VM>> vmRefs = VM.get_by_name_label(session, "vm1231");
//是否成功获得
if (vmRefs.Count >= 1)
{
//干掉他……
VM.destroy(session, vmRefs[0]);
}
#endregion
#region 删除2
//获取所有
vmRefs = VM.get_all(session);
//遍历所有
foreach (XenRef<VM> vmRef in vmRefs)
{
//获得VM实体
VM vm = VM.get_record(session, vmRef);
//判断VM的名称是否为vm123(这样会删除所有名为vm123的)
if (vm.name_label == "vm123")
{
//干掉他
VM.destroy(session, vmRef);
}
}
#endregion
}
catch (System.Net.WebException webex)
{//连接到服务器失败
}
catch (XenAPI.Failure failure)
{
if (failure.Message == "Could not authenticate session. Check your access credentials and try again.")
{ //验证失败,请检查账号密码
}
else if (failure.Message.IndexOf("Object has been deleted.VM") >= 0)
{ //该VM不存在
string error = failure.ErrorDescription[2] + "不存在!";
}
}
catch (Exception ex)
{
throw ex;
}
刚开始学习操作XenServer,对于其中的方法深感无奈,为什么无奈自己看下代码就知道了:
public static string get_name_label(Session session, string _vm)
{
return (string)session.proxy.vm_get_name_label(session.uuid, (_vm != null) ? _vm : "").parse();
}
public static string get_name_description(Session session, string _vm)
{
return (string)session.proxy.vm_get_name_description(session.uuid, (_vm != null) ? _vm : "").parse();
}
public static long get_user_version(Session session, string _vm)
{
return long.Parse((string)session.proxy.vm_get_user_version(session.uuid, (_vm != null) ? _vm : "").parse());
}
public static bool get_is_a_template(Session session, string _vm)
{
return (bool)session.proxy.vm_get_is_a_template(session.uuid, (_vm != null) ? _vm : "").parse();
}
public static XenRef<VDI> get_suspend_VDI(Session session, string _vm)
{
return XenRef<VDI>.Create(session.proxy.vm_get_suspend_vdi(session.uuid, (_vm != null) ? _vm : "").parse());
}
看到这些我很悲伤………………
就连英文注释都没有………………
而且跟我的命名习惯冲突,不知道为何,这SDK写的全都是下划线-_-|||
蓝屏好
蓝屏最好看了!
我的老掉牙的笔记本还是2g
……
你知足吧……我的还是后来加的……