|
14 | 14 | import psutil |
15 | 15 | import uuid |
16 | 16 | import sys |
| 17 | +import socket |
17 | 18 |
|
18 | 19 | from node import app |
19 | 20 | from platform import platform |
|
24 | 25 | class NodeMgr(object): |
25 | 26 | """本地节点管理""" |
26 | 27 |
|
27 | | - def register_node(self, server, org_sid=None): |
| 28 | + def get_docker_uuid(self, create_from, tag): |
| 29 | + """如果从docker创建,获取到docker的主机名,与标签一起拼接成为节点唯一标识NODE_UUID""" |
| 30 | + if create_from and "docker" == create_from: |
| 31 | + host_name = socket.gethostname() |
| 32 | + return f"{tag}-{host_name}" |
| 33 | + return None |
| 34 | + |
| 35 | + def register_node(self, server, tag=None, org_sid=None, create_from=None): |
28 | 36 | '''用本地node_uuid向server注册,获取server给的node_id。 |
29 | 37 | 如果node_id和本地存储node_id不一致,则抛出异常。 |
30 | | -
|
31 | | - :param server: server的node rpc接口 |
32 | 38 | ''' |
| 39 | + if not tag: |
| 40 | + tag = app.settings.OS_TAG_MAP[sys.platform] |
33 | 41 | node_uuid = app.persist_data.get('NODE_UUID') |
34 | 42 | if not node_uuid: |
35 | | - node_uuid = uuid.uuid1().hex |
| 43 | + node_uuid = self.get_docker_uuid(create_from, tag) |
| 44 | + if not node_uuid: |
| 45 | + node_uuid = uuid.uuid1().hex |
36 | 46 | app.persist_data['NODE_UUID'] = node_uuid |
37 | | - tag = app.settings.OS_TAG_MAP[sys.platform] |
| 47 | + |
38 | 48 | data = { |
39 | 49 | "uuid": node_uuid, |
40 | 50 | "tag": tag, |
41 | 51 | "os_info": app.settings.PLATFORMS[sys.platform], |
42 | 52 | "org_sid": org_sid # 为空时,表示为公共节点,不为空时,表示指定团队的节点 |
43 | 53 | } |
| 54 | + if create_from: |
| 55 | + data["create_from"] = create_from |
44 | 56 | node_id = server.register(data) |
45 | 57 | LogPrinter.info('node(%s) registered in server node id:%s', node_uuid, node_id) |
46 | 58 | app.persist_data['NODE_ID'] = node_id |
|
0 commit comments