Пример #1
0
    def rsync(self, is_need_restart=False):
        """
            1. 首先要源码服务器同步最新代码
            2. rsync到指定服务器
            3. 是否需要复制配置文件
            4. 是否要重启项目
        """

        response_text = []
        response_err = []

        source_server = self.get_svn_source_server()

        self.ss.connect(source_server)
        _response_text, _response_err = self.ss.execute(
            self.svn_command)
        _response_text.insert(0, 'Login Svn Server: %s' % source_server)
        response_text.extend(_response_text)
        response_err.extend(_response_err)

        _response_text, _response_err = self.ss.execute(
             self.rsync_command % {
             'app_prepath': self.app_prepath})
        response_text.extend(_response_text)
        response_err.extend(_response_err)
        self.ss.close()

        # 关闭上一个源码服务器的连接
        # 初始化一个ssh对象连接到指定host

        if self.extra_command or is_need_restart:

            self.ss = SSH()
            self.ss.connect(self.host)
            response_text.extend(['\n', 'Login App Server: %s\n' % self.host])
            if self.extra_command:
                _response_text, _response_err = self.ss.execute(
                     self.extra_command)
                response_text.extend(_response_text)
                response_err.extend(_response_err)

            if is_need_restart:
                _response_text, _response_err = self.ss.execute(
                     self.restart_command)
                response_text.extend(_response_text)
                response_err.extend(_response_err)

        return response_text, response_err
Пример #2
0
    def __init__(self, project='', app_name='', host='', 
        host_line_type='telecom', extra_command=''):

        self.ss = SSH()
        self.host = host
        self.project = project
        self.app_name = app_name
        self.host_line_type = host_line_type
        self.extra_command = extra_command

        self.svn_command = "cd /home/tonnnsrc/%(project)s/%(app_name)s/ \
            && svn up" % {
                'project': project, 
                'app_name': app_name,
            }
        self.rsync_command = "sudo /usr/local/bin/rsync -az --delete  \
--progress /home/tonnnsrc/%(project)s/%(app_name)s/trunk/ \
--exclude-from=/home/tonnnsrc/zhimeng/config/trunk/rsync_exclude  \
-e 'ssh -p 57222' roy@%(host)s:/home/%%(app_prepath)s/%(app_name)s/" % {
    'project': project, 'app_name': app_name, 'host': host,}

        self.restart_command = "sudo /usr/local/etc/rc.d/%s onerestart" \
            % app_name
Пример #3
0
class Host(object):

    """
        __init__(
            project='', 
            app_name='', 
            host='', 
            host_line_type='telecom', 
            extra_command='')
    """

    def __init__(self, project='', app_name='', host='', 
        host_line_type='telecom', extra_command=''):

        self.ss = SSH()
        self.host = host
        self.project = project
        self.app_name = app_name
        self.host_line_type = host_line_type
        self.extra_command = extra_command

        self.svn_command = "cd /home/tonnnsrc/%(project)s/%(app_name)s/ \
            && svn up" % {
                'project': project, 
                'app_name': app_name,
            }
        self.rsync_command = "sudo /usr/local/bin/rsync -az --delete  \
--progress /home/tonnnsrc/%(project)s/%(app_name)s/trunk/ \
--exclude-from=/home/tonnnsrc/zhimeng/config/trunk/rsync_exclude  \
-e 'ssh -p 57222' roy@%(host)s:/home/%%(app_prepath)s/%(app_name)s/" % {
    'project': project, 'app_name': app_name, 'host': host,}

        self.restart_command = "sudo /usr/local/etc/rc.d/%s onerestart" \
            % app_name

    @property
    def app_prepath(self):

        if self.app_name in ('pimages', 'templates',):
            return 'htdocs'

        return 'workspace'

    def get_svn_source_server(self):

        if self.host_line_type == 'telecom':
            return '61.147.97.226'

        if self.host_line_type == 'unicom':
            return '211.147.242.64'

        if self.host_line_type == 'bgp':
            return '61.147.97.226'

        return '61.147.97.226'

    def run_command(self, command):

        response_text = []
        response_err = []

        self.ss.connect(self.host)
        _response_text, _response_err = self.ss.execute(command)
        response_text.extend(_response_text)
        response_err.extend(_response_err)
        self.ss.close()

        return response_text, response_err

    def rsync(self, is_need_restart=False):
        """
            1. 首先要源码服务器同步最新代码
            2. rsync到指定服务器
            3. 是否需要复制配置文件
            4. 是否要重启项目
        """

        response_text = []
        response_err = []

        source_server = self.get_svn_source_server()

        self.ss.connect(source_server)
        _response_text, _response_err = self.ss.execute(
            self.svn_command)
        _response_text.insert(0, 'Login Svn Server: %s' % source_server)
        response_text.extend(_response_text)
        response_err.extend(_response_err)

        _response_text, _response_err = self.ss.execute(
             self.rsync_command % {
             'app_prepath': self.app_prepath})
        response_text.extend(_response_text)
        response_err.extend(_response_err)
        self.ss.close()

        # 关闭上一个源码服务器的连接
        # 初始化一个ssh对象连接到指定host

        if self.extra_command or is_need_restart:

            self.ss = SSH()
            self.ss.connect(self.host)
            response_text.extend(['\n', 'Login App Server: %s\n' % self.host])
            if self.extra_command:
                _response_text, _response_err = self.ss.execute(
                     self.extra_command)
                response_text.extend(_response_text)
                response_err.extend(_response_err)

            if is_need_restart:
                _response_text, _response_err = self.ss.execute(
                     self.restart_command)
                response_text.extend(_response_text)
                response_err.extend(_response_err)

        return response_text, response_err

    def close(self):

        self.ss.close()