def delete_config(self): """ Deletes a configuration file """ key = ArakoonClusterConfig.ETCD_CONFIG_KEY.format(self.cluster_id) if EtcdConfiguration.exists(key, raw=True): EtcdConfiguration.delete(key, raw=True)
def delete_config(self): """ Deletes a configuration file """ EtcdConfiguration.delete(ArakoonClusterConfig.ETCD_CONFIG_KEY.format( self.cluster_id), raw=True)
def teardown(): """ Teardown for Arakoon package, will be executed when all started tests in this package have ended Removal actions of possible things left over after the test-run :return: None """ autotest_config = General.get_config() backend_name = autotest_config.get('backend', 'name') backend = GeneralBackend.get_by_name(backend_name) if backend is not None: GeneralAlba.remove_alba_backend(backend.alba_backend) for storagerouter in GeneralStorageRouter.get_masters(): root_client = SSHClient(storagerouter, username='******') if GeneralService.get_service_status(name='ovs-scheduled-tasks', client=root_client) is False: GeneralService.start_service(name='ovs-scheduled-tasks', client=root_client) for location in TEST_CLEANUP: root_client.run('rm -rf {0}'.format(location)) for key in KEY_CLEANUP: if EtcdConfiguration.exists('{0}/{1}'.format(GeneralArakoon.ETCD_CONFIG_ROOT, key), raw = True): EtcdConfiguration.delete('{0}/{1}'.format(GeneralArakoon.ETCD_CONFIG_ROOT, key))
def delete_etcd_config(cluster_name): """ Remove the etcd entry for arakoon cluster_name :param cluster_name: Name of the arakoon cluster :return: None """ etcd_key = GeneralArakoon.ETCD_CONFIG_KEY.format(cluster_name) if EtcdConfiguration.exists(etcd_key, raw=True): EtcdConfiguration.delete(os.path.dirname(etcd_key))
def delete_cluster(cluster_name, ip): """ Deletes a complete cluster :param ip: IP address of the last node of a cluster :param cluster_name: Name of the cluster to remove """ logger.debug('Deleting cluster {0} on {1}'.format(cluster_name, ip)) config = ArakoonClusterConfig(cluster_name) config.load_config() # Cleans up a complete cluster (remove services, directories and configuration files) for node in config.nodes: ArakoonInstaller._destroy_node(config, node) EtcdConfiguration.delete('{0}/{1}'.format(ArakoonInstaller.ETCD_CONFIG_ROOT, cluster_name), raw=True) logger.debug('Deleting cluster {0} on {1} completed'.format(cluster_name, ip))
def _create_unit(fleet_name, template_file): from ovs.extensions.db.etcd.configuration import EtcdConfiguration start = time.time() while time.time() - start < 60: try: unit = FLEET_CLIENT.create_unit(fleet_name, fleet.Unit(from_string=template_file)) return unit except fleet.APIError as ae: if ae.code == 500: FleetCtl._logger.warning('API Error in fleet, most likely caused by etcd, retrying. {0}'.format(ae)) key = '/_coreos.com/fleet/job/{0}/object'.format(fleet_name) if EtcdConfiguration.exists(key): EtcdConfiguration.delete(key) time.sleep(1) else: raise raise RuntimeError('Failed to create ')
def delete_cluster(cluster_name, ip): """ Deletes a complete cluster :param ip: IP address of the last node of a cluster :param cluster_name: Name of the cluster to remove """ logger.debug('Deleting cluster {0} on {1}'.format(cluster_name, ip)) config = ArakoonClusterConfig(cluster_name) config.load_config() # Cleans up a complete cluster (remove services, directories and configuration files) for node in config.nodes: ArakoonInstaller._destroy_node(config, node) EtcdConfiguration.delete('{0}/{1}'.format( ArakoonInstaller.ETCD_CONFIG_ROOT, cluster_name), raw=True) logger.debug('Deleting cluster {0} on {1} completed'.format( cluster_name, ip))
def _create_unit(fleet_name, template_file): from ovs.extensions.db.etcd.configuration import EtcdConfiguration start = time.time() while time.time() - start < 60: try: unit = FLEET_CLIENT.create_unit( fleet_name, fleet.Unit(from_string=template_file)) return unit except fleet.APIError as ae: if ae.code == 500: FleetCtl._logger.warning( 'API Error in fleet, most likely caused by etcd, retrying. {0}' .format(ae)) key = '/_coreos.com/fleet/job/{0}/object'.format( fleet_name) if EtcdConfiguration.exists(key): EtcdConfiguration.delete(key) time.sleep(1) else: raise raise RuntimeError('Failed to create ')
def delete_config(self): """ Deletes a configuration file """ EtcdConfiguration.delete(ArakoonClusterConfig.ETCD_CONFIG_KEY.format(self.cluster_id), raw=True)
def remove_asd(node_guid, asd_id, expected_safety): """ Removes an ASD :param node_guid: Guid of the node to remove a disk from :type node_guid: str :param asd_id: ASD to remove :type asd_id: str :param expected_safety: Expected safety after having removed the disk :type expected_safety: dict :return: True :rtype: bool """ node = AlbaNode(node_guid) AlbaNodeController._logger.debug('Removing ASD {0} at node {1}'.format(asd_id, node.ip)) model_asd = None for disk in node.disks: for asd in disk.asds: if asd.asd_id == asd_id: model_asd = asd break if model_asd is not None: break if model_asd is None: raise RuntimeError('Could not locate asd {0} in the model'.format(asd_id)) alba_backend = model_asd.alba_backend asds = {} try: asds = node.client.get_asds() except (requests.ConnectionError, requests.Timeout): AlbaNodeController._logger.warning('Could not connect to node {0} to validate asd'.format(node.guid)) disk_id = None for _disk_id in asds: if asd_id in asds[_disk_id]: disk_id = _disk_id break AlbaController.remove_units(alba_backend.guid, [asd_id], absorb_exception=True) if disk_id is not None: final_safety = AlbaController.calculate_safety(alba_backend.guid, [asd_id]) safety_lost = final_safety['lost'] safety_crit = final_safety['critical'] if (safety_crit != 0 or safety_lost != 0) and (safety_crit != expected_safety['critical'] or safety_lost != expected_safety['lost']): raise RuntimeError('Cannot remove ASD {0} as the current safety is not as expected ({1} vs {2})'.format(asd_id, final_safety, expected_safety)) result = node.client.delete_asd(disk_id, asd_id) if result['_success'] is False: raise RuntimeError('Error removing ASD: {0}'.format(result['_error'])) else: AlbaNodeController._logger.warning('Alba decommission osd {0} without safety validations (node down)'.format(asd_id)) if EtcdConfiguration.exists(AlbaNodeController.ASD_CONFIG.format(asd_id), raw=True): EtcdConfiguration.delete(AlbaNodeController.ASD_CONFIG_DIR.format(asd_id), raw=True) model_asd.delete() alba_backend.invalidate_dynamics() alba_backend.backend.invalidate_dynamics() if node.storagerouter is not None: DiskController.sync_with_reality(node.storagerouter_guid) return disk_id