本地节点管理
| 23 | |
| 24 | |
| 25 | class NodeMgr(object): |
| 26 | """本地节点管理""" |
| 27 | |
| 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): |
| 36 | '''用本地node_uuid向server注册,获取server给的node_id。 |
| 37 | 如果node_id和本地存储node_id不一致,则抛出异常。 |
| 38 | ''' |
| 39 | if not tag: |
| 40 | tag = app.settings.OS_TAG_MAP[sys.platform] |
| 41 | node_uuid = app.persist_data.get('NODE_UUID') |
| 42 | if not node_uuid: |
| 43 | node_uuid = self.get_docker_uuid(create_from, tag) |
| 44 | if not node_uuid: |
| 45 | node_uuid = uuid.uuid1().hex |
| 46 | app.persist_data['NODE_UUID'] = node_uuid |
| 47 | |
| 48 | data = { |
| 49 | "uuid": node_uuid, |
| 50 | "tag": tag, |
| 51 | "os_info": app.settings.PLATFORMS[sys.platform], |
| 52 | "org_sid": org_sid # 为空时,表示为公共节点,不为空时,表示指定团队的节点 |
| 53 | } |
| 54 | if create_from: |
| 55 | data["create_from"] = create_from |
| 56 | node_id = server.register(data) |
| 57 | LogPrinter.info('node(%s) registered in server node id:%s', node_uuid, node_id) |
| 58 | app.persist_data['NODE_ID'] = node_id |
| 59 | |
| 60 | |
| 61 | class HostNetMgr(object): |