一个简单的插件不需要写一行代码就可以实现,按照下述步骤:
1)准备一个可以访问的互联网或者局域网Web地址,如:http://www.google.com
2)编写一个XML格式的配置文件,命名为scriptConfig.xml,内容如下:
<scriptConfiguration version="1.0"> |
选择一台安装了VMware vCenter的主机,在VMware vCenter安装目录的子目录..\VMware\Infrastructure\tomcat\webapps下再创建一个目录,命名为google-ui,然后把scriptConfig.xml放到这个目录下。
3)注册插件。假设刚才选择的那个VMware vCenter主机的IP地址为192.168.0.100,那么在浏览器中输入地址:https://192.168.0.100/mob,用VMware vCenter的管理员帐户和密码登录。依次点击页面上“content”--“ExtensionManager”--“RegisterExtension”,把“Value”里面的内容清空,然后将下面的内容拷贝进去,点击“Invoke Method”即完成注册。用VMware Client重新登录VMware vCenter,打开窗口“主页”,在“解决方案和应用程序”下就能看到“Google Search”图标了,点击图标,就能看到显示成Google主页的插件。
<extension> |
当然,如果做一个稍微复杂的插件,就得考虑很多问题了。
1. 插件程序的拓扑
VMware Client登录VMware vCenter,VMware vCenter根据插件的注册信息,读取插件的配置文件,将插件的URL地址返回给VMware Client,VMware Client将插件的Web页显示在界面上。
2. 插件程序的开发
2.1. 插件程序的界面:插件是一个Web程序,可以用ASP.Net,JSP,CGI或者PHP等语言进行开发,但插件的界面风格必须和VMware Client保持一致,可以参考文献http://www.vmware.com/support/developer/vc-sdk/vcplugin/vSphereClient_plugin_ui_guidelines.pdf,了解界面的制作要求。
2.2. 插件程序的参数:插件在VMware Client中显示,VMware Client在调用插件主页时,会在URL地址里面传递一些重要参数给插件。其中moref指明插件的属主虚拟机对象;sessionid指明VMware Client的登录信息;local指明VMware Client使用的多国语言;serviceurl指明VMware vCenter的IP地址。
2.3. 插件程序的通信:插件是独立的Web程序,它的运行与VMware vCenter没有任何关系,所以为了获取VMware vCenter的虚拟机对象信息,就必须与之通信。通信使用的开发包是VMware vSphere Web Services SDK。开发包中有完整的示例,在学习了这些示例后,读者就可以利用上述插件程序的参数开发自己的Web应用了。开发包下载地址:http://www.vmware.com/support/developer/vc-sdk/
3. 插件程序的部署
插件既然是Web程序,就必须部署在Web Server上,读者可以自己架设IIS或者Apache服务器。如果嫌繁琐的话,可以直接利用VMware vCenter已经安装好的Web服务,如上面2)所说,将Web文件置于tomcat\webapps目录下面。部署好以后,可以通过浏览器测试一下地址是否正确。
4. 插件程序的配置文件
配置文件有两个重要参数,第一是extension的parent属性,它指示了插件是出现在什么位置的,如VMware Client的主页,还是菜单,工具栏,或者是选项卡上。第二是extension的url子项,它指示了插件的Web页地址。配置文件和插件程序一样,要通过URL地址访问,因此也必须部署在Web Server上,部署方式可以参考插件程序的部署。
5. 插件程序的注册
插件程序的注册途径有很多,比如上面所说的直接在浏览器上操作,也可以使用perl或者powershell脚本注册,还可以编写java或者C#程序进行注册。java代码注册可以参考文献http://www.vmware.com/support/developer/vc-sdk/vcplugin/vSphere_Plugin_4_1_Technote.pdf,读者可以参考开发包的示例,将java语言的注册代码改成C#语言的注册代码。本人写的注册代码如下:
using System; namespace RegMyPlugin public RegMyPlugin() private void createServiceRef() private void connLoginReg(String hostName, String userName, String password) ExtensionServerInfo esi = new ExtensionServerInfo(); ExtensionClientInfo eci = new ExtensionClientInfo(); Extension ext= new Extension(); createServiceRef(); _service = new VimService(); _sic = _service.RetrieveServiceContent(_svcRef); static void Main(string[] args) |
转载于:https://blog.51cto.com/csynine/512727