2011-08-23 07:40:22 +02:00
Ext . define ( 'PVE.storage.IScsiScan' , {
extend : 'Ext.form.field.ComboBox' ,
alias : 'widget.pveIScsiScan' ,
queryParam : 'portal' ,
doRawQuery : function ( ) {
} ,
onTriggerClick : function ( ) {
var me = this ;
if ( ! me . queryCaching || me . lastQuery !== me . portal ) {
me . store . removeAll ( ) ;
}
me . allQuery = me . portal ;
me . callParent ( ) ;
} ,
setPortal : function ( portal ) {
var me = this ;
me . portal = portal ;
} ,
initComponent : function ( ) {
var me = this ;
if ( ! me . nodename ) {
me . nodename = 'localhost' ;
}
var store = Ext . create ( 'Ext.data.Store' , {
fields : [ 'target' , 'portal' ] ,
proxy : {
type : 'pve' ,
url : '/api2/json/nodes/' + me . nodename + '/scan/iscsi'
}
} ) ;
Ext . apply ( me , {
store : store ,
valueField : 'target' ,
displayField : 'target' ,
matchFieldWidth : false ,
listConfig : {
loadingText : 'Scanning...' ,
width : 350
}
} ) ;
me . callParent ( ) ;
}
} ) ;
Ext . define ( 'PVE.storage.IScsiInputPanel' , {
extend : 'PVE.panel.InputPanel' ,
onGetValues : function ( values ) {
var me = this ;
if ( me . create ) {
values . type = 'iscsi' ;
} else {
delete values . storage ;
}
values . content = values . luns ? 'images' : 'none' ;
delete values . luns ;
values . disable = values . enable ? 0 : 1 ;
delete values . enable ;
return values ;
} ,
initComponent : function ( ) {
var me = this ;
me . column1 = [
{
xtype : me . create ? 'textfield' : 'displayfield' ,
name : 'storage' ,
height : 22 , // hack: set same height as text fields
value : me . storageId || '' ,
2011-11-25 12:42:37 +01:00
fieldLabel : 'ID' ,
2011-08-23 07:40:22 +02:00
vtype : 'StorageId' ,
allowBlank : false
} ,
{
xtype : me . create ? 'textfield' : 'displayfield' ,
height : 22 , // hack: set same height as text fields
name : 'portal' ,
value : '' ,
fieldLabel : 'Portal' ,
allowBlank : false ,
listeners : {
change : function ( f , value ) {
if ( me . create ) {
var exportField = me . down ( 'field[name=target]' ) ;
exportField . setPortal ( value ) ;
exportField . setValue ( '' ) ;
}
}
}
} ,
{
readOnly : ! me . create ,
xtype : me . create ? 'pveIScsiScan' : 'displayfield' ,
name : 'target' ,
value : '' ,
fieldLabel : 'Target' ,
allowBlank : false
}
] ;
me . column2 = [
{
xtype : 'PVE.form.NodeSelector' ,
name : 'nodes' ,
2011-11-25 12:42:37 +01:00
fieldLabel : gettext ( 'Nodes' ) ,
emptyText : gettext ( 'All' ) + ' (' +
gettext ( 'No restrictions' ) + ')' ,
2011-08-23 07:40:22 +02:00
multiSelect : true ,
autoSelect : false
} ,
{
xtype : 'pvecheckbox' ,
name : 'enable' ,
checked : true ,
uncheckedValue : 0 ,
2011-11-25 12:42:37 +01:00
fieldLabel : gettext ( 'Enable' )
2011-08-23 07:40:22 +02:00
} ,
{
xtype : 'checkbox' ,
name : 'luns' ,
checked : true ,
2011-11-25 12:42:37 +01:00
fieldLabel : gettext ( 'Use LUNs directly' )
2011-08-23 07:40:22 +02:00
}
] ;
me . callParent ( ) ;
}
} ) ;
Ext . define ( 'PVE.storage.IScsiEdit' , {
extend : 'PVE.window.Edit' ,
initComponent : function ( ) {
var me = this ;
me . create = ! me . storageId ;
if ( me . create ) {
me . url = '/api2/extjs/storage' ;
me . method = 'POST' ;
} else {
me . url = '/api2/extjs/storage/' + me . storageId ;
me . method = 'PUT' ;
}
var ipanel = Ext . create ( 'PVE.storage.IScsiInputPanel' , {
create : me . create ,
storageId : me . storageId
} ) ;
2012-01-12 09:15:34 +01:00
Ext . apply ( me , {
subject : 'iSCSI target' ,
isAdd : true ,
items : [ ipanel ]
} ) ;
2011-08-23 07:40:22 +02:00
me . callParent ( ) ;
if ( ! me . create ) {
me . load ( {
success : function ( response , options ) {
var values = response . result . data ;
var ctypes = values . content || '' ;
if ( values . storage === 'local' ) {
values . content = ctypes . split ( ',' ) ;
}
if ( values . nodes ) {
values . nodes = values . nodes . split ( ',' ) ;
}
values . enable = values . disable ? 0 : 1 ;
values . luns = ( values . content === 'images' ) ? true : false ;
ipanel . setValues ( values ) ;
}
} ) ;
}
}
} ) ;