From a997c8f930f03a1c887926bd6e4450b688a96177 Mon Sep 17 00:00:00 2001 From: Mike Hiretsky Date: Thu, 5 Apr 2012 12:39:00 +0400 Subject: [PATCH] Exclude FileSystemManager from cl_install to fs_manager module --- install/cl_fill_install.py | 2 +- install/cl_install.py | 134 ++------------------------- install/fs_manager.py | 142 +++++++++++++++++++++++++++++ install/variables/autopartition.py | 7 +- install/variables/disk.py | 2 +- install/variables/kernel.py | 2 +- install/variables/system.py | 2 +- 7 files changed, 158 insertions(+), 133 deletions(-) create mode 100644 install/fs_manager.py diff --git a/install/cl_fill_install.py b/install/cl_fill_install.py index f79217a..095c441 100644 --- a/install/cl_fill_install.py +++ b/install/cl_fill_install.py @@ -35,7 +35,7 @@ from calculate.lib.cl_fill import clLocale from calculate.lib.cl_template import _terms from calculate.install.cl_distr import (DistributiveRepository, PartitionDistributive) -from calculate.install.cl_install import FileSystemManager +from calculate.install.fs_manager import FileSystemManager from operator import itemgetter from calculate.lib.cl_lang import setLocalTranslate diff --git a/install/cl_install.py b/install/cl_install.py index 40f75dd..4555abb 100644 --- a/install/cl_install.py +++ b/install/cl_install.py @@ -39,6 +39,7 @@ from calculate.lib.utils import ip from datavars import DataVarsInstall, __version__,__app__ from calculate.install.variables.autopartition import (AutopartitionError, AutoPartition) +from calculate.install.fs_manager import FileSystemManager from cl_kernel_utils import KernelConfig,InitRamFs @@ -87,123 +88,6 @@ class printNoColor: def colorPrint(self,attr,fg,bg,string): sys.stdout.write(string) -class FileSystemManager: - """Convert dict install option""" - - defaultOpt = 'noatime' - defaultBindOpts = ['bind'] - supportFS = { - 'ext2': {'defaultopt': defaultOpt, - 'format': '/sbin/mkfs.ext2', - 'formatparam': '{labelparam} {device}', - 'gpt': '0700', - 'label': '-L {labelname}', - 'msdos': '83', - 'type':['hdd','usb-hdd']}, - 'ext3': {'defaultopt': defaultOpt, - 'format': '/sbin/mkfs.ext3', - 'formatparam': '{labelparam} {device}', - 'gpt': '0700', - 'label': '-L {labelname}', - 'msdos': '83', - 'type':['hdd','usb-hdd']}, - 'ext4': {'defaultopt': defaultOpt, - 'format': '/sbin/mkfs.ext4', - 'formatparam': '{labelparam} {device}', - 'gpt': '0700', - 'label': '-L {labelname}', - 'msdos': '83', - 'type':['hdd','usb-hdd']}, - 'reiserfs': {'defaultopt': defaultOpt, - 'format': '/sbin/mkfs.reiserfs', - 'formatparam': '{labelparam} -f {device}', - 'gpt': '0700', - 'label': '-l {labelname}', - 'msdos': '83', - 'type':['hdd','usb-hdd']}, - 'btrfs': {'defaultopt': defaultOpt, - 'format': '/sbin/mkfs.btrfs', - 'formatparam': '{labelparam} {device}', - 'gpt': '0700', - 'label': '-L {labelname}', - 'msdos': '83', - 'type':['hdd','usb-hdd']}, - 'jfs': {'defaultopt': defaultOpt, - 'format': '/sbin/mkfs.jfs', - 'formatparam': '{labelparam} -f {device}', - 'gpt': '0700', - 'label': '-L {labelname}', - 'msdos': '83', - 'type':['hdd','usb-hdd']}, - 'xfs': {'defaultopt': defaultOpt, - 'format': '/sbin/mkfs.xfs', - 'formatparam': '{labelparam} -f {device}', - 'gpt': '0700', - 'label': '-L {labelname}', - 'msdos': '83', - 'type':['hdd','usb-hdd']}, - 'nilfs2': {'defaultopt': defaultOpt, - 'format': '/sbin/mkfs.nilfs2', - 'formatparam': '{labelparam} {device}', - 'gpt': '0700', - 'label': '-L {labelname}', - 'msdos': '83', - 'type':['hdd','usb-hdd']}, - 'swap': {'defaultopt': 'sw', - 'format': '/sbin/mkswap', - 'formatparam': '{device}', - 'gpt': '8200', - 'label': '', - 'msdos': '82'}, - 'vfat': {'defaultopt': defaultOpt, - 'format': '/usr/sbin/mkfs.vfat', - 'formatparam': '{labelparam} -F 32 {device}', - 'gpt': '0700', - 'label': '-n {labelname}', - 'msdos': '0b', - 'type':['flash']}, - 'ntfs': {'defaultopt': defaultOpt, - 'format': '/sbin/mkfs.ntfs', - 'formatparam': '{labelparam} -FQ {device}', - 'gpt': '0700', - 'label': '-L {labelname}', - 'msdos': '7', - 'compatible':['ntfs-3g']}, - 'ntfs-3g': {'defaultopt': defaultOpt, - 'format': '/sbin/mkfs.ntfs', - 'formatparam': '{labelparam} -FQ {device}', - 'gpt': '0700', - 'label': '-L {labelname}', - 'msdos': '7', - 'compatible':['ntfs']}} - @classmethod - def firstAvailable(cls,listFS): - for fs in listFS: - if path.exists(cls.supportFS['format']): - return fs - else: - return "" - - defaultFS = {'hdd':"ext4" \ - if path.exists(supportFS['ext4']['format']) else \ - "reiserfs" \ - if path.exists(supportFS['reiserfs']['format']) else \ - "ext3", - 'flash':"vfat", - 'usb-hdd': "ext4" \ - if path.exists(supportFS['ext4']['format']) else \ - "reiserfs" \ - if path.exists(supportFS['reiserfs']['format']) else \ - "ext3"} - - @classmethod - def getDefaultOpt(cls,fs): - return cls.supportFS.get(fs,{'defaultopt':''})['defaultopt'] - - @classmethod - def checkFSForType(cls,fs,roottype): - return roottype in cls.supportFS.get(fs,{}).get('type',[]) - class cltCopy(scanDirectory): """Copy clt files @@ -824,16 +708,18 @@ class Install(color_print, SignalInterrupt): sourceDistr = None try: self.clVars.printVars() - if self.Get('cl_autopartition_scheme'): - if self.Get('cl_autopartition_table') != "dos": + if self.clVars.Get('cl_autopartition_scheme'): + if self.clVars.Get('cl_autopartition_table') != "dos": raise InstallError( _('Autopartitioning for gpt is not supported')) - self.startTask(_("Creating new partition table"),progress=True) + self.startTask(_("Creating new partition table"), + progress=True) AutoPartition().recreatePartitionTableDos( - self.Get('cl_autopartition_device'), - self.Get('cl_autopartition_scheme'), - str(int(self.Get('hr_memory_size'))/1024), - str(int(self.Get('cl_autopartion_root_size'))*1024)) + self.clVars.Get('cl_autopartition_device'), + self.clVars.Get('cl_autopartition_scheme'), + str(int(self.clVars.Get('hr_memory_size'))/1024), + str(int(self.clVars.Get('cl_autopartition_root_size')) + *1024)) self.endTask() targetDistr = self.clVars.Get('cl_target') sourceDistr = self.clVars.Get('cl_image') diff --git a/install/fs_manager.py b/install/fs_manager.py new file mode 100644 index 0000000..08593da --- /dev/null +++ b/install/fs_manager.py @@ -0,0 +1,142 @@ +#-*- coding: utf-8 -*- + +# Copyright 2010 Calculate Ltd. http://www.calculate-linux.org +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import re +import sys +import time +import traceback +from os import path + +from calculate.lib.cl_lang import setLocalTranslate +setLocalTranslate('cl_install',sys.modules[__name__]) + +class FileSystemManager: + """Convert dict install option""" + + defaultOpt = 'noatime' + defaultBindOpts = ['bind'] + supportFS = { + 'ext2': {'defaultopt': defaultOpt, + 'format': '/sbin/mkfs.ext2', + 'formatparam': '{labelparam} {device}', + 'gpt': '0700', + 'label': '-L {labelname}', + 'msdos': '83', + 'type':['hdd','usb-hdd']}, + 'ext3': {'defaultopt': defaultOpt, + 'format': '/sbin/mkfs.ext3', + 'formatparam': '{labelparam} {device}', + 'gpt': '0700', + 'label': '-L {labelname}', + 'msdos': '83', + 'type':['hdd','usb-hdd']}, + 'ext4': {'defaultopt': defaultOpt, + 'format': '/sbin/mkfs.ext4', + 'formatparam': '{labelparam} {device}', + 'gpt': '0700', + 'label': '-L {labelname}', + 'msdos': '83', + 'type':['hdd','usb-hdd']}, + 'reiserfs': {'defaultopt': defaultOpt, + 'format': '/sbin/mkfs.reiserfs', + 'formatparam': '{labelparam} -f {device}', + 'gpt': '0700', + 'label': '-l {labelname}', + 'msdos': '83', + 'type':['hdd','usb-hdd']}, + 'btrfs': {'defaultopt': defaultOpt, + 'format': '/sbin/mkfs.btrfs', + 'formatparam': '{labelparam} {device}', + 'gpt': '0700', + 'label': '-L {labelname}', + 'msdos': '83', + 'type':['hdd','usb-hdd']}, + 'jfs': {'defaultopt': defaultOpt, + 'format': '/sbin/mkfs.jfs', + 'formatparam': '{labelparam} -f {device}', + 'gpt': '0700', + 'label': '-L {labelname}', + 'msdos': '83', + 'type':['hdd','usb-hdd']}, + 'xfs': {'defaultopt': defaultOpt, + 'format': '/sbin/mkfs.xfs', + 'formatparam': '{labelparam} -f {device}', + 'gpt': '0700', + 'label': '-L {labelname}', + 'msdos': '83', + 'type':['hdd','usb-hdd']}, + 'nilfs2': {'defaultopt': defaultOpt, + 'format': '/sbin/mkfs.nilfs2', + 'formatparam': '{labelparam} {device}', + 'gpt': '0700', + 'label': '-L {labelname}', + 'msdos': '83', + 'type':['hdd','usb-hdd']}, + 'swap': {'defaultopt': 'sw', + 'format': '/sbin/mkswap', + 'formatparam': '{device}', + 'gpt': '8200', + 'label': '', + 'msdos': '82'}, + 'vfat': {'defaultopt': defaultOpt, + 'format': '/usr/sbin/mkfs.vfat', + 'formatparam': '{labelparam} -F 32 {device}', + 'gpt': '0700', + 'label': '-n {labelname}', + 'msdos': '0b', + 'type':['flash']}, + 'ntfs': {'defaultopt': defaultOpt, + 'format': '/sbin/mkfs.ntfs', + 'formatparam': '{labelparam} -FQ {device}', + 'gpt': '0700', + 'label': '-L {labelname}', + 'msdos': '7', + 'compatible':['ntfs-3g']}, + 'ntfs-3g': {'defaultopt': defaultOpt, + 'format': '/sbin/mkfs.ntfs', + 'formatparam': '{labelparam} -FQ {device}', + 'gpt': '0700', + 'label': '-L {labelname}', + 'msdos': '7', + 'compatible':['ntfs']}} + @classmethod + def firstAvailable(cls,listFS): + for fs in listFS: + if path.exists(cls.supportFS['format']): + return fs + else: + return "" + + defaultFS = {'hdd':"ext4" \ + if path.exists(supportFS['ext4']['format']) else \ + "reiserfs" \ + if path.exists(supportFS['reiserfs']['format']) else \ + "ext3", + 'flash':"vfat", + 'usb-hdd': "ext4" \ + if path.exists(supportFS['ext4']['format']) else \ + "reiserfs" \ + if path.exists(supportFS['reiserfs']['format']) else \ + "ext3"} + + @classmethod + def getDefaultOpt(cls,fs): + return cls.supportFS.get(fs,{'defaultopt':''})['defaultopt'] + + @classmethod + def checkFSForType(cls,fs,roottype): + return roottype in cls.supportFS.get(fs,{}).get('type',[]) diff --git a/install/variables/autopartition.py b/install/variables/autopartition.py index 5478761..eebb320 100644 --- a/install/variables/autopartition.py +++ b/install/variables/autopartition.py @@ -27,7 +27,7 @@ from calculate.lib.utils.device import (getUdevDeviceInfo,getDeviceType, from calculate.lib.utils.files import (listDirectory,pathJoin,readFile,FStab, readLinesFile,process,getProgPath) from calculate.install.cl_distr import PartitionDistributive -from calculate.install.cl_install import FileSystemManager +from calculate.install.fs_manager import FileSystemManager from calculate.lib.cl_lang import setLocalTranslate @@ -90,10 +90,7 @@ class AutoPartition: num +=1 fdisk.write(WRITE_AND_QUIT) - if fdiskProcess.success(): - return True - pipe.stdin.close() - pipe.wait() + fdisk.success() for waittime in (0.1,0.2,0.5,1,2,4): if path.exists(device+str(num-1)): return True diff --git a/install/variables/disk.py b/install/variables/disk.py index a4d3796..27fb6ba 100644 --- a/install/variables/disk.py +++ b/install/variables/disk.py @@ -25,7 +25,7 @@ from calculate.lib.utils.device import (getUdevDeviceInfo,getDeviceType, getUUIDDict) from calculate.lib.utils.files import listDirectory,pathJoin,readFile,FStab from calculate.install.cl_distr import PartitionDistributive -from calculate.install.cl_install import FileSystemManager +from calculate.install.fs_manager import FileSystemManager from calculate.lib.cl_lang import setLocalTranslate setLocalTranslate('cl_install',sys.modules[__name__]) diff --git a/install/variables/kernel.py b/install/variables/kernel.py index e1022c7..409106b 100644 --- a/install/variables/kernel.py +++ b/install/variables/kernel.py @@ -220,7 +220,7 @@ class VariableOsInstallKernelCpufreq(ReadonlyVariable): else: return "" -class VariableOsInstallKernelUid(ReadonlyVariable): +class VariableClInstallKernelUid(ReadonlyVariable): """ Variable install kernel UID """ diff --git a/install/variables/system.py b/install/variables/system.py index 05a895a..4d6611c 100644 --- a/install/variables/system.py +++ b/install/variables/system.py @@ -20,7 +20,7 @@ import re from os import path from calculate.lib.datavars import Variable,VariableError,ReadonlyVariable from calculate.install.variables.net import NetVariable -from calculate.install.cl_install import FileSystemManager +from calculate.install.fs_manager import FileSystemManager from calculate.lib.utils.files import readFile,getProgPath,process from calculate.lib.utils.common import getPasswdUsers from crypt import crypt