def remove_node(node_guid): """ Removes an ALBA node :param node_guid: Guid of the ALBA node to remove :type node_guid: str :return: None """ node = AlbaNode(node_guid) for disk in node.disks: for osd in disk.osds: AlbaNodeController.remove_asd(node_guid=osd.alba_disk.alba_node_guid, asd_id=osd.osd_id, expected_safety=None) AlbaNodeController.remove_disk(node_guid=disk.alba_node_guid, device_alias=disk.aliases[0]) try: for service_name in node.client.list_maintenance_services(): node.client.remove_maintenance_service(service_name) except (requests.ConnectionError, requests.Timeout): AlbaNodeController._logger.exception('Could not connect to node {0} to retrieve the maintenance services'.format(node.guid)) except InvalidCredentialsError: AlbaNodeController._logger.warning('Failed to retrieve the maintenance services for ALBA node {0}'.format(node.node_id)) if Configuration.dir_exists('/ovs/alba/asdnodes/{0}'.format(node.node_id)): Configuration.delete('/ovs/alba/asdnodes/{0}'.format(node.node_id)) node.delete()
def remove_node(node_guid): """ Removes an ALBA node :param node_guid: Guid of the ALBA node to remove :type node_guid: str :return: None :rtype: NoneType """ node = AlbaNode(node_guid) if node.type == AlbaNode.NODE_TYPES.ASD: for slot_id, slot_info in node.stack.iteritems(): for osd_id, osd_info in slot_info['osds'].iteritems(): if AlbaOSDList.get_by_osd_id(osd_id=osd_id) is not None: AlbaNodeController.remove_osd(node_guid=node.guid, osd_id=osd_id, expected_safety=None) if slot_info['available'] is False: AlbaNodeController.remove_slot(node_guid=node.guid, slot_id=slot_id) name_guid_map = dict( (alba_backend.name, alba_backend.guid) for alba_backend in AlbaBackendList.get_albabackends()) try: # This loop will delete the services AND their configuration from the configuration management node.invalidate_dynamics('maintenance_services') for alba_backend_name, service_info in node.maintenance_services.iteritems( ): for service_name, status in service_info: node.client.remove_maintenance_service( name=service_name, alba_backend_guid=name_guid_map.get( alba_backend_name)) except (requests.ConnectionError, requests.Timeout): AlbaNodeController._logger.exception( 'Could not connect to node {0} to retrieve the maintenance services' .format(node.guid)) except InvalidCredentialsError: AlbaNodeController._logger.warning( 'Failed to retrieve the maintenance services for ALBA node {0}' .format(node.node_id)) node.delete() for alba_backend in AlbaBackendList.get_albabackends(): alba_backend.invalidate_dynamics(['live_status']) alba_backend.backend.invalidate_dynamics(['live_status']) AlbaController.checkup_maintenance_agents.delay()