]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/qemu/AgentIPView.js
1 Ext
.define('PVE.window.IPInfo', {
2 extend
: 'Ext.window.Window',
4 title
: gettext('Guest Agent Network Information'),
14 emptyText
: gettext('No network information'),
18 text
: gettext('Name'),
22 dataIndex
: 'hardware-address',
23 text
: gettext('MAC address'),
27 dataIndex
: 'ip-addresses',
28 text
: gettext('IP address'),
31 renderer: function(val
) {
32 if (!Ext
.isArray(val
)) {
36 val
.forEach(function(ip
) {
37 var addr
= ip
['ip-address'];
40 ips
.push(addr
+ '/' + pref
);
43 return ips
.join('<br>');
51 Ext
.define('PVE.qemu.AgentIPView', {
52 extend
: 'Ext.container.Container',
53 xtype
: 'pveAgentIPView',
65 html
: '<i class="fa fa-exchange"></i> IPs'
88 ui
: 'default-toolbar',
89 handler: function(btn
) {
90 var me
= this.up('pveAgentIPView');
92 var win
= Ext
.create('PVE.window.IPInfo');
93 win
.down('grid').getStore().setData(me
.nics
);
102 getDefaultIps: function(nics
) {
105 nics
.forEach(function(nic
) {
106 if (nic
['hardware-address'] &&
107 nic
['hardware-address'] != '00:00:00:00:00:00') {
109 var nic_ips
= nic
['ip-addresses'] || [];
110 nic_ips
.forEach(function(ip
) {
111 var p
= ip
['ip-address'];
112 // show 2 ips at maximum
113 if (ips
.length
< 2) {
123 startIPStore: function(store
, records
, success
) {
125 var agentRec
= store
.getById('agent');
126 /*jslint confusion: true*/
127 /* value is number and string */
128 me
.agent
= (agentRec
&& agentRec
.data
.value
=== 1);
129 me
.running
= (store
.getById('status').data
.value
=== 'running');
130 /*jslint confusion: false*/
132 var caps
= Ext
.state
.Manager
.get('GuiCap');
134 if (!caps
.vms
['VM.Monitor']) {
135 var errorText
= gettext("Requires '{0}' Privileges");
136 me
.updateStatus(false, Ext
.String
.format(errorText
, 'VM.Monitor'));
140 if (me
.agent
&& me
.running
&& me
.ipStore
.isStopped
) {
141 me
.ipStore
.startUpdate();
142 } else if (me
.ipStore
.isStopped
) {
147 updateStatus: function(unsuccessful
, defaulttext
) {
149 var text
= defaulttext
|| gettext('No network information');
152 text
= gettext('Guest Agent not running');
153 } else if (me
.agent
&& me
.running
) {
154 if (Ext
.isArray(me
.nics
) && me
.nics
.length
) {
156 var ips
= me
.getDefaultIps(me
.nics
);
157 if (ips
.length
!== 0) {
158 text
= ips
.join('<br>');
160 } else if (me
.nics
&& me
.nics
.error
) {
161 var msg
= gettext('Cannot get info from Guest Agent<br>Error: {0}');
162 text
= Ext
.String
.format(text
, me
.nics
.error
.desc
);
164 } else if (me
.agent
) {
165 text
= gettext('Guest Agent not running');
167 text
= gettext('No Guest Agent configured');
170 var ipBox
= me
.down('#ipBox');
173 var moreBtn
= me
.down('#moreBtn');
174 moreBtn
.setVisible(more
);
177 initComponent: function() {
181 throw 'rstore not given';
184 if (!me
.pveSelNode
) {
185 throw 'pveSelNode not given';
188 var nodename
= me
.pveSelNode
.data
.node
;
189 var vmid
= me
.pveSelNode
.data
.vmid
;
191 me
.ipStore
= Ext
.create('Proxmox.data.UpdateStore', {
193 storeid
: 'pve-qemu-agent-' + vmid
,
197 url
: '/api2/json/nodes/' + nodename
+ '/qemu/' + vmid
+ '/agent/network-get-interfaces'
203 me
.mon(me
.ipStore
, 'load', function(store
, records
, success
) {
204 if (records
&& records
.length
) {
205 me
.nics
= records
[0].data
.result
;
209 me
.updateStatus(!success
);
212 me
.on('destroy', me
.ipStore
.stopUpdate
);
214 // if we already have info about the vm, use it immediately
215 if (me
.rstore
.getCount()) {
216 me
.startIPStore(me
.rstore
, me
.rstore
.getData(), false);
219 // check if the guest agent is there on every statusstore load
220 me
.mon(me
.rstore
, 'load', me
.startIPStore
, me
);