Show
Ignore:
Timestamp:
08/13/07 19:30:27 (5 years ago)
Author:
trivoallan
Message:

cleverbox : fixed bugs regarding environment refactoring.

Location:
cleverbox/trunk/cleverbox
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • cleverbox/trunk/cleverbox/environment.py

    r178 r180  
    1 import os, shutil, ConfigParser.SafeConfigParser 
     1import os, shutil, stat 
     2import ConfigParser 
    23from pkg_resources import parse_version 
    34from cleverbox.utils.termcolors import colorize, make_style 
     5 
     6layout = ('clients-available', 'clients-enabled', 
     7          'projects-available', 'projects-enabled', 
     8          'profiles/default') 
     9 
     10profile_files = ('project.apache.conf', 'trac-defaults.ini', 'permissions.ini') 
    411 
    512class Environment: 
    613     
    714    path = '' 
    8  
    9     layout = ('clients-available', 'clients-enabled', 
    10               'projects-available', 'projects-enabled', 
    11               'profiles/default') 
    12      
    13     profile_files = ('project.apache.conf', 'trac-defaults.ini', 'permissions.ini') 
    1415     
    1516    def __init__(self, envdir): 
    1617        self.path = envdir 
    1718        self.config = ConfigParser.SafeConfigParser() 
    18         self.config.read(self.get_file_path('cleverbox.ini')) 
     19        self.config.read(self.get_path('cleverbox.ini')) 
    1920     
    2021    def create(self, version, parameters): 
     
    2223        Creates a cleverbox environment. 
    2324        """ 
    24          
     25 
     26        # Do not do anything if base directories is not empty 
     27        if (len(os.listdir(self.path))): 
     28            raise IOError, '"%s" directory is not empty' % self.path 
     29 
     30        if (len(os.listdir(parameters['general']['clients_root']))): 
     31            raise IOError, '"%s" directory is not empty' % self.path 
     32 
    2533        # Create cleverbox.ini 
    26         for section_name, section_directives in parameters: 
     34        for (section_name, section_directives) in parameters.items(): 
    2735            self.config.add_section(section_name) 
    28             for k, v in section_directives: 
     36            for (k, v) in section_directives.items(): 
    2937                self.config.set(section_name, k, v) 
    3038         
     
    3543            env_dirs = [] 
    3644            for dirname in layout: 
    37                 env_dirs.append( os.path.join(self.env.path, dirname) ) 
     45                env_dirs.append(self.get_path(dirname)) 
    3846            map( os.makedirs, env_dirs ) 
    3947 
     
    4149            try: 
    4250                print "\n\tCreating VERSION file\n" 
    43                 fd = open( os.path.join(self.env.path, 'VERSION'), 'w' ) 
    44                 fd.write(_version) 
     51                fd = open(self.get_path('VERSION'), 'w') 
     52                fd.write(version) 
    4553            finally: 
    4654                fd.close() 
     
    4957            print "\n\tCreating default configuration profile\n" 
    5058            for filename in profile_files: 
    51                 shutil.copy(collected_infos['assets_dir'] + '/' + filename, os.path.join(self.env.path, 'profiles', 'default')) 
     59                shutil.copy( 
     60                    os.path.join(parameters['general']['assets_dir'], filename), 
     61                    os.path.join(self.get_path('profiles'), 'default')) 
    5262 
    5363            # Write cleverbox.ini to disk 
    54             self.config.write(open(self.get_file_path('cleverbox.ini'), 'w+')) 
     64            self.config.write(open(self.get_path('cleverbox.ini'), 'w+')) 
    5565 
    56         except IOError, ioexception : 
    57             print ioexception 
     66        except Exception, exception: 
     67            print exception 
    5868            print "** Environment couldn't be initialized in %(env_dir)s\n" % {'env_dir' : self.env.path} 
     69            print "Rolling back changes" 
     70            for entry in os.listdir(self.path): 
     71                path = os.path.join(self.path, entry) 
     72                stats = os.stat(path) 
     73                if (stat.S_ISDIR(stats[stat.ST_MODE])): 
     74                    os.rmdir(path) 
     75                else: 
     76                    os.remove(path) 
    5977 
    6078 
  • cleverbox/trunk/cleverbox/scripts/admin.py

    r179 r180  
    11# -*- coding: utf-8 -*- 
    22 
    3 import shutil, cmd, os, shlex, sys, traceback, re, ConfigParser, posix 
     3import shutil, cmd, os, shlex, sys, traceback, re 
     4import ConfigParser, posix 
    45from pkg_resources import parse_version 
    56from trac import util 
     
    1011 
    1112_defaults = { 
    12     'env_dir_layout'    : ('clients-available', 'clients-enabled', 
    13                            'projects-available', 'projects-enabled', 
    14                            'profiles/default'), 
    1513    'client_dir_layout' : ('htdocs', 'logs', 'tmp', 'uploads', 
    16                            'var/svn', 'var/trac'), 
    17     'profile_files'     : ('project.apache.conf', 'trac-defaults.ini', 'permissions.ini') 
     14                           'var/svn', 'var/trac') 
    1815} 
    1916 
     
    9289            raise 
    9390        except Exception, e: 
    94             print >> sys.stderr, 'Command failed: %s' % e 
     91            print >> sys.stderr, style.ERROR('Command failed: %s' % e) 
    9592            rv = 2 
    9693        if not self.interactive: