def __upgrade_node(self, origin_urls, force=False): f_upgrade_log = None try: f_upgrade_log = open(os.path.join(self.home_dir, 'upgrade_node.log'), 'a') custom_installator = self.operator.get_config_value('INSTALLATOR_PATH') installator = custom_installator or INSTALLATOR for origin_url in origin_urls: f_upgrade_log.write('='*80+'\n') f_upgrade_log.write('UPGRADE FROM %s ... NOW = %s\n'%(origin_url, datetime.now())) f_upgrade_log.write('='*80+'\n') params = ['sudo', installator, origin_url] if force: params.append('--force') ret, cout, cerr = run_command_ex(params) f_upgrade_log.write(cout) f_upgrade_log.write(cerr) if ret != 0: raise Exception(cerr.strip()) f_upgrade_log.write('Node is upgraded successfully!\n\n') finally: if f_upgrade_log: f_upgrade_log.close()
def update_node_info(cls): ver = 'unknown' old_curdir = os.path.abspath(os.curdir) try: os.chdir(GIT_HOME) ret, cout, cerr = run_command_ex(['git', 'describe', '--always', '--tag']) if ret != 0: raise Exception(cerr) ver = cout.strip() except Exception, err: logger.error('"git describe --always --tag" failed: %s'%err)
def __upgrade_node(self, origin_url): f_upgrage_log = None old_curdir = os.path.abspath(os.curdir) try: if not origin_url: raise Exception('origin_url does not found') f_upgrage_log = open(os.path.join(self.home_dir, 'upgrade_node.log'), 'a') f_upgrage_log.write('='*80+'\n') f_upgrage_log.write('UPGRADE FROM %s ... NOW = %s\n'%(origin_url, datetime.now())) f_upgrage_log.write('='*80+'\n') os.chdir(GIT_HOME) os.system('git checkout -- .') #clear local changes... os.system('git config --local --replace-all remote.origin.url %s'%origin_url) ret, cout, cerr = run_command_ex(['git', 'pull']) f_upgrage_log.write('===> git pull finished with code %s\n'%ret) f_upgrage_log.write('===> stdout: \n%s'%cout) f_upgrage_log.write('===> stderr: \n%s'%cerr) if ret != 0: raise Exception('git pull failed: %s'%cerr) optype = self.operator.get_type() ret, cout, cerr = run_command_ex(['./fabnet/bin/upgrade-node', optype]) f_upgrage_log.write('===> ./fabnet/bin/upgrade-node %s finished with code %s\n'%(optype, ret)) f_upgrage_log.write('===> stdout: \n%s'%cout) f_upgrage_log.write('===> stderr: \n%s'%cerr) if ret != 0: raise Exception('upgrade-node script failed!') self.update_node_info() f_upgrage_log.write('Node is upgraded successfully!\n\n') except Exception, err: self._throw_event(ET_ALERT, 'UpgradeNodeOperation failed', err) logger.error('[UpgradeNodeOperation] %s'%err)