def get(self, request, *args, **kwargs): PageSize = request.GET.get('pageSize') or 15 Page = request.GET.get('page') or 1 RegionId = request.GET.get('region') or 'cn-shenzhen' tagkey = request.GET.get('tagkey') tagvalue = request.GET.get('tagvalue') currAccount = request.GET.get('currAccount') or 'wbd' Tags = [] if tagkey and tagvalue: Tags = [{ 'Key': tagkey, 'Value': "" if tagkey == tagvalue else tagvalue }] response = {} cacheEcs = aliClound.setAccount(currAccount).getAliCloundEcsList( RegionId, PageSize, Page, Tags) if cacheEcs: data = CmdbJson().decode(cacheEcs) response['total'] = data.get('TotalCount') response['pageSize'] = PageSize response['ecslist'] = data.get('Instances').get('Instance') return JsonResponse(response, safe=False) else: return JsonResponse({'error': '获取ECS列表信息出错,请检查!'}, status=status.HTTP_400_BAD_REQUEST, safe=False)
def getAliCloundEcsAllStatus(self,RegionIds='cn-shenzhen'): """ 获取ECS统计列表 """ ecsData=cache.get('ecsData') if not ecsData: ecsData={"count": 0, "runCount":0, "expireWill":0} for user in settings.ALI_CLOUND_API_ACCOUNT: ecsList = self.setAccount(user).getAliCloundEcsList(PageSize=100) data=CmdbJson().decode(ecsList) ecsData['count']+=data.get('TotalCount') ecslist=data.get('Instances').get('Instance') for a in ecslist: expiredtime=a.get('ExpiredTime') invalidtime = datetime.strptime(expiredtime, '%Y-%m-%dT%H:%MZ') diff_day = invalidtime - datetime.now() if diff_day.days<=30: ecsData['expireWill']+=1 if a.get('Status')=='Running': ecsData['runCount']+=1 cache.set('ecsData',ecsData) return ecsData
def get(self, request, *args, **kwargs): cacheRigions = cache.get('cacheRigions') if not cacheRigions: cacheRigions = aliClound.getAliCloundRegionsList() cache.set('cacheRigions', cacheRigions) if cacheRigions: data = CmdbJson().decode(cacheRigions) response = [] # if 'Regions' in data: response = data.get('Regions').get('Region') return JsonResponse(response, safe=False) else: return JsonResponse({'error': '获取Rigion信息出错,请检查!'}, status=status.HTTP_400_BAD_REQUEST, safe=False)
def get(self, request, *args, **kwargs): serializer = GetAliCloundEcsMonitorDataListSerializer(data=request.GET) if serializer.is_valid(): validdata = serializer.validated_data InstanceID = validdata.get('InstanceID') StartTime = (validdata.get('StartTime') - timedelta(hours=8)).strftime("%Y-%m-%dT%H:%M:%SZ") EndTime = (validdata.get('EndTime') - timedelta(hours=8)).strftime("%Y-%m-%dT%H:%M:%SZ") Period = validdata.get('Period') RegionId = validdata.get('region') or 'cn-shenzhen' currAccount = validdata.get('currAccount') or 'wbd' EcsData = aliClound.setAccount( currAccount).getAliCloundEcsMonitorDataList( RegionId, InstanceID, StartTime, EndTime, Period) if EcsData: data = CmdbJson().decode(EcsData) return JsonResponse(data, safe=False) else: return JsonResponse({'error': '获取ECS监控数据信息出错,请检查!'}, status=status.HTTP_400_BAD_REQUEST, safe=False) else: return JsonResponse(serializer.errors, status=status.HTTP_400_BAD_REQUEST, safe=False)
def get(self, request, *args, **kwargs): DashboardData = aliClound.getAliCloundDashboardStatus() if DashboardData: data = CmdbJson().decode(DashboardData) return JsonResponse(data, safe=False) else: return JsonResponse({'error': '获取Dashboard信息出错,请检查!'}, status=status.HTTP_400_BAD_REQUEST, safe=False)
def getAliCloundCertificateStatusCount(self): alldata={} for k,v in settings.ALI_CLOUND_API_ACCOUNT.items(): client=AcsClient(v.get('accesskey'),v.get('accesssecret')) req = DescribeCertificateStatusCountRequest() req.set_accept_format('json') try: data=CmdbJson().decode(client.do_action_with_exception(req)) for s,m in data.items(): # logger.info(s) if s in alldata: alldata[s]=alldata[s]+m else: alldata[s]=m except Exception as e: logger.error(e) return False return alldata
def get(self, request, *args, **kwargs): status = request.GET.get('status') or '' CertificateLocation = aliClound.getAliCloundCertificateLocationList() if CertificateLocation: data = CmdbJson().decode(CertificateLocation) return JsonResponse(data, safe=False) else: return JsonResponse({'error': '获取Certificate Location信息出错,请检查!'}, status=status.HTTP_400_BAD_REQUEST, safe=False)
def getAliCloundAccountBalanceAll(self): """ 获取域名列表 """ alldata={} for k,v in settings.ALI_CLOUND_API_ACCOUNT.items(): client=AcsClient(v.get('accesskey'),v.get('accesssecret')) req = QueryAccountBalanceRequest() req.set_accept_format('json') try: data=CmdbJson().decode(client.do_action_with_exception(req)) if 'Data' in data: alldata[v.get('name')]=data.get('Data') except Exception as e: logger.error(e) return False if len(alldata)==0: return False return alldata
def get(self, request, *args, **kwargs): RegionId = request.GET.get('region') or '' currAccount = request.GET.get('currAccount') or 'wbd' TagsList = aliClound.setAccount(currAccount).getAliCloundTagsList( RegionId) if TagsList: data = CmdbJson().decode(TagsList) return JsonResponse(data, safe=False) else: return JsonResponse({'error': '获取Tags信息出错,请检查!'}, status=status.HTTP_400_BAD_REQUEST, safe=False)
def getCrontabLogsViewSet(request, *args, **kwargs): pageSize = request.GET.get('pageSize') or 15 page = request.GET.get('page') or 1 response = {} results = TaskResult.objects.all().order_by('pk') paginator = Paginator(results, pageSize) response['total'] = paginator.count try: mailTask = paginator.page(page) except PageNotAnInteger: mailTask = paginator.page(1) except EmptyPage: mailTask = paginator.page(paginator.num_pages) response['list'] = CmdbJson().encode(serialize("json", mailTask)) return JsonResponse(response, safe=False)
def getAliCloundRdsAllStatus(self,RegionIds='cn-shenzhen'): """ 获取ECS统计列表 """ rdsData=cache.get('rdsData') if not rdsData: rdsData={"count": 0, "runCount":0, "expireWill":0} for user in settings.ALI_CLOUND_API_ACCOUNT: rdsList = self.setAccount(user).getAliCloundRdsList(PageSize=100) data=CmdbJson().decode(rdsList) rdsData['count']+=data.get('PageRecordCount') rdsinstance=data.get('Items').get('DBInstance') for a in rdsinstance: expiredtime=a.get('ExpireTime') invalidtime = datetime.strptime(expiredtime, '%Y-%m-%dT%H:%M:%SZ') diff_day = invalidtime - datetime.now() if diff_day.days<=30: rdsData['expireWill']+=1 if a.get('DBInstanceStatus')=='Running': rdsData['runCount']+=1 cache.set('rdsData',rdsData) return rdsData
def get(self, request, *args, **kwargs): serializer = GetCerificateListSerializer(data=request.GET) if serializer.is_valid(): certicateStatus = request.GET.get('status') or '' PageSize = request.GET.get('pageSize') or 15 Page = request.GET.get('page') or 1 currAccount = request.GET.get('currAccount') or 'wbd' CertificateList = aliClound.setAccount( currAccount).getAliCloundCertificateList( certicateStatus, PageSize, Page) if CertificateList: data = CmdbJson().decode(CertificateList) return JsonResponse(data, safe=False) else: return JsonResponse({'error': '获取Rigion信息出错,请检查!'}, status=status.HTTP_400_BAD_REQUEST, safe=False) else: logger.error(serializer.errors) return JsonResponse(serializer.errors, status=status.HTTP_400_BAD_REQUEST, safe=False)
def getAliCloundDomainList(self): """ 获取域名列表 """ alldata={} for k,v in settings.ALI_CLOUND_API_ACCOUNT.items(): client=AcsClient(v.get('accesskey'),v.get('accesssecret')) req = QueryDomainListRequest() req.set_PageNum(1) req.set_PageSize(100) req.set_accept_format('json') try: data=CmdbJson().decode(client.do_action_with_exception(req)) if 'Data' in alldata: if type(alldata['Data']['Domain']) == list: alldata['Data']['Domain'].extend(data['Data']['Domain']) alldata['TotalItemNum']+=data['TotalItemNum'] else: alldata=data except Exception as e: logger.error(e) return False return alldata