Permalink
Browse files

Remove a bunch of things that don't make sense in a CTL universe.

Ticket: #5524
  • Loading branch information...
1 parent 72b6c1f commit 670018bd7f956f798efeae20e9d8299a8b0786ea @jpaetzel jpaetzel committed Jul 20, 2014
View
5 build/nanobsd-cfg/Files/etc/rc.conf.local
@@ -494,11 +494,6 @@ _gen_conf()
echo "geli_${_provider}_flags=\"-p -k /data/geli/${key}.key\""
done
- local iscsi_multithreaded=$(${FREENAS_SQLITE_CMD} ${FREENAS_CONFIG} "SELECT iscsi_multithreaded FROM services_iscsitargetglobalconfiguration ORDER BY -id LIMIT 1")
- if [ ${iscsi_multithreaded} -eq 1 ]; then
- echo "istgt_args=\"-m 2\""
- fi
-
${FREENAS_SQLITE_CMD} ${FREENAS_CONFIG} "SELECT lldp_intdesc, lldp_country, lldp_location FROM services_lldp ORDER BY -id LIMIT 1" | \
while read -r lldp_intdesc lldp_country lldp_location; do
echo -n "ladvd_flags=\"-a"
View
63 docs/api/resources/iscsi/index.rst
@@ -32,27 +32,9 @@ List resource
Content-Type: application/json
{
- "iscsi_multithreaded": false,
- "iscsi_maxconnect": 8,
- "iscsi_luc_authnetwork": "",
- "iscsi_iotimeout": 30,
- "iscsi_lucip": "127.0.0.1",
- "iscsi_firstburst": 65536,
- "iscsi_r2t": 32,
"iscsi_discoveryauthmethod": "None",
- "iscsi_defaultt2w": 2,
- "iscsi_maxrecdata": 262144,
"iscsi_basename": "iqn.2011-03.org.example.istgt",
- "iscsi_defaultt2r": 60,
- "iscsi_nopinint": 20,
"iscsi_discoveryauthgroup": null,
- "iscsi_maxburst": 262144,
- "iscsi_toggleluc": false,
- "iscsi_lucport": 3261,
- "iscsi_luc_authgroup": null,
- "iscsi_maxsesh": 16,
- "iscsi_luc_authmethod": "",
- "iscsi_maxoutstandingr2t": 16,
"id": 1
}
@@ -87,51 +69,15 @@ Update resource
Content-Type: application/json
{
- "iscsi_multithreaded": false,
- "iscsi_maxconnect": 16,
- "iscsi_luc_authnetwork": "",
- "iscsi_iotimeout": 30,
- "iscsi_lucip": "127.0.0.1",
- "iscsi_firstburst": 65536,
- "iscsi_r2t": 32,
"iscsi_discoveryauthmethod": "None",
- "iscsi_defaultt2w": 2,
- "iscsi_maxrecdata": 262144,
"iscsi_basename": "iqn.2011-03.org.example.istgt",
- "iscsi_defaultt2r": 60,
- "iscsi_nopinint": 20,
"iscsi_discoveryauthgroup": null,
- "iscsi_maxburst": 262144,
- "iscsi_toggleluc": false,
- "iscsi_lucport": 3261,
- "iscsi_luc_authgroup": null,
- "iscsi_maxsesh": 16,
- "iscsi_luc_authmethod": "",
- "iscsi_maxoutstandingr2t": 16,
"id": 1
}
:json string iscsi_basename: base name (e.g. iqn.2007-09.jp.ne.peach.istgt, see RFC 3720 and 3721 for details)
:json string iscsi_discoveryauthmethod: None, Auto, CHAP, CHAP Mutual
:json string iscsi_discoveryauthgroup: id of auth group
- :json string iscsi_iotimeout: I/O timeout in seconds
- :json string iscsi_nopinint: NOPIN sending interval in seconds
- :json string iscsi_maxsesh: maximum number of sessions holding at same time
- :json string iscsi_maxconnect: maximum number of connections in each session
- :json string iscsi_r2t: maximum number of pre-send R2T in each connection
- :json string iscsi_maxoutstandingr2t: MaxOutstandingR2T
- :json string iscsi_firstburst: first burst length
- :json string iscsi_maxburst: max burst length
- :json string iscsi_maxrecdata: max receive data segment length
- :json string iscsi_defaultt2w: DefaultTime2Wait
- :json string iscsi_defaultt2r: DefaultTime2Retain
- :json boolean iscsi_toggleluc: Enable LUC
- :json boolean iscsi_multithreaded: enable multithreaded server
- :json string iscsi_lucip: Controller IP address
- :json string iscsi_lucport: Controller TCP port
- :json string iscsi_luc_authnetwork: Controller Authorized Network
- :json string iscsi_luc_authmethod: None, Auto, CHAP, CHAP Mutual
- :json string iscsi_luc_authgroup: id of auth group
:reqheader Content-Type: the request content type
:resheader Content-Type: the response content type
:statuscode 202: no error
@@ -648,7 +594,6 @@ List resource
"iscsi_target_logical_blocksize": 512,
"iscsi_target_portalgroup": 1,
"iscsi_target_initialdigest": "Auto",
- "iscsi_target_queue_depth": 32,
"iscsi_target_name": "target",
"iscsi_target_initiatorgroup": 1,
"iscsi_target_alias": null,
@@ -699,7 +644,6 @@ Create resource
"iscsi_target_logical_blocksize": 512,
"iscsi_target_portalgroup": 1,
"iscsi_target_initialdigest": "Auto",
- "iscsi_target_queue_depth": 32,
"iscsi_target_name": "target",
"iscsi_target_initiatorgroup": 1,
"iscsi_target_alias": null,
@@ -720,7 +664,6 @@ Create resource
:json string iscsi_target_authtype: None, Auto, CHAP, CHAP Mutual
:json integer iscsi_target_authgroup: Authentication Group ID
:json string iscsi_target_initialdigest: the method can be accepted by the target. Auto means both none and authentication
- :json integer iscsi_target_queue_depth: 0=disabled, 1-255=enabled command queuing with specified depth. The recommended queue depth is 32
:json integer iscsi_target_logical_blocksize: yYou may specify logical block length (512 by default)
:reqheader Content-Type: the request content type
:resheader Content-Type: the response content type
@@ -742,7 +685,7 @@ Update resource
Content-Type: application/json
{
- "iscsi_target_queue_depth": 64
+ "iscsi_target_alias": "test"
}
**Example response**:
@@ -757,10 +700,9 @@ Update resource
"iscsi_target_logical_blocksize": 512,
"iscsi_target_portalgroup": 1,
"iscsi_target_initialdigest": "Auto",
- "iscsi_target_queue_depth": 64,
"iscsi_target_name": "target",
"iscsi_target_initiatorgroup": 1,
- "iscsi_target_alias": null,
+ "iscsi_target_alias": "test",
"iscsi_target_type": "Disk",
"iscsi_target_authgroup": null,
"iscsi_target_authtype": "Auto",
@@ -778,7 +720,6 @@ Update resource
:json string iscsi_target_authtype: None, Auto, CHAP, CHAP Mutual
:json integer iscsi_target_authgroup: Authentication Group ID
:json string iscsi_target_initialdigest: the method can be accepted by the target. Auto means both none and authentication
- :json integer iscsi_target_queue_depth: 0=disabled, 1-255=enabled command queuing with specified depth. The recommended queue depth is 32
:json integer iscsi_target_logical_blocksize: yYou may specify logical block length (512 by default)
:reqheader Content-Type: the request content type
:resheader Content-Type: the response content type
View
34 gui/api/test_services.py
@@ -950,40 +950,22 @@ def test_Retrieve(self):
self.assertEqual(data, {
u'id': self._obj.id,
u'iscsi_basename': u'iqn.2011-03.org.example.istgt',
- u'iscsi_defaultt2r': 60,
- u'iscsi_defaultt2w': 2,
u'iscsi_discoveryauthgroup': None,
- u'iscsi_discoveryauthmethod': u'Auto',
- u'iscsi_firstburst': 65536,
- u'iscsi_iotimeout': 30,
- u'iscsi_luc_authgroup': None,
- u'iscsi_luc_authmethod': u'CHAP',
- u'iscsi_luc_authnetwork': u'127.0.0.0/8',
- u'iscsi_lucip': u'127.0.0.1',
- u'iscsi_lucport': 3261,
- u'iscsi_maxburst': 262144,
- u'iscsi_maxconnect': 8,
- u'iscsi_maxoutstandingr2t': 16,
- u'iscsi_maxrecdata': 262144,
- u'iscsi_maxsesh': 16,
- u'iscsi_multithreaded': False,
- u'iscsi_nopinint': 20,
- u'iscsi_r2t': 32,
- u'iscsi_toggleluc': False
+ u'iscsi_discoveryauthmethod': u'Auto'
})
def test_Update(self):
resp = self.api_client.put(
'%s%d/' % (self.get_api_url(), self._obj.id),
format='json',
data={
- 'iscsi_r2t': 64,
+ 'iscsi_basename': "iqn.2011-03.com.ixsystems.istgt",
}
)
self.assertHttpOK(resp)
data = self.deserialize(resp)
self.assertEqual(data['id'], self._obj.id)
- self.assertEqual(data['iscsi_r2t'], 64)
+ self.assertEqual(data['iscsi_basename'], "iqn.2011-03.com.ixsystems.istgt")
def test_Delete(self):
resp = self.api_client.delete(
@@ -1326,7 +1308,6 @@ def test_Create(self):
u'iscsi_target_logical_blocksize': 512,
u'iscsi_target_name': u'target',
u'iscsi_target_portalgroup': 1,
- u'iscsi_target_queue_depth': 32,
u'iscsi_target_serial': u'10000001',
u'iscsi_target_type': u'Disk'
})
@@ -1354,7 +1335,6 @@ def test_Retrieve(self):
u'iscsi_target_logical_blocksize': 512,
u'iscsi_target_name': u'target',
u'iscsi_target_portalgroup': 1,
- u'iscsi_target_queue_depth': 32,
u'iscsi_target_serial': u'10000001',
u'iscsi_target_type': u'Disk'
}])
@@ -1369,13 +1349,13 @@ def test_Update(self):
'%s%d/' % (self.get_api_url(), obj.id),
format='json',
data={
- 'iscsi_target_queue_depth': 64,
+ 'iscsi_target_alias': "test",
}
)
self.assertHttpOK(resp)
data = self.deserialize(resp)
self.assertEqual(data['id'], obj.id)
- self.assertEqual(data['iscsi_target_queue_depth'], 64)
+ self.assertEqual(data['iscsi_target_alias'], )
def test_Delete(self):
obj = models.iSCSITarget.objects.create(
@@ -1462,13 +1442,13 @@ def test_Update(self):
'%s%d/' % (self.get_api_url(), obj.id),
format='json',
data={
- 'iscsi_target_queue_depth': 64,
+ 'iscsi_target_alias': "test",
}
)
self.assertHttpOK(resp)
data = self.deserialize(resp)
self.assertEqual(data['id'], obj.id)
- self.assertEqual(data['iscsi_target_queue_depth'], 64)
+ self.assertEqual(data['iscsi_target_alias'], "test")
def test_Delete(self):
obj = models.iSCSITargetToExtent.objects.create(
View
111 gui/services/forms.py
@@ -872,44 +872,16 @@ def save(self):
class iSCSITargetGlobalConfigurationForm(ModelForm):
- iscsi_luc_authgroup = forms.ChoiceField(
- label=_("Controller Auth Group"),
- help_text=_(
- "The istgtcontrol can access the targets with correct user"
- "and secret in specific Auth Group."),
- )
iscsi_discoveryauthgroup = forms.ChoiceField(label=_("Discovery Auth Group"))
class Meta:
fields = '__all__'
model = models.iSCSITargetGlobalConfiguration
- widgets = {
- 'iscsi_lucport': forms.widgets.TextInput(),
- }
def __init__(self, *args, **kwargs):
super(iSCSITargetGlobalConfigurationForm, self).__init__(*args, **kwargs)
- self.fields['iscsi_luc_authgroup'].required = False
- self.fields['iscsi_luc_authgroup'].choices = [(-1, _('None'))] + [(i['iscsi_target_auth_tag'], i['iscsi_target_auth_tag']) for i in models.iSCSITargetAuthCredential.objects.all().values('iscsi_target_auth_tag').distinct()]
self.fields['iscsi_discoveryauthgroup'].required = False
self.fields['iscsi_discoveryauthgroup'].choices = [('-1', _('None'))] + [(i['iscsi_target_auth_tag'], i['iscsi_target_auth_tag']) for i in models.iSCSITargetAuthCredential.objects.all().values('iscsi_target_auth_tag').distinct()]
- self.fields['iscsi_toggleluc'].widget.attrs['onChange'] = 'javascript:toggleGeneric("id_iscsi_toggleluc", ["id_iscsi_lucip", "id_iscsi_lucport", "id_iscsi_luc_authnetwork", "id_iscsi_luc_authmethod", "id_iscsi_luc_authgroup"], true);'
-
- self.__lucenabled = self.instance.iscsi_toggleluc
-
- ro = True
- if len(self.data) > 0:
- if self.data.get("iscsi_toggleluc", None) == "on":
- ro = False
- else:
- if self.instance.iscsi_toggleluc is True:
- ro = False
- if ro:
- self.fields['iscsi_lucip'].widget.attrs['disabled'] = 'disabled'
- self.fields['iscsi_lucport'].widget.attrs['disabled'] = 'disabled'
- self.fields['iscsi_luc_authnetwork'].widget.attrs['disabled'] = 'disabled'
- self.fields['iscsi_luc_authmethod'].widget.attrs['disabled'] = 'disabled'
- self.fields['iscsi_luc_authgroup'].widget.attrs['disabled'] = 'disabled'
def _clean_number_range(self, field, start, end):
f = self.cleaned_data[field]
@@ -935,94 +907,13 @@ def clean_iscsi_discoveryauthgroup(self):
return None
return discoverygroup
- def clean_iscsi_iotimeout(self):
- return self._clean_number_range("iscsi_iotimeout", 0, 300)
-
- def clean_iscsi_nopinint(self):
- return self._clean_number_range("iscsi_nopinint", 0, 300)
-
- def clean_iscsi_maxsesh(self):
- return self._clean_number_range("iscsi_maxsesh", 1, 65535)
-
- def clean_iscsi_maxconnect(self):
- return self._clean_number_range("iscsi_maxconnect", 1, 65535)
-
- def clean_iscsi_r2t(self):
- return self._clean_number_range("iscsi_r2t", 0, 256)
-
- def clean_iscsi_maxoutstandingr2t(self):
- return self._clean_number_range("iscsi_maxoutstandingr2t", 1, 65535)
-
- def clean_iscsi_firstburst(self):
- return self._clean_number_range("iscsi_firstburst", 1, pow(2, 32))
-
- def clean_iscsi_maxburst(self):
- return self._clean_number_range("iscsi_maxburst", 1, pow(2, 32))
-
- def clean_iscsi_maxrecdata(self):
- return self._clean_number_range("iscsi_maxrecdata", 1, pow(2, 32))
-
- def clean_iscsi_defaultt2w(self):
- return self._clean_number_range("iscsi_defaultt2w", 1, 3600)
-
- def clean_iscsi_defaultt2r(self):
- return self._clean_number_range("iscsi_defaultt2r", 1, 3600)
-
- def clean_iscsi_lucport(self):
- if self.cleaned_data.get('iscsi_toggleluc', False):
- return self._clean_number_range("iscsi_lucport", 1000, pow(2, 16))
- return None
-
- def clean_iscsi_luc_authgroup(self):
- lucmethod = self.cleaned_data.get('iscsi_luc_authmethod')
- lucgroup = self.cleaned_data.get('iscsi_luc_authgroup')
- if lucgroup in ('', None):
- return None
- if lucmethod in ('CHAP', 'CHAP Mutual'):
- if lucgroup != '' and int(lucgroup) == -1:
- raise forms.ValidationError(_("This field is required whether CHAP or Mutual CHAP are set for Controller Auth Method."))
- elif lucgroup != '' and int(lucgroup) == -1:
- return None
- return lucgroup
-
- def clean_iscsi_luc_authnetwork(self):
- luc = self.cleaned_data.get('iscsi_toggleluc')
- if not luc:
- return ''
- network = self.cleaned_data.get('iscsi_luc_authnetwork').strip()
- try:
- network = IPNetwork(network.encode('utf-8'))
- except (NetmaskValueError, ValueError):
- raise forms.ValidationError(_("This is not a valid network"))
- return str(network)
-
def clean(self):
cdata = self.cleaned_data
-
- luc = cdata.get("iscsi_toggleluc", False)
- if luc:
- for field in (
- 'iscsi_lucip', 'iscsi_luc_authnetwork',
- 'iscsi_luc_authmethod', 'iscsi_luc_authgroup'
- ):
- if field in cdata and cdata[field] == '':
- self._errors[field] = self.error_class([
- _("This field is required.")
- ])
- del cdata[field]
- else:
- cdata['iscsi_lucip'] = None
- cdata['iscsi_lucport'] = None
- cdata['iscsi_luc_authgroup'] = None
-
return cdata
def save(self):
obj = super(iSCSITargetGlobalConfigurationForm, self).save()
- if self.__lucenabled != obj.iscsi_toggleluc:
- started = notifier().restart("iscsitarget")
- else:
- started = notifier().reload("iscsitarget")
+ started = notifier().reload("iscsitarget")
if started is False and models.services.objects.get(srv_service='iscsitarget').srv_enable:
raise ServiceFailed("iscsitarget", _("The iSCSI service failed to reload."))
View
485 ...migrations/0131_auto__del_field_iscsitarget_iscsi_target_queue_depth__del_field_iscsit.py
@@ -0,0 +1,485 @@
+# -*- coding: utf-8 -*-
+from south.utils import datetime_utils as datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Deleting field 'iSCSITarget.iscsi_target_queue_depth'
+ db.delete_column(u'services_iscsitarget', 'iscsi_target_queue_depth')
+
+ # Deleting field 'iSCSITarget.iscsi_target_type'
+ db.delete_column(u'services_iscsitarget', 'iscsi_target_type')
+
+ # Deleting field 'iSCSITarget.iscsi_target_flags'
+ db.delete_column(u'services_iscsitarget', 'iscsi_target_flags')
+
+ # Deleting field 'iSCSITargetGlobalConfiguration.iscsi_firstburst'
+ db.delete_column(u'services_iscsitargetglobalconfiguration', 'iscsi_firstburst')
+
+ # Deleting field 'iSCSITargetGlobalConfiguration.iscsi_r2t'
+ db.delete_column(u'services_iscsitargetglobalconfiguration', 'iscsi_r2t')
+
+ # Deleting field 'iSCSITargetGlobalConfiguration.iscsi_maxburst'
+ db.delete_column(u'services_iscsitargetglobalconfiguration', 'iscsi_maxburst')
+
+ # Deleting field 'iSCSITargetGlobalConfiguration.iscsi_maxsesh'
+ db.delete_column(u'services_iscsitargetglobalconfiguration', 'iscsi_maxsesh')
+
+ # Deleting field 'iSCSITargetGlobalConfiguration.iscsi_multithreaded'
+ db.delete_column(u'services_iscsitargetglobalconfiguration', 'iscsi_multithreaded')
+
+ # Deleting field 'iSCSITargetGlobalConfiguration.iscsi_maxoutstandingr2t'
+ db.delete_column(u'services_iscsitargetglobalconfiguration', 'iscsi_maxoutstandingr2t')
+
+ # Deleting field 'iSCSITargetGlobalConfiguration.iscsi_luc_authnetwork'
+ db.delete_column(u'services_iscsitargetglobalconfiguration', 'iscsi_luc_authnetwork')
+
+ # Deleting field 'iSCSITargetGlobalConfiguration.iscsi_iotimeout'
+ db.delete_column(u'services_iscsitargetglobalconfiguration', 'iscsi_iotimeout')
+
+ # Deleting field 'iSCSITargetGlobalConfiguration.iscsi_defaultt2w'
+ db.delete_column(u'services_iscsitargetglobalconfiguration', 'iscsi_defaultt2w')
+
+ # Deleting field 'iSCSITargetGlobalConfiguration.iscsi_defaultt2r'
+ db.delete_column(u'services_iscsitargetglobalconfiguration', 'iscsi_defaultt2r')
+
+ # Deleting field 'iSCSITargetGlobalConfiguration.iscsi_luc_authmethod'
+ db.delete_column(u'services_iscsitargetglobalconfiguration', 'iscsi_luc_authmethod')
+
+ # Deleting field 'iSCSITargetGlobalConfiguration.iscsi_maxrecdata'
+ db.delete_column(u'services_iscsitargetglobalconfiguration', 'iscsi_maxrecdata')
+
+ # Deleting field 'iSCSITargetGlobalConfiguration.iscsi_lucip'
+ db.delete_column(u'services_iscsitargetglobalconfiguration', 'iscsi_lucip')
+
+ # Deleting field 'iSCSITargetGlobalConfiguration.iscsi_maxconnect'
+ db.delete_column(u'services_iscsitargetglobalconfiguration', 'iscsi_maxconnect')
+
+ # Deleting field 'iSCSITargetGlobalConfiguration.iscsi_nopinint'
+ db.delete_column(u'services_iscsitargetglobalconfiguration', 'iscsi_nopinint')
+
+ # Deleting field 'iSCSITargetGlobalConfiguration.iscsi_toggleluc'
+ db.delete_column(u'services_iscsitargetglobalconfiguration', 'iscsi_toggleluc')
+
+ # Deleting field 'iSCSITargetGlobalConfiguration.iscsi_lucport'
+ db.delete_column(u'services_iscsitargetglobalconfiguration', 'iscsi_lucport')
+
+ # Deleting field 'iSCSITargetGlobalConfiguration.iscsi_luc_authgroup'
+ db.delete_column(u'services_iscsitargetglobalconfiguration', 'iscsi_luc_authgroup')
+
+
+ def backwards(self, orm):
+ # Adding field 'iSCSITarget.iscsi_target_queue_depth'
+ db.add_column(u'services_iscsitarget', 'iscsi_target_queue_depth',
+ self.gf('django.db.models.fields.IntegerField')(default=32, max_length=3),
+ keep_default=False)
+
+ # Adding field 'iSCSITarget.iscsi_target_type'
+ db.add_column(u'services_iscsitarget', 'iscsi_target_type',
+ self.gf('django.db.models.fields.CharField')(default='Disk', max_length=120),
+ keep_default=False)
+
+ # Adding field 'iSCSITarget.iscsi_target_flags'
+ db.add_column(u'services_iscsitarget', 'iscsi_target_flags',
+ self.gf('django.db.models.fields.CharField')(default='rw', max_length=120),
+ keep_default=False)
+
+ # Adding field 'iSCSITargetGlobalConfiguration.iscsi_firstburst'
+ db.add_column(u'services_iscsitargetglobalconfiguration', 'iscsi_firstburst',
+ self.gf('django.db.models.fields.IntegerField')(default=65536, max_length=120),
+ keep_default=False)
+
+ # Adding field 'iSCSITargetGlobalConfiguration.iscsi_r2t'
+ db.add_column(u'services_iscsitargetglobalconfiguration', 'iscsi_r2t',
+ self.gf('django.db.models.fields.IntegerField')(default=32, max_length=120),
+ keep_default=False)
+
+ # Adding field 'iSCSITargetGlobalConfiguration.iscsi_maxburst'
+ db.add_column(u'services_iscsitargetglobalconfiguration', 'iscsi_maxburst',
+ self.gf('django.db.models.fields.IntegerField')(default=262144, max_length=120),
+ keep_default=False)
+
+ # Adding field 'iSCSITargetGlobalConfiguration.iscsi_maxsesh'
+ db.add_column(u'services_iscsitargetglobalconfiguration', 'iscsi_maxsesh',
+ self.gf('django.db.models.fields.IntegerField')(default=16, max_length=120),
+ keep_default=False)
+
+ # Adding field 'iSCSITargetGlobalConfiguration.iscsi_multithreaded'
+ db.add_column(u'services_iscsitargetglobalconfiguration', 'iscsi_multithreaded',
+ self.gf('django.db.models.fields.BooleanField')(default=False),
+ keep_default=False)
+
+ # Adding field 'iSCSITargetGlobalConfiguration.iscsi_maxoutstandingr2t'
+ db.add_column(u'services_iscsitargetglobalconfiguration', 'iscsi_maxoutstandingr2t',
+ self.gf('django.db.models.fields.IntegerField')(default=16, max_length=120),
+ keep_default=False)
+
+ # Adding field 'iSCSITargetGlobalConfiguration.iscsi_luc_authnetwork'
+ db.add_column(u'services_iscsitargetglobalconfiguration', 'iscsi_luc_authnetwork',
+ self.gf('django.db.models.fields.CharField')(default='127.0.0.0/8', max_length=120, blank=True),
+ keep_default=False)
+
+ # Adding field 'iSCSITargetGlobalConfiguration.iscsi_iotimeout'
+ db.add_column(u'services_iscsitargetglobalconfiguration', 'iscsi_iotimeout',
+ self.gf('django.db.models.fields.IntegerField')(default=30, max_length=120),
+ keep_default=False)
+
+ # Adding field 'iSCSITargetGlobalConfiguration.iscsi_defaultt2w'
+ db.add_column(u'services_iscsitargetglobalconfiguration', 'iscsi_defaultt2w',
+ self.gf('django.db.models.fields.IntegerField')(default=2, max_length=120),
+ keep_default=False)
+
+ # Adding field 'iSCSITargetGlobalConfiguration.iscsi_defaultt2r'
+ db.add_column(u'services_iscsitargetglobalconfiguration', 'iscsi_defaultt2r',
+ self.gf('django.db.models.fields.IntegerField')(default=60, max_length=120),
+ keep_default=False)
+
+ # Adding field 'iSCSITargetGlobalConfiguration.iscsi_luc_authmethod'
+ db.add_column(u'services_iscsitargetglobalconfiguration', 'iscsi_luc_authmethod',
+ self.gf('django.db.models.fields.CharField')(default='CHAP', max_length=120, blank=True),
+ keep_default=False)
+
+ # Adding field 'iSCSITargetGlobalConfiguration.iscsi_maxrecdata'
+ db.add_column(u'services_iscsitargetglobalconfiguration', 'iscsi_maxrecdata',
+ self.gf('django.db.models.fields.IntegerField')(default=262144, max_length=120),
+ keep_default=False)
+
+ # Adding field 'iSCSITargetGlobalConfiguration.iscsi_lucip'
+ db.add_column(u'services_iscsitargetglobalconfiguration', 'iscsi_lucip',
+ self.gf('django.db.models.fields.IPAddressField')(default='127.0.0.1', max_length=15, null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'iSCSITargetGlobalConfiguration.iscsi_maxconnect'
+ db.add_column(u'services_iscsitargetglobalconfiguration', 'iscsi_maxconnect',
+ self.gf('django.db.models.fields.IntegerField')(default=8, max_length=120),
+ keep_default=False)
+
+ # Adding field 'iSCSITargetGlobalConfiguration.iscsi_nopinint'
+ db.add_column(u'services_iscsitargetglobalconfiguration', 'iscsi_nopinint',
+ self.gf('django.db.models.fields.IntegerField')(default=20, max_length=120),
+ keep_default=False)
+
+ # Adding field 'iSCSITargetGlobalConfiguration.iscsi_toggleluc'
+ db.add_column(u'services_iscsitargetglobalconfiguration', 'iscsi_toggleluc',
+ self.gf('django.db.models.fields.BooleanField')(default=False),
+ keep_default=False)
+
+ # Adding field 'iSCSITargetGlobalConfiguration.iscsi_lucport'
+ db.add_column(u'services_iscsitargetglobalconfiguration', 'iscsi_lucport',
+ self.gf('django.db.models.fields.IntegerField')(default=3261, null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'iSCSITargetGlobalConfiguration.iscsi_luc_authgroup'
+ db.add_column(u'services_iscsitargetglobalconfiguration', 'iscsi_luc_authgroup',
+ self.gf('django.db.models.fields.IntegerField')(max_length=120, null=True, blank=True),
+ keep_default=False)
+
+
+ models = {
+ u'services.afp': {
+ 'Meta': {'object_name': 'AFP'},
+ 'afp_srv_connections_limit': ('django.db.models.fields.IntegerField', [], {'default': '50', 'max_length': '120'}),
+ 'afp_srv_dbpath': ('freenasUI.freeadmin.models.fields.PathField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'afp_srv_guest': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'afp_srv_guest_user': ('freenasUI.freeadmin.models.fields.UserField', [], {'default': "'nobody'", 'max_length': '120'}),
+ 'afp_srv_homedir': ('freenasUI.freeadmin.models.fields.PathField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'afp_srv_homedir_enable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
+ },
+ u'services.cifs': {
+ 'Meta': {'object_name': 'CIFS'},
+ 'cifs_srv_aio_enable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'cifs_srv_aio_rs': ('django.db.models.fields.IntegerField', [], {'default': '4096', 'max_length': '120'}),
+ 'cifs_srv_aio_ws': ('django.db.models.fields.IntegerField', [], {'default': '4096', 'max_length': '120'}),
+ 'cifs_srv_allow_execute_always': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'cifs_srv_description': ('django.db.models.fields.CharField', [], {'max_length': '120', 'blank': 'True'}),
+ 'cifs_srv_dirmask': ('django.db.models.fields.CharField', [], {'max_length': '120', 'blank': 'True'}),
+ 'cifs_srv_domain_logons': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'cifs_srv_doscharset': ('django.db.models.fields.CharField', [], {'default': "'CP437'", 'max_length': '120'}),
+ 'cifs_srv_filemask': ('django.db.models.fields.CharField', [], {'max_length': '120', 'blank': 'True'}),
+ 'cifs_srv_guest': ('freenasUI.freeadmin.models.fields.UserField', [], {'default': "'nobody'", 'max_length': '120'}),
+ 'cifs_srv_homedir': ('freenasUI.freeadmin.models.fields.PathField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'cifs_srv_homedir_aux': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'cifs_srv_homedir_browseable_enable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'cifs_srv_homedir_enable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'cifs_srv_hostlookup': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'cifs_srv_localmaster': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'cifs_srv_loglevel': ('django.db.models.fields.CharField', [], {'default': "'0'", 'max_length': '120'}),
+ 'cifs_srv_max_protocol': ('django.db.models.fields.CharField', [], {'default': "'SMB2'", 'max_length': '120'}),
+ 'cifs_srv_min_protocol': ('django.db.models.fields.CharField', [], {'max_length': '120', 'blank': 'True'}),
+ 'cifs_srv_netbiosname': ('django.db.models.fields.CharField', [], {'max_length': '120'}),
+ 'cifs_srv_nullpw': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'cifs_srv_obey_pam_restrictions': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'cifs_srv_smb_options': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'cifs_srv_syslog': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'cifs_srv_timeserver': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'cifs_srv_unixcharset': ('django.db.models.fields.CharField', [], {'default': "'UTF-8'", 'max_length': '120'}),
+ 'cifs_srv_unixext': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'cifs_srv_workgroup': ('django.db.models.fields.CharField', [], {'max_length': '120'}),
+ 'cifs_srv_zeroconf': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
+ },
+ u'services.domaincontroller': {
+ 'Meta': {'object_name': 'DomainController'},
+ 'dc_dns_backend': ('django.db.models.fields.CharField', [], {'default': "'SAMBA_INTERNAL'", 'max_length': '120'}),
+ 'dc_dns_forwarder': ('django.db.models.fields.CharField', [], {'max_length': '120'}),
+ 'dc_domain': ('django.db.models.fields.CharField', [], {'max_length': '120'}),
+ 'dc_forest_level': ('django.db.models.fields.CharField', [], {'default': "'2003'", 'max_length': '120'}),
+ 'dc_passwd': ('django.db.models.fields.CharField', [], {'max_length': '120'}),
+ 'dc_realm': ('django.db.models.fields.CharField', [], {'max_length': '120'}),
+ 'dc_role': ('django.db.models.fields.CharField', [], {'default': "'dc'", 'max_length': '120'}),
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
+ },
+ u'services.dynamicdns': {
+ 'Meta': {'object_name': 'DynamicDNS'},
+ 'ddns_domain': ('django.db.models.fields.CharField', [], {'max_length': '120', 'blank': 'True'}),
+ 'ddns_fupdateperiod': ('django.db.models.fields.CharField', [], {'max_length': '120', 'blank': 'True'}),
+ 'ddns_ipserver': ('django.db.models.fields.CharField', [], {'max_length': '150', 'blank': 'True'}),
+ 'ddns_options': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'ddns_password': ('django.db.models.fields.CharField', [], {'max_length': '120'}),
+ 'ddns_provider': ('django.db.models.fields.CharField', [], {'default': "'dyndns@dyndns.org'", 'max_length': '120', 'blank': 'True'}),
+ 'ddns_updateperiod': ('django.db.models.fields.CharField', [], {'max_length': '120', 'blank': 'True'}),
+ 'ddns_username': ('django.db.models.fields.CharField', [], {'max_length': '120'}),
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
+ },
+ u'services.ftp': {
+ 'Meta': {'object_name': 'FTP'},
+ 'ftp_anonpath': ('freenasUI.freeadmin.models.fields.PathField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'ftp_anonuserbw': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'ftp_anonuserdlbw': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'ftp_banner': ('django.db.models.fields.TextField', [], {'max_length': '120', 'blank': 'True'}),
+ 'ftp_clients': ('django.db.models.fields.PositiveIntegerField', [], {'default': '32'}),
+ 'ftp_defaultroot': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'ftp_dirmask': ('django.db.models.fields.CharField', [], {'default': "'077'", 'max_length': '3'}),
+ 'ftp_filemask': ('django.db.models.fields.CharField', [], {'default': "'077'", 'max_length': '3'}),
+ 'ftp_fxp': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'ftp_ident': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'ftp_ipconnections': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'ftp_localuserbw': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'ftp_localuserdlbw': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'ftp_loginattempt': ('django.db.models.fields.PositiveIntegerField', [], {'default': '3'}),
+ 'ftp_masqaddress': ('django.db.models.fields.CharField', [], {'max_length': '120', 'blank': 'True'}),
+ 'ftp_onlyanonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'ftp_onlylocal': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'ftp_options': ('django.db.models.fields.TextField', [], {'max_length': '120', 'blank': 'True'}),
+ 'ftp_passiveportsmax': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'ftp_passiveportsmin': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'ftp_port': ('django.db.models.fields.PositiveIntegerField', [], {'default': '21'}),
+ 'ftp_resume': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'ftp_reversedns': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'ftp_rootlogin': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'ftp_ssltls_certfile': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'ftp_timeout': ('django.db.models.fields.PositiveIntegerField', [], {'default': '120'}),
+ 'ftp_tls': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'ftp_tls_opt_allow_client_renegotiations': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'ftp_tls_opt_allow_dot_login': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'ftp_tls_opt_allow_per_user': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'ftp_tls_opt_common_name_required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'ftp_tls_opt_dns_name_required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'ftp_tls_opt_enable_diags': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'ftp_tls_opt_export_cert_data': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'ftp_tls_opt_ip_address_required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'ftp_tls_opt_no_cert_request': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'ftp_tls_opt_no_empty_fragments': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'ftp_tls_opt_no_session_reuse_required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'ftp_tls_opt_stdenvvars': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'ftp_tls_opt_use_implicit_ssl': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'ftp_tls_policy': ('django.db.models.fields.CharField', [], {'default': "'on'", 'max_length': '120'}),
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
+ },
+ u'services.iscsitarget': {
+ 'Meta': {'ordering': "['iscsi_target_name']", 'object_name': 'iSCSITarget'},
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'iscsi_target_alias': ('django.db.models.fields.CharField', [], {'max_length': '120', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'iscsi_target_authgroup': ('django.db.models.fields.IntegerField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'}),
+ 'iscsi_target_authtype': ('django.db.models.fields.CharField', [], {'default': "'Auto'", 'max_length': '120'}),
+ 'iscsi_target_initialdigest': ('django.db.models.fields.CharField', [], {'default': "'Auto'", 'max_length': '120'}),
+ 'iscsi_target_initiatorgroup': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['services.iSCSITargetAuthorizedInitiator']"}),
+ 'iscsi_target_logical_blocksize': ('django.db.models.fields.IntegerField', [], {'default': '512', 'max_length': '3'}),
+ 'iscsi_target_name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '120'}),
+ 'iscsi_target_portalgroup': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['services.iSCSITargetPortal']"}),
+ 'iscsi_target_serial': ('django.db.models.fields.CharField', [], {'default': "'10000001'", 'max_length': '16'})
+ },
+ u'services.iscsitargetauthcredential': {
+ 'Meta': {'object_name': 'iSCSITargetAuthCredential'},
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'iscsi_target_auth_peersecret': ('django.db.models.fields.CharField', [], {'max_length': '120', 'blank': 'True'}),
+ 'iscsi_target_auth_peeruser': ('django.db.models.fields.CharField', [], {'max_length': '120', 'blank': 'True'}),
+ 'iscsi_target_auth_secret': ('django.db.models.fields.CharField', [], {'max_length': '120'}),
+ 'iscsi_target_auth_tag': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'iscsi_target_auth_user': ('django.db.models.fields.CharField', [], {'max_length': '120'})
+ },
+ u'services.iscsitargetauthorizedinitiator': {
+ 'Meta': {'object_name': 'iSCSITargetAuthorizedInitiator'},
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'iscsi_target_initiator_auth_network': ('django.db.models.fields.TextField', [], {'default': "'ALL'", 'max_length': '2048'}),
+ 'iscsi_target_initiator_comment': ('django.db.models.fields.CharField', [], {'max_length': '120', 'blank': 'True'}),
+ 'iscsi_target_initiator_initiators': ('django.db.models.fields.TextField', [], {'default': "'ALL'", 'max_length': '2048'}),
+ 'iscsi_target_initiator_tag': ('django.db.models.fields.IntegerField', [], {'default': '1', 'unique': 'True'})
+ },
+ u'services.iscsitargetextent': {
+ 'Meta': {'ordering': "['iscsi_target_extent_name']", 'object_name': 'iSCSITargetExtent'},
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'iscsi_target_extent_comment': ('django.db.models.fields.CharField', [], {'max_length': '120', 'blank': 'True'}),
+ 'iscsi_target_extent_filesize': ('django.db.models.fields.CharField', [], {'default': '0', 'max_length': '120'}),
+ 'iscsi_target_extent_insecure_tpc': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'iscsi_target_extent_naa': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '18', 'blank': 'True'}),
+ 'iscsi_target_extent_name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '120'}),
+ 'iscsi_target_extent_path': ('django.db.models.fields.CharField', [], {'max_length': '120'}),
+ 'iscsi_target_extent_type': ('django.db.models.fields.CharField', [], {'max_length': '120'})
+ },
+ u'services.iscsitargetglobalconfiguration': {
+ 'Meta': {'object_name': 'iSCSITargetGlobalConfiguration'},
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'iscsi_basename': ('django.db.models.fields.CharField', [], {'max_length': '120'}),
+ 'iscsi_discoveryauthgroup': ('django.db.models.fields.IntegerField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'}),
+ 'iscsi_discoveryauthmethod': ('django.db.models.fields.CharField', [], {'default': "'Auto'", 'max_length': '120'})
+ },
+ u'services.iscsitargetportal': {
+ 'Meta': {'object_name': 'iSCSITargetPortal'},
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'iscsi_target_portal_comment': ('django.db.models.fields.CharField', [], {'max_length': '120', 'blank': 'True'}),
+ 'iscsi_target_portal_tag': ('django.db.models.fields.IntegerField', [], {'default': '1', 'max_length': '120'})
+ },
+ u'services.iscsitargetportalip': {
+ 'Meta': {'unique_together': "(('iscsi_target_portalip_ip', 'iscsi_target_portalip_port'),)", 'object_name': 'iSCSITargetPortalIP'},
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'iscsi_target_portalip_ip': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'iscsi_target_portalip_port': ('django.db.models.fields.SmallIntegerField', [], {'default': '3260'}),
+ 'iscsi_target_portalip_portal': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'ips'", 'to': u"orm['services.iSCSITargetPortal']"})
+ },
+ u'services.iscsitargettoextent': {
+ 'Meta': {'object_name': 'iSCSITargetToExtent'},
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'iscsi_extent': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['services.iSCSITargetExtent']", 'unique': 'True'}),
+ 'iscsi_lunid': ('django.db.models.fields.IntegerField', [], {'null': 'True'}),
+ 'iscsi_target': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['services.iSCSITarget']"})
+ },
+ u'services.lldp': {
+ 'Meta': {'object_name': 'LLDP'},
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'lldp_country': ('django.db.models.fields.CharField', [], {'max_length': '2', 'blank': 'True'}),
+ 'lldp_intdesc': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'lldp_location': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ u'services.nfs': {
+ 'Meta': {'object_name': 'NFS'},
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'nfs_srv_allow_nonroot': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'nfs_srv_bindip': ('django.db.models.fields.CharField', [], {'max_length': '250', 'blank': 'True'}),
+ 'nfs_srv_mountd_port': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'nfs_srv_rpclockd_port': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'nfs_srv_rpcstatd_port': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'nfs_srv_servers': ('django.db.models.fields.PositiveIntegerField', [], {'default': '4'}),
+ 'nfs_srv_udp': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ u'services.rpctoken': {
+ 'Meta': {'object_name': 'RPCToken'},
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'key': ('django.db.models.fields.CharField', [], {'max_length': '1024'}),
+ 'secret': ('django.db.models.fields.CharField', [], {'max_length': '1024'})
+ },
+ u'services.rsyncd': {
+ 'Meta': {'object_name': 'Rsyncd'},
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'rsyncd_auxiliary': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'rsyncd_port': ('django.db.models.fields.IntegerField', [], {'default': '873'})
+ },
+ u'services.rsyncmod': {
+ 'Meta': {'ordering': "['rsyncmod_name']", 'object_name': 'RsyncMod'},
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'rsyncmod_auxiliary': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'rsyncmod_comment': ('django.db.models.fields.CharField', [], {'max_length': '120', 'blank': 'True'}),
+ 'rsyncmod_group': ('freenasUI.freeadmin.models.fields.GroupField', [], {'default': "'nobody'", 'max_length': '120'}),
+ 'rsyncmod_hostsallow': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'rsyncmod_hostsdeny': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'rsyncmod_maxconn': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'rsyncmod_mode': ('django.db.models.fields.CharField', [], {'default': "'rw'", 'max_length': '120'}),
+ 'rsyncmod_name': ('django.db.models.fields.CharField', [], {'max_length': '120'}),
+ 'rsyncmod_path': ('freenasUI.freeadmin.models.fields.PathField', [], {'max_length': '255'}),
+ 'rsyncmod_user': ('freenasUI.freeadmin.models.fields.UserField', [], {'default': "'nobody'", 'max_length': '120'})
+ },
+ u'services.services': {
+ 'Meta': {'object_name': 'services'},
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'srv_enable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'srv_service': ('django.db.models.fields.CharField', [], {'max_length': '120'})
+ },
+ u'services.smart': {
+ 'Meta': {'object_name': 'SMART'},
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'smart_critical': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'smart_difference': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'smart_email': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'smart_informational': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'smart_interval': ('django.db.models.fields.IntegerField', [], {'default': '30'}),
+ 'smart_powermode': ('django.db.models.fields.CharField', [], {'default': "'never'", 'max_length': '60'})
+ },
+ u'services.snmp': {
+ 'Meta': {'object_name': 'SNMP'},
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'snmp_community': ('django.db.models.fields.CharField', [], {'default': "'public'", 'max_length': '120'}),
+ 'snmp_contact': ('django.db.models.fields.CharField', [], {'max_length': '120', 'blank': 'True'}),
+ 'snmp_location': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'snmp_options': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'snmp_traps': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ u'services.ssh': {
+ 'Meta': {'object_name': 'SSH'},
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ssh_compression': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'ssh_host_dsa_key': ('django.db.models.fields.TextField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+ 'ssh_host_dsa_key_pub': ('django.db.models.fields.TextField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+ 'ssh_host_ecdsa_key': ('django.db.models.fields.TextField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+ 'ssh_host_ecdsa_key_pub': ('django.db.models.fields.TextField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+ 'ssh_host_key': ('django.db.models.fields.TextField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+ 'ssh_host_key_pub': ('django.db.models.fields.TextField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+ 'ssh_host_rsa_key': ('django.db.models.fields.TextField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+ 'ssh_host_rsa_key_pub': ('django.db.models.fields.TextField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+ 'ssh_options': ('django.db.models.fields.TextField', [], {'max_length': '120', 'blank': 'True'}),
+ 'ssh_passwordauth': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'ssh_privatekey': ('django.db.models.fields.TextField', [], {'max_length': '1024', 'blank': 'True'}),
+ 'ssh_rootlogin': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'ssh_sftp_log_facility': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}),
+ 'ssh_sftp_log_level': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}),
+ 'ssh_tcpfwd': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'ssh_tcpport': ('django.db.models.fields.PositiveIntegerField', [], {'default': '22'})
+ },
+ u'services.tftp': {
+ 'Meta': {'object_name': 'TFTP'},
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'tftp_directory': ('freenasUI.freeadmin.models.fields.PathField', [], {'max_length': '255'}),
+ 'tftp_newfiles': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'tftp_options': ('django.db.models.fields.CharField', [], {'max_length': '120', 'blank': 'True'}),
+ 'tftp_port': ('django.db.models.fields.PositiveIntegerField', [], {'default': '69'}),
+ 'tftp_umask': ('django.db.models.fields.CharField', [], {'default': "'022'", 'max_length': '120'}),
+ 'tftp_username': ('freenasUI.freeadmin.models.fields.UserField', [], {'default': "'nobody'", 'max_length': '120'})
+ },
+ u'services.ups': {
+ 'Meta': {'object_name': 'UPS'},
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ups_description': ('django.db.models.fields.CharField', [], {'max_length': '120', 'blank': 'True'}),
+ 'ups_driver': ('django.db.models.fields.CharField', [], {'max_length': '120', 'blank': 'True'}),
+ 'ups_emailnotify': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'ups_extrausers': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'ups_identifier': ('django.db.models.fields.CharField', [], {'default': "'ups'", 'max_length': '120'}),
+ 'ups_mode': ('django.db.models.fields.CharField', [], {'default': "'master'", 'max_length': '6'}),
+ 'ups_monpwd': ('django.db.models.fields.CharField', [], {'default': "'fixmepass'", 'max_length': '30'}),
+ 'ups_monuser': ('django.db.models.fields.CharField', [], {'default': "'upsmon'", 'max_length': '50'}),
+ 'ups_options': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'ups_port': ('django.db.models.fields.CharField', [], {'max_length': '120', 'blank': 'True'}),
+ 'ups_remotehost': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
+ 'ups_remoteport': ('django.db.models.fields.IntegerField', [], {'default': '3493', 'blank': 'True'}),
+ 'ups_rmonitor': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'ups_shutdown': ('django.db.models.fields.CharField', [], {'default': "'batt'", 'max_length': '120'}),
+ 'ups_shutdowntimer': ('django.db.models.fields.IntegerField', [], {'default': '30'}),
+ 'ups_subject': ('django.db.models.fields.CharField', [], {'default': "'UPS report generated by %h'", 'max_length': '120'}),
+ 'ups_toemail': ('django.db.models.fields.CharField', [], {'max_length': '120', 'blank': 'True'})
+ }
+ }
+
+ complete_apps = ['services']
View
143 gui/services/models.py
@@ -415,129 +415,6 @@ class iSCSITargetGlobalConfiguration(Model):
blank=True,
null=True,
)
- iscsi_experimental_target = models.BooleanField(
- default=True,
- verbose_name=_('Enable experimental target'),
- )
-## The multithreaded mode should be retired as it is only really relevant
-## to iSCSI, which is deprecated.
- iscsi_multithreaded = models.BooleanField(
- default=False,
- verbose_name=_('Enable multithreaded mode'),
- )
- iscsi_iotimeout = models.IntegerField(
- max_length=120,
- default=30,
- verbose_name=_("I/O Timeout"),
- help_text=_("I/O timeout in seconds (30 by default).")
- )
- iscsi_nopinint = models.IntegerField(
- max_length=120,
- default=20,
- verbose_name=_("NOPIN Interval"),
- help_text=_("NOPIN sending interval in seconds (20 by default).")
- )
- iscsi_maxsesh = models.IntegerField(
- max_length=120,
- default=16,
- verbose_name=_("Max. sessions"),
- help_text=_("Maximum number of sessions holding at same time (16 "
- "by default).")
- )
- iscsi_maxconnect = models.IntegerField(
- max_length=120,
- default=8,
- verbose_name=_("Max. connections"),
- help_text=_("Maximum number of connections in each session (8 by "
- "default).")
- )
- iscsi_r2t = models.IntegerField(
- max_length=120,
- default=32,
- verbose_name=_("Max. pre-send R2T"),
- help_text=_("Maximum number of pre-send R2T in each connection ("
- "32 by default). The actual number is limited to QueueDepth "
- "of the target."),
- )
- iscsi_maxoutstandingr2t = models.IntegerField(
- max_length=120,
- default=16,
- verbose_name=_("MaxOutstandingR2T"),
- help_text=_("iSCSI initial parameter (16 by default).")
- )
- iscsi_firstburst = models.IntegerField(
- max_length=120,
- default=65536,
- verbose_name=_("First burst length"),
- help_text=_("iSCSI initial parameter (65536 by default).")
- )
- iscsi_maxburst = models.IntegerField(
- max_length=120,
- default=262144,
- verbose_name=_("Max burst length"),
- help_text=_("iSCSI initial parameter (262144 by default).")
- )
- iscsi_maxrecdata = models.IntegerField(
- max_length=120,
- default=262144,
- verbose_name=_("Max receive data segment length"),
- help_text=_("iSCSI initial parameter (262144 by default).")
- )
- iscsi_defaultt2w = models.IntegerField(
- max_length=120,
- default=2,
- verbose_name=_("DefaultTime2Wait"),
- help_text=_("iSCSI initial parameter (2 by default).")
- )
- iscsi_defaultt2r = models.IntegerField(
- max_length=120,
- default=60,
- verbose_name=_("DefaultTime2Retain"),
- help_text=_("iSCSI initial parameter (60 by default)."),
- )
- iscsi_toggleluc = models.BooleanField(
- default=False,
- verbose_name=_("Enable LUC"))
- iscsi_lucip = models.IPAddressField(
- max_length=120,
- default="127.0.0.1",
- verbose_name=_("Controller IP address"),
- help_text=_("Logical Unit Controller IP address "
- "(127.0.0.1(localhost) by default)"),
- blank=True,
- null=True,
- )
- iscsi_lucport = models.IntegerField(
- default=3261,
- verbose_name=_("Controller TCP port"),
- help_text=_("Logical Unit Controller TCP port (3261 by default)"),
- blank=True,
- null=True,
- )
- iscsi_luc_authnetwork = models.CharField(
- max_length=120,
- verbose_name=_("Controller Authorized Network"),
- default="127.0.0.0/8",
- help_text=_("Logical Unit Controller Authorized netmask "
- "(127.0.0.0/8 by default)"),
- blank=True,
- )
- iscsi_luc_authmethod = models.CharField(
- max_length=120,
- choices=choices.AUTHMETHOD_CHOICES,
- default='CHAP',
- verbose_name=_("Controller Auth Method"),
- help_text=_("The method can be accepted in the controller."),
- blank=True,
- )
- iscsi_luc_authgroup = models.IntegerField(
- max_length=120,
- verbose_name=_("Controller Auth Group"),
- help_text=_("The istgtcontrol can access the targets with correct "
- "user and secret in specific Auth Group."),
- blank=True,
- null=True,
- )
class Meta:
verbose_name = _(u"Target Global Configuration")
@@ -819,19 +696,6 @@ class iSCSITarget(Model):
default="10000001",
help_text=_("Serial number for the logical unit")
)
- iscsi_target_type = models.CharField(
- max_length=120,
- choices=choices.ISCSI_TARGET_TYPE_CHOICES,
- default='Disk',
- verbose_name=_("Type"),
- help_text=_("Logical Unit Type mapped to LUN."),
- )
- iscsi_target_flags = models.CharField(
- max_length=120,
- choices=choices.ISCSI_TARGET_FLAGS_CHOICES,
- default='rw',
- verbose_name=_("Target Flags"),
- )
iscsi_target_portalgroup = models.ForeignKey(
iSCSITargetPortal,
verbose_name=_("Portal Group ID"),
@@ -861,13 +725,6 @@ class iSCSITarget(Model):
help_text=_("The method can be accepted by the target. Auto means "
"both none and authentication."),
)
- iscsi_target_queue_depth = models.IntegerField(
- max_length=3,
- default=32,
- verbose_name=_("Queue Depth"),
- help_text=_("0=disabled, 1-255=enabled command queuing with "
- "specified depth. The recommended queue depth is 32."),
- )
iscsi_target_logical_blocksize = models.IntegerField(
max_length=3,
default=512,
View
18 test/api/services/iscsi/global_configuration.py
@@ -10,26 +10,8 @@
headers = conn.headers
auth = conn.auth
payload = {
- "iscsi_multithreaded": False,
- "iscsi_maxconnect": 20,
- "iscsi_luc_authnetwork": "",
- "iscsi_iotimeout": 30,
- "iscsi_lucip": "127.0.0.1",
- "iscsi_firstburst": 65536,
- "iscsi_r2t": 32,
"iscsi_discoveryauthmethod": "None",
- "iscsi_defaultt2w": 2,
- "iscsi_maxrecdata": 262144,
"iscsi_basename": "iqn.2011-03.org.example.istgt",
- "iscsi_defaultt2r": 60,
- "iscsi_nopinint": 20,
- "iscsi_maxburst": 262144,
- "iscsi_toggleluc": False,
- "iscsi_lucport": 3261,
- "iscsi_maxsesh": 16,
- "iscsi_luc_authgroup": None,
- "iscsi_luc_authmethod": "",
- "iscsi_maxoutstandingr2t": 16,
}
url = conn.url + 'services/iscsi/' + service + '/1/'

0 comments on commit 670018b

Please sign in to comment.