技术解析
最近在研究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()); }
看到这些我很悲伤………………