Show
Ignore:
Timestamp:
08/10/07 21:51:05 (5 years ago)
Author:
trivoallan
Message:

cleverbox :

fixes #13

Location:
cleverbox/trunk/cleverbox
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • cleverbox/trunk/cleverbox/scripts/admin.py

    r156 r157  
    5555        # Check if environment needs an upgrade 
    5656        #  - open VERSION 
    57         env_version = open(os.path.join(self.envname, 'VERSION')).read() 
    58          
    59         #  - compare with self._version 
    60         #  - if VERSION < self._version : 
    61         if parse_version(env_version) < parse_version(self._version):  
    62             #    - call upgrade script corresponding to self._upg (?) 
    63             from cleverbox.upgrades import upgrades 
    64             i = 1 
    65             while i: 
    66                 try: 
    67                     upgrades['do_upgrade_' + i].__call__(self.envname, env_version) 
    68                 except ImportError, e: 
    69                     break 
    70                 i = i + 1 
    71                  
    72         elif parse_version(env_version) > parse_version(self._version): 
    73             raise 
     57        try: 
     58            env_version = open(os.path.join(self.envname, 'VERSION')).read().strip() 
     59             
     60            #  - compare with self._version 
     61            #  - if VERSION < self._version : 
     62            if parse_version(env_version) < parse_version(_version):  
     63                print "\nCleverbox environment needs to be upgraded. Please run :" 
     64                print "  cleverbox-admin %s upgrade\n" % self.envname 
     65                sys.exit(1) 
     66        except IOError, e: 
     67            # no VERSION file means user wants to create an environment 
     68            pass 
    7469         
    7570        if env is not None: 
     
    146141        collected_infos['clients_root'] = raw_input('Projects directory [%s]> ' % default_root).strip() or default_root 
    147142 
     143        # Path to cleverbox assets 
     144        default_assets_dir = '/usr/share/cleverbox' 
     145        collected_infos['assets_dir'] = raw_input('Cleverbox assets directory [%s]> ' % default_assets_dir).strip() or default_assets_dir 
     146 
    148147        try : 
    149148            os.makedirs(collected_infos['clients_root'], 0775) 
     
    215214        print "\n\tCreating default configuration profile\n" 
    216215        for filename in _defaults['profile_files']: 
    217             shutil.copy('/usr/share/cleverbox/' + filename, os.path.join(self.envname, 'profiles', 'default')) 
     216            shutil.copy(collected_infos['assets_dir'] + '/' + filename, os.path.join(self.envname, 'profiles', 'default')) 
    218217         
    219218 
     
    222221        print "You need to add this statement to your apache configuration : \n" \ 
    223222            "\t'Include %(env_dir)s/clients-enabled/*'\n" % {'env_dir' : self.envname} 
     223 
     224    _help_upgrade = [('upgrade', 'Executes necessary operation to make environment up to date')] 
     225    def do_upgrade(self, line=None): 
     226        env_version = open(os.path.join(self.envname, 'VERSION')).read() 
     227        if parse_version(env_version) < parse_version(_version):  
     228            from cleverbox.upgrades import upgrades 
     229            i = 1 
     230            while i: 
     231                try: 
     232                    upgrade_func = getattr(upgrades, 'do_upgrade_' + str(i)) 
     233                    upgrade_func.__call__(self.envname, env_version) 
     234                except AttributeError, e: 
     235                    break 
     236                i = i + 1 
     237             
    224238 
    225239    ## help 
     
    234248                print "No documentation found for %s" % arg[0] 
    235249        else: 
    236             docs = (self._help_client + self._help_project + self._help_initenv) 
     250            docs = (self._help_client + self._help_project + self._help_initenv + self._help_upgrade) 
    237251            print 'cleverbox-admin - The Cleverbox Administration Console' 
    238252            if not self.interactive: 
     
    10871101 
    10881102    if len(args) > 0: 
    1089         if args[0] in ('-h', '--help', 'help'): 
    1090             return admin.onecmd("help") 
    1091         elif args[0] in ('-v','--version','about'): 
    1092             return admin.onecmd("about") 
     1103        if len(args) > 1: 
     1104            if args[1] in ('-h', '--help', 'help'): 
     1105                return admin.onecmd("help") 
     1106            elif args[1] in ('-v','--version','about'): 
     1107                return admin.onecmd("about") 
     1108            elif args[1] in ('-u', '--upgrade', 'upgrade'): 
     1109                admin.envname = args[0] 
     1110                return admin.onecmd("upgrade") 
    10931111        else: 
    10941112            admin.env_set(os.path.abspath(args[0])) 
  • cleverbox/trunk/cleverbox/upgrades/upgrades.py

    r156 r157  
    11from pkg_resources import parse_version 
    22 
     3 
    34def do_upgrade_1(envname, env_version): 
    4     if parse_version(env_version) >= parse_version(0.4): 
    5         pass 
    6     else: 
    7         print "upgrade 1 !" 
     5    if parse_version(env_version) < parse_version('0.4'): 
     6        print "It is not possible to upgrade cleverbox instances created with Cleverbox prior to 0.4" 
     7        print "It was not even a public release !" 
     8        print "Your only choice left is to pay big money for Clever Age (http://www.clever-age.com) consultants to make a manual migration." 
     9