Advertisement
yaneurabeya

Untitled

Feb 23rd, 2012
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.77 KB | None | 0 0
  1. # encoding: utf-8
  2. import datetime
  3. import os
  4. import platform
  5. from south.db import db
  6. from south.v2 import SchemaMigration
  7. from django.db import models
  8.  
  9.  
  10. def get_default_tunables():
  11. """Get the default arch-specific set of loader values
  12.  
  13. :Returns:
  14. a list of tuples in the following format: (varname, value, comment, )
  15. or an empty list if the architecture isn't supported.
  16. """
  17.  
  18.  
  19. arch_width = int(platform.architecture()[0].replace('bit', ''))
  20.  
  21.  
  22. if arch_width == 32:
  23. kern__ipc__nmbclusters = 25000
  24. vfs__zfs__arc_max = 512
  25. vm__kmem_size = 768
  26.  
  27. elif arch_width == 64:
  28. kern__ipc__nmbclusters = 50000
  29. vfs__zfs__arc_max = 1024
  30. vm__kmem_size = 1536
  31. else:
  32. return []
  33.  
  34.  
  35. # Varname, value, comment (None if you want to try generating the comment
  36. # from sysctl -dn).
  37. tunables = [
  38.  
  39. (
  40. 'kern.ipc.nmbclusters',
  41. kern__ipc__nmbclusters,
  42. None,
  43. ),
  44.  
  45. (
  46. 'vfs.zfs.arc_max',
  47. '%sM' % (vfs__zfs__arc_max, ),
  48. None,
  49. ),
  50.  
  51. (
  52. 'vm.kmem_size',
  53. '%sM' % (vm__kmem_size, ),
  54. None,
  55. ),
  56.  
  57. ]
  58.  
  59.  
  60. for i, tunable_tuple in enumerate(tunables):
  61. varname, value, comment = tunable_tuple
  62. if comment is None:
  63. pipe = os.popen('sysctl -dn %s' % (varname, ))
  64. try:
  65. comment = pipe.readlines()[0].strip()
  66. finally:
  67. pipe.close()
  68. tunables[i] = (varname, value, comment, )
  69.  
  70.  
  71. return tunables
  72.  
  73.  
  74. class Migration(SchemaMigration):
  75.  
  76. def forwards(self, orm):
  77.  
  78. # Adding model 'Loader'
  79. db.create_table('system_loader', (
  80. ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
  81. ('ldr_var', self.gf('django.db.models.fields.CharField')(unique=True, max_length=50)),
  82. ('ldr_value', self.gf('django.db.models.fields.CharField')(max_length=50)),
  83. ('ldr_comment', self.gf('django.db.models.fields.CharField')(max_length=100, blank=True)),
  84. ))
  85.  
  86.  
  87. default_tunables = get_default_tunables()
  88.  
  89.  
  90. for ldr_var, ldr_value, ldr_comment in default_tunables.iteritems():
  91. (ldr_var, self.gf('django.db.models.fields.CharField')( str(ldr_value)
  92.  
  93. db.add_column('system_loader',
  94.  
  95. )
  96. db.send_create_signal('system', ['Loader'])
  97.  
  98. os.system('service ix-loader start')
  99.  
  100.  
  101. def backwards(self, orm):
  102.  
  103. # Deleting model 'Loader'
  104. db.delete_table('system_loader')
  105.  
  106. os.system('service ix-loader start')
  107.  
  108.  
  109. models = {
  110. 'storage.disk': {
  111. 'Meta': {'object_name': 'Disk'},
  112. 'disk_acousticlevel': ('django.db.models.fields.CharField', [], {'default': "'Disabled'", 'max_length': '120'}),
  113. 'disk_advpowermgmt': ('django.db.models.fields.CharField', [], {'default': "'Disabled'", 'max_length': '120'}),
  114. 'disk_description': ('django.db.models.fields.CharField', [], {'max_length': '120', 'blank': 'True'}),
  115. 'disk_group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['storage.DiskGroup']"}),
  116. 'disk_hddstandby': ('django.db.models.fields.CharField', [], {'default': "'Always On'", 'max_length': '120'}),
  117. 'disk_identifier': ('django.db.models.fields.CharField', [], {'max_length': '42'}),
  118. 'disk_name': ('django.db.models.fields.CharField', [], {'max_length': '120'}),
  119. 'disk_smartoptions': ('django.db.models.fields.CharField', [], {'max_length': '120', 'blank': 'True'}),
  120. 'disk_togglesmart': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
  121. 'disk_transfermode': ('django.db.models.fields.CharField', [], {'default': "'Auto'", 'max_length': '120'}),
  122. 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
  123. },
  124. 'storage.diskgroup': {
  125. 'Meta': {'object_name': 'DiskGroup'},
  126. 'group_name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '120'}),
  127. 'group_type': ('django.db.models.fields.CharField', [], {'max_length': '120'}),
  128. 'group_volume': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['storage.Volume']"}),
  129. 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
  130. },
  131. 'storage.volume': {
  132. 'Meta': {'object_name': 'Volume'},
  133. 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
  134. 'vol_fstype': ('django.db.models.fields.CharField', [], {'max_length': '120'}),
  135. 'vol_name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '120'})
  136. },
  137. 'system.advanced': {
  138. 'Meta': {'object_name': 'Advanced'},
  139. 'adv_consolemenu': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
  140. 'adv_consolemsg': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
  141. 'adv_consolescreensaver': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
  142. 'adv_firmwarevc': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
  143. 'adv_motd': ('django.db.models.fields.TextField', [], {'max_length': '1024'}),
  144. 'adv_powerdaemon': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
  145. 'adv_serialconsole': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
  146. 'adv_swapondrive': ('django.db.models.fields.IntegerField', [], {'default': '2'}),
  147. 'adv_systembeep': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
  148. 'adv_traceback': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
  149. 'adv_tuning': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
  150. 'adv_zeroconfbonjour': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
  151. 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
  152. },
  153. 'system.cronjob': {
  154. 'Meta': {'object_name': 'CronJob'},
  155. 'cron_command': ('django.db.models.fields.CharField', [], {'max_length': '120'}),
  156. 'cron_daymonth': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
  157. 'cron_dayweek': ('django.db.models.fields.CharField', [], {'default': "'1,2,3,4,5,6,7'", 'max_length': '100'}),
  158. 'cron_description': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
  159. 'cron_enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
  160. 'cron_hour': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
  161. 'cron_minute': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
  162. 'cron_month': ('django.db.models.fields.CharField', [], {'default': "'1,2,3,4,5,6,7,8,9,10,a,b,c'", 'max_length': '100'}),
  163. 'cron_user': ('freeadmin.models.UserField', [], {'max_length': '60'}),
  164. 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
  165. },
  166. 'system.email': {
  167. 'Meta': {'object_name': 'Email'},
  168. 'em_fromemail': ('django.db.models.fields.CharField', [], {'max_length': '120', 'blank': 'True'}),
  169. 'em_outgoingserver': ('django.db.models.fields.CharField', [], {'max_length': '120', 'blank': 'True'}),
  170. 'em_pass': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'}),
  171. 'em_port': ('django.db.models.fields.IntegerField', [], {'default': '25'}),
  172. 'em_security': ('django.db.models.fields.CharField', [], {'default': "'plain'", 'max_length': '120'}),
  173. 'em_smtp': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
  174. 'em_user': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'}),
  175. 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
  176. },
  177. 'system.loader': {
  178. 'Meta': {'object_name': 'Loader'},
  179. 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
  180. 'ldr_comment': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
  181. 'ldr_value': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
  182. 'ldr_var': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '50'})
  183. },
  184. 'system.rsync': {
  185. 'Meta': {'object_name': 'Rsync'},
  186. 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
  187. 'rsync_archive': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
  188. 'rsync_compress': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
  189. 'rsync_daymonth': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
  190. 'rsync_dayweek': ('django.db.models.fields.CharField', [], {'default': "'1,2,3,4,5,6,7'", 'max_length': '100'}),
  191. 'rsync_delete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
  192. 'rsync_desc': ('django.db.models.fields.CharField', [], {'max_length': '120', 'blank': 'True'}),
  193. 'rsync_extra': ('django.db.models.fields.CharField', [], {'max_length': '120', 'blank': 'True'}),
  194. 'rsync_hour': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
  195. 'rsync_minute': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
  196. 'rsync_month': ('django.db.models.fields.CharField', [], {'default': "'1,2,3,4,5,6,7,8,9,10,a,b,c'", 'max_length': '100'}),
  197. 'rsync_path': ('freeadmin.models.PathField', [], {'max_length': '255'}),
  198. 'rsync_preserveattr': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
  199. 'rsync_preserveperm': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
  200. 'rsync_quiet': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
  201. 'rsync_recursive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
  202. 'rsync_remotehost': ('django.db.models.fields.CharField', [], {'max_length': '120'}),
  203. 'rsync_remotemodule': ('django.db.models.fields.CharField', [], {'max_length': '120'}),
  204. 'rsync_times': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
  205. 'rsync_user': ('freeadmin.models.UserField', [], {'max_length': '60'})
  206. },
  207. 'system.settings': {
  208. 'Meta': {'object_name': 'Settings'},
  209. 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
  210. 'stg_guiaddress': ('django.db.models.fields.CharField', [], {'default': "'0.0.0.0'", 'max_length': '120', 'blank': 'True'}),
  211. 'stg_guiport': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '120', 'blank': 'True'}),
  212. 'stg_guiprotocol': ('django.db.models.fields.CharField', [], {'default': "'http'", 'max_length': '120'}),
  213. 'stg_language': ('django.db.models.fields.CharField', [], {'default': "'en'", 'max_length': '120'}),
  214. 'stg_ntpserver1': ('django.db.models.fields.CharField', [], {'default': "'0.freebsd.pool.ntp.org iburst maxpoll 9'", 'max_length': '120'}),
  215. 'stg_ntpserver2': ('django.db.models.fields.CharField', [], {'default': "'1.freebsd.pool.ntp.org iburst maxpoll 9'", 'max_length': '120', 'blank': 'True'}),
  216. 'stg_ntpserver3': ('django.db.models.fields.CharField', [], {'default': "'2.freebsd.pool.ntp.org iburst maxpoll 9'", 'max_length': '120', 'blank': 'True'}),
  217. 'stg_syslogserver': ('freenasUI.contrib.IPAddressField.IPAddressField', [], {'default': "''", 'blank': 'True'}),
  218. 'stg_timezone': ('django.db.models.fields.CharField', [], {'default': "'America/Los_Angeles'", 'max_length': '120'})
  219. },
  220. 'system.smarttest': {
  221. 'Meta': {'unique_together': "(('smarttest_disk', 'smarttest_type'),)", 'object_name': 'SMARTTest'},
  222. 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
  223. 'smarttest_daymonth': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
  224. 'smarttest_dayweek': ('django.db.models.fields.CharField', [], {'default': "'1,2,3,4,5,6,7'", 'max_length': '100'}),
  225. 'smarttest_desc': ('django.db.models.fields.CharField', [], {'max_length': '120', 'blank': 'True'}),
  226. 'smarttest_disk': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['storage.Disk']"}),
  227. 'smarttest_hour': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
  228. 'smarttest_month': ('django.db.models.fields.CharField', [], {'default': "'1,2,3,4,5,6,7,8,9,10,a,b,c'", 'max_length': '100'}),
  229. 'smarttest_type': ('django.db.models.fields.CharField', [], {'max_length': '2', 'blank': 'True'})
  230. },
  231. 'system.ssl': {
  232. 'Meta': {'object_name': 'SSL'},
  233. 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
  234. 'ssl_certfile': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
  235. 'ssl_city': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'}),
  236. 'ssl_common': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'}),
  237. 'ssl_country': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'}),
  238. 'ssl_email': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'}),
  239. 'ssl_org': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'}),
  240. 'ssl_state': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'}),
  241. 'ssl_unit': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'})
  242. },
  243. 'system.sysctl': {
  244. 'Meta': {'object_name': 'Sysctl'},
  245. 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
  246. 'sysctl_comment': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
  247. 'sysctl_mib': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '50'}),
  248. 'sysctl_value': ('django.db.models.fields.CharField', [], {'max_length': '50'})
  249. }
  250. }
  251.  
  252. complete_apps = ['system']
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement