Merge with trunk
This commit is contained in:
@@ -1,59 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
|
||||||
|
|
||||||
# Copyright 2010 United States Government as represented by the
|
|
||||||
# Administrator of the National Aeronautics and Space Administration.
|
|
||||||
# All Rights Reserved.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
||||||
# not use this file except in compliance with the License. You may obtain
|
|
||||||
# a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
||||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
||||||
# License for the specific language governing permissions and limitations
|
|
||||||
# under the License.
|
|
||||||
|
|
||||||
"""
|
|
||||||
Daemon for Nova RRD based instance resource monitoring.
|
|
||||||
"""
|
|
||||||
|
|
||||||
import gettext
|
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
from twisted.application import service
|
|
||||||
|
|
||||||
# If ../nova/__init__.py exists, add ../ to Python search path, so that
|
|
||||||
# it will override what happens to be installed in /usr/(local/)lib/python...
|
|
||||||
possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]),
|
|
||||||
os.pardir,
|
|
||||||
os.pardir))
|
|
||||||
if os.path.exists(os.path.join(possible_topdir, 'nova', '__init__.py')):
|
|
||||||
sys.path.insert(0, possible_topdir)
|
|
||||||
|
|
||||||
gettext.install('nova', unicode=1)
|
|
||||||
|
|
||||||
from nova import log as logging
|
|
||||||
from nova import utils
|
|
||||||
from nova import twistd
|
|
||||||
from nova.compute import monitor
|
|
||||||
|
|
||||||
LOG = logging.getLogger('nova.instancemonitor')
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
utils.default_flagfile()
|
|
||||||
twistd.serve(__file__)
|
|
||||||
|
|
||||||
if __name__ == '__builtin__':
|
|
||||||
LOG.warn(_('Starting instance monitor'))
|
|
||||||
# pylint: disable=C0103
|
|
||||||
monitor = monitor.InstanceMonitor()
|
|
||||||
|
|
||||||
# This is the parent service that twistd will be looking for when it
|
|
||||||
# parses this file, return it so that we can get it into globals below
|
|
||||||
application = service.Application('nova-instancemonitor')
|
|
||||||
monitor.setServiceParent(application)
|
|
||||||
@@ -81,7 +81,6 @@ class LogReader(object):
|
|||||||
if level == 'ERROR':
|
if level == 'ERROR':
|
||||||
self.handle_logged_error(line)
|
self.handle_logged_error(line)
|
||||||
elif level == '[-]' and self.last_error:
|
elif level == '[-]' and self.last_error:
|
||||||
# twisted stack trace line
|
|
||||||
clean_line = " ".join(line.split(" ")[6:])
|
clean_line = " ".join(line.split(" ")[6:])
|
||||||
self.last_error.trace = self.last_error.trace + clean_line
|
self.last_error.trace = self.last_error.trace + clean_line
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -662,8 +662,9 @@ class NetworkCommands(object):
|
|||||||
# check for certain required inputs
|
# check for certain required inputs
|
||||||
if not label:
|
if not label:
|
||||||
raise exception.NetworkNotCreated(req='--label')
|
raise exception.NetworkNotCreated(req='--label')
|
||||||
if not fixed_range_v4:
|
if not (fixed_range_v4 or fixed_range_v6):
|
||||||
raise exception.NetworkNotCreated(req='--fixed_range_v4')
|
req = '--fixed_range_v4 or --fixed_range_v6'
|
||||||
|
raise exception.NetworkNotCreated(req=req)
|
||||||
|
|
||||||
bridge = bridge or FLAGS.flat_network_bridge
|
bridge = bridge or FLAGS.flat_network_bridge
|
||||||
if not bridge:
|
if not bridge:
|
||||||
@@ -689,16 +690,6 @@ class NetworkCommands(object):
|
|||||||
if FLAGS.network_manager in interface_required:
|
if FLAGS.network_manager in interface_required:
|
||||||
raise exception.NetworkNotCreated(req='--bridge_interface')
|
raise exception.NetworkNotCreated(req='--bridge_interface')
|
||||||
|
|
||||||
if FLAGS.use_ipv6:
|
|
||||||
fixed_range_v6 = fixed_range_v6 or FLAGS.fixed_range_v6
|
|
||||||
if not fixed_range_v6:
|
|
||||||
raise exception.NetworkNotCreated(req='with use_ipv6, '
|
|
||||||
'--fixed_range_v6')
|
|
||||||
gateway_v6 = gateway_v6 or FLAGS.gateway_v6
|
|
||||||
if not gateway_v6:
|
|
||||||
raise exception.NetworkNotCreated(req='with use_ipv6, '
|
|
||||||
'--gateway_v6')
|
|
||||||
|
|
||||||
# sanitize other input using FLAGS if necessary
|
# sanitize other input using FLAGS if necessary
|
||||||
if not num_networks:
|
if not num_networks:
|
||||||
num_networks = FLAGS.num_networks
|
num_networks = FLAGS.num_networks
|
||||||
@@ -735,8 +726,8 @@ class NetworkCommands(object):
|
|||||||
def list(self):
|
def list(self):
|
||||||
"""List all created networks"""
|
"""List all created networks"""
|
||||||
print "%-18s\t%-15s\t%-15s\t%-15s\t%-15s\t%-15s\t%-15s" % (
|
print "%-18s\t%-15s\t%-15s\t%-15s\t%-15s\t%-15s\t%-15s" % (
|
||||||
_('network'),
|
_('IPv4'),
|
||||||
_('netmask'),
|
_('IPv6'),
|
||||||
_('start address'),
|
_('start address'),
|
||||||
_('DNS1'),
|
_('DNS1'),
|
||||||
_('DNS2'),
|
_('DNS2'),
|
||||||
@@ -745,7 +736,7 @@ class NetworkCommands(object):
|
|||||||
for network in db.network_get_all(context.get_admin_context()):
|
for network in db.network_get_all(context.get_admin_context()):
|
||||||
print "%-18s\t%-15s\t%-15s\t%-15s\t%-15s\t%-15s\t%-15s" % (
|
print "%-18s\t%-15s\t%-15s\t%-15s\t%-15s\t%-15s\t%-15s" % (
|
||||||
network.cidr,
|
network.cidr,
|
||||||
network.netmask,
|
network.cidr_v6,
|
||||||
network.dhcp_start,
|
network.dhcp_start,
|
||||||
network.dns1,
|
network.dns1,
|
||||||
network.dns2,
|
network.dns2,
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Twisted daemon for nova objectstore. Supports S3 API.
|
Daemon for nova objectstore. Supports S3 API.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import gettext
|
import gettext
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ class DbApiTestCase(test.TestCase):
|
|||||||
def test_instance_get_project_vpn(self):
|
def test_instance_get_project_vpn(self):
|
||||||
values = {'instance_type_id': FLAGS.default_instance_type,
|
values = {'instance_type_id': FLAGS.default_instance_type,
|
||||||
'image_ref': FLAGS.vpn_image_id,
|
'image_ref': FLAGS.vpn_image_id,
|
||||||
'project_id': self.project_id
|
'project_id': self.project_id,
|
||||||
}
|
}
|
||||||
instance = db.instance_create(self.context, values)
|
instance = db.instance_create(self.context, values)
|
||||||
result = db.instance_get_project_vpn(self.context.elevated(),
|
result = db.instance_get_project_vpn(self.context.elevated(),
|
||||||
@@ -67,7 +67,7 @@ class DbApiTestCase(test.TestCase):
|
|||||||
def test_instance_get_project_vpn_joins(self):
|
def test_instance_get_project_vpn_joins(self):
|
||||||
values = {'instance_type_id': FLAGS.default_instance_type,
|
values = {'instance_type_id': FLAGS.default_instance_type,
|
||||||
'image_ref': FLAGS.vpn_image_id,
|
'image_ref': FLAGS.vpn_image_id,
|
||||||
'project_id': self.project_id
|
'project_id': self.project_id,
|
||||||
}
|
}
|
||||||
instance = db.instance_create(self.context, values)
|
instance = db.instance_create(self.context, values)
|
||||||
_setup_networking(instance['id'])
|
_setup_networking(instance['id'])
|
||||||
|
|||||||
@@ -346,7 +346,7 @@ class LibvirtConnTestCase(test.TestCase):
|
|||||||
self.mox.ReplayAll()
|
self.mox.ReplayAll()
|
||||||
|
|
||||||
conn = connection.LibvirtConnection(False)
|
conn = connection.LibvirtConnection(False)
|
||||||
conn.snapshot(instance_ref, recv_meta['id'])
|
conn.snapshot(self.context, instance_ref, recv_meta['id'])
|
||||||
|
|
||||||
snapshot = image_service.show(context, recv_meta['id'])
|
snapshot = image_service.show(context, recv_meta['id'])
|
||||||
self.assertEquals(snapshot['properties']['image_state'], 'available')
|
self.assertEquals(snapshot['properties']['image_state'], 'available')
|
||||||
@@ -386,7 +386,7 @@ class LibvirtConnTestCase(test.TestCase):
|
|||||||
self.mox.ReplayAll()
|
self.mox.ReplayAll()
|
||||||
|
|
||||||
conn = connection.LibvirtConnection(False)
|
conn = connection.LibvirtConnection(False)
|
||||||
conn.snapshot(instance_ref, recv_meta['id'])
|
conn.snapshot(self.context, instance_ref, recv_meta['id'])
|
||||||
|
|
||||||
snapshot = image_service.show(context, recv_meta['id'])
|
snapshot = image_service.show(context, recv_meta['id'])
|
||||||
self.assertEquals(snapshot['properties']['image_state'], 'available')
|
self.assertEquals(snapshot['properties']['image_state'], 'available')
|
||||||
@@ -736,7 +736,7 @@ class LibvirtConnTestCase(test.TestCase):
|
|||||||
network_info = _create_network_info()
|
network_info = _create_network_info()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
conn.spawn(instance, network_info)
|
conn.spawn(self.context, instance, network_info)
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
count = (0 <= str(e.message).find('Unexpected method call'))
|
count = (0 <= str(e.message).find('Unexpected method call'))
|
||||||
|
|
||||||
|
|||||||
@@ -1,53 +0,0 @@
|
|||||||
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
|
||||||
|
|
||||||
# Copyright 2010 United States Government as represented by the
|
|
||||||
# Administrator of the National Aeronautics and Space Administration.
|
|
||||||
# All Rights Reserved.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
||||||
# not use this file except in compliance with the License. You may obtain
|
|
||||||
# a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
||||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
||||||
# License for the specific language governing permissions and limitations
|
|
||||||
# under the License.
|
|
||||||
|
|
||||||
import StringIO
|
|
||||||
import sys
|
|
||||||
|
|
||||||
from nova import twistd
|
|
||||||
from nova import exception
|
|
||||||
from nova import flags
|
|
||||||
from nova import test
|
|
||||||
|
|
||||||
|
|
||||||
FLAGS = flags.FLAGS
|
|
||||||
|
|
||||||
|
|
||||||
class TwistdTestCase(test.TestCase):
|
|
||||||
def setUp(self):
|
|
||||||
super(TwistdTestCase, self).setUp()
|
|
||||||
self.Options = twistd.WrapTwistedOptions(twistd.TwistdServerOptions)
|
|
||||||
sys.stdout = StringIO.StringIO()
|
|
||||||
|
|
||||||
def tearDown(self):
|
|
||||||
super(TwistdTestCase, self).tearDown()
|
|
||||||
sys.stdout = sys.__stdout__
|
|
||||||
|
|
||||||
def test_basic(self):
|
|
||||||
options = self.Options()
|
|
||||||
argv = options.parseOptions()
|
|
||||||
|
|
||||||
def test_logfile(self):
|
|
||||||
options = self.Options()
|
|
||||||
argv = options.parseOptions(['--logfile=foo'])
|
|
||||||
self.assertEqual(FLAGS.logfile, 'foo')
|
|
||||||
|
|
||||||
def test_help(self):
|
|
||||||
options = self.Options()
|
|
||||||
self.assertRaises(SystemExit, options.parseOptions, ['--help'])
|
|
||||||
self.assert_('pidfile' in sys.stdout.getvalue())
|
|
||||||
@@ -40,6 +40,7 @@ class VMWareAPIVMTestCase(test.TestCase):
|
|||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(VMWareAPIVMTestCase, self).setUp()
|
super(VMWareAPIVMTestCase, self).setUp()
|
||||||
|
self.context = context.RequestContext('fake', 'fake', False)
|
||||||
self.flags(vmwareapi_host_ip='test_url',
|
self.flags(vmwareapi_host_ip='test_url',
|
||||||
vmwareapi_host_username='test_username',
|
vmwareapi_host_username='test_username',
|
||||||
vmwareapi_host_password='test_pass')
|
vmwareapi_host_password='test_pass')
|
||||||
@@ -94,7 +95,7 @@ class VMWareAPIVMTestCase(test.TestCase):
|
|||||||
"""Create and spawn the VM."""
|
"""Create and spawn the VM."""
|
||||||
self._create_instance_in_the_db()
|
self._create_instance_in_the_db()
|
||||||
self.type_data = db.instance_type_get_by_name(None, 'm1.large')
|
self.type_data = db.instance_type_get_by_name(None, 'm1.large')
|
||||||
self.conn.spawn(self.instance, self.network_info)
|
self.conn.spawn(self.context, self.instance, self.network_info)
|
||||||
self._check_vm_record()
|
self._check_vm_record()
|
||||||
|
|
||||||
def _check_vm_record(self):
|
def _check_vm_record(self):
|
||||||
@@ -156,14 +157,14 @@ class VMWareAPIVMTestCase(test.TestCase):
|
|||||||
self._create_vm()
|
self._create_vm()
|
||||||
info = self.conn.get_info(1)
|
info = self.conn.get_info(1)
|
||||||
self._check_vm_info(info, power_state.RUNNING)
|
self._check_vm_info(info, power_state.RUNNING)
|
||||||
self.conn.snapshot(self.instance, "Test-Snapshot")
|
self.conn.snapshot(self.context, self.instance, "Test-Snapshot")
|
||||||
info = self.conn.get_info(1)
|
info = self.conn.get_info(1)
|
||||||
self._check_vm_info(info, power_state.RUNNING)
|
self._check_vm_info(info, power_state.RUNNING)
|
||||||
|
|
||||||
def test_snapshot_non_existent(self):
|
def test_snapshot_non_existent(self):
|
||||||
self._create_instance_in_the_db()
|
self._create_instance_in_the_db()
|
||||||
self.assertRaises(Exception, self.conn.snapshot, self.instance,
|
self.assertRaises(Exception, self.conn.snapshot, self.context,
|
||||||
"Test-Snapshot")
|
self.instance, "Test-Snapshot")
|
||||||
|
|
||||||
def test_reboot(self):
|
def test_reboot(self):
|
||||||
self._create_vm()
|
self._create_vm()
|
||||||
|
|||||||
@@ -226,7 +226,7 @@ class XenAPIVMTestCase(test.TestCase):
|
|||||||
'mac': 'DE:AD:BE:EF:00:00',
|
'mac': 'DE:AD:BE:EF:00:00',
|
||||||
'rxtx_cap': 3})]
|
'rxtx_cap': 3})]
|
||||||
instance = db.instance_create(self.context, values)
|
instance = db.instance_create(self.context, values)
|
||||||
self.conn.spawn(instance, network_info)
|
self.conn.spawn(self.context, instance, network_info)
|
||||||
|
|
||||||
gt1 = eventlet.spawn(_do_build, 1, self.project_id, self.user_id)
|
gt1 = eventlet.spawn(_do_build, 1, self.project_id, self.user_id)
|
||||||
gt2 = eventlet.spawn(_do_build, 2, self.project_id, self.user_id)
|
gt2 = eventlet.spawn(_do_build, 2, self.project_id, self.user_id)
|
||||||
@@ -256,14 +256,15 @@ class XenAPIVMTestCase(test.TestCase):
|
|||||||
instance = self._create_instance()
|
instance = self._create_instance()
|
||||||
|
|
||||||
name = "MySnapshot"
|
name = "MySnapshot"
|
||||||
self.assertRaises(exception.Error, self.conn.snapshot, instance, name)
|
self.assertRaises(exception.Error, self.conn.snapshot,
|
||||||
|
self.context, instance, name)
|
||||||
|
|
||||||
def test_instance_snapshot(self):
|
def test_instance_snapshot(self):
|
||||||
stubs.stubout_instance_snapshot(self.stubs)
|
stubs.stubout_instance_snapshot(self.stubs)
|
||||||
instance = self._create_instance()
|
instance = self._create_instance()
|
||||||
|
|
||||||
name = "MySnapshot"
|
name = "MySnapshot"
|
||||||
template_vm_ref = self.conn.snapshot(instance, name)
|
template_vm_ref = self.conn.snapshot(self.context, instance, name)
|
||||||
|
|
||||||
def ensure_vm_was_torn_down():
|
def ensure_vm_was_torn_down():
|
||||||
vm_labels = []
|
vm_labels = []
|
||||||
@@ -425,7 +426,7 @@ class XenAPIVMTestCase(test.TestCase):
|
|||||||
'label': 'fake',
|
'label': 'fake',
|
||||||
'mac': 'DE:AD:BE:EF:00:00',
|
'mac': 'DE:AD:BE:EF:00:00',
|
||||||
'rxtx_cap': 3})]
|
'rxtx_cap': 3})]
|
||||||
self.conn.spawn(instance, network_info)
|
self.conn.spawn(self.context, instance, network_info)
|
||||||
self.create_vm_record(self.conn, os_type, instance_id)
|
self.create_vm_record(self.conn, os_type, instance_id)
|
||||||
self.check_vm_record(self.conn, check_injection)
|
self.check_vm_record(self.conn, check_injection)
|
||||||
self.assertTrue(instance.os_type)
|
self.assertTrue(instance.os_type)
|
||||||
@@ -629,7 +630,7 @@ class XenAPIVMTestCase(test.TestCase):
|
|||||||
self.flags(flat_injected=False)
|
self.flags(flat_injected=False)
|
||||||
instance = self._create_instance()
|
instance = self._create_instance()
|
||||||
conn = xenapi_conn.get_connection(False)
|
conn = xenapi_conn.get_connection(False)
|
||||||
conn.rescue(instance, None, [])
|
conn.rescue(self.context, instance, None, [])
|
||||||
|
|
||||||
def test_unrescue(self):
|
def test_unrescue(self):
|
||||||
instance = self._create_instance()
|
instance = self._create_instance()
|
||||||
@@ -666,7 +667,7 @@ class XenAPIVMTestCase(test.TestCase):
|
|||||||
'mac': 'DE:AD:BE:EF:00:00',
|
'mac': 'DE:AD:BE:EF:00:00',
|
||||||
'rxtx_cap': 3})]
|
'rxtx_cap': 3})]
|
||||||
if spawn:
|
if spawn:
|
||||||
self.conn.spawn(instance, network_info)
|
self.conn.spawn(self.context, instance, network_info)
|
||||||
return instance
|
return instance
|
||||||
|
|
||||||
|
|
||||||
@@ -776,7 +777,8 @@ class XenAPIMigrateInstance(test.TestCase):
|
|||||||
'label': 'fake',
|
'label': 'fake',
|
||||||
'mac': 'DE:AD:BE:EF:00:00',
|
'mac': 'DE:AD:BE:EF:00:00',
|
||||||
'rxtx_cap': 3})]
|
'rxtx_cap': 3})]
|
||||||
conn.finish_migration(instance, dict(base_copy='hurr', cow='durr'),
|
conn.finish_migration(self.context, instance,
|
||||||
|
dict(base_copy='hurr', cow='durr'),
|
||||||
network_info, resize_instance=True)
|
network_info, resize_instance=True)
|
||||||
self.assertEqual(self.called, True)
|
self.assertEqual(self.called, True)
|
||||||
|
|
||||||
@@ -808,7 +810,8 @@ class XenAPIMigrateInstance(test.TestCase):
|
|||||||
'label': 'fake',
|
'label': 'fake',
|
||||||
'mac': 'DE:AD:BE:EF:00:00',
|
'mac': 'DE:AD:BE:EF:00:00',
|
||||||
'rxtx_cap': 3})]
|
'rxtx_cap': 3})]
|
||||||
conn.finish_migration(instance, dict(base_copy='hurr', cow='durr'),
|
conn.finish_migration(self.context, instance,
|
||||||
|
dict(base_copy='hurr', cow='durr'),
|
||||||
network_info, resize_instance=True)
|
network_info, resize_instance=True)
|
||||||
|
|
||||||
def test_finish_migrate_no_resize_vdi(self):
|
def test_finish_migrate_no_resize_vdi(self):
|
||||||
@@ -838,7 +841,8 @@ class XenAPIMigrateInstance(test.TestCase):
|
|||||||
'rxtx_cap': 3})]
|
'rxtx_cap': 3})]
|
||||||
|
|
||||||
# Resize instance would be determined by the compute call
|
# Resize instance would be determined by the compute call
|
||||||
conn.finish_migration(instance, dict(base_copy='hurr', cow='durr'),
|
conn.finish_migration(self.context, instance,
|
||||||
|
dict(base_copy='hurr', cow='durr'),
|
||||||
network_info, resize_instance=False)
|
network_info, resize_instance=False)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -28,8 +28,8 @@ from nova import utils
|
|||||||
|
|
||||||
def stubout_instance_snapshot(stubs):
|
def stubout_instance_snapshot(stubs):
|
||||||
@classmethod
|
@classmethod
|
||||||
def fake_fetch_image(cls, session, instance_id, image, user, project,
|
def fake_fetch_image(cls, context, session, instance_id, image, user,
|
||||||
type):
|
project, type):
|
||||||
from nova.virt.xenapi.fake import create_vdi
|
from nova.virt.xenapi.fake import create_vdi
|
||||||
name_label = "instance-%s" % instance_id
|
name_label = "instance-%s" % instance_id
|
||||||
#TODO: create fake SR record
|
#TODO: create fake SR record
|
||||||
@@ -227,7 +227,7 @@ def stub_out_vm_methods(stubs):
|
|||||||
def fake_release_bootlock(self, vm):
|
def fake_release_bootlock(self, vm):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def fake_spawn_rescue(self, inst):
|
def fake_spawn_rescue(self, context, inst, network_info):
|
||||||
inst._rescue = False
|
inst._rescue = False
|
||||||
|
|
||||||
stubs.Set(vmops.VMOps, "_shutdown", fake_shutdown)
|
stubs.Set(vmops.VMOps, "_shutdown", fake_shutdown)
|
||||||
|
|||||||
267
nova/twistd.py
267
nova/twistd.py
@@ -1,267 +0,0 @@
|
|||||||
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
|
||||||
|
|
||||||
# Copyright 2010 United States Government as represented by the
|
|
||||||
# Administrator of the National Aeronautics and Space Administration.
|
|
||||||
# All Rights Reserved.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
||||||
# not use this file except in compliance with the License. You may obtain
|
|
||||||
# a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
||||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
||||||
# License for the specific language governing permissions and limitations
|
|
||||||
# under the License.
|
|
||||||
|
|
||||||
"""
|
|
||||||
Twisted daemon helpers, specifically to parse out gFlags from twisted flags,
|
|
||||||
manage pid files and support syslogging.
|
|
||||||
"""
|
|
||||||
|
|
||||||
import gflags
|
|
||||||
import os
|
|
||||||
import signal
|
|
||||||
import sys
|
|
||||||
import time
|
|
||||||
from twisted.scripts import twistd
|
|
||||||
from twisted.python import log
|
|
||||||
from twisted.python import reflect
|
|
||||||
from twisted.python import runtime
|
|
||||||
from twisted.python import usage
|
|
||||||
|
|
||||||
from nova import flags
|
|
||||||
from nova import log as logging
|
|
||||||
|
|
||||||
|
|
||||||
if runtime.platformType == "win32":
|
|
||||||
from twisted.scripts._twistw import ServerOptions
|
|
||||||
else:
|
|
||||||
from twisted.scripts._twistd_unix import ServerOptions
|
|
||||||
|
|
||||||
|
|
||||||
FLAGS = flags.FLAGS
|
|
||||||
|
|
||||||
|
|
||||||
class TwistdServerOptions(ServerOptions):
|
|
||||||
def parseArgs(self, *args):
|
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
class FlagParser(object):
|
|
||||||
# this is a required attribute for gflags
|
|
||||||
syntactic_help = ''
|
|
||||||
|
|
||||||
def __init__(self, parser):
|
|
||||||
self.parser = parser
|
|
||||||
|
|
||||||
def Parse(self, s):
|
|
||||||
return self.parser(s)
|
|
||||||
|
|
||||||
|
|
||||||
def WrapTwistedOptions(wrapped):
|
|
||||||
class TwistedOptionsToFlags(wrapped):
|
|
||||||
subCommands = None
|
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
# NOTE(termie): _data exists because Twisted stuff expects
|
|
||||||
# to be able to set arbitrary things that are
|
|
||||||
# not actual flags
|
|
||||||
self._data = {}
|
|
||||||
self._flagHandlers = {}
|
|
||||||
self._paramHandlers = {}
|
|
||||||
|
|
||||||
# Absorb the twistd flags into our FLAGS
|
|
||||||
self._absorbFlags()
|
|
||||||
self._absorbParameters()
|
|
||||||
self._absorbHandlers()
|
|
||||||
|
|
||||||
wrapped.__init__(self)
|
|
||||||
|
|
||||||
def _absorbFlags(self):
|
|
||||||
twistd_flags = []
|
|
||||||
reflect.accumulateClassList(self.__class__, 'optFlags',
|
|
||||||
twistd_flags)
|
|
||||||
for flag in twistd_flags:
|
|
||||||
key = flag[0].replace('-', '_')
|
|
||||||
if hasattr(FLAGS, key):
|
|
||||||
continue
|
|
||||||
flags.DEFINE_boolean(key, None, str(flag[-1]))
|
|
||||||
|
|
||||||
def _absorbParameters(self):
|
|
||||||
twistd_params = []
|
|
||||||
reflect.accumulateClassList(self.__class__, 'optParameters',
|
|
||||||
twistd_params)
|
|
||||||
for param in twistd_params:
|
|
||||||
key = param[0].replace('-', '_')
|
|
||||||
if hasattr(FLAGS, key):
|
|
||||||
continue
|
|
||||||
if len(param) > 4:
|
|
||||||
flags.DEFINE(FlagParser(param[4]),
|
|
||||||
key, param[2], str(param[3]),
|
|
||||||
serializer=gflags.ArgumentSerializer())
|
|
||||||
else:
|
|
||||||
flags.DEFINE_string(key, param[2], str(param[3]))
|
|
||||||
|
|
||||||
def _absorbHandlers(self):
|
|
||||||
twistd_handlers = {}
|
|
||||||
reflect.addMethodNamesToDict(self.__class__, twistd_handlers,
|
|
||||||
"opt_")
|
|
||||||
|
|
||||||
# NOTE(termie): Much of the following is derived/copied from
|
|
||||||
# twisted.python.usage with the express purpose of
|
|
||||||
# providing compatibility
|
|
||||||
for name in twistd_handlers.keys():
|
|
||||||
method = getattr(self, 'opt_' + name)
|
|
||||||
|
|
||||||
takesArg = not usage.flagFunction(method, name)
|
|
||||||
doc = getattr(method, '__doc__', None)
|
|
||||||
if not doc:
|
|
||||||
doc = 'undocumented'
|
|
||||||
|
|
||||||
if not takesArg:
|
|
||||||
if name not in FLAGS:
|
|
||||||
flags.DEFINE_boolean(name, None, doc)
|
|
||||||
self._flagHandlers[name] = method
|
|
||||||
else:
|
|
||||||
if name not in FLAGS:
|
|
||||||
flags.DEFINE_string(name, None, doc)
|
|
||||||
self._paramHandlers[name] = method
|
|
||||||
|
|
||||||
def _doHandlers(self):
|
|
||||||
for flag, handler in self._flagHandlers.iteritems():
|
|
||||||
if self[flag]:
|
|
||||||
handler()
|
|
||||||
for param, handler in self._paramHandlers.iteritems():
|
|
||||||
if self[param] is not None:
|
|
||||||
handler(self[param])
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return str(FLAGS)
|
|
||||||
|
|
||||||
def parseOptions(self, options=None):
|
|
||||||
if options is None:
|
|
||||||
options = sys.argv
|
|
||||||
else:
|
|
||||||
options.insert(0, '')
|
|
||||||
|
|
||||||
args = FLAGS(options)
|
|
||||||
logging.setup()
|
|
||||||
argv = args[1:]
|
|
||||||
# ignore subcommands
|
|
||||||
|
|
||||||
try:
|
|
||||||
self.parseArgs(*argv)
|
|
||||||
except TypeError:
|
|
||||||
raise usage.UsageError(_("Wrong number of arguments."))
|
|
||||||
|
|
||||||
self.postOptions()
|
|
||||||
return args
|
|
||||||
|
|
||||||
def parseArgs(self, *args):
|
|
||||||
# TODO(termie): figure out a decent way of dealing with args
|
|
||||||
#return
|
|
||||||
wrapped.parseArgs(self, *args)
|
|
||||||
|
|
||||||
def postOptions(self):
|
|
||||||
self._doHandlers()
|
|
||||||
|
|
||||||
wrapped.postOptions(self)
|
|
||||||
|
|
||||||
def __getitem__(self, key):
|
|
||||||
key = key.replace('-', '_')
|
|
||||||
try:
|
|
||||||
return getattr(FLAGS, key)
|
|
||||||
except (AttributeError, KeyError):
|
|
||||||
return self._data[key]
|
|
||||||
|
|
||||||
def __setitem__(self, key, value):
|
|
||||||
key = key.replace('-', '_')
|
|
||||||
try:
|
|
||||||
return setattr(FLAGS, key, value)
|
|
||||||
except (AttributeError, KeyError):
|
|
||||||
self._data[key] = value
|
|
||||||
|
|
||||||
def get(self, key, default):
|
|
||||||
key = key.replace('-', '_')
|
|
||||||
try:
|
|
||||||
return getattr(FLAGS, key)
|
|
||||||
except (AttributeError, KeyError):
|
|
||||||
self._data.get(key, default)
|
|
||||||
|
|
||||||
return TwistedOptionsToFlags
|
|
||||||
|
|
||||||
|
|
||||||
def stop(pidfile):
|
|
||||||
"""
|
|
||||||
Stop the daemon
|
|
||||||
"""
|
|
||||||
# Get the pid from the pidfile
|
|
||||||
try:
|
|
||||||
pf = file(pidfile, 'r')
|
|
||||||
pid = int(pf.read().strip())
|
|
||||||
pf.close()
|
|
||||||
except IOError:
|
|
||||||
pid = None
|
|
||||||
|
|
||||||
if not pid:
|
|
||||||
message = _("pidfile %s does not exist. Daemon not running?\n")
|
|
||||||
sys.stderr.write(message % pidfile)
|
|
||||||
# Not an error in a restart
|
|
||||||
return
|
|
||||||
|
|
||||||
# Try killing the daemon process
|
|
||||||
try:
|
|
||||||
while 1:
|
|
||||||
os.kill(pid, signal.SIGKILL)
|
|
||||||
time.sleep(0.1)
|
|
||||||
except OSError, err:
|
|
||||||
err = str(err)
|
|
||||||
if err.find(_("No such process")) > 0:
|
|
||||||
if os.path.exists(pidfile):
|
|
||||||
os.remove(pidfile)
|
|
||||||
else:
|
|
||||||
print str(err)
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
|
|
||||||
def serve(filename):
|
|
||||||
logging.debug(_("Serving %s") % filename)
|
|
||||||
name = os.path.basename(filename)
|
|
||||||
OptionsClass = WrapTwistedOptions(TwistdServerOptions)
|
|
||||||
options = OptionsClass()
|
|
||||||
argv = options.parseOptions()
|
|
||||||
FLAGS.python = filename
|
|
||||||
FLAGS.no_save = True
|
|
||||||
if not FLAGS.pidfile:
|
|
||||||
FLAGS.pidfile = '%s.pid' % name
|
|
||||||
elif FLAGS.pidfile.endswith('twistd.pid'):
|
|
||||||
FLAGS.pidfile = FLAGS.pidfile.replace('twistd.pid', '%s.pid' % name)
|
|
||||||
if not FLAGS.prefix:
|
|
||||||
FLAGS.prefix = name
|
|
||||||
elif FLAGS.prefix.endswith('twisted'):
|
|
||||||
FLAGS.prefix = FLAGS.prefix.replace('twisted', name)
|
|
||||||
|
|
||||||
action = 'start'
|
|
||||||
if len(argv) > 1:
|
|
||||||
action = argv.pop()
|
|
||||||
|
|
||||||
if action == 'stop':
|
|
||||||
stop(FLAGS.pidfile)
|
|
||||||
sys.exit()
|
|
||||||
elif action == 'restart':
|
|
||||||
stop(FLAGS.pidfile)
|
|
||||||
elif action == 'start':
|
|
||||||
pass
|
|
||||||
else:
|
|
||||||
print 'usage: %s [options] [start|stop|restart]' % argv[0]
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
logging.debug(_("Full set of FLAGS:"))
|
|
||||||
for flag in FLAGS:
|
|
||||||
logging.debug("%s : %s" % (flag, FLAGS.get(flag, None)))
|
|
||||||
|
|
||||||
logging.audit(_("Starting %s"), name)
|
|
||||||
twistd.runApp(options)
|
|
||||||
59
po/ast.po
59
po/ast.po
@@ -125,33 +125,6 @@ msgstr ""
|
|||||||
msgid "compute.api::resume %s"
|
msgid "compute.api::resume %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../nova/twistd.py:157
|
|
||||||
msgid "Wrong number of arguments."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:209
|
|
||||||
#, python-format
|
|
||||||
msgid "pidfile %s does not exist. Daemon not running?\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:221
|
|
||||||
msgid "No such process"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:230 ../nova/service.py:224
|
|
||||||
#, python-format
|
|
||||||
msgid "Serving %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:262 ../nova/service.py:225
|
|
||||||
msgid "Full set of FLAGS:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:266
|
|
||||||
#, python-format
|
|
||||||
msgid "Starting %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
||||||
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
||||||
#: ../nova/api/ec2/__init__.py:317
|
#: ../nova/api/ec2/__init__.py:317
|
||||||
@@ -1778,34 +1751,6 @@ msgstr ""
|
|||||||
msgid "Got exception: %s"
|
msgid "Got exception: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:259
|
|
||||||
#, python-format
|
|
||||||
msgid "updating %s..."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:289
|
|
||||||
msgid "unexpected error during update"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:356
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get blockstats for \"%(disk)s\" on \"%(iid)s\""
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:379
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get ifstats for \"%(interface)s\" on \"%(iid)s\""
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:414
|
|
||||||
msgid "unexpected exception getting connection"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:429
|
|
||||||
#, python-format
|
|
||||||
msgid "Found instance: %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/volume/san.py:67
|
#: ../nova/volume/san.py:67
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find iSCSI export for volume %s"
|
msgid "Could not find iSCSI export for volume %s"
|
||||||
@@ -2263,10 +2208,6 @@ msgstr ""
|
|||||||
msgid "You must implement __call__"
|
msgid "You must implement __call__"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../bin/nova-instancemonitor.py:55
|
|
||||||
msgid "Starting instance monitor"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../bin/nova-dhcpbridge.py:58
|
#: ../bin/nova-dhcpbridge.py:58
|
||||||
msgid "leasing ip"
|
msgid "leasing ip"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
59
po/cs.po
59
po/cs.po
@@ -125,33 +125,6 @@ msgstr ""
|
|||||||
msgid "compute.api::resume %s"
|
msgid "compute.api::resume %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../nova/twistd.py:157
|
|
||||||
msgid "Wrong number of arguments."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:209
|
|
||||||
#, python-format
|
|
||||||
msgid "pidfile %s does not exist. Daemon not running?\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:221
|
|
||||||
msgid "No such process"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:230 ../nova/service.py:224
|
|
||||||
#, python-format
|
|
||||||
msgid "Serving %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:262 ../nova/service.py:225
|
|
||||||
msgid "Full set of FLAGS:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:266
|
|
||||||
#, python-format
|
|
||||||
msgid "Starting %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
||||||
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
||||||
#: ../nova/api/ec2/__init__.py:317
|
#: ../nova/api/ec2/__init__.py:317
|
||||||
@@ -1778,34 +1751,6 @@ msgstr ""
|
|||||||
msgid "Got exception: %s"
|
msgid "Got exception: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:259
|
|
||||||
#, python-format
|
|
||||||
msgid "updating %s..."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:289
|
|
||||||
msgid "unexpected error during update"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:356
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get blockstats for \"%(disk)s\" on \"%(iid)s\""
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:379
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get ifstats for \"%(interface)s\" on \"%(iid)s\""
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:414
|
|
||||||
msgid "unexpected exception getting connection"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:429
|
|
||||||
#, python-format
|
|
||||||
msgid "Found instance: %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/volume/san.py:67
|
#: ../nova/volume/san.py:67
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find iSCSI export for volume %s"
|
msgid "Could not find iSCSI export for volume %s"
|
||||||
@@ -2265,10 +2210,6 @@ msgstr ""
|
|||||||
msgid "You must implement __call__"
|
msgid "You must implement __call__"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../bin/nova-instancemonitor.py:55
|
|
||||||
msgid "Starting instance monitor"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../bin/nova-dhcpbridge.py:58
|
#: ../bin/nova-dhcpbridge.py:58
|
||||||
msgid "leasing ip"
|
msgid "leasing ip"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
59
po/da.po
59
po/da.po
@@ -125,33 +125,6 @@ msgstr ""
|
|||||||
msgid "compute.api::resume %s"
|
msgid "compute.api::resume %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../nova/twistd.py:157
|
|
||||||
msgid "Wrong number of arguments."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:209
|
|
||||||
#, python-format
|
|
||||||
msgid "pidfile %s does not exist. Daemon not running?\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:221
|
|
||||||
msgid "No such process"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:230 ../nova/service.py:224
|
|
||||||
#, python-format
|
|
||||||
msgid "Serving %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:262 ../nova/service.py:225
|
|
||||||
msgid "Full set of FLAGS:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:266
|
|
||||||
#, python-format
|
|
||||||
msgid "Starting %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
||||||
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
||||||
#: ../nova/api/ec2/__init__.py:317
|
#: ../nova/api/ec2/__init__.py:317
|
||||||
@@ -1778,34 +1751,6 @@ msgstr ""
|
|||||||
msgid "Got exception: %s"
|
msgid "Got exception: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:259
|
|
||||||
#, python-format
|
|
||||||
msgid "updating %s..."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:289
|
|
||||||
msgid "unexpected error during update"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:356
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get blockstats for \"%(disk)s\" on \"%(iid)s\""
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:379
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get ifstats for \"%(interface)s\" on \"%(iid)s\""
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:414
|
|
||||||
msgid "unexpected exception getting connection"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:429
|
|
||||||
#, python-format
|
|
||||||
msgid "Found instance: %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/volume/san.py:67
|
#: ../nova/volume/san.py:67
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find iSCSI export for volume %s"
|
msgid "Could not find iSCSI export for volume %s"
|
||||||
@@ -2263,10 +2208,6 @@ msgstr ""
|
|||||||
msgid "You must implement __call__"
|
msgid "You must implement __call__"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../bin/nova-instancemonitor.py:55
|
|
||||||
msgid "Starting instance monitor"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../bin/nova-dhcpbridge.py:58
|
#: ../bin/nova-dhcpbridge.py:58
|
||||||
msgid "leasing ip"
|
msgid "leasing ip"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
59
po/de.po
59
po/de.po
@@ -131,33 +131,6 @@ msgstr ""
|
|||||||
msgid "compute.api::resume %s"
|
msgid "compute.api::resume %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../nova/twistd.py:157
|
|
||||||
msgid "Wrong number of arguments."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:209
|
|
||||||
#, python-format
|
|
||||||
msgid "pidfile %s does not exist. Daemon not running?\n"
|
|
||||||
msgstr "PID-Datei %s existiert nicht. Läuft der Daemon nicht?\n"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:221
|
|
||||||
msgid "No such process"
|
|
||||||
msgstr "Kein passender Prozess gefunden"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:230 ../nova/service.py:224
|
|
||||||
#, python-format
|
|
||||||
msgid "Serving %s"
|
|
||||||
msgstr "Bedient %s"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:262 ../nova/service.py:225
|
|
||||||
msgid "Full set of FLAGS:"
|
|
||||||
msgstr "Alle vorhandenen FLAGS:"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:266
|
|
||||||
#, python-format
|
|
||||||
msgid "Starting %s"
|
|
||||||
msgstr "%s wird gestartet"
|
|
||||||
|
|
||||||
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
||||||
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
||||||
#: ../nova/api/ec2/__init__.py:317
|
#: ../nova/api/ec2/__init__.py:317
|
||||||
@@ -1785,34 +1758,6 @@ msgstr ""
|
|||||||
msgid "Got exception: %s"
|
msgid "Got exception: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:259
|
|
||||||
#, python-format
|
|
||||||
msgid "updating %s..."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:289
|
|
||||||
msgid "unexpected error during update"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:356
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get blockstats for \"%(disk)s\" on \"%(iid)s\""
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:379
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get ifstats for \"%(interface)s\" on \"%(iid)s\""
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:414
|
|
||||||
msgid "unexpected exception getting connection"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:429
|
|
||||||
#, python-format
|
|
||||||
msgid "Found instance: %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/volume/san.py:67
|
#: ../nova/volume/san.py:67
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find iSCSI export for volume %s"
|
msgid "Could not find iSCSI export for volume %s"
|
||||||
@@ -2270,10 +2215,6 @@ msgstr ""
|
|||||||
msgid "You must implement __call__"
|
msgid "You must implement __call__"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../bin/nova-instancemonitor.py:55
|
|
||||||
msgid "Starting instance monitor"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../bin/nova-dhcpbridge.py:58
|
#: ../bin/nova-dhcpbridge.py:58
|
||||||
msgid "leasing ip"
|
msgid "leasing ip"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
59
po/en_AU.po
59
po/en_AU.po
@@ -125,33 +125,6 @@ msgstr ""
|
|||||||
msgid "compute.api::resume %s"
|
msgid "compute.api::resume %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../nova/twistd.py:157
|
|
||||||
msgid "Wrong number of arguments."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:209
|
|
||||||
#, python-format
|
|
||||||
msgid "pidfile %s does not exist. Daemon not running?\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:221
|
|
||||||
msgid "No such process"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:230 ../nova/service.py:224
|
|
||||||
#, python-format
|
|
||||||
msgid "Serving %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:262 ../nova/service.py:225
|
|
||||||
msgid "Full set of FLAGS:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:266
|
|
||||||
#, python-format
|
|
||||||
msgid "Starting %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
||||||
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
||||||
#: ../nova/api/ec2/__init__.py:317
|
#: ../nova/api/ec2/__init__.py:317
|
||||||
@@ -1778,34 +1751,6 @@ msgstr ""
|
|||||||
msgid "Got exception: %s"
|
msgid "Got exception: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:259
|
|
||||||
#, python-format
|
|
||||||
msgid "updating %s..."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:289
|
|
||||||
msgid "unexpected error during update"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:356
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get blockstats for \"%(disk)s\" on \"%(iid)s\""
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:379
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get ifstats for \"%(interface)s\" on \"%(iid)s\""
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:414
|
|
||||||
msgid "unexpected exception getting connection"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:429
|
|
||||||
#, python-format
|
|
||||||
msgid "Found instance: %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/volume/san.py:67
|
#: ../nova/volume/san.py:67
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find iSCSI export for volume %s"
|
msgid "Could not find iSCSI export for volume %s"
|
||||||
@@ -2263,10 +2208,6 @@ msgstr ""
|
|||||||
msgid "You must implement __call__"
|
msgid "You must implement __call__"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../bin/nova-instancemonitor.py:55
|
|
||||||
msgid "Starting instance monitor"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../bin/nova-dhcpbridge.py:58
|
#: ../bin/nova-dhcpbridge.py:58
|
||||||
msgid "leasing ip"
|
msgid "leasing ip"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
59
po/en_GB.po
59
po/en_GB.po
@@ -130,33 +130,6 @@ msgstr "compute.api::suspend %s"
|
|||||||
msgid "compute.api::resume %s"
|
msgid "compute.api::resume %s"
|
||||||
msgstr "compute.api::resume %s"
|
msgstr "compute.api::resume %s"
|
||||||
|
|
||||||
#: ../nova/twistd.py:157
|
|
||||||
msgid "Wrong number of arguments."
|
|
||||||
msgstr "Wrong number of arguments."
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:209
|
|
||||||
#, python-format
|
|
||||||
msgid "pidfile %s does not exist. Daemon not running?\n"
|
|
||||||
msgstr "pidfile %s does not exist. Daemon not running?\n"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:221
|
|
||||||
msgid "No such process"
|
|
||||||
msgstr "No such process"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:230 ../nova/service.py:224
|
|
||||||
#, python-format
|
|
||||||
msgid "Serving %s"
|
|
||||||
msgstr "Serving %s"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:262 ../nova/service.py:225
|
|
||||||
msgid "Full set of FLAGS:"
|
|
||||||
msgstr "Full set of FLAGS:"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:266
|
|
||||||
#, python-format
|
|
||||||
msgid "Starting %s"
|
|
||||||
msgstr "Starting %s"
|
|
||||||
|
|
||||||
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
||||||
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
||||||
#: ../nova/api/ec2/__init__.py:317
|
#: ../nova/api/ec2/__init__.py:317
|
||||||
@@ -1803,34 +1776,6 @@ msgstr ""
|
|||||||
msgid "Got exception: %s"
|
msgid "Got exception: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:259
|
|
||||||
#, python-format
|
|
||||||
msgid "updating %s..."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:289
|
|
||||||
msgid "unexpected error during update"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:356
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get blockstats for \"%(disk)s\" on \"%(iid)s\""
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:379
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get ifstats for \"%(interface)s\" on \"%(iid)s\""
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:414
|
|
||||||
msgid "unexpected exception getting connection"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:429
|
|
||||||
#, python-format
|
|
||||||
msgid "Found instance: %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/volume/san.py:67
|
#: ../nova/volume/san.py:67
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find iSCSI export for volume %s"
|
msgid "Could not find iSCSI export for volume %s"
|
||||||
@@ -2288,10 +2233,6 @@ msgstr ""
|
|||||||
msgid "You must implement __call__"
|
msgid "You must implement __call__"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../bin/nova-instancemonitor.py:55
|
|
||||||
msgid "Starting instance monitor"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../bin/nova-dhcpbridge.py:58
|
#: ../bin/nova-dhcpbridge.py:58
|
||||||
msgid "leasing ip"
|
msgid "leasing ip"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
59
po/es.po
59
po/es.po
@@ -130,33 +130,6 @@ msgstr "compute.api::suspend %s"
|
|||||||
msgid "compute.api::resume %s"
|
msgid "compute.api::resume %s"
|
||||||
msgstr "compute.api::resume %s"
|
msgstr "compute.api::resume %s"
|
||||||
|
|
||||||
#: ../nova/twistd.py:157
|
|
||||||
msgid "Wrong number of arguments."
|
|
||||||
msgstr "Cantidad de argumentos incorrecta"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:209
|
|
||||||
#, python-format
|
|
||||||
msgid "pidfile %s does not exist. Daemon not running?\n"
|
|
||||||
msgstr "El \"pidfile\" %s no existe. Quizás el servicio no este corriendo.\n"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:221
|
|
||||||
msgid "No such process"
|
|
||||||
msgstr "No existe el proceso"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:230 ../nova/service.py:224
|
|
||||||
#, python-format
|
|
||||||
msgid "Serving %s"
|
|
||||||
msgstr "Sirviendo %s"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:262 ../nova/service.py:225
|
|
||||||
msgid "Full set of FLAGS:"
|
|
||||||
msgstr "Conjunto completo de opciones (FLAGS):"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:266
|
|
||||||
#, python-format
|
|
||||||
msgid "Starting %s"
|
|
||||||
msgstr "Iniciando %s"
|
|
||||||
|
|
||||||
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
||||||
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
||||||
#: ../nova/api/ec2/__init__.py:317
|
#: ../nova/api/ec2/__init__.py:317
|
||||||
@@ -1819,34 +1792,6 @@ msgstr ""
|
|||||||
msgid "Got exception: %s"
|
msgid "Got exception: %s"
|
||||||
msgstr "Obtenida excepción %s"
|
msgstr "Obtenida excepción %s"
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:259
|
|
||||||
#, python-format
|
|
||||||
msgid "updating %s..."
|
|
||||||
msgstr "actualizando %s..."
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:289
|
|
||||||
msgid "unexpected error during update"
|
|
||||||
msgstr "error inesperado durante la actualización"
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:356
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get blockstats for \"%(disk)s\" on \"%(iid)s\""
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:379
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get ifstats for \"%(interface)s\" on \"%(iid)s\""
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:414
|
|
||||||
msgid "unexpected exception getting connection"
|
|
||||||
msgstr "excepción inexperada al obtener la conexión"
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:429
|
|
||||||
#, python-format
|
|
||||||
msgid "Found instance: %s"
|
|
||||||
msgstr "Encontrada interfaz: %s"
|
|
||||||
|
|
||||||
#: ../nova/volume/san.py:67
|
#: ../nova/volume/san.py:67
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find iSCSI export for volume %s"
|
msgid "Could not find iSCSI export for volume %s"
|
||||||
@@ -2309,10 +2254,6 @@ msgstr ""
|
|||||||
msgid "You must implement __call__"
|
msgid "You must implement __call__"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../bin/nova-instancemonitor.py:55
|
|
||||||
msgid "Starting instance monitor"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../bin/nova-dhcpbridge.py:58
|
#: ../bin/nova-dhcpbridge.py:58
|
||||||
msgid "leasing ip"
|
msgid "leasing ip"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
61
po/fr.po
61
po/fr.po
@@ -133,35 +133,6 @@ msgstr "compute.api::suspend %s"
|
|||||||
msgid "compute.api::resume %s"
|
msgid "compute.api::resume %s"
|
||||||
msgstr "compute.api::resume %s"
|
msgstr "compute.api::resume %s"
|
||||||
|
|
||||||
#: ../nova/twistd.py:157
|
|
||||||
msgid "Wrong number of arguments."
|
|
||||||
msgstr "Nombre d'arguments incorrect."
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:209
|
|
||||||
#, python-format
|
|
||||||
msgid "pidfile %s does not exist. Daemon not running?\n"
|
|
||||||
msgstr ""
|
|
||||||
"Le fichier pid %s n'existe pas. Est-ce que le processus est en cours "
|
|
||||||
"d'exécution ?\n"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:221
|
|
||||||
msgid "No such process"
|
|
||||||
msgstr "Aucun processus de ce type"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:230 ../nova/service.py:224
|
|
||||||
#, python-format
|
|
||||||
msgid "Serving %s"
|
|
||||||
msgstr "En train de servir %s"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:262 ../nova/service.py:225
|
|
||||||
msgid "Full set of FLAGS:"
|
|
||||||
msgstr "Ensemble de propriétés complet :"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:266
|
|
||||||
#, python-format
|
|
||||||
msgid "Starting %s"
|
|
||||||
msgstr "Démarrage de %s"
|
|
||||||
|
|
||||||
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
||||||
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
||||||
#: ../nova/api/ec2/__init__.py:317
|
#: ../nova/api/ec2/__init__.py:317
|
||||||
@@ -1865,34 +1836,6 @@ msgstr "Tâche [%(name)s] %(task)s état : %(status)s %(error_info)s"
|
|||||||
msgid "Got exception: %s"
|
msgid "Got exception: %s"
|
||||||
msgstr "Reçu exception : %s"
|
msgstr "Reçu exception : %s"
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:259
|
|
||||||
#, python-format
|
|
||||||
msgid "updating %s..."
|
|
||||||
msgstr "mise à jour %s..."
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:289
|
|
||||||
msgid "unexpected error during update"
|
|
||||||
msgstr "erreur inopinée pendant la ise à jour"
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:356
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get blockstats for \"%(disk)s\" on \"%(iid)s\""
|
|
||||||
msgstr "Ne peut pas récupérer blockstats pour \"%(disk)s\" sur \"%(iid)s\""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:379
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get ifstats for \"%(interface)s\" on \"%(iid)s\""
|
|
||||||
msgstr "Ne peut pas récupérer ifstats pour \"%(interface)s\" sur \"%(iid)s\""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:414
|
|
||||||
msgid "unexpected exception getting connection"
|
|
||||||
msgstr "erreur inopinée pendant la connexion"
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:429
|
|
||||||
#, python-format
|
|
||||||
msgid "Found instance: %s"
|
|
||||||
msgstr "Instance trouvée : %s"
|
|
||||||
|
|
||||||
#: ../nova/volume/san.py:67
|
#: ../nova/volume/san.py:67
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find iSCSI export for volume %s"
|
msgid "Could not find iSCSI export for volume %s"
|
||||||
@@ -2373,10 +2316,6 @@ msgstr "Démarrage %(arg0)s sur %(host)s:%(port)s"
|
|||||||
msgid "You must implement __call__"
|
msgid "You must implement __call__"
|
||||||
msgstr "Vous devez implémenter __call__"
|
msgstr "Vous devez implémenter __call__"
|
||||||
|
|
||||||
#: ../bin/nova-instancemonitor.py:55
|
|
||||||
msgid "Starting instance monitor"
|
|
||||||
msgstr "Démarrage du superviseur d'instance"
|
|
||||||
|
|
||||||
#: ../bin/nova-dhcpbridge.py:58
|
#: ../bin/nova-dhcpbridge.py:58
|
||||||
msgid "leasing ip"
|
msgid "leasing ip"
|
||||||
msgstr "Allocation IP"
|
msgstr "Allocation IP"
|
||||||
|
|||||||
60
po/it.po
60
po/it.po
@@ -134,34 +134,6 @@ msgstr "compute.api::suspend %s"
|
|||||||
msgid "compute.api::resume %s"
|
msgid "compute.api::resume %s"
|
||||||
msgstr "compute.api::resume %s"
|
msgstr "compute.api::resume %s"
|
||||||
|
|
||||||
#: ../nova/twistd.py:157
|
|
||||||
msgid "Wrong number of arguments."
|
|
||||||
msgstr "Numero errato di argomenti"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:209
|
|
||||||
#, python-format
|
|
||||||
msgid "pidfile %s does not exist. Daemon not running?\n"
|
|
||||||
msgstr ""
|
|
||||||
"Il pidfile %s non esiste. Assicurarsi che il demone é in esecuzione.\n"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:221
|
|
||||||
msgid "No such process"
|
|
||||||
msgstr "Nessun processo trovato"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:230 ../nova/service.py:224
|
|
||||||
#, python-format
|
|
||||||
msgid "Serving %s"
|
|
||||||
msgstr "Servire %s"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:262 ../nova/service.py:225
|
|
||||||
msgid "Full set of FLAGS:"
|
|
||||||
msgstr "Insieme di FLAGS:"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:266
|
|
||||||
#, python-format
|
|
||||||
msgid "Starting %s"
|
|
||||||
msgstr "Avvio di %s"
|
|
||||||
|
|
||||||
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
||||||
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
||||||
#: ../nova/api/ec2/__init__.py:317
|
#: ../nova/api/ec2/__init__.py:317
|
||||||
@@ -1791,34 +1763,6 @@ msgstr ""
|
|||||||
msgid "Got exception: %s"
|
msgid "Got exception: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:259
|
|
||||||
#, python-format
|
|
||||||
msgid "updating %s..."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:289
|
|
||||||
msgid "unexpected error during update"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:356
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get blockstats for \"%(disk)s\" on \"%(iid)s\""
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:379
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get ifstats for \"%(interface)s\" on \"%(iid)s\""
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:414
|
|
||||||
msgid "unexpected exception getting connection"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:429
|
|
||||||
#, python-format
|
|
||||||
msgid "Found instance: %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/volume/san.py:67
|
#: ../nova/volume/san.py:67
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find iSCSI export for volume %s"
|
msgid "Could not find iSCSI export for volume %s"
|
||||||
@@ -2278,10 +2222,6 @@ msgstr ""
|
|||||||
msgid "You must implement __call__"
|
msgid "You must implement __call__"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../bin/nova-instancemonitor.py:55
|
|
||||||
msgid "Starting instance monitor"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../bin/nova-dhcpbridge.py:58
|
#: ../bin/nova-dhcpbridge.py:58
|
||||||
msgid "leasing ip"
|
msgid "leasing ip"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
59
po/ja.po
59
po/ja.po
@@ -130,33 +130,6 @@ msgstr "例外: compute.api::suspend %s"
|
|||||||
msgid "compute.api::resume %s"
|
msgid "compute.api::resume %s"
|
||||||
msgstr "例外: compute.api::resume %s"
|
msgstr "例外: compute.api::resume %s"
|
||||||
|
|
||||||
#: ../nova/twistd.py:157
|
|
||||||
msgid "Wrong number of arguments."
|
|
||||||
msgstr "引数の数が異なります。"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:209
|
|
||||||
#, python-format
|
|
||||||
msgid "pidfile %s does not exist. Daemon not running?\n"
|
|
||||||
msgstr "pidfile %s が存在しません。デーモンは実行中ですか?\n"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:221
|
|
||||||
msgid "No such process"
|
|
||||||
msgstr "そのようなプロセスはありません"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:230 ../nova/service.py:224
|
|
||||||
#, python-format
|
|
||||||
msgid "Serving %s"
|
|
||||||
msgstr "%s サービスの開始"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:262 ../nova/service.py:225
|
|
||||||
msgid "Full set of FLAGS:"
|
|
||||||
msgstr "FLAGSの一覧:"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:266
|
|
||||||
#, python-format
|
|
||||||
msgid "Starting %s"
|
|
||||||
msgstr "%s を起動中"
|
|
||||||
|
|
||||||
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
||||||
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
||||||
#: ../nova/api/ec2/__init__.py:317
|
#: ../nova/api/ec2/__init__.py:317
|
||||||
@@ -1808,34 +1781,6 @@ msgstr "タスク [%(name)s] %(task)s 状態: %(status)s %(error_info)s"
|
|||||||
msgid "Got exception: %s"
|
msgid "Got exception: %s"
|
||||||
msgstr "例外 %s が発生しました。"
|
msgstr "例外 %s が発生しました。"
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:259
|
|
||||||
#, python-format
|
|
||||||
msgid "updating %s..."
|
|
||||||
msgstr "%s の情報の更新…"
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:289
|
|
||||||
msgid "unexpected error during update"
|
|
||||||
msgstr "更新の最中に予期しないエラーが発生しました。"
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:356
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get blockstats for \"%(disk)s\" on \"%(iid)s\""
|
|
||||||
msgstr "\"%(iid)s\" 上の \"%(disk)s\" 用のブロック統計(blockstats)が取得できません"
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:379
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get ifstats for \"%(interface)s\" on \"%(iid)s\""
|
|
||||||
msgstr "\"%(iid)s\" 上の %(interface)s\" 用インターフェース統計(ifstats)が取得できません"
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:414
|
|
||||||
msgid "unexpected exception getting connection"
|
|
||||||
msgstr "接続に際し予期しないエラーが発生しました。"
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:429
|
|
||||||
#, python-format
|
|
||||||
msgid "Found instance: %s"
|
|
||||||
msgstr "インスタンス %s が見つかりました。"
|
|
||||||
|
|
||||||
#: ../nova/volume/san.py:67
|
#: ../nova/volume/san.py:67
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find iSCSI export for volume %s"
|
msgid "Could not find iSCSI export for volume %s"
|
||||||
@@ -2311,10 +2256,6 @@ msgstr "%(host)s:%(port)s 上で %(arg0)s を開始しています"
|
|||||||
msgid "You must implement __call__"
|
msgid "You must implement __call__"
|
||||||
msgstr "__call__ を実装しなければなりません"
|
msgstr "__call__ を実装しなければなりません"
|
||||||
|
|
||||||
#: ../bin/nova-instancemonitor.py:55
|
|
||||||
msgid "Starting instance monitor"
|
|
||||||
msgstr "インスタンスモニタを開始しています"
|
|
||||||
|
|
||||||
#: ../bin/nova-dhcpbridge.py:58
|
#: ../bin/nova-dhcpbridge.py:58
|
||||||
msgid "leasing ip"
|
msgid "leasing ip"
|
||||||
msgstr "IP アドレスをリースしました"
|
msgstr "IP アドレスをリースしました"
|
||||||
|
|||||||
59
po/nova.pot
59
po/nova.pot
@@ -125,33 +125,6 @@ msgstr ""
|
|||||||
msgid "compute.api::resume %s"
|
msgid "compute.api::resume %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../nova/twistd.py:157
|
|
||||||
msgid "Wrong number of arguments."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:209
|
|
||||||
#, python-format
|
|
||||||
msgid "pidfile %s does not exist. Daemon not running?\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:221
|
|
||||||
msgid "No such process"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:230 ../nova/service.py:224
|
|
||||||
#, python-format
|
|
||||||
msgid "Serving %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:262 ../nova/service.py:225
|
|
||||||
msgid "Full set of FLAGS:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:266
|
|
||||||
#, python-format
|
|
||||||
msgid "Starting %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
||||||
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
||||||
#: ../nova/api/ec2/__init__.py:317
|
#: ../nova/api/ec2/__init__.py:317
|
||||||
@@ -1778,34 +1751,6 @@ msgstr ""
|
|||||||
msgid "Got exception: %s"
|
msgid "Got exception: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:259
|
|
||||||
#, python-format
|
|
||||||
msgid "updating %s..."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:289
|
|
||||||
msgid "unexpected error during update"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:356
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get blockstats for \"%(disk)s\" on \"%(iid)s\""
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:379
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get ifstats for \"%(interface)s\" on \"%(iid)s\""
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:414
|
|
||||||
msgid "unexpected exception getting connection"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:429
|
|
||||||
#, python-format
|
|
||||||
msgid "Found instance: %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/volume/san.py:67
|
#: ../nova/volume/san.py:67
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find iSCSI export for volume %s"
|
msgid "Could not find iSCSI export for volume %s"
|
||||||
@@ -2263,10 +2208,6 @@ msgstr ""
|
|||||||
msgid "You must implement __call__"
|
msgid "You must implement __call__"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../bin/nova-instancemonitor.py:55
|
|
||||||
msgid "Starting instance monitor"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../bin/nova-dhcpbridge.py:58
|
#: ../bin/nova-dhcpbridge.py:58
|
||||||
msgid "leasing ip"
|
msgid "leasing ip"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
60
po/pt_BR.po
60
po/pt_BR.po
@@ -126,34 +126,6 @@ msgstr "compute.api::suspend %s"
|
|||||||
msgid "compute.api::resume %s"
|
msgid "compute.api::resume %s"
|
||||||
msgstr "compute.api::resume %s"
|
msgstr "compute.api::resume %s"
|
||||||
|
|
||||||
#: ../nova/twistd.py:157
|
|
||||||
msgid "Wrong number of arguments."
|
|
||||||
msgstr "Número errado de argumentos."
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:209
|
|
||||||
#, python-format
|
|
||||||
msgid "pidfile %s does not exist. Daemon not running?\n"
|
|
||||||
msgstr ""
|
|
||||||
"Arquivo do id do processo (pidfile) %s não existe. O Daemon está parado?\n"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:221
|
|
||||||
msgid "No such process"
|
|
||||||
msgstr "Processo inexistente"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:230 ../nova/service.py:224
|
|
||||||
#, python-format
|
|
||||||
msgid "Serving %s"
|
|
||||||
msgstr "Servindo %s"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:262 ../nova/service.py:225
|
|
||||||
msgid "Full set of FLAGS:"
|
|
||||||
msgstr "Conjunto completo de FLAGS:"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:266
|
|
||||||
#, python-format
|
|
||||||
msgid "Starting %s"
|
|
||||||
msgstr "Iniciando %s"
|
|
||||||
|
|
||||||
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
||||||
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
||||||
#: ../nova/api/ec2/__init__.py:317
|
#: ../nova/api/ec2/__init__.py:317
|
||||||
@@ -1804,34 +1776,6 @@ msgstr ""
|
|||||||
msgid "Got exception: %s"
|
msgid "Got exception: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:259
|
|
||||||
#, python-format
|
|
||||||
msgid "updating %s..."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:289
|
|
||||||
msgid "unexpected error during update"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:356
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get blockstats for \"%(disk)s\" on \"%(iid)s\""
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:379
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get ifstats for \"%(interface)s\" on \"%(iid)s\""
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:414
|
|
||||||
msgid "unexpected exception getting connection"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:429
|
|
||||||
#, python-format
|
|
||||||
msgid "Found instance: %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/volume/san.py:67
|
#: ../nova/volume/san.py:67
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find iSCSI export for volume %s"
|
msgid "Could not find iSCSI export for volume %s"
|
||||||
@@ -2290,10 +2234,6 @@ msgstr ""
|
|||||||
msgid "You must implement __call__"
|
msgid "You must implement __call__"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../bin/nova-instancemonitor.py:55
|
|
||||||
msgid "Starting instance monitor"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../bin/nova-dhcpbridge.py:58
|
#: ../bin/nova-dhcpbridge.py:58
|
||||||
msgid "leasing ip"
|
msgid "leasing ip"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
59
po/ru.po
59
po/ru.po
@@ -125,33 +125,6 @@ msgstr ""
|
|||||||
msgid "compute.api::resume %s"
|
msgid "compute.api::resume %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../nova/twistd.py:157
|
|
||||||
msgid "Wrong number of arguments."
|
|
||||||
msgstr "Неверное число аргументов."
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:209
|
|
||||||
#, python-format
|
|
||||||
msgid "pidfile %s does not exist. Daemon not running?\n"
|
|
||||||
msgstr "pidfile %s не обнаружен. Демон не запущен?\n"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:221
|
|
||||||
msgid "No such process"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:230 ../nova/service.py:224
|
|
||||||
#, python-format
|
|
||||||
msgid "Serving %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:262 ../nova/service.py:225
|
|
||||||
msgid "Full set of FLAGS:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:266
|
|
||||||
#, python-format
|
|
||||||
msgid "Starting %s"
|
|
||||||
msgstr "Запускается %s"
|
|
||||||
|
|
||||||
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
||||||
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
||||||
#: ../nova/api/ec2/__init__.py:317
|
#: ../nova/api/ec2/__init__.py:317
|
||||||
@@ -1779,34 +1752,6 @@ msgstr ""
|
|||||||
msgid "Got exception: %s"
|
msgid "Got exception: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:259
|
|
||||||
#, python-format
|
|
||||||
msgid "updating %s..."
|
|
||||||
msgstr "обновление %s..."
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:289
|
|
||||||
msgid "unexpected error during update"
|
|
||||||
msgstr "неожиданная ошибка во время обновления"
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:356
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get blockstats for \"%(disk)s\" on \"%(iid)s\""
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:379
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get ifstats for \"%(interface)s\" on \"%(iid)s\""
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:414
|
|
||||||
msgid "unexpected exception getting connection"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:429
|
|
||||||
#, python-format
|
|
||||||
msgid "Found instance: %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/volume/san.py:67
|
#: ../nova/volume/san.py:67
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find iSCSI export for volume %s"
|
msgid "Could not find iSCSI export for volume %s"
|
||||||
@@ -2264,10 +2209,6 @@ msgstr ""
|
|||||||
msgid "You must implement __call__"
|
msgid "You must implement __call__"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../bin/nova-instancemonitor.py:55
|
|
||||||
msgid "Starting instance monitor"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../bin/nova-dhcpbridge.py:58
|
#: ../bin/nova-dhcpbridge.py:58
|
||||||
msgid "leasing ip"
|
msgid "leasing ip"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
59
po/tl.po
59
po/tl.po
@@ -125,33 +125,6 @@ msgstr ""
|
|||||||
msgid "compute.api::resume %s"
|
msgid "compute.api::resume %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../nova/twistd.py:157
|
|
||||||
msgid "Wrong number of arguments."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:209
|
|
||||||
#, python-format
|
|
||||||
msgid "pidfile %s does not exist. Daemon not running?\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:221
|
|
||||||
msgid "No such process"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:230 ../nova/service.py:224
|
|
||||||
#, python-format
|
|
||||||
msgid "Serving %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:262 ../nova/service.py:225
|
|
||||||
msgid "Full set of FLAGS:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:266
|
|
||||||
#, python-format
|
|
||||||
msgid "Starting %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
||||||
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
||||||
#: ../nova/api/ec2/__init__.py:317
|
#: ../nova/api/ec2/__init__.py:317
|
||||||
@@ -1778,34 +1751,6 @@ msgstr ""
|
|||||||
msgid "Got exception: %s"
|
msgid "Got exception: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:259
|
|
||||||
#, python-format
|
|
||||||
msgid "updating %s..."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:289
|
|
||||||
msgid "unexpected error during update"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:356
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get blockstats for \"%(disk)s\" on \"%(iid)s\""
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:379
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get ifstats for \"%(interface)s\" on \"%(iid)s\""
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:414
|
|
||||||
msgid "unexpected exception getting connection"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:429
|
|
||||||
#, python-format
|
|
||||||
msgid "Found instance: %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/volume/san.py:67
|
#: ../nova/volume/san.py:67
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find iSCSI export for volume %s"
|
msgid "Could not find iSCSI export for volume %s"
|
||||||
@@ -2265,10 +2210,6 @@ msgstr ""
|
|||||||
msgid "You must implement __call__"
|
msgid "You must implement __call__"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../bin/nova-instancemonitor.py:55
|
|
||||||
msgid "Starting instance monitor"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../bin/nova-dhcpbridge.py:58
|
#: ../bin/nova-dhcpbridge.py:58
|
||||||
msgid "leasing ip"
|
msgid "leasing ip"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
59
po/uk.po
59
po/uk.po
@@ -125,33 +125,6 @@ msgstr ""
|
|||||||
msgid "compute.api::resume %s"
|
msgid "compute.api::resume %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../nova/twistd.py:157
|
|
||||||
msgid "Wrong number of arguments."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:209
|
|
||||||
#, python-format
|
|
||||||
msgid "pidfile %s does not exist. Daemon not running?\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:221
|
|
||||||
msgid "No such process"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:230 ../nova/service.py:224
|
|
||||||
#, python-format
|
|
||||||
msgid "Serving %s"
|
|
||||||
msgstr "Обслуговування %s"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:262 ../nova/service.py:225
|
|
||||||
msgid "Full set of FLAGS:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:266
|
|
||||||
#, python-format
|
|
||||||
msgid "Starting %s"
|
|
||||||
msgstr "Запускається %s"
|
|
||||||
|
|
||||||
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
||||||
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
||||||
#: ../nova/api/ec2/__init__.py:317
|
#: ../nova/api/ec2/__init__.py:317
|
||||||
@@ -1778,34 +1751,6 @@ msgstr ""
|
|||||||
msgid "Got exception: %s"
|
msgid "Got exception: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:259
|
|
||||||
#, python-format
|
|
||||||
msgid "updating %s..."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:289
|
|
||||||
msgid "unexpected error during update"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:356
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get blockstats for \"%(disk)s\" on \"%(iid)s\""
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:379
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get ifstats for \"%(interface)s\" on \"%(iid)s\""
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:414
|
|
||||||
msgid "unexpected exception getting connection"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:429
|
|
||||||
#, python-format
|
|
||||||
msgid "Found instance: %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/volume/san.py:67
|
#: ../nova/volume/san.py:67
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find iSCSI export for volume %s"
|
msgid "Could not find iSCSI export for volume %s"
|
||||||
@@ -2263,10 +2208,6 @@ msgstr ""
|
|||||||
msgid "You must implement __call__"
|
msgid "You must implement __call__"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../bin/nova-instancemonitor.py:55
|
|
||||||
msgid "Starting instance monitor"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../bin/nova-dhcpbridge.py:58
|
#: ../bin/nova-dhcpbridge.py:58
|
||||||
msgid "leasing ip"
|
msgid "leasing ip"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
59
po/zh_CN.po
59
po/zh_CN.po
@@ -17,11 +17,6 @@ msgstr ""
|
|||||||
"X-Launchpad-Export-Date: 2011-07-23 05:12+0000\n"
|
"X-Launchpad-Export-Date: 2011-07-23 05:12+0000\n"
|
||||||
"X-Generator: Launchpad (build 13405)\n"
|
"X-Generator: Launchpad (build 13405)\n"
|
||||||
|
|
||||||
#: ../nova/twistd.py:266
|
|
||||||
#, python-format
|
|
||||||
msgid "Starting %s"
|
|
||||||
msgstr "启动 %s 中"
|
|
||||||
|
|
||||||
#: ../nova/scheduler/chance.py:37 ../nova/scheduler/zone.py:55
|
#: ../nova/scheduler/chance.py:37 ../nova/scheduler/zone.py:55
|
||||||
#: ../nova/scheduler/simple.py:75 ../nova/scheduler/simple.py:110
|
#: ../nova/scheduler/simple.py:75 ../nova/scheduler/simple.py:110
|
||||||
#: ../nova/scheduler/simple.py:122
|
#: ../nova/scheduler/simple.py:122
|
||||||
@@ -135,28 +130,6 @@ msgstr ""
|
|||||||
msgid "compute.api::resume %s"
|
msgid "compute.api::resume %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../nova/twistd.py:157
|
|
||||||
msgid "Wrong number of arguments."
|
|
||||||
msgstr "错误参数个数。"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:209
|
|
||||||
#, python-format
|
|
||||||
msgid "pidfile %s does not exist. Daemon not running?\n"
|
|
||||||
msgstr "pidfile %s 不存在,守护进程是否运行?\n"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:221
|
|
||||||
msgid "No such process"
|
|
||||||
msgstr "没有该进程"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:230 ../nova/service.py:224
|
|
||||||
#, python-format
|
|
||||||
msgid "Serving %s"
|
|
||||||
msgstr "正在为 %s 服务"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:262 ../nova/service.py:225
|
|
||||||
msgid "Full set of FLAGS:"
|
|
||||||
msgstr "FLAGS全集:"
|
|
||||||
|
|
||||||
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
||||||
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
||||||
#: ../nova/api/ec2/__init__.py:317
|
#: ../nova/api/ec2/__init__.py:317
|
||||||
@@ -1785,34 +1758,6 @@ msgstr ""
|
|||||||
msgid "Got exception: %s"
|
msgid "Got exception: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:259
|
|
||||||
#, python-format
|
|
||||||
msgid "updating %s..."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:289
|
|
||||||
msgid "unexpected error during update"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:356
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get blockstats for \"%(disk)s\" on \"%(iid)s\""
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:379
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get ifstats for \"%(interface)s\" on \"%(iid)s\""
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:414
|
|
||||||
msgid "unexpected exception getting connection"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:429
|
|
||||||
#, python-format
|
|
||||||
msgid "Found instance: %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/volume/san.py:67
|
#: ../nova/volume/san.py:67
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find iSCSI export for volume %s"
|
msgid "Could not find iSCSI export for volume %s"
|
||||||
@@ -2270,10 +2215,6 @@ msgstr ""
|
|||||||
msgid "You must implement __call__"
|
msgid "You must implement __call__"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../bin/nova-instancemonitor.py:55
|
|
||||||
msgid "Starting instance monitor"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../bin/nova-dhcpbridge.py:58
|
#: ../bin/nova-dhcpbridge.py:58
|
||||||
msgid "leasing ip"
|
msgid "leasing ip"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
59
po/zh_TW.po
59
po/zh_TW.po
@@ -125,33 +125,6 @@ msgstr ""
|
|||||||
msgid "compute.api::resume %s"
|
msgid "compute.api::resume %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../nova/twistd.py:157
|
|
||||||
msgid "Wrong number of arguments."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:209
|
|
||||||
#, python-format
|
|
||||||
msgid "pidfile %s does not exist. Daemon not running?\n"
|
|
||||||
msgstr "pidfile %s 不存在. Daemon未啟動?\n"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:221
|
|
||||||
msgid "No such process"
|
|
||||||
msgstr "沒有此一程序"
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:230 ../nova/service.py:224
|
|
||||||
#, python-format
|
|
||||||
msgid "Serving %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:262 ../nova/service.py:225
|
|
||||||
msgid "Full set of FLAGS:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/twistd.py:266
|
|
||||||
#, python-format
|
|
||||||
msgid "Starting %s"
|
|
||||||
msgstr "正在啟動 %s"
|
|
||||||
|
|
||||||
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
#: ../nova/virt/xenapi/volumeops.py:48 ../nova/virt/xenapi/volumeops.py:101
|
||||||
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
#: ../nova/db/sqlalchemy/api.py:731 ../nova/virt/libvirt_conn.py:741
|
||||||
#: ../nova/api/ec2/__init__.py:317
|
#: ../nova/api/ec2/__init__.py:317
|
||||||
@@ -1778,34 +1751,6 @@ msgstr ""
|
|||||||
msgid "Got exception: %s"
|
msgid "Got exception: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:259
|
|
||||||
#, python-format
|
|
||||||
msgid "updating %s..."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:289
|
|
||||||
msgid "unexpected error during update"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:356
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get blockstats for \"%(disk)s\" on \"%(iid)s\""
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:379
|
|
||||||
#, python-format
|
|
||||||
msgid "Cannot get ifstats for \"%(interface)s\" on \"%(iid)s\""
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:414
|
|
||||||
msgid "unexpected exception getting connection"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/compute/monitor.py:429
|
|
||||||
#, python-format
|
|
||||||
msgid "Found instance: %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../nova/volume/san.py:67
|
#: ../nova/volume/san.py:67
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find iSCSI export for volume %s"
|
msgid "Could not find iSCSI export for volume %s"
|
||||||
@@ -2263,10 +2208,6 @@ msgstr ""
|
|||||||
msgid "You must implement __call__"
|
msgid "You must implement __call__"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../bin/nova-instancemonitor.py:55
|
|
||||||
msgid "Starting instance monitor"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../bin/nova-dhcpbridge.py:58
|
#: ../bin/nova-dhcpbridge.py:58
|
||||||
msgid "leasing ip"
|
msgid "leasing ip"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
Reference in New Issue
Block a user