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()
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)
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
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)
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))
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)
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))
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
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
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))
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': {}}
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')))
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
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)