Merge "Fixes i18n messages in nvp plugin"

This commit is contained in:
Jenkins 2013-01-11 09:51:11 +00:00 committed by Gerrit Code Review
commit 7de5d67c07
6 changed files with 75 additions and 64 deletions

View File

@ -169,7 +169,7 @@ class NvpApiException(Exception):
with the keyword arguments provided to the constructor.
'''
message = "An unknown exception occurred."
message = _("An unknown exception occurred.")
def __init__(self, **kwargs):
try:
@ -184,26 +184,27 @@ class NvpApiException(Exception):
class UnAuthorizedRequest(NvpApiException):
message = "Server denied session's authentication credentials."
message = _("Server denied session's authentication credentials.")
class ResourceNotFound(NvpApiException):
message = "An entity referenced in the request was not found."
message = _("An entity referenced in the request was not found.")
class Conflict(NvpApiException):
message = "Request conflicts with configuration on a different entity."
message = _("Request conflicts with configuration on a different "
"entity.")
class ServiceUnavailable(NvpApiException):
message = ("Request could not completed because the associated "
"resource could not be reached.")
message = _("Request could not completed because the associated "
"resource could not be reached.")
class Forbidden(NvpApiException):
message = ("The request is forbidden from accessing the "
"referenced resource.")
message = _("The request is forbidden from accessing the "
"referenced resource.")
class RequestTimeout(NvpApiException):
message = "The request has timed out."
message = _("The request has timed out.")

View File

@ -167,8 +167,8 @@ class NvpPluginV2(db_base_plugin_v2.QuantumDbPluginV2):
"Using first cluster:%s"), first_cluster_name)
elif not def_cluster_name in self.clusters:
LOG.warning(_("Default cluster name %(def_cluster_name)s. "
"Using first cluster:%(first_cluster_name)s")
% locals())
"Using first cluster:%(first_cluster_name)s"),
locals())
# otherwise set 1st cluster as default
self.default_cluster = self.clusters[first_cluster_name]
@ -192,14 +192,14 @@ class NvpPluginV2(db_base_plugin_v2.QuantumDbPluginV2):
def _novazone_to_cluster(self, novazone_id):
if novazone_id in self.novazone_cluster_map:
return self.novazone_cluster_map[novazone_id]
LOG.debug(_("Looking for nova zone: %s") % novazone_id)
LOG.debug(_("Looking for nova zone: %s"), novazone_id)
for x in self.clusters:
LOG.debug(_("Looking for nova zone %(novazone_id)s in "
"cluster: %(x)s") % locals())
"cluster: %(x)s"), locals())
if x.zone == str(novazone_id):
self.novazone_cluster_map[x.zone] = x
return x
LOG.error(_("Unable to find cluster config entry for nova zone: %s") %
LOG.error(_("Unable to find cluster config entry for nova zone: %s"),
novazone_id)
raise nvp_exc.NvpInvalidNovaZone(nova_zone=novazone_id)
@ -296,7 +296,7 @@ class NvpPluginV2(db_base_plugin_v2.QuantumDbPluginV2):
['lport_count'] < max_ports)].pop(0)
except IndexError:
# Too bad, no switch available
LOG.debug(_("No switch has available ports (%d checked)") %
LOG.debug(_("No switch has available ports (%d checked)"),
len(lswitches))
if allow_extra_lswitches:
main_ls = [ls for ls in lswitches if ls['uuid'] == network.id]
@ -318,7 +318,7 @@ class NvpPluginV2(db_base_plugin_v2.QuantumDbPluginV2):
return selected_lswitch
else:
LOG.error(_("Maximum number of logical ports reached for "
"logical network %s") % network.id)
"logical network %s"), network.id)
raise nvp_exc.NvpNoMorePortsException(network=network.id)
def setup_rpc(self):
@ -368,7 +368,7 @@ class NvpPluginV2(db_base_plugin_v2.QuantumDbPluginV2):
if net_data['admin_state_up'] is False:
LOG.warning(_("Network with admin_state_up=False are not yet "
"supported by this plugin. Ignoring setting for "
"network %s") % net_data.get('name', '<unknown>'))
"network %s"), net_data.get('name', '<unknown>'))
tenant_id = self._get_tenant_id_for_create(context, net_data)
target_cluster = self._find_target_cluster(net_data)
lswitch = nvplib.create_lswitch(target_cluster,
@ -473,8 +473,8 @@ class NvpPluginV2(db_base_plugin_v2.QuantumDbPluginV2):
net_op_status = constants.NET_STATUS_DOWN
break
LOG.debug(_("Current network status:%(net_op_status)s; "
"Status in Quantum DB:%(quantum_status)s")
% locals())
"Status in Quantum DB:%(quantum_status)s"),
locals())
if net_op_status != network.status:
# update the network status
with context.session.begin(subtransactions=True):
@ -822,7 +822,7 @@ class NvpPluginV2(db_base_plugin_v2.QuantumDbPluginV2):
raise nvp_exc.NvpPluginException(err_desc=err_msg)
LOG.debug(_("create_port completed on NVP for tenant %(tenant_id)s: "
"(%(id)s)") % port_data)
"(%(id)s)"), port_data)
# update port on Quantum DB with admin_state_up True
port_update = {"port": {"admin_state_up": True}}

View File

@ -120,16 +120,18 @@ class NvpApiClient(object):
priority, conn = self._conn_pool.get()
now = time.time()
if getattr(conn, 'last_used', now) < now - self.CONN_IDLE_TIMEOUT:
LOG.info(_("[%d] Connection %s idle for %0.2f seconds; "
"reconnecting."),
rid, _conn_str(conn), now - conn.last_used)
LOG.info(_("[%(rid)d] Connection %(conn)s idle for %(sec)0.2f "
"seconds; reconnecting."),
{'rid': rid, 'conn': _conn_str(conn),
'sec': now - conn.last_used})
conn = self._create_connection(*self._conn_params(conn))
conn.last_used = now
conn.priority = priority # stash current priority for release
qsize = self._conn_pool.qsize()
LOG.debug(_("[%d] Acquired connection %s. %d connection(s) "
"available."), rid, _conn_str(conn), qsize)
LOG.debug(_("[%(rid)d] Acquired connection %(conn)s. %(qsize)d "
"connection(s) available."),
{'rid': rid, 'conn': _conn_str(conn), 'qsize': qsize})
if auto_login and self.auth_cookie(conn) is None:
self._wait_for_login(conn, headers)
return conn
@ -147,16 +149,18 @@ class NvpApiClient(object):
'''
conn_params = self._conn_params(http_conn)
if self._conn_params(http_conn) not in self._api_providers:
LOG.debug(_("[%d] Released connection '%s' is not an API provider "
"for the cluster"), rid, _conn_str(http_conn))
LOG.debug(_("[%(rid)d] Released connection %(conn)s is not an "
"API provider for the cluster"),
{'rid': rid, 'conn': _conn_str(http_conn)})
return
elif hasattr(http_conn, "no_release"):
return
if bad_state:
# Reconnect to provider.
LOG.warn(_("[%d] Connection returned in bad state, reconnecting "
"to %s"), rid, _conn_str(http_conn))
LOG.warn(_("[%(rid)d] Connection returned in bad state, "
"reconnecting to %(conn)s"),
{'rid': rid, 'conn': _conn_str(http_conn)})
http_conn = self._create_connection(*self._conn_params(http_conn))
priority = self._next_conn_priority
self._next_conn_priority += 1
@ -179,9 +183,10 @@ class NvpApiClient(object):
priority = http_conn.priority
self._conn_pool.put((priority, http_conn))
LOG.debug(_("[%d] Released connection %s. %d connection(s) "
"available."),
rid, _conn_str(http_conn), self._conn_pool.qsize())
LOG.debug(_("[%(rid)d] Released connection %(conn)s. %(qsize)d "
"connection(s) available."),
{'rid': rid, 'conn': _conn_str(http_conn),
'qsize': self._conn_pool.qsize()})
def _wait_for_login(self, conn, headers=None):
'''Block until a login has occurred for the current API provider.'''

View File

@ -87,13 +87,13 @@ class NvpApiRequest(object):
copy.copy(self._headers),
rid=self._rid()))
if conn is None:
error = Exception("No API connections available")
error = Exception(_("No API connections available"))
self._request_error = error
return error
url = self._url
LOG.debug(_("[%d] Issuing - request '%s'"),
self._rid(), self._request_str(conn, url))
LOG.debug(_("[%(rid)d] Issuing - request %(conn)s"),
{'rid': self._rid(), 'conn': self._request_str(conn, url)})
issued_time = time.time()
is_conn_error = False
is_conn_service_unavail = False
@ -117,26 +117,29 @@ class NvpApiRequest(object):
gen = self._api_client.nvp_config_gen
if gen:
headers["X-Nvp-Wait-For-Config-Generation"] = gen
LOG.debug(_("Setting %s request header: '%s'"),
'X-Nvp-Wait-For-Config-Generation', gen)
LOG.debug(_("Setting X-Nvp-Wait-For-Config-Generation "
"request header: '%s'"), gen)
try:
conn.request(self._method, url, self._body, headers)
except Exception as e:
LOG.warn(_("[%d] Exception issuing request: '%s'"),
self._rid(), e)
LOG.warn(_("[%(rid)d] Exception issuing request: %(e)s"),
{'rid': self._rid(), 'e': e})
raise e
response = conn.getresponse()
response.body = response.read()
response.headers = response.getheaders()
LOG.debug(_("[%d] Completed request '%s': %s (%0.2f seconds)"),
self._rid(), self._request_str(conn, url),
response.status, time.time() - issued_time)
LOG.debug(_("[%(rid)d] Completed request '%(conn)s': "
"%(status)s (%(sec)0.2f seconds)"),
{'rid': self._rid(),
'conn': self._request_str(conn, url),
'status': response.status,
'sec': time.time() - issued_time})
new_gen = response.getheader('X-Nvp-Config-Generation', None)
if new_gen:
LOG.debug(_("Reading '%s' response header: '%s'"),
'X-Nvp-config-Generation', new_gen)
LOG.debug(_("Reading X-Nvp-config-Generation response "
"header: '%s'"), new_gen)
if (self._api_client.nvp_config_gen is None or
self._api_client.nvp_config_gen < int(new_gen)):
self._api_client.nvp_config_gen = int(new_gen)
@ -174,8 +177,9 @@ class NvpApiRequest(object):
if url is None:
response.status = httplib.INTERNAL_SERVER_ERROR
break
LOG.info(_("[%d] Redirecting request to: '%s'"),
self._rid(), self._request_str(conn, url))
LOG.info(_("[%(rid)d] Redirecting request to: %(conn)s"),
{'rid': self._rid(),
'conn': self._request_str(conn, url)})
# If we receive any of these responses, then
# our server did not process our request and may be in an
@ -184,20 +188,21 @@ class NvpApiRequest(object):
# which puts the conn on the back of the client's priority
# queue.
if response.status >= 500:
LOG.warn(_("[%d] Request '%s %s' received: %s"),
self._rid(), self._method, self._url,
response.status)
raise Exception('Server error return: %s' %
response.status)
LOG.warn(_("[%(rid)d] Request '%(method) %(url)s' "
"received: %(status)s"),
{'rid': self._rid(), 'method': self._method,
'url': self._url, 'status': response.status})
raise Exception(_('Server error return: %s'), response.status)
return response
except Exception as e:
if isinstance(e, httplib.BadStatusLine):
msg = "Invalid server response"
msg = (_("Invalid server response"))
else:
msg = unicode(e)
LOG.warn(_("[%d] Failed request '%s': '%s' (%0.2f seconds)"),
self._rid(), self._request_str(conn, url), msg,
time.time() - issued_time)
LOG.warn(_("[%(rid)d] Failed request '%(conn)s': '%(msg)s' "
"(%(sec)0.2f seconds)"),
{'rid': self._rid(), 'conn': self._request_str(conn, url),
'msg': msg, 'sec': time.time() - issued_time})
self._request_error = e
is_conn_error = True
return e
@ -245,12 +250,12 @@ class NvpApiRequest(object):
url = result.path
return (conn, url) # case 1
else:
LOG.warn(_("[%d] Received invalid redirect location: '%s'"),
self._rid(), url)
LOG.warn(_("[%(rid)d] Received invalid redirect location: "
"'%(url)s'"), {'rid': self._rid(), 'url': url})
return (conn, None) # case 3
elif result.scheme not in ["http", "https"] or not result.hostname:
LOG.warn(_("[%d] Received malformed redirect location: %s"),
self._rid(), url)
LOG.warn(_("[%(rid)d] Received malformed redirect "
"location: %(url)s"), {'rid': self._rid(), 'url': url})
return (conn, None) # case 3
# case 2, redirect location includes a scheme
# so setup a new connection and authenticate

View File

@ -29,7 +29,7 @@ from quantum.plugins.nicira.nicira_nvp_plugin.api_client import request
eventlet.monkey_patch()
logging.basicConfig(level=logging.INFO)
LOG = logging.getLogger(__name__)
USER_AGENT = "NVP eventlet client/1.0"
USER_AGENT = "NVP Quantum eventlet client/2.0"
class NvpApiRequestEventlet(request.NvpApiRequest):

View File

@ -253,7 +253,7 @@ def create_lswitch(cluster, tenant_id, display_name,
except NvpApiClient.NvpApiException:
raise exception.QuantumException()
lswitch = json.loads(lswitch_res)
LOG.debug(_("Created logical switch: %s") % lswitch['uuid'])
LOG.debug(_("Created logical switch: %s"), lswitch['uuid'])
return lswitch
@ -471,12 +471,12 @@ def create_lport(cluster, lswitch_uuid, tenant_id, quantum_port_id,
json.dumps(lport_obj),
cluster=cluster)
except NvpApiClient.ResourceNotFound as e:
LOG.error("Logical switch not found, Error: %s" % str(e))
LOG.error(_("Logical switch not found, Error: %s"), str(e))
raise
result = json.loads(resp_obj)
LOG.debug("Created logical port %s on logical swtich %s"
% (result['uuid'], lswitch_uuid))
LOG.debug(_("Created logical port %(result)s on logical swtich %(uuid)s"),
{'result': result['uuid'], 'uuid': lswitch_uuid})
return result