def patch(self, request, *args, **kwargs): """ patch asset """ json_str = request.body.decode('utf-8') update = False if not json_str: return api_response(code=201, msg='post args is empty', data={}) request_data_dict = json.loads(json_str) user_id = kwargs.get('user_id') user_query = AssetUser.objects.filter(pk=user_id) if not user_query.exists(): msg = 'asset not exists' return api_response(code=201, msg=msg, data={}) user_obj = user_query[0] name = request_data_dict.get('username', '') pwd = request_data_dict.get('password', '') if name and user_obj.name != name: user_obj.name = name update = True if pwd and user_obj.password != pwd: user_obj.password = pwd update = True if update: user_obj.save() data = dict(username=user_obj.name, password=user_obj.password, is_deleted=user_obj.is_deleted, gmt_created=str(user_obj.gmt_created)[:19], gmt_modified=str(user_obj.gmt_modified)[:19]) return api_response(code=200, data=data)
def post(self, request, *args, **kwargs): """ create asset user """ json_str = request.body.decode('utf-8') if not json_str: return api_response(code=201, msg='post args is empty', data={}) request_data_dict = json.loads(json_str) msg = '' name = request_data_dict.get('hostname', '') pwd = request_data_dict.get('password', '') if not name: msg = 'pls input hostname' elif not pwd: msg = 'pls input password' elif AssetUser.objects.filter(name=name, is_deleted=False).exists(): msg = 'AssetUser name: {} already exist'.format(name) if msg: return api_response(code=201, msg=msg, data={}) data = dict(name=name, password=pwd) new_asset = AssetUser(**data) new_asset.save() return api_response(code=200, data=data)
def patch(self, request, *args, **kwargs): """ Update Asset Cron """ asset_id = kwargs.get('asset_id') cron_id = kwargs.get('cron_id') asset_obj = get_object_or_404(Asset, pk=asset_id) cron_obj = get_object_or_404(Crontab, pk=cron_id) asset_crontab_obj = get_object_or_404(CrontabAsset, asset_id=asset_id, crontab_id=cron_id) json_str = request.body.decode('utf-8') update = False if not json_str: return api_response(code=201, msg='post args is empty', data={}) request_data_dict = json.loads(json_str) status = request_data_dict.get('status', '') if status and asset_crontab_obj.status != status: asset_crontab_obj.status = 3 update = True if update: asset_name = asset_obj.name cron_name = cron_obj.name task_name = "{} update crontab {}".format(asset_name, cron_name) asset_crontab_obj.save() task = update_asset_crontabs_tasks.delay(host_id=asset_id, tasks_name=task_name, cron_id=cron_id, status=status) data = {"task": task.id} else: data = {'msg': 'nothing change'} return api_response(code=200, data=data)
def get(self, request, *args, **kwargs): """ 获取资产用户列表 :return: """ request_data = request.GET name = request_data.get('name', '') create_start = request_data.get('create_start', '') create_end = request_data.get('create_end', '') reverse = int(request_data.get('reverse', 1)) per_page = int(request_data.get('per_page', 10)) page = int(request_data.get('page', 1)) msg = '' query_params = Q(is_deleted=False) if name: query_params &= Q(name__startwith=name) if create_start: query_params &= Q(gmt_created__gte=create_start) if create_end: query_params &= Q(gmt_created__lte=create_end) if reverse: order_by_str = '-gmt_created' else: order_by_str = 'gmt_created' user_objects = AssetUser.objects.filter(query_params).order_by( order_by_str) user_count = user_objects.count() if user_objects.count() else 1 paginator = Paginator(user_objects, per_page if per_page != 0 else user_count) try: user_paginator = paginator.page(page) except PageNotAnInteger: user_paginator = paginator.page(1) msg = 'Page is not Integer' except EmptyPage: user_paginator = paginator.page(paginator.num_pages) msg = 'Page is Empty' user_result_object_list = user_paginator.object_list user_result_restful_list = [] for user_result_object in user_result_object_list: user_result_restful_list.append( dict(id=user_result_object.id, name=user_result_object.name, gmt_created=str(user_result_object.gmt_created)[:19], gmt_modified=str(user_result_object.gmt_modified)[:19], password="******")) data = dict(value=user_result_restful_list, per_page=per_page, page=page, total=paginator.count) if msg: return api_response(code=200, msg=msg, data=data) else: return api_response(code=200, data=data)
def get(self, request, *args, **kwargs): """ Get Asset Detail """ request_data = request.GET cron_asset_id = kwargs.get('cron_asset_id') msg = '' cron_asset_query = CrontabAsset.objects.filter(id=cron_asset_id) if not cron_asset_query.exists(): msg = 'crontab Asset not exists' return api_response(code=201, msg=msg, data={}) cron_asset_obj = cron_asset_query[0] asset_id = cron_asset_obj.asset_id crontab_id = cron_asset_obj.crontab_id asset_obj = Asset.objects.get(pk=asset_id) user_id = asset_obj.user_id user_obj = AssetUser.objects.get(pk=user_id) user_info = dict(username=user_obj.name) asset_info = dict(id=asset_obj.id, hostname=asset_obj.name, ip=asset_obj.ip, port=asset_obj.port, user_info=user_info, is_deleted=asset_obj.is_deleted) crontab_obj = Crontab.objects.get(pk=crontab_id) crontab_info = dict(id=crontab_obj.id, name=crontab_obj.name, job=crontab_obj.job, minute=crontab_obj.minute, hour=crontab_obj.hour, day=crontab_obj.day_of_week, month=crontab_obj.day_of_month, month_of_year=crontab_obj.month_of_year, gmt_created=str(crontab_obj.gmt_created)[:19], gmt_modified=str(crontab_obj.gmt_modified)[:19]) data = dict(id=cron_asset_obj.id, asset_id=cron_asset_obj.asset_id, crontab_id=cron_asset_obj.crontab_id, is_deleted=cron_asset_obj.is_deleted, asset_info=asset_info, crontab_info=crontab_info, gmt_created=str(cron_asset_obj.gmt_created)[:19], gmt_modified=str(cron_asset_obj.gmt_modified)[:19]) return api_response(code=200, data=data)
def post(self, request, *args, **kwargs): """ Create Cron Asset """ data = "ok" return api_response(code=200, data=data)
def patch(self, request, *args, **kwargs): """ patch asset """ json_str = request.body.decode('utf-8') update = False if not json_str: return api_response(code=201, msg='patch args is empty', data={}) request_data_dict = json.loads(json_str) cron_asset_id = kwargs.get('cron_asset_id') cron_asset_query = CrontabAsset.objects.filter(pk=cron_asset_id) if not cron_asset_query.exists(): msg = 'cron asset not exists' return api_response(code=201, msg=msg, data={}) cron_asset_obj = cron_asset_query[0] asset_id = request_data_dict.get('asset_id', '') crontab_id = request_data_dict.get('crontab_id', '') if asset_id and cron_asset_obj.asset_id != asset_id: cron_asset_obj.asset_id = asset_id update = True if crontab_id and cron_asset_obj.crontab_id != crontab_id: cron_asset_obj.crontab_id = crontab_id update = True if CrontabAsset.objects.filter(asset_id=asset_id or cron_asset_obj.asset_id, crontab_id=crontab_id or cron_asset_obj.crontab_id, is_deleted=False).exists(): msg = 'The relation is already exist' return api_response(code=201, msg=msg, data={}) if update: cron_asset_obj.save() data = dict(id=cron_asset_obj.id, asset_id=cron_asset_obj.asset_id, crontab_id=cron_asset_obj.crontab_id, is_deleted=cron_asset_obj.is_deleted, gmt_created=str(cron_asset_obj.gmt_created)[:19], gmt_modified=str(cron_asset_obj.gmt_modified)[:19]) return api_response(code=200, data=data)
def patch(self, request, *args, **kwargs): """ patch asset """ json_str = request.body.decode('utf-8') update = False if not json_str: return api_response(code=201, msg='post args is empty', data={}) request_data_dict = json.loads(json_str) asset_id = kwargs.get('asset_id') asset_obj = get_object_or_404(Asset, pk=asset_id) name = request_data_dict.get('hostname', '') ip = request_data_dict.get('ip', '') user_id = request_data_dict.get('user_id', '') port = request_data_dict.get('port', '') is_deleted = request_data_dict.get('is_deleted', False) if name and asset_obj.name != name: asset_obj.name = name update = True if ip and asset_obj.ip != ip: asset_obj.ip = ip update = True if user_id and asset_obj.user_id != user_id: asset_obj.user_id = user_id update = True if port and asset_obj.port != port: asset_obj.port = port update = True if asset_obj.is_deleted != is_deleted: asset_obj.is_deleted = is_deleted update = True if update: asset_obj.save() data = dict(hostname=asset_obj.name, ip=asset_obj.ip, user_id=asset_obj.user_id, port=asset_obj.port, is_deleted=asset_obj.is_deleted) return api_response(code=200, data=data)
def post(self, request, *args, **kwargs): """ create asset """ json_str = request.body.decode('utf-8') if not json_str: return api_response(code=201, msg='post args is empty', data={}) request_data_dict = json.loads(json_str) msg = '' name = request_data_dict.get('crontab_name', '') job = request_data_dict.get('job', '') minute = request_data_dict.get('minute', '*') hour = request_data_dict.get('hour', '*') day = request_data_dict.get('day', '*') month = request_data_dict.get('month', '*') week = request_data_dict.get('week', '*') if not name: msg = 'pls input hostname' elif not job: msg = 'pls input job' elif Crontab.objects.filter(name=name, is_deleted=False).exists(): msg = 'Crontab Name {} already exist'.format(name) if msg: return api_response(code=201, msg=msg, data={}) data = dict(name=name, job=job, minute=minute, hour=hour, day_of_month=day, month_of_year=month, day_of_week=week) new_cron = Crontab(**data) new_cron.save() # new_cron.ansible # ansible_id = new_cron.ansible_id # data['ansible_id'] = ansible_id return api_response(code=200, data=data)
def get(self, request, *args, **kwargs): """ Get Asset Detail """ request_data = request.GET user_id = kwargs.get('user_id') msg = '' user_query = AssetUser.objects.filter(pk=user_id) if not user_query.exists(): msg = 'asset not exists' return api_response(code=201, msg=msg, data={}) user_obj = user_query[0] data = dict(id=user_obj.id, username=user_obj.name, is_deleted=user_obj.is_deleted, gmt_created=str(user_obj.gmt_created)[:19], gmt_modified=str(user_obj.gmt_modified)[:19]) return api_response(code=200, data=data)
def post(self, request, *args, **kwargs): """ Update Asset Cron """ asset_id = kwargs.get('asset_id') asset_obj = get_object_or_404(Asset, pk=asset_id) asset_name = asset_obj.name task_name = "{} update crontabs".format(asset_name) task = update_asset_crontabs_tasks.delay(host_id=asset_id, tasks_name=task_name) data = {"task": task.id} return api_response(code=200, data=data)
def post(self, request, *args, **kwargs): """ create asset """ json_str = request.body.decode('utf-8') if not json_str: return api_response(code=201, msg='post args is empty', data={}) request_data_dict = json.loads(json_str) msg = '' name = request_data_dict.get('hostname', '') ip = request_data_dict.get('ip', '') port = request_data_dict.get('port', '') user_id = int(request_data_dict.get('user_id', '')) if not name: msg = 'pls input hostname' elif not ip: msg = 'pls input ip' elif not port: msg = 'pls input port' elif not user_id: msg = 'pls input user' elif not AssetUser.objects.filter(pk=user_id, is_deleted=False).exists(): msg = 'the asset user dont exist' elif Asset.objects.filter(ip=ip, port=port, is_deleted=False).exists(): msg = 'Asset ip: {} Port: {} already exist'.format(ip, port) if msg: return api_response(code=201, msg=msg, data={}) data = dict(name=name, ip=ip, port=port, user_id=user_id) new_asset = Asset(**data) new_asset.save() data['id'] = new_asset.id return api_response(code=200, data=data)
def post(self, request, *args, **kwargs): """ Create Cron Asset """ json_str = request.body.decode('utf-8') if not json_str: return api_response(code=201, msg='post args is empty', data={}) request_data_dict = json.loads(json_str) msg = '' asset_id = request_data_dict.get('asset_id', '') crontab_id = request_data_dict.get('crontab_id', '') if not asset_id: msg = 'pls input asset id' elif not crontab_id: msg = 'pls input crontab id' elif not Asset.objects.filter(pk=asset_id, is_deleted=False).exists(): msg = 'The id can`t match Asset' elif not Crontab.objects.filter(pk=crontab_id, is_deleted=False).exists(): msg = 'The id can`t match Crontab' elif CrontabAsset.objects.filter(asset_id=asset_id, crontab_id=crontab_id, is_deleted=False).exists(): msg = 'CrontabAsset Asset_id {}, Crontab_id {} already exist'.format( asset_id, crontab_id) if msg: return api_response(code=201, msg=msg, data={}) data = dict(asset_id=asset_id, crontab_id=crontab_id) new_cron_asset = CrontabAsset(**data) new_cron_asset.save() return api_response(code=200, data=data)
def get(self, request, *args, **kwargs): """ Get Asset Detail """ request_data = request.GET cron_id = kwargs.get('cron_id') msg = '' cron_query = Crontab.objects.filter(id=cron_id) if not cron_query.exists(): msg = 'crontab not exists' return api_response(code=201, msg=msg, data={}) cron_obj = cron_query[0] # ansible_id = cron_obj.ansible_id # # if ansible_id == 0: # ansible_info = {} # else: # ansible_obj = Adhoc.objects.get(pk=ansible_id) # ansible_info = dict(tasks=ansible_obj.tasks, pattern=ansible_obj.pattern, hosts=ansible_obj.hosts) data = dict(id=cron_obj.id, crontab_name=cron_obj.name, job=cron_obj.job, minute=cron_obj.minute, hour=cron_obj.hour, day=cron_obj.day_of_month, month=cron_obj.month_of_year, week=cron_obj.day_of_week, is_deleted=cron_obj.is_deleted, gmt_created=str(cron_obj.gmt_created)[:19], gmt_modified=str(cron_obj.gmt_modified)[:19]) return api_response(code=200, data=data)
def get(self, request, *args, **kwargs): """ Get Asset Detail """ request_data = request.GET asset_id = kwargs.get('asset_id') msg = '' asset_obj = get_object_or_404(Asset, pk=asset_id) user_id = asset_obj.user_id user_obj = AssetUser.objects.get(pk=user_id) user_info = dict(username=user_obj.name) data = dict(id=asset_obj.id, hostname=asset_obj.name, ip=asset_obj.ip, port=asset_obj.port, user_info=user_info, is_deleted=asset_obj.is_deleted, gmt_created=str(asset_obj.gmt_created)[:19], gmt_modified=str(asset_obj.gmt_modified)[:19]) return api_response(code=200, data=data)
def get(self, request, *args, **kwargs): request_data = request.GET msg = '' data = "ok" return api_response(code=200, msg=msg, data=data)
def get(self, request, *args, **kwargs): """ 获取资产列表 :return: """ request_data = request.GET name = request_data.get('hostname', '') ip = request_data.get('ip', '') user_id = request_data.get('user_id', '') port = request_data.get('port', '') create_start = request_data.get('create_start', '') create_end = request_data.get('create_end', '') reverse = int(request_data.get('reverse', 1)) per_page = int(request_data.get('per_page', 10)) page = int(request_data.get('page', 1)) msg = '' query_params = Q(is_deleted=False) if name: query_params &= Q(name__startwith=name) if ip: query_params &= Q(ip=ip) if user_id: query_params &= Q(user_id=user_id) if port: query_params &= Q(port=port) if create_start: query_params &= Q(gmt_created__gte=create_start) if create_end: query_params &= Q(gmt_created__lte=create_end) if reverse: order_by_str = '-gmt_created' else: order_by_str = 'gmt_created' asset_objects = Asset.objects.filter(query_params).order_by( order_by_str) asset_count = asset_objects.count() if asset_objects.count() else 1 paginator = Paginator(asset_objects, per_page if per_page != 0 else asset_count) try: asset_paginator = paginator.page(page) except PageNotAnInteger: asset_paginator = paginator.page(1) msg = 'Page is not Integer' except EmptyPage: asset_paginator = paginator.page(paginator.num_pages) msg = 'Page is Empty' asset_result_object_list = asset_paginator.object_list asset_result_restful_list = [] for asset_result_object in asset_result_object_list: user_id = asset_result_object.user_id user_obj = AssetUser.objects.get(id=user_id) user_info = dict(user_name=user_obj.name, user_id=user_obj.id) asset_result_restful_list.append( dict( id=asset_result_object.id, name=asset_result_object.name, ip=asset_result_object.ip, port=asset_result_object.port, user_info=user_info, gmt_created=str(asset_result_object.gmt_created)[:19], gmt_modified=str(asset_result_object.gmt_modified)[:19], )) data = dict(value=asset_result_restful_list, per_page=per_page, page=page, total=paginator.count) if msg: return api_response(code=200, msg=msg, data=data) else: return api_response(code=200, data=data)
def get(self, request, *args, **kwargs): """ Get Asset crontabs """ request_data = request.GET asset_id = kwargs.get('asset_id') reverse = int(request_data.get('reverse', 1)) per_page = int(request_data.get('per_page', 10)) page = int(request_data.get('page', 1)) msg = '' crontab_asset_objs = CrontabAsset.objects.filter(asset_id=asset_id, is_deleted=False) crontab_ids = [i.crontab_id for i in crontab_asset_objs] query_params = Q(is_deleted=False) query_params &= Q(id__in=crontab_ids) if reverse: order_by_str = '-gmt_created' else: order_by_str = 'gmt_created' crontab_objs = Crontab.objects.filter(query_params).order_by( order_by_str) paginator = Paginator(crontab_objs, per_page) try: cron_paginator = paginator.page(page) except PageNotAnInteger: cron_paginator = paginator.page(1) msg = 'Page is not Integer' except EmptyPage: cron_paginator = paginator.page(paginator.num_pages) msg = 'Page is Empty' cron_result_object_list = cron_paginator.object_list cron_result_restful_list = [] for cron_result_object in cron_result_object_list: crontab_asset_obj = crontab_asset_objs.get( crontab_id=cron_result_object.id) cron_result_restful_list.append( dict( id=cron_result_object.id, name=cron_result_object.name, job=cron_result_object.job, time="{} {} {} {} {}".format( cron_result_object.minute, cron_result_object.hour, cron_result_object.day_of_month, cron_result_object.month_of_year, cron_result_object.day_of_week), asset_id=asset_id, status=crontab_asset_obj.status, gmt_created=str(cron_result_object.gmt_created)[:19], gmt_modified=str(cron_result_object.gmt_modified)[:19], )) data = dict(value=cron_result_restful_list, per_page=per_page, page=page, total=paginator.count) if msg: return api_response(code=200, msg=msg, data=data) else: return api_response(code=200, data=data)
def get(self, request, *args, **kwargs): request_data = request.GET is_deleted = request_data.get('is_deleted', '') # 1 or 0 asset_id = request_data.get('asset_id', '') crontab_id = request_data.get('crontab_id', '') create_start = request_data.get('create_start', '') create_end = request_data.get('create_end', '') reverse = int(request_data.get('reverse', 1)) per_page = int(request_data.get('per_page', 10)) page = int(request_data.get('page', 1)) msg = '' query_params = Q() if is_deleted == 1: query_params &= Q(is_deleted=True) elif is_deleted == 0: query_params &= Q(is_deleted=False) if asset_id: query_params &= Q(asset_id=asset_id) if crontab_id: query_params &= Q(crontab_id=crontab_id) if create_start: query_params &= Q(gmt_created__gte=create_start) if create_end: query_params &= Q(gmt_created__lte=create_end) if reverse: order_by_str = '-gmt_created' else: order_by_str = 'gmt_created' cronasset_objects = CrontabAsset.objects.filter(query_params).order_by( order_by_str) paginator = Paginator(cronasset_objects, per_page) try: cronasset_paginator = paginator.page(page) except PageNotAnInteger: cronasset_paginator = paginator.page(1) msg = 'Page is not Integer' except EmptyPage: cronasset_paginator = paginator.page(paginator.num_pages) msg = 'Page is Empty' cronasset_result_object_list = cronasset_paginator.object_list cronasset_result_restful_list = [] for cronasset_result_object in cronasset_result_object_list: cronasset_result_restful_list.append( dict(id=cronasset_result_object.id, asset_id=cronasset_result_object.asset_id, crontab_id=cronasset_result_object.crontab_id, is_deleted=cronasset_result_object.is_deleted, gmt_created=str(cronasset_result_object.gmt_created)[:19], gmt_modified=str( cronasset_result_object.gmt_modified)[:19])) data = dict(value=cronasset_result_restful_list, per_page=per_page, page=page, total=paginator.count) if msg: return api_response(code=200, msg=msg, data=data) else: return api_response(code=200, data=data)
def patch(self, request, *args, **kwargs): """ patch asset """ json_str = request.body.decode('utf-8') update = False if not json_str: return api_response(code=201, msg='patch args is empty', data={}) request_data_dict = json.loads(json_str) cron_id = kwargs.get('cron_id') cron_query = Crontab.objects.filter(pk=cron_id) if not cron_query.exists(): msg = 'asset not exists' return api_response(code=201, msg=msg, data={}) cron_obj = cron_query[0] name = request_data_dict.get('crontab_name', '') job = request_data_dict.get('job', '') minute = request_data_dict.get('minute', '') hour = request_data_dict.get('hour', '*') day = request_data_dict.get('day', '*') month = request_data_dict.get('month', '*') week = request_data_dict.get('week', '*') if name and cron_obj.name != name: cron_obj.name = name update = True if job and cron_obj.job != job: cron_obj.ip = job update = True if minute and cron_obj.minute != minute: cron_obj.minute = minute update = True if hour and cron_obj.hour != hour: cron_obj.hour = hour update = True if day and cron_obj.day_of_month != day: cron_obj.day_of_month = day update = True if month and cron_obj.month_of_year != month: cron_obj.month_of_year = month update = True if week and cron_obj.day_of_week != week: cron_obj.day_of_week = week update = True if update: cron_obj.save() data = dict(id=cron_obj.id, crontab_name=cron_obj.name, job=cron_obj.job, minute=cron_obj.minute, hour=cron_obj.hour, day=cron_obj.day_of_month, month=cron_obj.month_of_year, week=cron_obj.day_of_week, is_deleted=cron_obj.is_deleted, gmt_created=str(cron_obj.gmt_created)[:19], gmt_modified=str(cron_obj.gmt_modified)[:19]) return api_response(code=200, data=data)
def get(self, request, *args, **kwargs): """ get assets :return: """ request_data = request.GET name = request_data.get('crontab_name', '') job = request_data.get('job', '') create_start = request_data.get('create_start', '') create_end = request_data.get('create_end', '') reverse = int(request_data.get('reverse', 1)) per_page = int(request_data.get('per_page', 10)) page = int(request_data.get('page', 1)) msg = '' query_params = Q(is_deleted=False) if name: query_params &= Q(name__startwith=name) if job: query_params &= Q(ip=job) if create_start: query_params &= Q(gmt_created__gte=create_start) if create_end: query_params &= Q(gmt_created__lte=create_end) if reverse: order_by_str = '-gmt_created' else: order_by_str = 'gmt_created' ansible_objects = Crontab.objects.filter(query_params).order_by( order_by_str) paginator = Paginator(ansible_objects, per_page) try: cron_paginator = paginator.page(page) except PageNotAnInteger: cron_paginator = paginator.page(1) msg = 'Page is not Integer' except EmptyPage: cron_paginator = paginator.page(paginator.num_pages) msg = 'Page is Empty' cron_result_object_list = cron_paginator.object_list cron_result_restful_list = [] for cron_result_object in cron_result_object_list: cron_result_restful_list.append( dict( id=cron_result_object.id, name=cron_result_object.name, job=cron_result_object.job, minute=cron_result_object.minute, hour=cron_result_object.hour, day=cron_result_object.day_of_week, month=cron_result_object.day_of_month, month_of_year=cron_result_object.month_of_year, gmt_created=str(cron_result_object.gmt_created)[:19], gmt_modified=str(cron_result_object.gmt_modified)[:19], )) data = dict(value=cron_result_restful_list, per_page=per_page, page=page, total=paginator.count) if msg: return api_response(code=200, msg=msg, data=data) else: return api_response(code=200, data=data)
def get(self, request, *args, **kwargs): request_data = request.GET msg = '' data = [100, 40, 78, 10, 30, 48] return api_response(code=200, msg=msg, data=data)