Exemple #1
0
 def run(self):
     logger.info(
         'class:{},host:{},module_name:{},n_arg:{},timeout:{}'.format(
             self.__class__.__name__, self.host, self.module_name,
             self.n_arg, self.timeout))
     return ExecCmd(self.host, self.module_name, self.n_arg,
                    self.timeout).run()
Exemple #2
0
    def run(self, codis_id=None):
        codis = Codis.objects.get(id=codis_id)
        group_info = Codis_admin_info(codis.admin_http).group()
        for m in group_info:
            group_name = "{0}_{1}".format(codis.name, m.get('id'))
            group, group_status = Redis_group.objects.get_or_create(
                name=group_name)
            if group_status:
                logger.info("{0} add to {1}".format(group_name, codis.name))
            group.slave.clear()
            group.offline.clear()
            for n in m.get('servers'):
                redis_instance, redis_instance_status = Redis_instance.objects.get_or_create(
                    host=Ipv4Address.objects.get(
                        name=n.get('addr').split(':')[0]),
                    port=n.get('addr').split(':')[1])
                if redis_instance_status:
                    logger.info("{0}:{1} add to {2}".format(
                        redis_instance.host.name, redis_instance.port,
                        group_name))
                if n.get('type').lower() == "master":
                    group.master = redis_instance
                    group.save()
                elif n.get('type').lower() == "slave":
                    group.slave.add(redis_instance)
                elif n.get('type').lower() == "offline":
                    group.offline.add(redis_instance)
                else:
                    pass

            codis.member.add(group)
Exemple #3
0
 def get_context_data(self, **kwargs):
     context = super(Generate_upstream_confTemplate,
                     self).get_context_data(**kwargs)
     upstream_id = self.kwargs.get('upstream_id', None)
     upstream = Upstream.objects.get(id=upstream_id)
     if upstream.domain_proxy:
         new_content = 'None'
     else:
         file_list = []
         upstream_info = {
             "upstream": upstream.name,
             "ip_hash": upstream.ip_hash,
             "upstream_server":
             [x.__str__() for x in upstream.app.apps.all()]
         }
         upstream_result = generate_conf(
             upstream_j2, upstream_tmp_file.format(upstream.name),
             upstream_info)
         logger.info(upstream_result)
         file_list.append(upstream_tmp_file.format(upstream.name))
         new_content = ''
         for m in file_list:
             new_content = new_content + "\r\n####%s####\r\n%s\r\n" % (
                 m, get_file_content(m))
     context['username'] = self.request.user.last_name
     context['active'] = 'nginx'
     context['conf'] = new_content
     context['upstream'] = upstream
     return context
Exemple #4
0
 def __init__(self, host, location, item_type, dep, item, version):
     self.dep = dep
     self.host = host
     self.item = item
     self.item_type = item_type
     self.location = location
     self.version = version
     logger.info('%s' % self.cmd_name)
Exemple #5
0
 def rerun(self, countdown=None):
     try:
         result = RollPublishTask().apply_async(args=(self.exec_id, ),
                                                countdown=countdown)
         logger.info("publish RollPublishTask<{0}>: {1}".format(
             result.task_id, self.mission))
     except Exception, e:
         logger.error("publish RollPublishTask {0} fail: {1}".format(
             self.mission, e))
Exemple #6
0
    def post(self, request):

        self.init(request)
        result = self.run()
        logger.info('request result:  %s ' % result)
        if self.format_json:
            return HttpResponse(json.dumps(result))
        else:
            return HttpResponse(result)
Exemple #7
0
    def run(self, redis_task_id):
        task = Redis_task.objects.get(id=redis_task_id)
        if task.status.name == 'in_queue':
            task.status = Status.objects.get(name='processing')
            task.save()
            resource = [{
                "hostname": task.redis_ip.name,
                "username": "******",
                "ssh_key": "/root/.ssh/id_rsa"
            }]
            if task.master_ip:
                playbook_path = '/home/admin/scripts/redis_shihui/slave.yml'
                parametres = {
                    "host": [task.redis_ip.name],
                    "master_ip": task.master_ip.name,
                    "master_port": task.master_port,
                    "ip": task.redis_ip.name,
                    "port": task.redis_port,
                    "maxmemory": task.size
                }
            else:
                playbook_path = '/home/admin/scripts/redis_shihui/master.yml'
                parametres = {
                    "host": [task.redis_ip.name],
                    "ip": task.redis_ip.name,
                    "port": task.redis_port,
                    "maxmemory": task.size
                }
            rbt = ANSRunner(resource)
            rbt.run_playbook(playbook_path=playbook_path,
                             extra_vars=parametres)
            result_data = rbt.get_playbook_result()
            logger.info({
                "resource": resource,
                "result": result_data,
                "exec_id": redis_task_id
            })
            publish_status = True
            if result_data.get('failed'):
                publish_status = False
            if result_data.get('skipped'):
                publish_status = False
            if result_data.get('unreachable'):
                publish_status = False

            if publish_status:
                task.status = Status.objects.get(name='done')
                task.result = 'done'
                task.save()
                self._get_instance(task.redis_ip.name, task.redis_port)
            else:
                logger.error(result_data)
                task.status = Status.objects.get(name='failed')
                task.result = result_data
                task.save()
        else:
            logger.error("{0} wrong status".format(redis_task_id))
Exemple #8
0
 def run(self):
     logger.debug('%s' % self.cmd_name)
     self.set_ftp_info(ftp_flag=self.ftp_flag)
     self.set_send_data(arg_format=self.arg_format)
     self.set_rs_method()
     logger.info('send_data:%s' % self.send_data)
     try:
         result = CmdControlApi().post(self.send_data)
     except Exception, e:
         logger.error('run error: %s' % str(e))
         result = e.message
Exemple #9
0
def Run_mission(req, mission_id):
    if req.user.is_authenticated():
        mission = Nxp_mission.objects.get(id=mission_id)

        ssh = Cmd_ssh(user='******', pkey=pkey, host=mission.host.name)
        for m in mission.files.split(','):
            m_result = ssh.upload(m, m)
            logger.info("{0} upload {1} to {2} {3}".format(
                mission.id, m, mission.host.name, m_result))
        result = ssh.run(
            ' /opt/app/nginx/sbin/nginx -t -c /opt/app/nginx/conf/nginx.conf  && /etc/init.d/nginx reload'
        )
        logger.info("{0} {1} reload nginx : {2}".format(
            mission.id, mission.host.name, result))
        if result.get('retcode') == 0:
            if mission.site:
                for m in Site_context.objects.filter(site=Site.objects.get(
                        name=mission.site)):
                    m.upstream.status = Status.objects.get(name='online')
                    m.upstream.save()

                mission.status = Status.objects.get(name='done')
                mission.remark = result.get('stdout')
            else:
                upstream_name = mission.files.split('/')[-1].split('.')[0]
                upstream = Upstream.objects.get(name=upstream_name)
                upstream.status = Status.objects.get(name='online')
                upstream.save()
                mission.status = Status.objects.get(name='done')
                mission.remark = result.get('stdout')
        else:
            mission.status = Status.objects.get(name='failed')
            mission.remark = result.get('stderr')
        mission.save()
        response = redirect('/mission/?keyword={0}'.format(mission.mark))
    else:
        response = redirect('login')
    return response
Exemple #10
0
 def init(self, request):
     self.master = request.POST.get('master')
     self.host = request.POST.get('minion')
     self.timeout = int(request.POST.get('timeout', 30))
     logger.info('class:{},host:{},timeout:{}'.format(
         self.__class__.__name__, self.host, self.timeout))
Exemple #11
0
    def run(self, exec_id, call_id=None):
        self.init(exec_id=exec_id)
        if self.mission.project.type == 'php-lumen':
            playbook_path = '/home/admin/scripts/php-lumen-update.yml'
        else:
            playbook_path = '/home/admin/scripts/php_update.yml'
        resource = [{
            "hostname": x.name,
            "username": "******",
            "password": "******"
        } for x in self.mission.project.host_list.all()]
        rbt = ANSRunner(resource)
        rbt.run_playbook(
            playbook_path=playbook_path,
            extra_vars={
                "host": [x.name for x in self.mission.project.host_list.all()],
                "item_name": self.project.name,
                "version": self.version,
                "file_name": self.file_name,
                "file_md5": self.file_md5,
                "download_url": self.download_url,
            })
        result_data = rbt.get_playbook_result()
        logger.info({
            "resource": resource,
            "result": result_data,
            "exec_id": exec_id
        })
        publish_status = True
        if result_data.get('failed'):
            publish_status = False
        if result_data.get('skipped'):
            publish_status = False
        if result_data.get('unreachable'):
            publish_status = False

        if publish_status:
            self.mission.status = Status.objects.get(name='done')
            self.mission.result = 'done'
            self.mission.save()
            Version_history.objects.filter(
                project=self.mission.project,
                status=Status.objects.get(name='current')).update(
                    status=Status.objects.get(name='release'))
            change_version = Version_history.objects.get(
                project=self.mission.project, version=self.mission.version)
            change_version.status = Status.objects.get(name='current')
            change_version.save()
        else:
            logger.error(result_data)
            self.mission.status = Status.objects.get(name='failed')
            self.mission.result = result_data
            self.mission.save()

        # return {"resource":resource,"result":result_data,"exec_id":exec_id}


# {'status': {'10.120.180.3': {'unreachable': 0, 'skipped': 0, 'changed': 1, 'ok': 4, 'failed': 0}, '10.120.180.2': {'unreachable': 0, 'skipped': 0, 'changed': 1, 'ok': 4, 'failed': 0}},
#  'failed': {},
#  'skipped': {},
#  'ok': {'10.120.180.3': {'_ansible_no_log': False, 'stdout': u'ln: failed to create symbolic link \u2018/home/admin/app-run/dc.17shihui.com\u2019: Permission denied\r\ndone\r\n', 'changed': True, 'stderr': u'Shared connection to 10.120.180.3 closed.\r\n', 'rc': 0, 'stdout_lines': [u'ln: failed to create symbolic link \u2018/home/admin/app-run/dc.17shihui.com\u2019: Permission denied', u'done']}, '10.120.180.2': {'_ansible_no_log': False, 'stdout': u'done\r\n', 'changed': True, 'stderr': u'Shared connection to 10.120.180.2 closed.\r\n', 'rc': 0, 'stdout_lines': [u'done']}},
#  'unreachable': {}}
Exemple #12
0
def format_response(result):
    logger.info('result: %s' % result)
    if result:
        return HttpResponse(json.dumps(result))
    else:
        return HttpResponse(json.dumps(get_result(1, 'error request')))
Exemple #13
0
    def get_context_data(self, **kwargs):
        context = super(Generate_vhostTemplate,
                        self).get_context_data(**kwargs)
        file_list = []
        site_id = self.kwargs.get('site_id', None)
        site = Site.objects.get(id=site_id)
        file_list.append(vhost_tmp_file.format(site.name))
        listen_port = ''
        if site.http:
            listen_port = listen_port + '80 '
        if site.https:
            listen_port = listen_port + 'ssl '
        if site.http2:
            listen_port = listen_port + 'http2'

        if site.name.endswith('17shihui.com'):
            cer = '_.17shihui.com.cer'
            key = '_.17shihui.com.key'
        elif site.name.endswith('hiwemeet.com'):
            cer = '_.hiwemeet.com.cer'
            key = '_.hiwemeet.com.key'
        else:
            cer = '_.hiwemeet.com.cer'
            key = '_.hiwemeet.com.key'
        context_all = Site_context.objects.filter(site=site)
        info = {
            "listen_port":
            listen_port,
            "https":
            site.https,
            "domain":
            site.name,
            "cer":
            cer,
            "key":
            key,
            "site_headers":
            [x.extra_parameter for x in site.extra_parameters.all()],
            "trace_status":
            site.trace_status,
            "context_all": [{
                "domain_proxy":
                y.upstream.domain_proxy,
                "app_name":
                y.upstream.name,
                "context":
                y.context,
                "default_proxy_set":
                y.default_proxy_set,
                "proxy_headers":
                [i.extra_parameter for i in y.extra_parametres.all()],
                "proxy_path":
                y.proxy_path
            } for y in context_all]
        }
        vhost_result = generate_conf(vhost_j2,
                                     vhost_tmp_file.format(site.name), info)
        logger.info(vhost_result)
        upstreams = [
            x.upstream for x in context_all if x.upstream.status.name == 'undo'
        ]
        for m in upstreams:
            upstream_info = {
                "upstream": m.name,
                "ip_hash": m.ip_hash,
                "upstream_server": [x.__str__() for x in m.app.apps.all()]
            }
            upstream_result = generate_conf(upstream_j2,
                                            upstream_tmp_file.format(m.name),
                                            upstream_info)
            logger.info(upstream_result)
            file_list.append(upstream_tmp_file.format(m.name))

        new_content = ''
        for n in file_list:
            new_content = new_content + "\r\n####%s####\r\n%s\r\n" % (
                n, get_file_content(n))

        context['active'] = "nginx"
        context['site'] = site.name
        context['site_id'] = site_id
        context['conf'] = new_content
        return context
Exemple #14
0
    def run(self):
        host_list = [x.console_ip.name for x in Machine.objects.all()]
        resource = [{
            "hostname": x,
            "username": "******",
            "ssh_key": "/root/.ssh/id_rsa"
        } for x in host_list]
        rbt = ANSRunner(resource)
        rbt.run_model(host_list=host_list, module_name='setup', module_args="")
        data = rbt.get_model_result()
        result = rbt.handle_cmdb_data(data)
        wrong_list = [
            x.get('console_ip') for x in result if x.get('status') == 3
        ]
        done_list = [x for x in result if x.get('status') == 0]
        failed_list = [
            x.get('console_ip') for x in result if x.get('status') == 1
        ]
        unreachable_list = [
            x.get('console_ip') for x in result if x.get('status') == 2
        ]
        for m in done_list:
            console_ip = m.get('console_ip')
            console_host = Machine.objects.get(console_ip=self._get_ipv4(
                name=console_ip))
            console_host.cpu = m.get('cpu')
            console_host.kernel = m.get('kernel')
            console_host.cpu_number = m.get('cpu_number')
            console_host.vcpu_number = m.get('vcpu_number')
            console_host.cpu_core = m.get('cpu_core')
            console_host.hostname = m.get('hostname')
            console_host.memory = m.get('ram_total')
            console_host.disk = m.get('disk_total')
            console_host.swap = m.get('swap')
            console_host.product = m.get('product')
            console_host.selinux = m.get('selinux')
            console_host.distribution = m.get('distribution')
            console_host.distribution_version = m.get('distribution_version')
            console_host.manufacturer = m.get('manufacturer')
            console_host.serial = m.get('serial')
            console_host.status = m.get('status')
            console_host.idc = 'hzbj'
            console_host.company = 'shihui'
            for n in m.get('ipv4'):
                console_host.ipv4.add(self._get_ipv4(n))
            console_host.save()

        send_msg = ''
        if wrong_list:
            send_msg = send_msg + '\r\n wrong_list:\r\n{0}'.format(
                '\r\n'.join(wrong_list))
        if failed_list:
            send_msg = send_msg + '\r\n failed_list:\r\n{0}'.format(
                '\r\n'.join(failed_list))
        if wrong_list:
            send_msg = send_msg + '\r\n unreachable_list info:\r\n{0}'.format(
                '\r\n'.join(unreachable_list))

        if send_msg:
            logger.info(send_msg)
            Send_message().run(send_msg)