예제 #1
0
 def test_conf_store_compare(self):
     """Test comparing given two index and return new/deleted/updated keys."""
     load_config('conf1', 'json:///tmp/file1.json')
     load_config('conf2', 'json:///tmp/file2.json')
     Conf.delete('conf2', 'bridge>name')
     Conf.set('conf2', 'bridge>protocol', 'http')
     Conf.set('conf2', 'bridge>port', '51288')
     expected_new_keys = ['bridge>protocol']
     expected_updated_keys = ['bridge>port']
     actual_new_keys, actual_deleted_keys, actual_updated_keys = Conf.compare(
         'conf1', 'conf2')
     self.assertEqual(actual_new_keys, expected_new_keys)
     self.assertEqual(actual_updated_keys, expected_updated_keys)
     self.assertTrue(True if 'bridge>name' in
                     actual_deleted_keys else False)
     self.assertNotEqual(actual_new_keys, None)
     with self.assertRaises(ConfError):
         actual_new_keys, actual_deleted_keys, actual_updated_keys = Conf.compare(
             'conf1', 'conf4')
예제 #2
0
 def _update_conf(_conf_idx: str, _tmp_idx: str):
     """
     Description:
     Updates conf by updating new keys/values post upgrade.
     1. Fetch new keys using conf compare
     2. Update gconf by adding new keys.
     3. Update gconf by updating changed values for cortx>common
     """
     new_keys, _, changed_keys = Conf.compare(_conf_idx, _tmp_idx)
     for key in new_keys:
         value= Conf.get(_tmp_idx, key)
         Conf.set(_conf_idx, key, value)
     for key in changed_keys:
         if key.startswith('cortx>common'):
             value= Conf.get(_tmp_idx, key)
             Conf.set(_conf_idx, key, value)
     Conf.save(_conf_idx)
예제 #3
0
 def _prepare_diff(idx1: str, idx2: str, diff_idx: str):
     """
     Description:
     Compare two conf index and prepare changeset diff config.
     1. Fetch new/deleted/updated keys by comparing idx1 and idx2
     2. Prepare changeset config on diff_index
     Paramaters:
     [idx1] conf index 1
     [idx2] conf index 2
     [diff_idx] changeset diff index
     """
     new_keys, deleted_keys, changed_keys = Conf.compare(idx1, idx2)
     Conf.load(diff_idx, const.CORTX_CHANGESET_URL)
     for key in new_keys:
         Conf.set(diff_idx, f'new>{key}', Conf.get(idx2, key))
     for key in deleted_keys:
         Conf.set(diff_idx, f'deleted>{key}', Conf.get(idx1, key))
     for key in changed_keys:
         value = f"{Conf.get(idx1, key)}|{Conf.get(idx2, key)}"
         Conf.set(diff_idx, f'changed>{key}', value)
     Conf.save(diff_idx)
예제 #4
0
 def compare(args):
     """Compares two conf urls and return 3 lists: new_keys, deleted_keys, updated_keys."""
     index1 = ConfCli._index
     index2 = 'index2'
     ConfCli.load(args.second_url, index2)
     return Conf.compare(index1, index2)