package com.zteits.sys.biz.aliyunecs; import com.aliyun.openservices.shade.com.alibaba.fastjson.JSONObject; import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.ecs.model.v20140526.DescribeInstancesRequest; import com.aliyuncs.ecs.model.v20140526.DescribeInstancesResponse; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.exceptions.ServerException; import com.aliyuncs.profile.DefaultProfile; import com.xiaoleilu.hutool.date.DateUtil; import com.zteits.clouds.api.apibase.bean.BizResult; import com.zteits.clouds.api.apibase.bean.PageBean; import com.zteits.clouds.api.dto.aliyunecs.dto.DescribeInstancesDTO; import com.zteits.clouds.api.dto.aliyunecs.param.QueryDescribeInstancesReq; import com.zteits.clouds.api.service.aliyunecs.AliyunEcsDescribeInstancesService; import com.zteits.sys.dao.AliyunEcsConfigDao; import com.zteits.sys.domain.AliyunEcsConfig; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import java.util.ArrayList; import java.util.List; /** * Copyright: Copyright (c) 2017 zteits * * @ClassName: AliyunEcsDescribeInstancesServiceImpl.java * @Description: * @version: v1.0.0 * @author: wangfs * @date: 2019-11-27 10:25 * Modification History: * Date Author Version Description * ---------------------------------------------------------* * 2019-11-27 wangfs v1.0.0 创建 */ @Service("com.zteits.sys.biz.aliyunecs.AliyunEcsDescribeInstancesServiceImpl") public class AliyunEcsDescribeInstancesServiceImpl implements AliyunEcsDescribeInstancesService { private static final Logger logger = LoggerFactory.getLogger(AliyunEcsDescribeInstancesServiceImpl.class); @Autowired private AliyunEcsConfigDao aliyunEcsConfigDao; /** * 阿里云ESC服务器基本信息查询 * * @param * @return * @Auther: wangfs */ @Override public BizResult> queryDescribeInstances(QueryDescribeInstancesReq req) { logger.info("begin阿里云ESC服务器基本信息查询,入参={}", JSONObject.toJSON(req)); PageBean pageBean = new PageBean(); List list = new ArrayList<>(); /**1.查询阿里云秘钥配置*/ AliyunEcsConfig aliyunEcsConfig = aliyunEcsConfigDao.queryAliyunEcsConfigByOrgId(req.getOrgId()); logger.info("从阿里云服务器配置表中获取阿里云秘钥配置信息={}",JSONObject.toJSON(aliyunEcsConfig)); DefaultProfile profile = null; if(null != aliyunEcsConfig && !StringUtils.isEmpty(aliyunEcsConfig.getAccessKeyId())){ profile = DefaultProfile.getProfile(aliyunEcsConfig.getRegionId(), aliyunEcsConfig.getAccessKeyId(), aliyunEcsConfig.getSecret()); }else{ profile = DefaultProfile.getProfile("cn-zhangjiakou", "LTAIPilBAoqEmuTN", "m4tlVIqQTMJ7NjqRkSS1kYiSP2FNOV"); } IAcsClient client = new DefaultAcsClient(profile); DescribeInstancesRequest request = new DescribeInstancesRequest(); request.setPageNumber(req.getBaseRequest().getPageNum()); request.setPageSize(req.getBaseRequest().getPageSize()); // request.setDryRun(false); try { DescribeInstancesResponse response = client.getAcsResponse(request); if (null != response) { pageBean.setPageNum(req.getBaseRequest().getPageNum()); pageBean.setPageSize(req.getBaseRequest().getPageSize()); //设置总条数 pageBean.setPageTotals(response.getTotalCount()); List instancesList = response.getInstances(); if (!CollectionUtils.isEmpty(instancesList)) { for (DescribeInstancesResponse.Instance instance : instancesList) { if (null == instance) { continue; } DescribeInstancesDTO describeInstancesDTO = new DescribeInstancesDTO(); describeInstancesDTO.setRequestId(response.getRequestId()); describeInstancesDTO.setInstanceId(instance.getInstanceId()); describeInstancesDTO.setInstanceName(instance.getInstanceName()); describeInstancesDTO.setoSName(instance.getOSName()); describeInstancesDTO.setRegionId(instance.getRegionId()); if (null != instance.getEipAddress()) { describeInstancesDTO.setPublicIpAddress(instance.getEipAddress().getIpAddress()); } else { describeInstancesDTO.setPublicIpAddress(""); } if ("vpc".equals(instance.getInstanceNetworkType())) { describeInstancesDTO.setInstanceNetworkType("VPC专有网络"); } else { describeInstancesDTO.setInstanceNetworkType(instance.getInstanceNetworkType() + "网络"); } //运行状态 if ("Running".equals(instance.getStatus())) { describeInstancesDTO.setStatus("运行中"); } else if ("Starting".equals(instance.getStatus())) { describeInstancesDTO.setStatus("启动中"); } else if ("Stopping".equals(instance.getStatus())) { describeInstancesDTO.setStatus("停止中"); } else { describeInstancesDTO.setStatus("已停止"); } describeInstancesDTO.setCpuCoreCount(instance.getCpu()); describeInstancesDTO.setMemory(instance.getMemory()); if ("PostPaid".equals(instance.getInstanceChargeType())) { describeInstancesDTO.setInstanceChargeType("按量付费"); } else { describeInstancesDTO.setInstanceChargeType("包年包月"); } if ("PayByBandwidth".equals(instance.getInternetChargeType())) { describeInstancesDTO.setInternetChargeType("按固定带宽计费"); } else { describeInstancesDTO.setInternetChargeType("按流量计费"); } describeInstancesDTO.setCreationTime(!StringUtils.isEmpty(instance.getCreationTime()) ? instance.getCreationTime().replaceAll("T"," ").replaceAll("Z"," ") : null); describeInstancesDTO.setExpiredTime(!StringUtils.isEmpty(instance.getExpiredTime()) ? instance.getExpiredTime().replaceAll("T"," ").replaceAll("Z"," ") : null); list.add(describeInstancesDTO); } } } } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { System.out.println("ErrCode:" + e.getErrCode()); System.out.println("ErrMsg:" + e.getErrMsg()); System.out.println("RequestId:" + e.getRequestId()); e.printStackTrace(); } pageBean.setDataList(list); logger.info("end阿里云ESC服务器基本信息查询。。。"); return new BizResult>(pageBean); } }