Skip to content

Commit 9bc021a

Browse files
authored
Merge pull request #3 from yanghongfei/master
修复自动获取资产分页调用Bug
2 parents 5174743 + b226062 commit 9bc021a

File tree

4 files changed

+56
-40
lines changed

4 files changed

+56
-40
lines changed

libs/aliyun/ecs.py

Lines changed: 38 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,31 @@ def get_response(self):
4444
获取返回值
4545
:return:
4646
"""
47+
48+
response_data = {}
49+
err = None
4750
request = self.set_request()
4851
try:
49-
5052
response = self.client.do_action_with_exception(request)
5153
response_data = json.loads(str(response, encoding="utf8"))
52-
return response_data
5354
except Exception as e:
54-
# print(e)
55-
return e
55+
err = e
56+
return response_data, err
57+
58+
# def get_response(self):
59+
# """
60+
# 获取返回值
61+
# :return:
62+
# """
63+
# request = self.set_request()
64+
# try:
65+
#
66+
# response = self.client.do_action_with_exception(request)
67+
# response_data = json.loads(str(response, encoding="utf8"))
68+
# return response_data
69+
# except Exception as e:
70+
# # print(e)
71+
# return e
5672

5773
# print(response_data)
5874

@@ -61,25 +77,24 @@ def get_server_count(self):
6177
获取机器总数
6278
:return:
6379
"""
64-
65-
try:
66-
response = self.get_response()
67-
count = response['TotalCount']
68-
return count
69-
except TypeError as e:
70-
print(e)
80+
response_data, err = self.get_response()
81+
if err != None:
82+
ins_log.read_log('error', err)
7183
return False
84+
count = response_data['TotalCount']
85+
return count
7286

7387
def get_server_info(self):
7488
"""
7589
获取服务器信息
7690
:return:
7791
"""
78-
response = self.get_response()
79-
if not response:
92+
response_data, err = self.get_response()
93+
if err != None:
94+
ins_log.read_log('error', err)
8095
return False
8196
try:
82-
ret = response['Instances']['Instance']
97+
ret = response_data['Instances']['Instance']
8398
except (KeyError, TypeError):
8499
ins_log.read_log('error', '可能是因为SecretID/SecretKey配置错误,没法拿到配置,请检查下配置')
85100
# print('[Error]: 可能是因为SecretID/SecretKey配置错误,没法拿到配置,请检查下配置')
@@ -90,14 +105,14 @@ def get_server_info(self):
90105
try:
91106
asset_data['hostname'] = i.get('InstanceName')
92107
except(KeyError, TypeError):
93-
asset_data['hostname'] = i.get('InstanceId') #取不到给instance_id
108+
asset_data['hostname'] = i.get('InstanceId') # 取不到给instance_id
94109
asset_data['region'] = i.get('ZoneId')
95110
asset_data['instance_id'] = i.get('InstanceId')
96111
asset_data['instance_type'] = i.get('InstanceType')
97112
asset_data['instance_state'] = i.get('Status')
98113
asset_data['cpu_cores'] = i.get('Cpu')
99114
asset_data['memory'] = M2human(i.get('Memory'))
100-
# 私钥IP
115+
# 内网IP
101116
try:
102117

103118
asset_data['private_ip'] = i['VpcAttributes']['PrivateIpAddress']['IpAddress'][0]
@@ -110,7 +125,7 @@ def get_server_info(self):
110125
except(KeyError, IndexError):
111126
asset_data['public_ip'] = i['EipAddress']['IpAddress']
112127
except Exception:
113-
asset_data['public_ip'] = 'Null'
128+
asset_data['public_ip'] = asset_data['private_ip']
114129

115130
asset_data['os_type'] = i.get('OSType')
116131
asset_data['os_name'] = i.get('OSName')
@@ -128,20 +143,20 @@ def sync_cmdb(self):
128143
if not server_list:
129144
ins_log.read_log('info', 'Not fount server info')
130145
return False
131-
with DBContext('r') as session:
146+
with DBContext('w') as session:
132147
for server in server_list:
133-
ip = server.get('public_ip', server.get('private_ip'))
148+
ip = server.get('public_ip')
134149
instance_id = server.get('instance_id', 'Null')
135150
hostname = server.get('hostname', instance_id)
136-
if hostname == '':
151+
if hostname == '' or not hostname:
137152
hostname = instance_id
138153
region = server.get('region', 'Null')
139154
instance_type = server.get('instance_type', 'Null')
140155
instance_state = server.get('instance_state', 'Null')
141156
cpu = server.get('cpu', 'Null')
142157
cpu_cores = server.get('cpu_cores', 'Null')
143158
memory = server.get('memory', 'Null')
144-
disk = server.get('disk', 'Null') # 阿里云接口里面没有disk信息
159+
disk = server.get('disk', 'Null') # 阿里云接口里面好像没有disk信息
145160
os_type = server.get('os_type', 'Null')
146161
os_name = server.get('os_name', 'Null')
147162
os_kernel = server.get('os_kernel', 'Null')
@@ -213,8 +228,7 @@ def index(self):
213228
self.page_size = count
214229
else:
215230
self.page_size = c + 100
216-
217-
# print('开始同步第{}--第{}台机器'.format(self.page_number, self.page_size))
231+
ins_log.read_log('info', '开始同步第{}--第{}台机器'.format(self.page_number, self.page_size))
218232
self.sync_cmdb()
219233

220234

@@ -254,7 +268,7 @@ def main():
254268
default_admin_user = config.get('default_admin_user')
255269

256270
obj = EcsAPi(access_id, access_key, region, default_admin_user)
257-
obj.sync_cmdb()
271+
obj.index()
258272

259273

260274
if __name__ == '__main__':

libs/aws/ec2.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ def get_server_info(self):
6161
asset_data['instance_type'] = i.get('InstanceType','Null')
6262
asset_data['instance_state'] = i['State'].get('Name', '')
6363
asset_data['private_ip'] = i.get('PrivateIpAddress','Null')
64-
asset_data['public_ip'] = i.get('PublicIpAddress', i.get('PrivateIpAddress','Null'))
64+
asset_data['public_ip'] = i.get('PublicIpAddress', asset_data['private_ip']) #没有公网就给私网IP
6565
print(asset_data)
6666
server_list.append(asset_data)
6767

@@ -80,12 +80,14 @@ def sync_cmdb(self):
8080
ins_log.read_log('info', 'Not fount server info...')
8181
# print('Not Fount Server Info')
8282
return False
83-
with DBContext('r') as session:
83+
with DBContext('w') as session:
8484
for server in server_list:
85-
ip = server.get('public_ip', 'Null')
85+
ip = server.get('public_ip')
86+
87+
#ip = server.get('public_ip', 'Null')
8688
instance_id = server.get('instance_id', 'Null')
8789
hostname = server.get('hostname', instance_id)
88-
if hostname == '':
90+
if hostname == '' or not hostname:
8991
hostname = instance_id
9092
region = server.get('region', 'Null')
9193
instance_type = server.get('instance_type', 'Null')

libs/qcloud/cvm.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# @Time : 2019/5/10 16:37
44
# @Author : Fred Yangxiaofei
55
# @File : ecs.py
6-
# @Role : 说明脚本功能
6+
# @Role : 获取腾讯云主机信息
77

88

99
import time
@@ -60,7 +60,7 @@ def get_result_data(self):
6060
response = requests.get(result_url)
6161
result_data = json.loads(response.text)
6262
if result_data['Response'].get('Error'):
63-
print(result_data['Response'])
63+
ins_log.read_log('error','{}'.format(result_data['Response']))
6464
return False
6565
else:
6666
ret = result_data['Response']
@@ -109,7 +109,7 @@ def get_server_info(self):
109109
try:
110110
public_ip = i['PublicIpAddresses'][0]
111111
except (KeyError, TypeError):
112-
public_ip = 'Null'
112+
public_ip = private_ip #不存在公网就给私网IP
113113
os_type = i.get('OsName')
114114
region = i['Placement'].get('Zone')
115115
asset_data['region'] = region
@@ -139,12 +139,12 @@ def sync_cmdb(self):
139139
print('Not Fount Server Info')
140140
return False
141141

142-
with DBContext('r') as session:
142+
with DBContext('w') as session:
143143
for server in server_list:
144-
ip = server.get('public_ip', server.get('private_ip'))
144+
ip = server.get('public_ip')
145145
instance_id = server.get('instance_id', 'Null')
146146
hostname = server.get('hostname', instance_id)
147-
if hostname == '':
147+
if hostname == '' or not hostname:
148148
hostname = instance_id
149149
region = server.get('region', 'Null')
150150
instance_type = server.get('instance_type', 'Null')
@@ -218,7 +218,7 @@ def index(self):
218218
self.limit = str(count)
219219
else:
220220
self.limit = str(c + 100)
221-
221+
ins_log.read_log('info', '开始同步第{}--{}台机器'.format(self.offset, self.limit))
222222
self.sync_cmdb()
223223

224224

@@ -258,7 +258,7 @@ def main():
258258
default_admin_user = config.get('default_admin_user')
259259

260260
obj = CVMApi(access_id, access_key, region, default_admin_user)
261-
obj.sync_cmdb()
261+
obj.index()
262262

263263

264264

settings.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,17 @@
1515
cookie_secret = '61oETzKXQAGaYdkL5gEmGeJJFuYh7EQnp2X6TP1o/Vo='
1616

1717
#这是写库,
18-
DEFAULT_DB_DBHOST = os.getenv('DEFAULT_DB_DBHOST', '172.16.0.223') #修改
18+
DEFAULT_DB_DBHOST = os.getenv('DEFAULT_DB_DBHOST', '172.16.0.101') #修改
1919
DEFAULT_DB_DBPORT = os.getenv('DEFAULT_DB_DBPORT', '3306') #修改
2020
DEFAULT_DB_DBUSER = os.getenv('DEFAULT_DB_DBUSER', 'root') #修改
21-
DEFAULT_DB_DBPWD = os.getenv('DEFAULT_DB_DBPWD', 'ljXrcyn7chaBU4F') #修改
21+
DEFAULT_DB_DBPWD = os.getenv('DEFAULT_DB_DBPWD', 'shinezone2015') #修改
2222
DEFAULT_DB_DBNAME = os.getenv('DEFAULT_DB_DBNAME', 'codo_cmdb') #默认
2323

2424
#这是从库,读, 一般情况下是一个数据库即可,需要主从读写分离的,请自行建立好服务
25-
READONLY_DB_DBHOST = os.getenv('READONLY_DB_DBHOST', '172.16.0.223') #修改
25+
READONLY_DB_DBHOST = os.getenv('READONLY_DB_DBHOST', '172.16.0.101') #修改
2626
READONLY_DB_DBPORT = os.getenv('READONLY_DB_DBPORT', '3306') #修改
2727
READONLY_DB_DBUSER = os.getenv('READONLY_DB_DBUSER', 'root') #修改
28-
READONLY_DB_DBPWD = os.getenv('READONLY_DB_DBPWD', 'ljXrcyn7chaBU4F') #修改
28+
READONLY_DB_DBPWD = os.getenv('READONLY_DB_DBPWD', 'shinezone2015') #修改
2929
READONLY_DB_DBNAME = os.getenv('READONLY_DB_DBNAME', 'codo_cmdb') #默认
3030

3131
#这是Redis配置信息,默认情况下和codo-admin里面的配置一致

0 commit comments

Comments
 (0)