Add check if node is registered
Avoids reprovisioning existing nodes until they are manually removed from the database.
This commit is contained in:
		| @@ -50,24 +50,38 @@ def dnsmasq_checkin(config, data): | |||||||
|         ) |         ) | ||||||
|         cspec = git.load_cspec_yaml(config) |         cspec = git.load_cspec_yaml(config) | ||||||
|         is_in_bootstrap_map = True if data["macaddr"] in cspec["bootstrap"] else False |         is_in_bootstrap_map = True if data["macaddr"] in cspec["bootstrap"] else False | ||||||
|         if is_in_bootstrap_map: |         try: | ||||||
|             notifications.send_webhook(config, "info", f"New host checkin from MAC {data['macaddr']} as host {cspec['bootstrap'][data['macaddr']]['node']['fqdn']} in cluster {cspec['bootstrap'][data['macaddr']]['node']['cluster']}") |             if is_in_bootstrap_map | ||||||
|             if ( |                 cspec_cluster = cspec["bootstrap"][data["macaddr"]]["node"]["cluster"] | ||||||
|                 cspec["bootstrap"][data["macaddr"]]["bmc"].get("redfish", None) |                 is_registered = True if data["macaddr"] in [x.bmc_macaddr for x in db.get_nodes_in_cluster(config, cspec_cluster)] else False | ||||||
|                 is not None |  | ||||||
|             ): |  | ||||||
|                 if cspec["bootstrap"][data["macaddr"]]["bmc"]["redfish"]: |  | ||||||
|                     is_redfish = True |  | ||||||
|                 else: |  | ||||||
|                     is_redfish = False |  | ||||||
|             else: |             else: | ||||||
|                 is_redfish = redfish.check_redfish(config, data) |                 raise Exception() | ||||||
|  |         except Exception: | ||||||
|  |             is_registered = False | ||||||
|  |  | ||||||
|             logger.info(f"Is device '{data['macaddr']}' Redfish capable? {is_redfish}") |         if not is_in_bootstrap_map: | ||||||
|             if is_redfish: |  | ||||||
|                 redfish.redfish_init(config, cspec, data) |  | ||||||
|         else: |  | ||||||
|             logger.warn(f"Device '{data['macaddr']}' not in bootstrap map; ignoring.") |             logger.warn(f"Device '{data['macaddr']}' not in bootstrap map; ignoring.") | ||||||
|  |             return | ||||||
|  |  | ||||||
|  |         if is_registered: | ||||||
|  |             logger.info(f"Device '{data['macaddr']}' has already been bootstrapped; ignoring.") | ||||||
|  |             return | ||||||
|  |  | ||||||
|  |         notifications.send_webhook(config, "info", f"New host checkin from MAC {data['macaddr']} as host {cspec['bootstrap'][data['macaddr']]['node']['fqdn']} in cluster {cspec['bootstrap'][data['macaddr']]['node']['cluster']}") | ||||||
|  |         if ( | ||||||
|  |             cspec["bootstrap"][data["macaddr"]]["bmc"].get("redfish", None) | ||||||
|  |             is not None | ||||||
|  |         ): | ||||||
|  |             if cspec["bootstrap"][data["macaddr"]]["bmc"]["redfish"]: | ||||||
|  |                 is_redfish = True | ||||||
|  |             else: | ||||||
|  |                 is_redfish = False | ||||||
|  |         else: | ||||||
|  |             is_redfish = redfish.check_redfish(config, data) | ||||||
|  |  | ||||||
|  |         logger.info(f"Is device '{data['macaddr']}' Redfish capable? {is_redfish}") | ||||||
|  |         if is_redfish: | ||||||
|  |             redfish.redfish_init(config, cspec, data) | ||||||
|  |  | ||||||
|         return |         return | ||||||
|  |  | ||||||
| @@ -142,7 +156,7 @@ def host_checkin(config, data): | |||||||
|  |  | ||||||
|             target_state = "completed" |             target_state = "completed" | ||||||
|             for node in all_nodes: |             for node in all_nodes: | ||||||
|                 host.set_boot_state(config, cspec, node, target_state) |                 host.set_boot_state(config, cspec, data, target_state) | ||||||
|  |  | ||||||
|             # Hosts will now power down ready for real activation in production |             # Hosts will now power down ready for real activation in production | ||||||
|             sleep(60) |             sleep(60) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user