def test_values_tab_apply_action_exception(self): config = copy.deepcopy(self.database_configurations.first()) # setup the configuration parameter manager config_param_mgr = config_param_manager.ConfigParamManager( config.id) config_param_mgr.configuration = config config_param_mgr.original_configuration_values = \ dict.copy(config.values) config_param_manager.get(IsA(http.HttpRequest), config.id) \ .MultipleTimes().AndReturn(config_param_mgr) api.trove.configuration_update( IsA(http.HttpRequest), config.id, config_param_mgr.to_json())\ .AndRaise(self.exceptions.trove) self.mox.ReplayAll() details_url = self._get_url_with_arg(DETAIL_URL, config.id) url = details_url + '?tab=configuration_details__value' self._test_create_altered_config_params(config, url) # apply changes res = self.client.post(url, {'action': u"values__apply_changes"}) self.assertRedirectsNoFollow(res, url) self.assertEqual(res.status_code, 302)
def test_instances_tab_exception(self): try: config = self.database_configurations.first() # setup the configuration parameter manager config_param_mgr = config_param_manager.ConfigParamManager( config.id) config_param_mgr.configuration = config config_param_mgr.original_configuration_values = \ dict.copy(config.values) config_param_manager.get(IsA(http.HttpRequest), config.id) \ .MultipleTimes().AndReturn(config_param_mgr) api.trove.configuration_instances(IsA(http.HttpRequest), config.id) \ .AndRaise(self.exceptions.trove) self.mox.ReplayAll() details_url = self._get_url_with_arg(DETAIL_URL, config.id) url = details_url + '?tab=configuration_details__instance' res = self.client.get(url) table_data = res.context['instances_table'].data self.assertNotEqual(len(self.configuration_instances.list()), len(table_data)) self.assertTemplateUsed( res, 'project/database_configurations/details.html') finally: config_param_manager.delete(config.id)
def test_add_parameter_invalid_value(self): try: config = self.database_configurations.first() # setup the configuration parameter manager config_param_mgr = config_param_manager.ConfigParamManager( config.id) config_param_mgr.configuration = config config_param_mgr.original_configuration_values = \ dict.copy(config.values) config_param_manager.get(IsA(http.HttpRequest), config.id) \ .MultipleTimes().AndReturn(config_param_mgr) api.trove.configuration_parameters_list( IsA(http.HttpRequest), self.datastores.list()[1].name, self.datastore_versions.list()[1].name) \ .AndReturn(self.configuration_parameters.list()) name = self.configuration_parameters.first().name value = "non-numeric" self.mox.ReplayAll() post = { 'method': 'AddParameterForm', 'name': name, 'value': value} res = self.client.post(self._get_url_with_arg(ADD_URL, config.id), post) self.assertFormError(res, "form", 'value', ['Value must be a number.']) finally: config_param_manager.delete(config.id)
def test_values_tab_discard_action(self): config = self.database_configurations.first() api.trove.configuration_get(IsA(http.HttpRequest), config.id) \ .MultipleTimes().AndReturn(config) self.mox.ReplayAll() details_url = self._get_url_with_arg(DETAIL_URL, config.id) url = details_url + '?tab=configuration_details__value' self._test_create_altered_config_params(config, url) # get the state of the configuration before discard action changed_configuration_values = \ dict.copy(config_param_manager.get(self.request, config.id) .get_configuration().values) res = self.client.post(url, {'action': u"values__discard_changes"}) self.assertRedirectsNoFollow(res, url) # get the state of the configuration after discard action restored_configuration_values = \ dict.copy(config_param_manager.get(self.request, config.id) .get_configuration().values) self.assertTrue(config_param_manager.dict_has_changes( changed_configuration_values, restored_configuration_values))
def handle(self, request, data): try: config_param_manager.get( request, self.initial["configuration_id"]) \ .add_param(data["name"], self._adjust_type( self._find_parameter(data["name"]).type, data["value"])) messages.success(request, _('Successfully added parameter')) except Exception as e: redirect = reverse("horizon:project:database_configurations:index") exceptions.handle(request, _('Unable to add new parameter: %s') % e.message, redirect=redirect) return True
def handle(self, table, request, obj_ids): configuration_id = table.kwargs['configuration_id'] if config_param_manager.get(request, configuration_id).has_changes(): try: api.trove.configuration_update( request, configuration_id, config_param_manager.get( request, configuration_id).to_json()) messages.success(request, _('Applied changes to server')) except Exception: messages.error(request, _('Error applying changes')) finally: config_param_manager.delete(configuration_id) return shortcuts.redirect(request.build_absolute_uri())
def get_values_data(self): values_data = [] manager = config_param_manager.get( self.request, self.tab_group.kwargs['configuration_id']) for k, v in manager.get_configuration().values.items(): manager.add_param(k, v) values_data.append(manager.create_config_value(k, v)) return values_data
def update_cell(self, request, datum, name, cell_name, new_cell_value): config_param = datum if isinstance(config_param.value, types.IntType): value = int(new_cell_value) elif isinstance(config_param.value, types.LongType): value = long(new_cell_value) else: value = new_cell_value setattr(datum, cell_name, value) config_param_manager.get(request, config_param.configuration_id) \ .update_param(name, value) return True
def get_data(self): try: configuration_id = self.kwargs['configuration_id'] return config_param_manager.get(self.request, configuration_id) \ .configuration_get(self.request) except Exception: redirect = reverse('horizon:project:database_configurations:index') msg = _('Unable to retrieve details for configuration ' 'group: %s') % configuration_id exceptions.handle(self.request, msg, redirect=redirect)
def handle(self, table, request, obj_ids): configuration_id = table.kwargs['configuration_id'] if config_param_manager.get(request, configuration_id).has_changes(): try: config_param_manager.delete(configuration_id) messages.success(request, _('Reset Parameters')) except Exception as ex: messages.error( request, _('Error resetting parameters: %s') % ex.message) return shortcuts.redirect(request.build_absolute_uri())
def get_data(self, request, name): return config_param_manager.get( request, self.table.kwargs["configuration_id"]).get_param(name)
def delete(self, request, obj_ids): configuration_id = self.table.kwargs['configuration_id'] config_param_manager.get(request, configuration_id) \ .delete_param(obj_ids)