Ensure log messages are not translated
Previously translated messages are included in log messages and it was determined what language is chosen by users. It makes difficult for operators to understand log messgaes. This commit tries to use English messages for all log messages. The following policies are applied based on the past discussions in the bug 1406333 and related reviews. - English messages are used for log messages. - log messages include exception messages if possible to help operators identify what happens. - Use ID rather than name for log messages as ID is much more unique compared to name. - LOG.debug() in success code path are deleted. We don't log success messages in most places and API calls to back-end services can be logged from python bindings. Change-Id: Ie554463908327435d886d0d0f1671fd327c0cd00 Closes-Bug: #1406333
This commit is contained in:
parent
c88d5c1de3
commit
ced987815d
@ -66,13 +66,14 @@ class JSONMessage(object):
|
||||
except ValueError as exc:
|
||||
self.failed = True
|
||||
|
||||
msg = _("Message json file '%(path)s' is malformed."
|
||||
" %(exception)s")
|
||||
msg = msg % {'path': self._path, 'exception': str(exc)}
|
||||
params = {'path': self._path, 'exception': exc}
|
||||
if self.fail_silently:
|
||||
LOG.warning(msg)
|
||||
LOG.warning("Message json file '%(path)s' is malformed. "
|
||||
"%(exception)s", params)
|
||||
else:
|
||||
raise exceptions.MessageFailure(msg)
|
||||
raise exceptions.MessageFailure(
|
||||
_("Message json file '%(path)s' is malformed. "
|
||||
"%(exception)s") % params)
|
||||
else:
|
||||
level_name = attrs.get('level', 'info')
|
||||
if level_name in self.MESSAGE_LEVELS:
|
||||
@ -89,13 +90,14 @@ class JSONMessage(object):
|
||||
except Exception as exc:
|
||||
self.failed = True
|
||||
|
||||
msg = _("Error processing message json file '%(path)s': "
|
||||
"%(exception)s")
|
||||
msg = msg % {'path': self._path, 'exception': str(exc)}
|
||||
params = {'path': self._path, 'exception': exc}
|
||||
if self.fail_silently:
|
||||
LOG.warning(msg)
|
||||
LOG.warning("Error processing message json file '%(path)s': "
|
||||
"%(exception)s", params)
|
||||
else:
|
||||
raise exceptions.MessageFailure(msg)
|
||||
raise exceptions.MessageFailure(
|
||||
_("Error processing message json file '%(path)s': "
|
||||
"%(exception)s") % params)
|
||||
|
||||
def send_message(self, request):
|
||||
if self.failed:
|
||||
|
@ -391,10 +391,9 @@ class Column(html.HTMLElement):
|
||||
# Basic object lookups
|
||||
data = getattr(datum, self.transform, None)
|
||||
if not hasattr(datum, self.transform):
|
||||
msg = _("The attribute %(attr)s doesn't exist on "
|
||||
"%(obj)s.") % {'attr': self.transform, 'obj': datum}
|
||||
msg = termcolors.colorize(msg, **PALETTE['ERROR'])
|
||||
LOG.debug(msg)
|
||||
msg = "The attribute %(attr)s doesn't exist on %(obj)s."
|
||||
LOG.debug(termcolors.colorize(msg, **PALETTE['ERROR']),
|
||||
{'attr': self.transform, 'obj': datum})
|
||||
return data
|
||||
|
||||
def get_data(self, datum):
|
||||
|
@ -45,8 +45,8 @@ def get_microversion_for_feature(service, feature, wrapper_class,
|
||||
try:
|
||||
service_features = MICROVERSION_FEATURES[service]
|
||||
except KeyError:
|
||||
LOG.debug("'%s' could not be found in the MICROVERSION_FEATURES "
|
||||
"dict" % service)
|
||||
LOG.debug("'%s' could not be found in the MICROVERSION_FEATURES dict",
|
||||
service)
|
||||
return None
|
||||
feature_versions = service_features[feature]
|
||||
for version in reversed(feature_versions):
|
||||
|
@ -1123,9 +1123,9 @@ def servers_update_addresses(request, servers, all_tenants=False):
|
||||
networks = list_resources_with_long_filters(
|
||||
network_list, 'id', set([port.network_id for port in ports]),
|
||||
request=request)
|
||||
except Exception:
|
||||
except Exception as e:
|
||||
LOG.error('Unable to connect to Neutron: %s', e)
|
||||
error_message = _('Unable to connect to Neutron.')
|
||||
LOG.error(error_message)
|
||||
messages.error(request, error_message)
|
||||
return
|
||||
|
||||
@ -1160,9 +1160,10 @@ def _server_get_addresses(request, server, ports, floating_ips, network_names):
|
||||
def _format_address(mac, ip, type):
|
||||
try:
|
||||
version = netaddr.IPAddress(ip).version
|
||||
except Exception:
|
||||
except Exception as e:
|
||||
LOG.error('Unable to parse IP address %(ip)s: %(exc)s',
|
||||
{'ip': ip, 'exc': e})
|
||||
error_message = _('Unable to parse IP address %s.') % ip
|
||||
LOG.error(error_message)
|
||||
messages.error(request, error_message)
|
||||
raise
|
||||
return {u'OS-EXT-IPS-MAC:mac_addr': mac,
|
||||
@ -1283,10 +1284,9 @@ def get_feature_permission(request, feature, operation=None):
|
||||
network_config = getattr(settings, 'OPENSTACK_NEUTRON_NETWORK', {})
|
||||
feature_info = FEATURE_MAP.get(feature)
|
||||
if not feature_info:
|
||||
# Translators: Only used inside Horizon code and invisible to users
|
||||
raise ValueError(_("The requested feature '%(feature)s' is unknown. "
|
||||
raise ValueError("The requested feature '%(feature)s' is unknown. "
|
||||
"Please make sure to specify a feature defined "
|
||||
"in FEATURE_MAP."))
|
||||
"in FEATURE_MAP.")
|
||||
|
||||
# Check dashboard settings
|
||||
feature_config = feature_info.get('config')
|
||||
@ -1300,10 +1300,9 @@ def get_feature_permission(request, feature, operation=None):
|
||||
if feature_policies:
|
||||
policy_name = feature_policies.get(operation)
|
||||
if not policy_name:
|
||||
# Translators: Only used inside Horizon code and invisible to users
|
||||
raise ValueError(_("The 'operation' parameter for "
|
||||
raise ValueError("The 'operation' parameter for "
|
||||
"get_feature_permission '%(feature)s' "
|
||||
"is invalid. It should be one of %(allowed)s")
|
||||
"is invalid. It should be one of %(allowed)s"
|
||||
% {'feature': feature,
|
||||
'allowed': ' '.join(feature_policies.keys())})
|
||||
role = (('network', policy_name),)
|
||||
@ -1316,9 +1315,8 @@ def get_feature_permission(request, feature, operation=None):
|
||||
try:
|
||||
return is_extension_supported(request, feature_extension)
|
||||
except Exception:
|
||||
msg = (_("Failed to check Neutron '%s' extension is not supported")
|
||||
% feature_extension)
|
||||
LOG.info(msg)
|
||||
LOG.info("Failed to check Neutron '%s' extension is not supported",
|
||||
feature_extension)
|
||||
return False
|
||||
|
||||
# If all checks are passed, now a given feature is allowed.
|
||||
|
@ -349,8 +349,8 @@ class SecurityGroupManager(network_base.SecurityGroupManager):
|
||||
self.client.servers.remove_security_group(instance_id, group)
|
||||
num_groups_to_modify -= 1
|
||||
except nova_exceptions.ClientException as err:
|
||||
LOG.error(_("Failed to modify %(num_groups_to_modify)d instance "
|
||||
"security groups: %(err)s"),
|
||||
LOG.error("Failed to modify %(num_groups_to_modify)d instance "
|
||||
"security groups: %(err)s",
|
||||
{'num_groups_to_modify': num_groups_to_modify,
|
||||
'err': err})
|
||||
# reraise novaclient.exceptions.ClientException, but with
|
||||
|
@ -54,8 +54,8 @@ class DeleteDHCPAgent(tables.DeleteAction):
|
||||
api.neutron.remove_network_from_dhcp_agent(request, obj_id,
|
||||
network_id)
|
||||
except Exception as e:
|
||||
LOG.info('Failed to delete agent: %s', e)
|
||||
msg = _('Failed to delete agent: %s') % e
|
||||
LOG.info(msg)
|
||||
redirect = reverse('horizon:admin:networks:detail',
|
||||
args=[network_id])
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
|
@ -263,7 +263,7 @@ class CreateNetwork(forms.SelfHandlingForm):
|
||||
params['provider:segmentation_id'] = (
|
||||
data['segmentation_id'])
|
||||
network = api.neutron.network_create(request, **params)
|
||||
LOG.debug(_('Network %s was successfully created.'), data['name'])
|
||||
LOG.debug('Network %s was successfully created.', data['name'])
|
||||
return network
|
||||
except Exception:
|
||||
redirect = reverse('horizon:admin:networks:index')
|
||||
@ -329,11 +329,11 @@ class UpdateNetwork(forms.SelfHandlingForm):
|
||||
self.initial['network_id'],
|
||||
**params)
|
||||
msg = _('Network %s was successfully updated.') % data['name']
|
||||
LOG.debug(msg)
|
||||
messages.success(request, msg)
|
||||
return network
|
||||
except Exception:
|
||||
except Exception as e:
|
||||
LOG.info('Failed to update network %(id)s: %(exc)s',
|
||||
{'id': self.initial['network_id'], 'exc': e})
|
||||
msg = _('Failed to update network %s') % data['name']
|
||||
LOG.info(msg)
|
||||
redirect = reverse(self.failure_url)
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
|
@ -124,15 +124,15 @@ class CreatePort(project_forms.CreatePort):
|
||||
|
||||
port = api.neutron.port_create(request, **params)
|
||||
msg = _('Port %s was successfully created.') % port['id']
|
||||
LOG.debug(msg)
|
||||
messages.success(request, msg)
|
||||
return port
|
||||
except Exception:
|
||||
msg = _('Failed to create a port for network %s') \
|
||||
% data['network_id']
|
||||
LOG.info(msg)
|
||||
except Exception as e:
|
||||
net_id = data['network_id']
|
||||
LOG.info('Failed to create a port for network %(id)s: %(exc)s',
|
||||
{'id': net_id, 'exc': e})
|
||||
msg = _('Failed to create a port for network %s') % net_id
|
||||
redirect = reverse(self.failure_url,
|
||||
args=(data['network_id'],))
|
||||
args=(net_id,))
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
|
||||
|
||||
@ -185,12 +185,12 @@ class UpdatePort(project_forms.UpdatePort):
|
||||
mac_address=data['mac_address'],
|
||||
**extension_kwargs)
|
||||
msg = _('Port %s was successfully updated.') % data['port_id']
|
||||
LOG.debug(msg)
|
||||
messages.success(request, msg)
|
||||
return port
|
||||
except Exception:
|
||||
except Exception as e:
|
||||
LOG.info('Failed to update port %(id)s: %(exc)s',
|
||||
{'id': data['port_id'], 'exc': e})
|
||||
msg = _('Failed to update port %s') % data['port_id']
|
||||
LOG.info(msg)
|
||||
redirect = reverse(self.failure_url,
|
||||
args=[data['network_id']])
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
|
@ -54,9 +54,10 @@ class DeleteSubnet(proj_tables.SubnetPolicyTargetMixin, tables.DeleteAction):
|
||||
def delete(self, request, obj_id):
|
||||
try:
|
||||
api.neutron.subnet_delete(request, obj_id)
|
||||
except Exception:
|
||||
except Exception as e:
|
||||
LOG.info('Failed to delete subnet %(id)s: %(exc)s',
|
||||
{'id': obj_id, 'exc': e})
|
||||
msg = _('Failed to delete subnet %s') % obj_id
|
||||
LOG.info(msg)
|
||||
network_id = self.table.kwargs['network_id']
|
||||
redirect = reverse('horizon:admin:networks:detail',
|
||||
args=[network_id])
|
||||
|
@ -64,10 +64,11 @@ class CreateSubnet(project_workflows.CreateSubnet):
|
||||
# created for if admin user does not belong to the tenant.
|
||||
network = api.neutron.network_get(request,
|
||||
self.context['network_id'])
|
||||
except Exception:
|
||||
except Exception as e:
|
||||
LOG.info('Failed to retrieve network %(id)s for a subnet: %(exc)s',
|
||||
{'id': data['network_id'], 'exc': e})
|
||||
msg = (_('Failed to retrieve network %s for a subnet') %
|
||||
data['network_id'])
|
||||
LOG.info(msg)
|
||||
redirect = self.get_failure_url()
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
subnet = self._create_subnet(request, data,
|
||||
|
@ -53,9 +53,10 @@ class DeleteNetwork(policy.PolicyTargetMixin, tables.DeleteAction):
|
||||
def delete(self, request, obj_id):
|
||||
try:
|
||||
api.neutron.network_delete(request, obj_id)
|
||||
except Exception:
|
||||
except Exception as e:
|
||||
LOG.info('Failed to delete network %(id)s: %(exc)s',
|
||||
{'id': obj_id, 'exc': e})
|
||||
msg = _('Failed to delete network %s') % obj_id
|
||||
LOG.info(msg)
|
||||
redirect = reverse('horizon:admin:networks:index')
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
|
||||
|
@ -40,8 +40,8 @@ class AddProtocolForm(forms.SelfHandlingForm):
|
||||
try:
|
||||
mappings = api.keystone.mapping_list(request)
|
||||
except Exception as e:
|
||||
LOG.info('Failed to get mapping list %s', e)
|
||||
msg = _('Failed to get mapping list %s') % e
|
||||
LOG.info(msg)
|
||||
messages.error(request, msg)
|
||||
|
||||
choices = [(m.id, m.id) for m in mappings]
|
||||
|
@ -12,7 +12,6 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import abc
|
||||
import logging
|
||||
|
||||
from django.core.urlresolvers import reverse
|
||||
@ -89,13 +88,13 @@ class UpdateRule(forms.SelfHandlingForm):
|
||||
try:
|
||||
rule = api.fwaas.rule_update(request, rule_id, **context)
|
||||
msg = _('Rule %s was successfully updated.') % name_or_id
|
||||
LOG.debug(msg)
|
||||
messages.success(request, msg)
|
||||
return rule
|
||||
except Exception as e:
|
||||
LOG.error('Failed to update rule %(id)s: %(reason)s',
|
||||
{'id': rule_id, 'reason': e})
|
||||
msg = (_('Failed to update rule %(name)s: %(reason)s') %
|
||||
{'name': name_or_id, 'reason': e})
|
||||
LOG.error(msg)
|
||||
redirect = reverse(self.failure_url)
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
|
||||
@ -115,13 +114,13 @@ class UpdatePolicy(forms.SelfHandlingForm):
|
||||
try:
|
||||
policy = api.fwaas.policy_update(request, policy_id, **context)
|
||||
msg = _('Policy %s was successfully updated.') % name_or_id
|
||||
LOG.debug(msg)
|
||||
messages.success(request, msg)
|
||||
return policy
|
||||
except Exception as e:
|
||||
msg = _('Failed to update policy %(name)s: %(reason)s') % {
|
||||
'name': name_or_id, 'reason': e}
|
||||
LOG.error(msg)
|
||||
LOG.error('Failed to update policy %(id)s: %(reason)s',
|
||||
{'id': policy_id, 'reason': e})
|
||||
msg = (_('Failed to update policy %(name)s: %(reason)s') %
|
||||
{'name': name_or_id, 'reason': e})
|
||||
redirect = reverse(self.failure_url)
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
|
||||
@ -170,13 +169,13 @@ class UpdateFirewall(forms.SelfHandlingForm):
|
||||
firewall = api.fwaas.firewall_update(request, firewall_id,
|
||||
**context)
|
||||
msg = _('Firewall %s was successfully updated.') % name_or_id
|
||||
LOG.debug(msg)
|
||||
messages.success(request, msg)
|
||||
return firewall
|
||||
except Exception as e:
|
||||
msg = _('Failed to update firewall %(name)s: %(reason)s') % {
|
||||
'name': name_or_id, 'reason': e}
|
||||
LOG.error(msg)
|
||||
LOG.error('Failed to update firewall %(id)s: %(reason)s',
|
||||
{'id': firewall_id, 'reason': e})
|
||||
msg = (_('Failed to update firewall %(name)s: %(reason)s') %
|
||||
{'name': name_or_id, 'reason': e})
|
||||
redirect = reverse(self.failure_url)
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
|
||||
@ -210,8 +209,8 @@ class InsertRuleToPolicy(forms.SelfHandlingForm):
|
||||
current_choices = [(r.id, r.name_or_id) for r in current_rules]
|
||||
|
||||
except Exception as e:
|
||||
LOG.error('Failed to retrieve available rules: %s', e)
|
||||
msg = _('Failed to retrieve available rules: %s') % e
|
||||
LOG.error(msg)
|
||||
redirect = reverse(self.failure_url)
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
|
||||
@ -233,13 +232,13 @@ class InsertRuleToPolicy(forms.SelfHandlingForm):
|
||||
'%(policy)s.') % {
|
||||
'rule': insert_rule.name or insert_rule.id,
|
||||
'policy': policy_name_or_id}
|
||||
LOG.debug(msg)
|
||||
messages.success(request, msg)
|
||||
return policy
|
||||
except Exception as e:
|
||||
msg = _('Failed to insert rule to policy %(name)s: %(reason)s') % {
|
||||
'name': policy_id, 'reason': e}
|
||||
LOG.error(msg)
|
||||
LOG.error('Failed to insert rule to policy %(id)s: %(reason)s',
|
||||
{'id': policy_id, 'reason': e})
|
||||
msg = (_('Failed to insert rule to policy %(name)s: %(reason)s') %
|
||||
{'name': policy_id, 'reason': e})
|
||||
redirect = reverse(self.failure_url)
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
|
||||
@ -263,9 +262,12 @@ class RemoveRuleFromPolicy(forms.SelfHandlingForm):
|
||||
|
||||
current_choices = [(r.id, r.name_or_id) for r in current_rules]
|
||||
except Exception as e:
|
||||
msg = _('Failed to retrieve current rules in policy %(name)s: '
|
||||
'%(reason)s') % {'name': self.initial['name'], 'reason': e}
|
||||
LOG.error(msg)
|
||||
LOG.error('Failed to retrieve current rules in policy %(id)s: '
|
||||
'%(reason)s',
|
||||
{'id': self.initial['policy_id'], 'reason': e})
|
||||
msg = (_('Failed to retrieve current rules in policy %(name)s: '
|
||||
'%(reason)s') %
|
||||
{'name': self.initial['name'], 'reason': e})
|
||||
redirect = reverse(self.failure_url)
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
|
||||
@ -283,58 +285,18 @@ class RemoveRuleFromPolicy(forms.SelfHandlingForm):
|
||||
'%(policy)s.') % {
|
||||
'rule': remove_rule.name or remove_rule.id,
|
||||
'policy': policy_name_or_id}
|
||||
LOG.debug(msg)
|
||||
messages.success(request, msg)
|
||||
return policy
|
||||
except Exception as e:
|
||||
msg = _('Failed to remove rule from policy %(name)s: '
|
||||
'%(reason)s') % {'name': self.initial['name'],
|
||||
'reason': e}
|
||||
LOG.error(msg)
|
||||
LOG.error('Failed to remove rule from policy %(id)s: %(reason)s',
|
||||
{'id': policy_id, 'reason': e})
|
||||
msg = (_('Failed to remove rule from policy %(name)s: %(reason)s')
|
||||
% {'name': self.initial['name'], 'reason': e})
|
||||
redirect = reverse(self.failure_url)
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
|
||||
|
||||
class RouterInsertionFormBase(forms.SelfHandlingForm):
|
||||
|
||||
def __init__(self, request, *args, **kwargs):
|
||||
super(RouterInsertionFormBase, self).__init__(request, *args, **kwargs)
|
||||
try:
|
||||
router_choices = self.get_router_choices(request, kwargs)
|
||||
self.fields['router_ids'].choices = router_choices
|
||||
except Exception as e:
|
||||
msg = self.init_failure_msg % {'name': self.initial['name'],
|
||||
'reason': e}
|
||||
LOG.error(msg)
|
||||
redirect = reverse(self.failure_url)
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
|
||||
@abc.abstractmethod
|
||||
def get_router_choices(self, request, kwargs):
|
||||
"""Return a list of selectable routers."""
|
||||
|
||||
@abc.abstractmethod
|
||||
def get_new_router_ids(self, context):
|
||||
"""Return a new list of router IDs associated with the firewall."""
|
||||
|
||||
def handle(self, request, context):
|
||||
firewall_id = self.initial['firewall_id']
|
||||
firewall_name_or_id = self.initial['name'] or firewall_id
|
||||
try:
|
||||
body = {'router_ids': self.get_new_router_ids(context)}
|
||||
firewall = api.fwaas.firewall_update(request, firewall_id, **body)
|
||||
msg = self.success_msg % {'firewall': firewall_name_or_id}
|
||||
LOG.debug(msg)
|
||||
messages.success(request, msg)
|
||||
return firewall
|
||||
except Exception as e:
|
||||
msg = self.failure_msg % {'name': firewall_name_or_id, 'reason': e}
|
||||
LOG.error(msg)
|
||||
redirect = reverse(self.failure_url)
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
|
||||
|
||||
class AddRouterToFirewall(RouterInsertionFormBase):
|
||||
class AddRouterToFirewall(forms.SelfHandlingForm):
|
||||
router_ids = forms.MultipleChoiceField(
|
||||
label=_("Add Routers"),
|
||||
required=False,
|
||||
@ -342,10 +304,17 @@ class AddRouterToFirewall(RouterInsertionFormBase):
|
||||
help_text=_("Add selected router(s) to the firewall."))
|
||||
|
||||
failure_url = 'horizon:project:firewalls:index'
|
||||
success_msg = _('Router(s) was/were successfully added to firewall '
|
||||
'%(firewall)s.')
|
||||
failure_msg = _('Failed to add router(s) to firewall %(name)s: %(reason)s')
|
||||
init_failure_msg = _('Failed to retrieve available routers: %(reason)s')
|
||||
|
||||
def __init__(self, request, *args, **kwargs):
|
||||
super(AddRouterToFirewall, self).__init__(request, *args, **kwargs)
|
||||
try:
|
||||
router_choices = self.get_router_choices(request, kwargs)
|
||||
self.fields['router_ids'].choices = router_choices
|
||||
except Exception as e:
|
||||
LOG.error('Failed to retrieve available routers: %s', e)
|
||||
msg = _('Failed to retrieve available routers: %s') % e
|
||||
redirect = reverse(self.failure_url)
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
|
||||
def get_router_choices(self, request, kwargs):
|
||||
tenant_id = self.request.user.tenant_id
|
||||
@ -358,8 +327,28 @@ class AddRouterToFirewall(RouterInsertionFormBase):
|
||||
add_router_ids = context['router_ids']
|
||||
return add_router_ids + existing_router_ids
|
||||
|
||||
def handle(self, request, context):
|
||||
firewall_id = self.initial['firewall_id']
|
||||
firewall_name_or_id = self.initial['name'] or firewall_id
|
||||
try:
|
||||
body = {'router_ids': self.get_new_router_ids(context)}
|
||||
firewall = api.fwaas.firewall_update(request, firewall_id, **body)
|
||||
msg = (_('Router(s) was/were successfully added to firewall '
|
||||
'%(firewall)s.') %
|
||||
{'firewall': firewall_name_or_id})
|
||||
messages.success(request, msg)
|
||||
return firewall
|
||||
except Exception as e:
|
||||
LOG.error('Failed to add router(s) to firewall %(id)s: %(reason)s',
|
||||
{'id': firewall_id, 'reason': e})
|
||||
msg = (_('Failed to add router(s) to firewall %(name)s: '
|
||||
'%(reason)s') %
|
||||
{'name': firewall_name_or_id, 'reason': e})
|
||||
redirect = reverse(self.failure_url)
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
|
||||
class RemoveRouterFromFirewall(RouterInsertionFormBase):
|
||||
|
||||
class RemoveRouterFromFirewall(forms.SelfHandlingForm):
|
||||
router_ids = forms.MultipleChoiceField(
|
||||
label=_("Associated Routers"),
|
||||
required=False,
|
||||
@ -367,12 +356,22 @@ class RemoveRouterFromFirewall(RouterInsertionFormBase):
|
||||
help_text=_("Unselect the router(s) to be removed from firewall."))
|
||||
|
||||
failure_url = 'horizon:project:firewalls:index'
|
||||
success_msg = _('Router(s) was successfully removed from firewall '
|
||||
'%(firewall)s.')
|
||||
failure_msg = _('Failed to remove router(s) from firewall %(name)s: '
|
||||
'%(reason)s')
|
||||
init_failure_msg = _('Failed to retrieve current routers in firewall '
|
||||
'%(name)s: %(reason)s')
|
||||
|
||||
def __init__(self, request, *args, **kwargs):
|
||||
super(RemoveRouterFromFirewall, self).__init__(request,
|
||||
*args, **kwargs)
|
||||
try:
|
||||
router_choices = self.get_router_choices(request, kwargs)
|
||||
self.fields['router_ids'].choices = router_choices
|
||||
except Exception as e:
|
||||
LOG.error('Failed to retrieve current routers in firewall %(id)s: '
|
||||
'%(reason)s',
|
||||
{'id': self.initial['firewall_id'], 'reason': e})
|
||||
msg = (_('Failed to retrieve current routers in firewall '
|
||||
'%(name)s: %(reason)s') %
|
||||
{'name': self.initial['name'], 'reason': e})
|
||||
redirect = reverse(self.failure_url)
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
|
||||
def get_router_choices(self, request, kwargs):
|
||||
tenant_id = self.request.user.tenant_id
|
||||
@ -384,3 +383,23 @@ class RemoveRouterFromFirewall(RouterInsertionFormBase):
|
||||
def get_new_router_ids(self, context):
|
||||
# context[router_ids] is router IDs to be kept.
|
||||
return context['router_ids']
|
||||
|
||||
def handle(self, request, context):
|
||||
firewall_id = self.initial['firewall_id']
|
||||
firewall_name_or_id = self.initial['name'] or firewall_id
|
||||
try:
|
||||
body = {'router_ids': self.get_new_router_ids(context)}
|
||||
firewall = api.fwaas.firewall_update(request, firewall_id, **body)
|
||||
msg = (_('Router(s) was successfully removed from firewall '
|
||||
'%(firewall)s.') %
|
||||
{'firewall': firewall_name_or_id})
|
||||
messages.success(request, msg)
|
||||
return firewall
|
||||
except Exception as e:
|
||||
LOG.error('Failed to remove router(s) from firewall %(id)s: '
|
||||
'%(reason)s', {'id': firewall_id, 'reason': e})
|
||||
msg = (_('Failed to remove router(s) from firewall %(name)s: '
|
||||
'%(reason)s') %
|
||||
{'name': firewall_name_or_id, 'reason': e})
|
||||
redirect = reverse(self.failure_url)
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
|
@ -409,7 +409,6 @@ class FirewallsTable(tables.DataTable):
|
||||
'fwaasrouterinsertion'):
|
||||
del self.columns['router_ids']
|
||||
except Exception as e:
|
||||
msg = _('Failed to verify extension support %(reason)s') % {
|
||||
'reason': e}
|
||||
LOG.error(msg)
|
||||
LOG.error('Failed to verify extension support %s', e)
|
||||
msg = _('Failed to verify extension support %s') % e
|
||||
exceptions.handle(request, msg)
|
||||
|
@ -65,11 +65,11 @@ class UpdateNetwork(forms.SelfHandlingForm):
|
||||
data['network_id'],
|
||||
**params)
|
||||
msg = _('Network %s was successfully updated.') % data['name']
|
||||
LOG.debug(msg)
|
||||
messages.success(request, msg)
|
||||
return network
|
||||
except Exception:
|
||||
except Exception as e:
|
||||
LOG.info('Failed to update network %(id)s: %(exc)s',
|
||||
{'id': data['network_id'], 'exc': e})
|
||||
msg = _('Failed to update network %s') % data['name']
|
||||
LOG.info(msg)
|
||||
redirect = reverse(self.failure_url)
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
|
@ -156,13 +156,13 @@ class CreatePort(forms.SelfHandlingForm):
|
||||
msg = _('Port %s was successfully created.') % port['name']
|
||||
else:
|
||||
msg = _('Port %s was successfully created.') % port['id']
|
||||
LOG.debug(msg)
|
||||
messages.success(request, msg)
|
||||
return port
|
||||
except Exception:
|
||||
msg = _('Failed to create a port for network %s') \
|
||||
% data['network_id']
|
||||
LOG.info(msg)
|
||||
except Exception as e:
|
||||
LOG.info('Failed to create a port for network %(id)s: %(exc)s',
|
||||
{'id': data['network_id'], 'exc': e})
|
||||
msg = (_('Failed to create a port for network %s')
|
||||
% data['network_id'])
|
||||
redirect = reverse(self.failure_url,
|
||||
args=(data['network_id'],))
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
@ -248,12 +248,12 @@ class UpdatePort(forms.SelfHandlingForm):
|
||||
admin_state_up=data['admin_state'],
|
||||
**extension_kwargs)
|
||||
msg = _('Port %s was successfully updated.') % data['port_id']
|
||||
LOG.debug(msg)
|
||||
messages.success(request, msg)
|
||||
return port
|
||||
except Exception:
|
||||
except Exception as e:
|
||||
LOG.info('Failed to update port %(id)s: %(exc)s',
|
||||
{'id': data['port_id'], 'exc': e})
|
||||
msg = _('Failed to update port %s') % data['port_id']
|
||||
LOG.info(msg)
|
||||
redirect = reverse(self.failure_url,
|
||||
args=[data['network_id']])
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
|
@ -106,9 +106,10 @@ class DeletePort(policy.PolicyTargetMixin, tables.DeleteAction):
|
||||
failure_url = "horizon:project:networks:detail"
|
||||
try:
|
||||
api.neutron.port_delete(request, port_id)
|
||||
except Exception:
|
||||
msg = _('Failed to delete port: %s') % port_id
|
||||
LOG.info(msg)
|
||||
except Exception as e:
|
||||
LOG.info('Failed to delete port %(id)s: %(exc)s',
|
||||
{'id': port_id, 'exc': e})
|
||||
msg = _('Failed to delete port %s') % port_id
|
||||
network_id = self.table.kwargs['network_id']
|
||||
redirect = reverse(failure_url,
|
||||
args=[network_id])
|
||||
|
@ -79,9 +79,10 @@ class DeleteSubnet(SubnetPolicyTargetMixin, CheckNetworkEditable,
|
||||
def delete(self, request, obj_id):
|
||||
try:
|
||||
api.neutron.subnet_delete(request, obj_id)
|
||||
except Exception:
|
||||
except Exception as e:
|
||||
LOG.info('Failed to delete subnet %(id)s: %(exc)s',
|
||||
{'id': obj_id, 'exc': e})
|
||||
msg = _('Failed to delete subnet %s') % obj_id
|
||||
LOG.info(msg)
|
||||
network_id = self.table.kwargs['network_id']
|
||||
redirect = reverse('horizon:project:networks:detail',
|
||||
args=[network_id])
|
||||
|
@ -75,9 +75,10 @@ class DeleteNetwork(policy.PolicyTargetMixin, CheckNetworkEditable,
|
||||
LOG.debug('Deleted subnet %s', subnet_id)
|
||||
api.neutron.network_delete(request, network_id)
|
||||
LOG.debug('Deleted network %s successfully', network_id)
|
||||
except Exception:
|
||||
except Exception as e:
|
||||
LOG.info('Failed to delete network %(id)s: %(exc)s',
|
||||
{'id': network_id, 'exc': e})
|
||||
msg = _('Failed to delete network %s')
|
||||
LOG.info(msg, network_id)
|
||||
redirect = reverse("horizon:project:networks:index")
|
||||
exceptions.handle(request, msg % network_name, redirect=redirect)
|
||||
|
||||
|
@ -471,9 +471,9 @@ class CreateNetwork(workflows.Workflow):
|
||||
network.name_or_id)
|
||||
return network
|
||||
except Exception as e:
|
||||
LOG.info('Failed to create network: %s', e)
|
||||
msg = (_('Failed to create network "%(network)s": %(reason)s') %
|
||||
{"network": data['net_name'], "reason": e})
|
||||
LOG.info(msg)
|
||||
redirect = self.get_failure_url()
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
return False
|
||||
@ -562,15 +562,17 @@ class CreateNetwork(workflows.Workflow):
|
||||
"""Delete the created network when subnet creation failed."""
|
||||
try:
|
||||
api.neutron.network_delete(request, network.id)
|
||||
LOG.debug('Delete the created network %s '
|
||||
'due to subnet creation failure.', network.id)
|
||||
msg = _('Delete the created network "%s" '
|
||||
'due to subnet creation failure.') % network.name
|
||||
LOG.debug(msg)
|
||||
redirect = self.get_failure_url()
|
||||
messages.info(request, msg)
|
||||
raise exceptions.Http302(redirect)
|
||||
except Exception:
|
||||
except Exception as e:
|
||||
LOG.info('Failed to delete network %(id)s: %(exc)s',
|
||||
{'id': network.id, 'exc': e})
|
||||
msg = _('Failed to delete network "%s"') % network.name
|
||||
LOG.info(msg)
|
||||
redirect = self.get_failure_url()
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
|
||||
|
@ -43,18 +43,18 @@ class AddRouterRoute(forms.SelfHandlingForm):
|
||||
router_id,
|
||||
route)
|
||||
msg = _('Static route added')
|
||||
LOG.debug(msg)
|
||||
messages.success(request, msg)
|
||||
return True
|
||||
except neutron_exc.BadRequest as e:
|
||||
msg = (_('Invalid format for routes : %s') % e)
|
||||
LOG.info(msg)
|
||||
LOG.info('Invalid format for routes %(route)s: %(exc)s',
|
||||
{'route': route, 'exc': e})
|
||||
msg = _('Invalid format for routes: %s') % e
|
||||
messages.error(request, msg)
|
||||
redirect = reverse(self.failure_url, args=[router_id])
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
except Exception as e:
|
||||
msg = (_('Failed to add route : %s') % e)
|
||||
LOG.info(msg)
|
||||
LOG.info('Failed to add route: %s', e)
|
||||
msg = _('Failed to add route: %s') % e
|
||||
messages.error(request, msg)
|
||||
redirect = reverse(self.failure_url, args=[router_id])
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
|
@ -36,9 +36,9 @@ class ExtraRoutesTab(tabs.TableTab):
|
||||
def allowed(self, request):
|
||||
try:
|
||||
return api.is_extension_supported(request, 'extraroute')
|
||||
except Exception:
|
||||
LOG.info(_("Failed to check if Neutron extraroute extension is "
|
||||
"supported"))
|
||||
except Exception as e:
|
||||
LOG.info("Failed to check if Neutron extraroute extension is "
|
||||
"supported: %s", e)
|
||||
return False
|
||||
|
||||
def get_extra_routes_data(self):
|
||||
|
@ -75,9 +75,9 @@ class CreateForm(forms.SelfHandlingForm):
|
||||
search_opts = {'router:external': True}
|
||||
try:
|
||||
networks = api.neutron.network_list(request, **search_opts)
|
||||
except Exception:
|
||||
except Exception as e:
|
||||
LOG.info('Failed to get network list: %s', e)
|
||||
msg = _('Failed to get network list.')
|
||||
LOG.info(msg)
|
||||
messages.warning(request, msg)
|
||||
networks = []
|
||||
|
||||
@ -104,11 +104,11 @@ class CreateForm(forms.SelfHandlingForm):
|
||||
messages.success(request, message)
|
||||
return router
|
||||
except Exception as exc:
|
||||
LOG.info('Failed to create router: %s', exc)
|
||||
if exc.status_code == 409:
|
||||
msg = _('Quota exceeded for resource router.')
|
||||
else:
|
||||
msg = _('Failed to create router "%s".') % data['name']
|
||||
LOG.info(msg)
|
||||
redirect = reverse(self.failure_url)
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
return False
|
||||
@ -164,10 +164,10 @@ class UpdateForm(forms.SelfHandlingForm):
|
||||
router = api.neutron.router_update(request, data['router_id'],
|
||||
**params)
|
||||
msg = _('Router %s was successfully updated.') % data['name']
|
||||
LOG.debug(msg)
|
||||
messages.success(request, msg)
|
||||
return router
|
||||
except Exception:
|
||||
except Exception as exc:
|
||||
LOG.info('Failed to update router %(id)s: %(exc)s',
|
||||
{'id': data['router_id'], 'exc': exc})
|
||||
msg = _('Failed to update router %s') % data['name']
|
||||
LOG.info(msg)
|
||||
exceptions.handle(request, msg, redirect=self.redirect_url)
|
||||
|
@ -59,8 +59,8 @@ class AddInterface(forms.SelfHandlingForm):
|
||||
router_subnet_ids = [fixed_ip["subnet_id"] for port in ports
|
||||
for fixed_ip in port.fixed_ips]
|
||||
except Exception as e:
|
||||
msg = _('Failed to get network list %s') % e
|
||||
LOG.info(msg)
|
||||
LOG.info('Failed to get network list: %s', e)
|
||||
msg = _('Failed to get network list: %s') % e
|
||||
messages.error(request, msg)
|
||||
if router_id:
|
||||
redirect = reverse(self.failure_url, args=[router_id])
|
||||
@ -92,7 +92,6 @@ class AddInterface(forms.SelfHandlingForm):
|
||||
msg = _('Interface added')
|
||||
if port:
|
||||
msg += ' ' + port.fixed_ips[0]['ip_address']
|
||||
LOG.debug(msg)
|
||||
messages.success(request, msg)
|
||||
return True
|
||||
|
||||
@ -136,17 +135,18 @@ class AddInterface(forms.SelfHandlingForm):
|
||||
return port
|
||||
|
||||
def _handle_error(self, request, router_id, reason):
|
||||
msg = _('Failed to add_interface: %s') % reason
|
||||
LOG.info(msg)
|
||||
LOG.info('Failed to add_interface: %s', reason)
|
||||
msg = _('Failed to add interface: %s') % reason
|
||||
redirect = reverse(self.failure_url, args=[router_id])
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
|
||||
def _delete_port(self, request, port):
|
||||
try:
|
||||
api.neutron.port_delete(request, port.id)
|
||||
except Exception:
|
||||
except Exception as e:
|
||||
LOG.info('Failed to delete port %(id)s: %(exc)s',
|
||||
{'id': port.id, 'exc': e})
|
||||
msg = _('Failed to delete port %s') % port.id
|
||||
LOG.info(msg)
|
||||
exceptions.handle(request, msg)
|
||||
|
||||
|
||||
@ -170,8 +170,8 @@ class SetGatewayForm(forms.SelfHandlingForm):
|
||||
try:
|
||||
networks = api.neutron.network_list(request, **search_opts)
|
||||
except Exception as e:
|
||||
msg = _('Failed to get network list %s') % e
|
||||
LOG.info(msg)
|
||||
LOG.info('Faield to get network list: %s', e)
|
||||
msg = _('Failed to get network list: %s') % e
|
||||
messages.error(request, msg)
|
||||
redirect = reverse(self.failure_url)
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
@ -190,11 +190,11 @@ class SetGatewayForm(forms.SelfHandlingForm):
|
||||
data['router_id'],
|
||||
data['network_id'])
|
||||
msg = _('Gateway interface is added')
|
||||
LOG.debug(msg)
|
||||
messages.success(request, msg)
|
||||
return True
|
||||
except Exception as e:
|
||||
msg = _('Failed to set gateway %s') % e
|
||||
LOG.info(msg)
|
||||
LOG.info('Failed to set gateway to router %(id)s: %(exc)s',
|
||||
{'id': data['router_id'], 'exc': e})
|
||||
msg = _('Failed to set gateway: %s') % e
|
||||
redirect = reverse(self.failure_url)
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
|
@ -81,9 +81,10 @@ class RemoveInterface(policy.PolicyTargetMixin, tables.DeleteAction):
|
||||
api.neutron.router_remove_interface(request,
|
||||
router_id,
|
||||
port_id=obj_id)
|
||||
except Exception:
|
||||
except Exception as e:
|
||||
LOG.info('Failed to delete interface %(id)s: %(exc)s',
|
||||
{'id': obj_id, 'exc': e})
|
||||
msg = _('Failed to delete interface %s') % obj_id
|
||||
LOG.info(msg)
|
||||
router_id = self.table.kwargs['router_id']
|
||||
redirect = reverse(self.failure_url,
|
||||
args=[router_id])
|
||||
|
@ -64,16 +64,23 @@ class DeleteRouter(policy.PolicyTargetMixin, tables.DeleteAction):
|
||||
port_id=port.id)
|
||||
api.neutron.router_delete(request, obj_id)
|
||||
except q_ext.NeutronClientException as e:
|
||||
msg = _('Unable to delete router "%s"') % e
|
||||
LOG.info(msg)
|
||||
messages.error(request, msg)
|
||||
redirect = reverse(self.redirect_url)
|
||||
raise exceptions.Http302(redirect, message=msg)
|
||||
except Exception:
|
||||
# TODO(amotoki): Revisit why Http302 needs to be raised.
|
||||
# We have this pattern ONLY HERE.
|
||||
# Can't we merge two except clauses?
|
||||
LOG.info('Unable to delete router %(id)s: %(exc)s',
|
||||
{'id': obj_id, 'exc': e})
|
||||
obj = self.table.get_object_by_id(obj_id)
|
||||
name = self.table.get_object_display(obj)
|
||||
msg = _('Unable to delete router "%s"') % name
|
||||
messages.error(request, msg)
|
||||
redirect = reverse(self.redirect_url)
|
||||
raise exceptions.Http302(redirect, message=msg)
|
||||
except Exception as e:
|
||||
LOG.info('Unable to delete router %(id)s: %(exc)s',
|
||||
{'id': obj_id, 'exc': e})
|
||||
obj = self.table.get_object_by_id(obj_id)
|
||||
name = self.table.get_object_display(obj)
|
||||
msg = _('Unable to delete router "%s"') % name
|
||||
LOG.info(msg)
|
||||
exceptions.handle(request, msg)
|
||||
|
||||
def allowed(self, request, router=None):
|
||||
@ -158,10 +165,11 @@ class ClearGateway(policy.PolicyTargetMixin, tables.BatchAction):
|
||||
try:
|
||||
api.neutron.router_remove_gateway(request, obj_id)
|
||||
except Exception as e:
|
||||
LOG.info('Unable to clear gateway for router %(id)s: %(exc)s',
|
||||
{'id': obj_id, 'exc': e})
|
||||
msg = (_('Unable to clear gateway for router '
|
||||
'"%(name)s": "%(msg)s"')
|
||||
% {"name": name, "msg": e})
|
||||
LOG.info(msg)
|
||||
redirect = reverse(self.redirect_url)
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
|
||||
|
@ -52,12 +52,12 @@ class UpdateVPNService(forms.SelfHandlingForm):
|
||||
request, context['vpnservice_id'], **data)
|
||||
msg = (_('VPN Service %s was successfully updated.')
|
||||
% context['name'])
|
||||
LOG.debug(msg)
|
||||
messages.success(request, msg)
|
||||
return vpnservice
|
||||
except Exception as e:
|
||||
LOG.info('Failed to update VPN Service %(id)s: %(exc)s',
|
||||
{'id': context['vpnservice_id'], 'exc': e})
|
||||
msg = _('Failed to update VPN Service %s') % context['name']
|
||||
LOG.info('%(msg)s: %(exception)s', {'msg': msg, 'exception': e})
|
||||
redirect = reverse(self.failure_url)
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
|
||||
@ -131,12 +131,12 @@ class UpdateIKEPolicy(forms.SelfHandlingForm):
|
||||
request, context['ikepolicy_id'], **data)
|
||||
msg = (_('IKE Policy %s was successfully updated.')
|
||||
% context['name'])
|
||||
LOG.debug(msg)
|
||||
messages.success(request, msg)
|
||||
return ikepolicy
|
||||
except Exception as e:
|
||||
LOG.info('Failed to update IKE Policy %(id)s: %(exc)s',
|
||||
{'id': context['ikepolicy_id'], 'exc': e})
|
||||
msg = _('Failed to update IKE Policy %s') % context['name']
|
||||
LOG.info('%(msg)s: %(exception)s', {'msg': msg, 'exception': e})
|
||||
redirect = reverse(self.failure_url)
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
|
||||
@ -209,12 +209,12 @@ class UpdateIPSecPolicy(forms.SelfHandlingForm):
|
||||
request, context['ipsecpolicy_id'], **data)
|
||||
msg = (_('IPSec Policy %s was successfully updated.')
|
||||
% context['name'])
|
||||
LOG.debug(msg)
|
||||
messages.success(request, msg)
|
||||
return ipsecpolicy
|
||||
except Exception as e:
|
||||
LOG.info('Failed to update IPSec Policy %(id)s: %(exc)s',
|
||||
{'id': context['ipsecpolicy_id'], 'exc': e})
|
||||
msg = _('Failed to update IPSec Policy %s') % context['name']
|
||||
LOG.info('%(msg)s: %(exception)s', {'msg': msg, 'exception': e})
|
||||
redirect = reverse(self.failure_url)
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
|
||||
@ -318,12 +318,12 @@ class UpdateIPSecSiteConnection(forms.SelfHandlingForm):
|
||||
request, context['ipsecsiteconnection_id'], **data)
|
||||
msg = (_('IPSec Site Connection %s was successfully updated.')
|
||||
% context['name'])
|
||||
LOG.debug(msg)
|
||||
messages.success(request, msg)
|
||||
return ipsecsiteconnection
|
||||
except Exception as e:
|
||||
LOG.info('Failed to update IPSec Site Connection %(id)s: %(exc)s',
|
||||
{'id': context['ipsecsiteconnection_id'], 'exc': e})
|
||||
msg = (_('Failed to update IPSec Site Connection %s')
|
||||
% context['name'])
|
||||
LOG.info('%(msg)s: %(exception)s', {'msg': msg, 'exception': e})
|
||||
redirect = reverse(self.failure_url)
|
||||
exceptions.handle(request, msg, redirect=redirect)
|
||||
|
Loading…
Reference in New Issue
Block a user