python-django-nova-0.3~git20110711/0000775000175000017500000000000011606620250015571 5ustar chuckchuckpython-django-nova-0.3~git20110711/django_openstack/0000775000175000017500000000000011606611227021106 5ustar chuckchuckpython-django-nova-0.3~git20110711/django_openstack/templatetags/0000775000175000017500000000000011606611227023600 5ustar chuckchuckpython-django-nova-0.3~git20110711/django_openstack/templatetags/templatetags/0000775000175000017500000000000011606611227026272 5ustar chuckchuckpython-django-nova-0.3~git20110711/django_openstack/templatetags/templatetags/branding.py0000664000175000017500000000332311606611227030431 0ustar chuckchuck# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2011 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Copyright 2011 Fourth Paradigm Development, Inc. # # 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. """ Template tags for working with django_openstack. """ from django import template from django.conf import settings register = template.Library() class SiteBrandingNode(template.Node): def render(self, context): return settings.SITE_BRANDING @register.tag def site_branding(parser, token): return SiteBrandingNode() # TODO(jeffjapan): This is just an assignment tag version of the above, replace # when the dashboard is upgraded to a django version that # supports the @assignment_tag decorator syntax instead. class SaveBrandingNode(template.Node): def __init__(self, var_name): self.var_name = var_name def render(self, context): context[self.var_name] = settings.SITE_BRANDING return "" @register.tag def save_site_branding(parser, token): tagname = token.contents.split() return SaveBrandingNode(tagname[-1]) python-django-nova-0.3~git20110711/django_openstack/templatetags/templatetags/__init__.py0000664000175000017500000000000011606611227030371 0ustar chuckchuckpython-django-nova-0.3~git20110711/django_openstack/templatetags/templatetags/parse_date.py0000664000175000017500000000333311606611227030755 0ustar chuckchuck# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2011 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Copyright 2011 Fourth Paradigm Development, Inc. # # 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. """ Template tags for parsing date strings. """ import datetime from django import template register = template.Library() def _parse_datetime(dtstr): try: return datetime.datetime.strptime(dtstr, "%Y-%m-%dT%H:%M:%S.%f") except: return datetime.datetime.strptime(dtstr, "%Y-%m-%d %H:%M:%S.%f") class ParseDateNode(template.Node): def render(self, context): """Turn an iso formatted time back into a datetime.""" if context == None: return "None" date_obj = _parse_datetime(context) return date_obj.strftime("%d/%m/%y at %H:%M:%S") @register.filter(name='parse_date') def parse_date(value): return ParseDateNode().render(value) @register.filter(name='parse_datetime') def parse_datetime(value): return _parse_datetime(value) @register.filter(name='pretty_date') def pretty_date(value): return value.strftime("%d/%m/%y at %H:%M:%S") python-django-nova-0.3~git20110711/django_openstack/templatetags/templatetags/truncate_filter.py0000664000175000017500000000213311606611227032035 0ustar chuckchuck# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2011 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Copyright 2011 Fourth Paradigm Development, Inc. # # 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. """ Template tags for truncating strings. """ from django import template register = template.Library() @register.filter("truncate") def truncate(value, size): if len(value) > size and size > 3: return value[0:(size - 3)] + '...' else: return value[0:size] python-django-nova-0.3~git20110711/django_openstack/templatetags/__init__.py0000664000175000017500000000000011606611227025677 0ustar chuckchuckpython-django-nova-0.3~git20110711/django_openstack/utils.py0000664000175000017500000000263711606611227022630 0ustar chuckchuck# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2011 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Copyright 2011 Fourth Paradigm Development, Inc. # # 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 datetime def time(): '''Overrideable version of datetime.datetime.today''' if time.override_time: return time.override_time return datetime.time() time.override_time = None def today(): '''Overridable version of datetime.datetime.today''' if today.override_time: return today.override_time return datetime.datetime.today() today.override_time = None def utcnow(): '''Overridable version of datetime.datetime.utcnow''' if utcnow.override_time: return utcnow.override_time return datetime.datetime.utcnow() utcnow.override_time = None python-django-nova-0.3~git20110711/django_openstack/api.py0000664000175000017500000004312311606611227022234 0ustar chuckchuck# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2011 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Copyright 2011 Fourth Paradigm Development, Inc. # # 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. """ Methods and interface objects used to interact with external apis. API method calls return objects that are in many cases objects with attributes that are direct maps to the data returned from the API http call. Unfortunately, these objects are also often constructed dynamically, making it difficult to know what data is available from the API object. Because of this, all API calls should wrap their returned object in one defined here, using only explicitly defined atributes and/or methods. In other words, django_openstack developers not working on django_openstack.api shouldn't need to understand the finer details of APIs for Nova/Glance/Swift et al. """ from django.conf import settings import cloudfiles import glance.client import httplib import json import logging import openstack.compute import openstackx.admin import openstackx.extras import openstackx.auth from urlparse import urlparse LOG = logging.getLogger('django_openstack.api') class APIResourceWrapper(object): """ Simple wrapper for api objects Define _attrs on the child class and pass in the api object as the only argument to the constructor """ _attrs = [] def __init__(self, apiresource): self._apiresource = apiresource def __getattr__(self, attr): if attr in self._attrs: # __getattr__ won't find properties return self._apiresource.__getattribute__(attr) else: LOG.debug('Attempted to access unknown attribute "%s" on' ' APIResource object of type "%s" wrapping resource of' ' type "%s"' % (attr, self.__class__, self._apiresource.__class__)) raise AttributeError(attr) class APIDictWrapper(object): """ Simple wrapper for api dictionaries Some api calls return dictionaries. This class provides identical behavior as APIResourceWrapper, except that it will also behave as a dictionary, in addition to attribute accesses. Attribute access is the preferred method of access, to be consistent with api resource objects from openstackx """ def __init__(self, apidict): self._apidict = apidict def __getattr__(self, attr): if attr in self._attrs: try: return self._apidict[attr] except KeyError, e: raise AttributeError(e) else: LOG.debug('Attempted to access unknown item "%s" on' 'APIResource object of type "%s"' % (attr, self.__class__)) raise AttributeError(attr) def __getitem__(self, item): try: return self.__getattr__(item) except AttributeError, e: # caller is expecting a KeyError raise KeyError(e) def get(self, item, default=None): try: return self.__getattr__(item) except AttributeError: return default class Container(APIResourceWrapper): """Simple wrapper around cloudfiles.container.Container""" _attrs = ['name'] class Console(APIResourceWrapper): """Simple wrapper around openstackx.extras.consoles.Console""" _attrs = ['id', 'output', 'type'] class Flavor(APIResourceWrapper): """Simple wrapper around openstackx.admin.flavors.Flavor""" _attrs = ['disk', 'id', 'links', 'name', 'ram', 'vcpus'] class Image(APIDictWrapper): """Simple wrapper around glance image dictionary""" _attrs = ['checksum', 'container_format', 'created_at', 'deleted', 'deleted_at', 'disk_format', 'id', 'is_public', 'location', 'name', 'properties', 'size', 'status', 'updated_at'] def __getattr__(self, attrname): if attrname == "properties": return ImageProperties(super(Image, self).__getattr__(attrname)) else: return super(Image, self).__getattr__(attrname) class ImageProperties(APIDictWrapper): """Simple wrapper around glance image properties dictionary""" _attrs = ['architecture', 'image_location', 'image_state', 'kernel_id', 'project_id', 'ramdisk_id'] class KeyPair(APIResourceWrapper): """Simple wrapper around openstackx.extras.keypairs.Keypair""" _attrs = ['fingerprint', 'key_name', 'private_key'] class Server(APIResourceWrapper): """Simple wrapper around openstackx.extras.server.Server Preserves the request info so image name can later be retrieved """ _attrs = ['addresses', 'attrs', 'hostId', 'id', 'imageRef', 'links', 'metadata', 'name', 'private_ip', 'public_ip', 'status', 'uuid', 'image_name'] def __init__(self, apiresource, request): super(Server, self).__init__(apiresource) self.request = request def __getattr__(self, attr): if attr == "attrs": return ServerAttributes(super(Server, self).__getattr__(attr)) else: return super(Server, self).__getattr__(attr) @property def image_name(self): image = image_get(self.request, self.imageRef) return image.name class ServerAttributes(APIDictWrapper): """Simple wrapper around openstackx.extras.server.Server attributes Preserves the request info so image name can later be retrieved """ _attrs = ['description', 'disk_gb', 'host', 'image_ref', 'kernel_id', 'key_name', 'launched_at', 'mac_address', 'memory_mb', 'name', 'os_type', 'project_id', 'ramdisk_id', 'scheduled_at', 'terminated_at', 'user_data', 'user_id', 'vcpus', 'hostname'] class Services(APIResourceWrapper): _attrs = ['disabled', 'host', 'id', 'last_update', 'stats', 'type', 'up', 'zone'] class SwiftObject(APIResourceWrapper): _attrs = ['name'] class Tenant(APIResourceWrapper): """Simple wrapper around openstackx.auth.tokens.Tenant""" _attrs = ['id', 'description', 'enabled'] class Token(APIResourceWrapper): """Simple wrapper around openstackx.auth.tokens.Token""" _attrs = ['id', 'serviceCatalog', 'tenant_id', 'username'] class Usage(APIResourceWrapper): """Simple wrapper around openstackx.extras.usage.Usage""" _attrs = ['begin', 'instances', 'stop', 'tenant_id', 'total_active_disk_size', 'total_active_instances', 'total_active_ram_size', 'total_active_vcpus', 'total_cpu_usage', 'total_disk_usage', 'total_hours', 'total_ram_usage'] class User(APIResourceWrapper): """Simple wrapper around openstackx.extras.users.User""" _attrs = ['email', 'enabled', 'id', 'tenantId'] def url_for(request, service_name, admin=False): catalog = request.session['serviceCatalog'] if admin: rv = catalog[service_name][0]['adminURL'] else: rv = catalog[service_name][0]['internalURL'] return rv def compute_api(request): compute = openstack.compute.Compute( auth_token=request.session['token'], management_url=url_for(request, 'nova')) # this below hack is necessary to make the jacobian compute client work # TODO(mgius): It looks like this is unused now? compute.client.auth_token = request.session['token'] compute.client.management_url = url_for(request, 'nova') LOG.debug('compute_api connection created using token "%s"' ' and url "%s"' % (request.session['token'], url_for(request, 'nova'))) return compute def account_api(request): LOG.debug('account_api connection created using token "%s"' ' and url "%s"' % (request.session['token'], url_for(request, 'keystone', True))) return openstackx.extras.Account( auth_token=request.session['token'], management_url=url_for(request, 'keystone', True)) def glance_api(request): o = urlparse(url_for(request, 'glance')) LOG.debug('glance_api connection created for host "%s:%d"' % (o.hostname, o.port)) return glance.client.Client(o.hostname, o.port) def admin_api(request): LOG.debug('admin_api connection created using token "%s"' ' and url "%s"' % (request.session['token'], url_for(request, 'nova', True))) return openstackx.admin.Admin(auth_token=request.session['token'], management_url=url_for(request, 'nova', True)) def extras_api(request): LOG.debug('extras_api connection created using token "%s"' ' and url "%s"' % (request.session['token'], url_for(request, 'nova'))) return openstackx.extras.Extras(auth_token=request.session['token'], management_url=url_for(request, 'nova')) def auth_api(): LOG.debug('auth_api connection created using url "%s"' % settings.OPENSTACK_KEYSTONE_URL) return openstackx.auth.Auth( management_url=settings.OPENSTACK_KEYSTONE_URL) def swift_api(): return cloudfiles.get_connection( settings.SWIFT_ACCOUNT + ":" + settings.SWIFT_USER, settings.SWIFT_PASS, authurl=settings.SWIFT_AUTHURL) def console_create(request, instance_id, kind=None): return Console(extras_api(request).consoles.create(instance_id, kind)) def flavor_create(request, name, memory, vcpu, disk, flavor_id): return Flavor(admin_api(request).flavors.create( name, int(memory), int(vcpu), int(disk), flavor_id)) def flavor_delete(request, flavor_id, purge=False): admin_api(request).flavors.delete(flavor_id, purge) def flavor_get(request, flavor_id): return Flavor(compute_api(request).flavors.get(flavor_id)) def flavor_list(request): return [Flavor(f) for f in extras_api(request).flavors.list()] def image_create(request, image_meta, image_file): return Image(glance_api(request).add_image(image_meta, image_file)) def image_delete(request, image_id): return glance_api(request).delete_image(image_id) def image_get(request, image_id): return Image(glance_api(request).get_image(image_id)[0]) def image_list_detailed(request): return [Image(i) for i in glance_api(request).get_images_detailed()] def image_update(request, image_id, image_meta=None): image_meta = image_meta and image_meta or {} return Image(glance_api(request).update_image(image_id, image_meta=image_meta)) def keypair_create(request, name): return KeyPair(extras_api(request).keypairs.create(name)) def keypair_delete(request, keypair_id): extras_api(request).keypairs.delete(keypair_id) def keypair_list(request): return [KeyPair(key) for key in extras_api(request).keypairs.list()] def server_create(request, name, image, flavor, user_data, key_name): return Server(extras_api(request).servers.create( name, image, flavor, user_data=user_data, key_name=key_name), request) def server_delete(request, instance): compute_api(request).servers.delete(instance) def server_get(request, instance_id): return Server(compute_api(request).servers.get(instance_id), request) def server_list(request): return [Server(s, request) for s in extras_api(request).servers.list()] def server_reboot(request, instance_id, hardness=openstack.compute.servers.REBOOT_HARD): server = server_get(request, instance_id) server.reboot(hardness) def service_get(request, name): return Services(admin_api(request).services.get(name)) def service_list(request): return [Services(s) for s in admin_api(request).services.list()] def service_update(request, name, enabled): return Services(admin_api(request).services.update(name, enabled)) def token_get_tenant(request, tenant_id): tenants = auth_api().tenants.for_token(request.session['token']) for t in tenants: if str(t.id) == str(tenant_id): return Tenant(t) LOG.warning('Unknown tenant id "%s" requested' % tenant_id) def token_list_tenants(request, token): return [Tenant(t) for t in auth_api().tenants.for_token(token)] def tenant_create(request, tenant_id, description, enabled): return Tenant(account_api(request).tenants.create(tenant_id, description, enabled)) def tenant_get(request, tenant_id): return Tenant(account_api(request).tenants.get(tenant_id)) def tenant_list(request): return [Tenant(t) for t in account_api(request).tenants.list()] def tenant_update(request, tenant_id, description, enabled): return Tenant(account_api(request).tenants.update(tenant_id, description, enabled)) def token_create(request, tenant, username, password): return Token(auth_api().tokens.create(tenant, username, password)) def token_info(request, token): # TODO(mgius): This function doesn't make a whole lot of sense to me. The # information being gathered here really aught to be attached to Token() as # part of token_create. May require modification of openstackx so that the # token_create call returns this information as well hdrs = {"Content-type": "application/json", "X_AUTH_TOKEN": settings.OPENSTACK_ADMIN_TOKEN, "Accept": "text/json"} o = urlparse(token.serviceCatalog['identity'][0]['adminURL']) conn = httplib.HTTPConnection(o.hostname, o.port) conn.request("GET", "/v2.0/tokens/%s" % token.id, headers=hdrs) response = conn.getresponse() data = json.loads(response.read()) admin = False for role in data['auth']['user']['roleRefs']: if role['roleId'] == 'Admin': admin = True return {'tenant': data['auth']['user']['tenantId'], 'user': data['auth']['user']['username'], 'admin': admin} def usage_get(request, tenant_id, start, end): return Usage(extras_api(request).usage.get(tenant_id, start, end)) def usage_list(request, start, end): return [Usage(u) for u in extras_api(request).usage.list(start, end)] def user_create(request, user_id, email, password, tenant_id): return User(account_api(request).users.create( user_id, email, password, tenant_id)) def user_delete(request, user_id): account_api(request).users.delete(user_id) def user_get(request, user_id): return User(account_api(request).users.get(user_id)) def user_list(request): return [User(u) for u in account_api(request).users.list()] def user_update_email(request, user_id, email): return User(account_api(request).users.update_email(user_id, email)) def user_update_password(request, user_id, password): return User(account_api(request).users.update_password(user_id, password)) def user_update_tenant(request, user_id, tenant_id): return User(account_api(request).users.update_tenant(user_id, tenant_id)) def swift_container_exists(container_name): try: swift_api().get_container(container_name) return True except cloudfiles.errors.NoSuchContainer: return False def swift_object_exists(container_name, object_name): container = swift_api().get_container(container_name) try: container.get_object(object_name) return True except cloudfiles.errors.NoSuchObject: return False def swift_get_containers(): return [Container(c) for c in swift_api().get_all_containers()] def swift_create_container(name): if swift_container_exists(name): raise Exception('Container with name %s already exists.' % (name)) return Container(swift_api().create_container(name)) def swift_delete_container(name): swift_api().delete_container(name) def swift_get_objects(container_name): container = swift_api().get_container(container_name) return [SwiftObject(o) for o in container.get_objects()] def swift_copy_object(orig_container_name, orig_object_name, new_container_name, new_object_name): container = swift_api().get_container(orig_container_name) if swift_object_exists(new_container_name, new_object_name) == True: raise Exception('Object with name %s already exists in container %s' % (new_object_name, new_container_name)) orig_obj = container.get_object(orig_object_name) return orig_obj.copy_to(new_container_name, new_object_name) def swift_upload_object(container_name, object_name, object_data): container = swift_api().get_container(container_name) obj = container.create_object(object_name) obj.write(object_data) def swift_delete_object(container_name, object_name): container = swift_api().get_container(container_name) container.delete_object(object_name) def swift_get_object_data(container_name, object_name): container = swift_api().get_container(container_name) return container.get_object(object_name).stream() python-django-nova-0.3~git20110711/django_openstack/dash/0000775000175000017500000000000011606611227022025 5ustar chuckchuckpython-django-nova-0.3~git20110711/django_openstack/dash/urls.py0000664000175000017500000000500511606611227023364 0ustar chuckchuck# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2011 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Copyright 2011 Fourth Paradigm Development, Inc. # # 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. from django.conf.urls.defaults import * INSTANCES = r'^(?P[^/]+)/instances/(?P[^/]+)/%s$' IMAGES = r'^(?P[^/]+)/images/(?P[^/]+)/%s$' KEYPAIRS = r'^(?P[^/]+)/keypairs/%s$' CONTAINERS = r'^(?P[^/]+)/containers/%s$' OBJECTS = r'^(?P[^/]+)/containers/(?P[^/]+)/%s$' urlpatterns = patterns('django_openstack.dash.views.instances', url(r'^(?P[^/]+)/$', 'usage', name='dash_usage'), url(r'^(?P[^/]+)/instances/$', 'index', name='dash_instances'), url(INSTANCES % 'console', 'console', name='dash_instances_console'), url(INSTANCES % 'vnc', 'vnc', name='dash_instances_vnc'), ) urlpatterns += patterns('django_openstack.dash.views.images', url(r'^(?P[^/]+)/images/$', 'index', name='dash_images'), url(IMAGES % 'launch', 'launch', name='dash_images_launch'), ) urlpatterns += patterns('django_openstack.dash.views.keypairs', url(r'^(?P[^/]+)/keypairs/$', 'index', name='dash_keypairs'), url(KEYPAIRS % 'create', 'create', name='dash_keypairs_create'), ) # Swift containers and objects. urlpatterns += patterns('django_openstack.dash.views.containers', url(CONTAINERS % '', 'index', name='dash_containers'), url(CONTAINERS % 'create', 'create', name='dash_containers_create'), ) urlpatterns += patterns('django_openstack.dash.views.objects', url(OBJECTS % '', 'index', name='dash_objects'), url(OBJECTS % 'upload', 'upload', name='dash_objects_upload'), url(OBJECTS % '(?P[^/]+)/copy', 'copy', name='dash_object_copy'), url(OBJECTS % '(?P[^/]+)/download', 'download', name='dash_objects_download'), ) python-django-nova-0.3~git20110711/django_openstack/dash/views/0000775000175000017500000000000011606611227023162 5ustar chuckchuckpython-django-nova-0.3~git20110711/django_openstack/dash/views/objects.py0000664000175000017500000001156111606611227025171 0ustar chuckchuck# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2011 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Copyright 2011 Fourth Paradigm Development, Inc. # # 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. """ Views for managing Swift containers. """ import logging from django import http from django import template from django.contrib import messages from django.contrib.auth.decorators import login_required from django import shortcuts from django.shortcuts import render_to_response from django_openstack import api from django_openstack import forms LOG = logging.getLogger('django_openstack.dash') class DeleteObject(forms.SelfHandlingForm): object_name = forms.CharField(widget=forms.HiddenInput()) def handle(self, request, data): api.swift_delete_object( request.POST['container_name'], data['object_name']) messages.info(request, 'Successfully deleted object: %s' % \ data['object_name']) return shortcuts.redirect(request.build_absolute_uri()) class UploadObject(forms.SelfHandlingForm): name = forms.CharField(max_length="255", label="Object Name") object_file = forms.FileField(label="File") def handle(self, request, data): api.swift_upload_object( request.POST['container_name'], data['name'], request.FILES['object_file'].read()) messages.success(request, "Object was successfully uploaded.") return shortcuts.redirect(request.build_absolute_uri()) class CopyObject(forms.SelfHandlingForm): new_container_name = forms.ChoiceField( label="Container to store object in") new_object_name = forms.CharField(max_length="255", label="New object name") def __init__(self, *args, **kwargs): super(CopyObject, self).__init__(*args, **kwargs) container_choices = [(c.name, c.name) for c in api.swift_get_containers()] self.fields['new_container_name'].choices = container_choices def handle(self, request, data): orig_container_name = request.POST['orig_container_name'] orig_object_name = request.POST['orig_object_name'] new_container_name = request.POST['new_container_name'] new_object_name = data['new_object_name'] api.swift_copy_object(orig_container_name, orig_object_name, new_container_name, new_object_name) messages.success(request, 'Object was successfully copied to %s\%s' % (new_container_name, new_object_name)) return shortcuts.redirect(request.build_absolute_uri()) @login_required def index(request, tenant_id, container_name): delete_form, handled = DeleteObject.maybe_handle(request) if handled: return handled objects = api.swift_get_objects(container_name) return render_to_response('dash_objects.html', { 'container_name': container_name, 'objects': objects, 'delete_form': delete_form, }, context_instance=template.RequestContext(request)) @login_required def upload(request, tenant_id, container_name): form, handled = UploadObject.maybe_handle(request) if handled: return handled return render_to_response('dash_objects_upload.html', { 'container_name': container_name, 'upload_form': form, }, context_instance=template.RequestContext(request)) @login_required def download(request, tenant_id, container_name, object_name): object_data = api.swift_get_object_data( container_name, object_name) response = http.HttpResponse() response['Content-Disposition'] = 'attachment; filename=%s' % \ object_name for data in object_data: response.write(data) return response @login_required def copy(request, tenant_id, container_name, object_name): form, handled = CopyObject.maybe_handle(request) form.fields['new_container_name'].initial = container_name if handled: return handled return render_to_response( 'dash_object_copy.html', {'container_name': container_name, 'object_name': object_name, 'copy_form': form}, context_instance=template.RequestContext(request)) python-django-nova-0.3~git20110711/django_openstack/dash/views/images.py0000664000175000017500000001336611606611227025012 0ustar chuckchuck# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2011 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Copyright 2011 Fourth Paradigm Development, Inc. # # 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. """ Views for managing Nova images. """ import datetime import logging import re from django import http from django import template from django.conf import settings from django.contrib import messages from django.contrib.auth.decorators import login_required from django.shortcuts import redirect, render_to_response from django.utils.translation import ugettext as _ from django import shortcuts from django_openstack import api from django_openstack import forms from openstackx.api import exceptions as api_exceptions from glance.common import exception as glance_exception LOG = logging.getLogger('django_openstack.dash.views.images') class LaunchForm(forms.SelfHandlingForm): image_id = forms.CharField(widget=forms.HiddenInput()) name = forms.CharField(max_length=80, label="Server Name") user_data = forms.CharField(widget=forms.Textarea, label="User Data", required=False) # make the dropdown populate when the form is loaded not when django is # started def __init__(self, *args, **kwargs): super(LaunchForm, self).__init__(*args, **kwargs) flavorlist = kwargs.get('initial', {}).get('flavorlist', []) self.fields['flavor'] = forms.ChoiceField( choices=flavorlist, label="Flavor", help_text="Size of Image to launch") keynamelist = kwargs.get('initial', {}).get('keynamelist', []) self.fields['key_name'] = forms.ChoiceField(choices=keynamelist, label="Key Name", help_text="Which keypair to use for authentication") def handle(self, request, data): image_id = data['image_id'] try: image = api.image_get(request, image_id) flavor = api.flavor_get(request, data['flavor']) api.server_create(request, data['name'], image, flavor, user_data=data['user_data'], key_name=data.get('key_name')) msg = 'Instance was successfully launched' LOG.info(msg) messages.success(request, msg) return shortcuts.redirect(request.build_absolute_uri()) except api_exceptions.ApiException, e: LOG.error('ApiException while creating instances of image "%s"' % image_id, exc_info=True) messages.error(request, 'Unable to launch instance: %s' % e.message) @login_required def index(request, tenant_id): tenant = api.token_get_tenant(request, request.user.tenant) all_images = [] try: all_images = api.image_list_detailed(request) if not all_images: messages.info(request, "There are currently no images.") except glance_exception.ClientConnectionError, e: LOG.error("Error connecting to glance", exc_info=True) messages.error(request, "Error connecting to glance: %s" % str(e)) except glance_exception.Error, e: LOG.error("Error retrieving image list", exc_info=True) messages.error(request, "Error retrieving image list: %s" % str(e)) images = [im for im in all_images if im['container_format'] not in ['aki', 'ari']] return render_to_response('dash_images.html', { 'tenant': tenant, 'images': images, }, context_instance=template.RequestContext(request)) @login_required def launch(request, tenant_id, image_id): def flavorlist(): try: fl = api.flavor_list(request) # TODO add vcpu count to flavors sel = [(f.id, '%s (%svcpu / %sGB Disk / %sMB Ram )' % (f.name, f.vcpus, f.disk, f.ram)) for f in fl] return sorted(sel) except api_exceptions.ApiException: LOG.error('Unable to retrieve list of instance types', exc_info=True) return [(1, 'm1.tiny')] def keynamelist(): try: fl = api.keypair_list(request) sel = [(f.key_name, f.key_name) for f in fl] return sel except api_exceptions.ApiException: LOG.error('Unable to retrieve list of keypairs', exc_info=True) return [] # TODO(mgius): Any reason why these can't be after the launchform logic? # If The form is valid, we've just wasted these two api calls image = api.image_get(request, image_id) tenant = api.token_get_tenant(request, request.user.tenant) form, handled = LaunchForm.maybe_handle( request, initial={'flavorlist': flavorlist(), 'keynamelist': keynamelist(), 'image_id': image_id}) if handled: return handled return render_to_response('dash_launch.html', { 'tenant': tenant, 'image': image, 'form': form, }, context_instance=template.RequestContext(request)) python-django-nova-0.3~git20110711/django_openstack/dash/views/containers.py0000664000175000017500000000573211606611227025710 0ustar chuckchuck# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2011 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Copyright 2011 Fourth Paradigm Development, Inc. # # 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. """ Views for managing Swift containers. """ import logging from django import template from django.contrib import messages from django.contrib.auth.decorators import login_required from django import shortcuts from django_openstack import api from django_openstack import forms from cloudfiles.errors import ContainerNotEmpty LOG = logging.getLogger('django_openstack.dash') class DeleteContainer(forms.SelfHandlingForm): container_name = forms.CharField(widget=forms.HiddenInput()) def handle(self, request, data): try: api.swift_delete_container(data['container_name']) except ContainerNotEmpty, e: messages.error(request, 'Unable to delete non-empty container: %s' % \ data['container_name']) LOG.error('Unable to delete container "%s". Exception: "%s"' % (data['container_name'], str(e))) else: messages.info(request, 'Successfully deleted container: %s' % \ data['container_name']) return shortcuts.redirect(request.build_absolute_uri()) class CreateContainer(forms.SelfHandlingForm): name = forms.CharField(max_length="255", label="Container Name") def handle(self, request, data): api.swift_create_container(data['name']) messages.success(request, "Container was successfully created.") return shortcuts.redirect(request.build_absolute_uri()) @login_required def index(request, tenant_id): delete_form, handled = DeleteContainer.maybe_handle(request) if handled: return handled containers = api.swift_get_containers() return shortcuts.render_to_response('dash_containers.html', { 'containers': containers, 'delete_form': delete_form, }, context_instance=template.RequestContext(request)) @login_required def create(request, tenant_id): form, handled = CreateContainer.maybe_handle(request) if handled: return handled return shortcuts.render_to_response('dash_containers_create.html', { 'create_form': form, }, context_instance=template.RequestContext(request)) python-django-nova-0.3~git20110711/django_openstack/dash/views/__init__.py0000664000175000017500000000000011606611227025261 0ustar chuckchuckpython-django-nova-0.3~git20110711/django_openstack/dash/views/keypairs.py0000664000175000017500000000725311606611227025372 0ustar chuckchuck# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2011 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Copyright 2011 Fourth Paradigm Development, Inc. # # 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. """ Views for managing Nova instances. """ import logging from django import http from django import template from django.conf import settings from django.contrib import messages from django.contrib.auth.decorators import login_required from django import shortcuts from django.utils.translation import ugettext as _ from django_openstack import api from django_openstack import forms import openstackx.api.exceptions as api_exceptions LOG = logging.getLogger('django_openstack.dash.views.keypairs') class DeleteKeypair(forms.SelfHandlingForm): keypair_id = forms.CharField(widget=forms.HiddenInput()) def handle(self, request, data): try: LOG.info('Deleting keypair "%s"' % data['keypair_id']) keypair = api.keypair_delete(request, data['keypair_id']) messages.info(request, 'Successfully deleted keypair: %s' \ % data['keypair_id']) except api_exceptions.ApiException, e: LOG.error("ApiException in DeleteKeypair", exc_info=True) messages.error(request, 'Error deleting keypair: %s' % e.message) return shortcuts.redirect(request.build_absolute_uri()) class CreateKeypair(forms.SelfHandlingForm): name = forms.CharField(max_length="20", label="Keypair Name") def handle(self, request, data): try: LOG.info('Creating keypair "%s"' % data['name']) keypair = api.keypair_create(request, data['name']) response = http.HttpResponse(mimetype='application/binary') response['Content-Disposition'] = \ 'attachment; filename=%s.pem' % \ keypair.key_name response.write(keypair.private_key) return response except api_exceptions.ApiException, e: LOG.error("ApiException in CreateKeyPair", exc_info=True) messages.error(request, 'Error Creating Keypair: %s' % e.message) return shortcuts.redirect(request.build_absolute_uri()) @login_required def index(request, tenant_id): delete_form, handled = DeleteKeypair.maybe_handle(request) if handled: return handled try: keypairs = api.keypair_list(request) except api_exceptions.ApiException, e: keypairs = [] LOG.error("ApiException in keypair index", exc_info=True) messages.error(request, 'Error fetching keypairs: %s' % e.message) return shortcuts.render_to_response('dash_keypairs.html', { 'keypairs': keypairs, 'delete_form': delete_form, }, context_instance=template.RequestContext(request)) @login_required def create(request, tenant_id): form, handled = CreateKeypair.maybe_handle(request) if handled: return handled return shortcuts.render_to_response('dash_keypairs_create.html', { 'create_form': form, }, context_instance=template.RequestContext(request)) python-django-nova-0.3~git20110711/django_openstack/dash/views/instances.py0000664000175000017500000001334611606611227025532 0ustar chuckchuck# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2011 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Copyright 2011 Fourth Paradigm Development, Inc. # # 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. """ Views for managing Nova instances. """ import datetime import logging from django import http from django import shortcuts from django import template from django.conf import settings from django.contrib import messages from django.contrib.auth.decorators import login_required from django.utils.translation import ugettext as _ from django_openstack import api from django_openstack import forms from django_openstack import utils import openstack.compute.servers import openstackx.api.exceptions as api_exceptions LOG = logging.getLogger('django_openstack.dash') class TerminateInstance(forms.SelfHandlingForm): instance = forms.CharField(required=True) def handle(self, request, data): instance_id = data['instance'] instance = api.server_get(request, instance_id) try: api.server_delete(request, instance) except api_exceptions.ApiException, e: LOG.error('ApiException while terminating instance "%s"' % instance_id, exc_info=True) messages.error(request, 'Unable to terminate %s: %s' % (instance_id, e.message,)) else: msg = 'Instance %s has been terminated.' % instance_id LOG.info(msg) messages.success(request, msg) return shortcuts.redirect(request.build_absolute_uri()) class RebootInstance(forms.SelfHandlingForm): instance = forms.CharField(required=True) def handle(self, request, data): instance_id = data['instance'] try: server = api.server_reboot(request, instance_id) messages.success(request, "Instance rebooting") except api_exceptions.ApiException, e: LOG.error('ApiException while rebooting instance "%s"' % instance_id, exc_info=True) messages.error(request, 'Unable to reboot instance: %s' % e.message) else: msg = 'Instance %s has been rebooted.' % instance_id LOG.info(msg) messages.success(request, msg) return shortcuts.redirect(request.build_absolute_uri()) @login_required def index(request, tenant_id): for f in (TerminateInstance, RebootInstance): _, handled = f.maybe_handle(request) if handled: return handled instances = [] try: instances = api.server_list(request) # TODO(markgius): Why isn't this an apiexception? except api_exceptions.ApiException as e: LOG.error('Exception in instance index', exc_info=True) messages.error(request, 'Unable to get instance list: %s' % e.message) # We don't have any way of showing errors for these, so don't bother # trying to reuse the forms from above terminate_form = TerminateInstance() reboot_form = RebootInstance() return shortcuts.render_to_response('dash_instances.html', { 'instances': instances, 'terminate_form': terminate_form, 'reboot_form': reboot_form, }, context_instance=template.RequestContext(request)) @login_required def usage(request, tenant_id=None): today = utils.today() date_start = datetime.date(today.year, today.month, 1) datetime_start = datetime.datetime.combine(date_start, utils.time()) datetime_end = utils.utcnow() usage = {} if not tenant_id: tenant_id = request.user.tenant try: usage = api.usage_get(request, tenant_id, datetime_start, datetime_end) except api_exceptions.ApiException, e: LOG.error('ApiException in instance usage', exc_info=True) messages.error(request, 'Unable to get usage info: %s' % e.message) return shortcuts.render_to_response('dash_usage.html', { 'usage': usage, }, context_instance=template.RequestContext(request)) @login_required def console(request, tenant_id, instance_id): try: console = api.console_create(request, instance_id) response = http.HttpResponse(mimetype='text/plain') response.write(console.output) response.flush() return response except api_exceptions.ApiException, e: LOG.error('ApiException while fetching instance console', exc_info=True) messages.error(request, 'Unable to get log for instance %s: %s' % (instance_id, e.message)) return shortcuts.redirect('dash_instances', tenant_id) @login_required def vnc(request, tenant_id, instance_id): try: console = api.console_create(request, instance_id, 'vnc') return shortcuts.redirect(console.output) except api_exceptions.ApiException, e: LOG.error('ApiException while fetching instance vnc connection', exc_info=True) messages.error(request, 'Unable to get vnc console for instance %s: %s' % (instance_id, e.message)) return shortcuts.redirect('dash_instances', tenant_id) python-django-nova-0.3~git20110711/django_openstack/dash/__init__.py0000664000175000017500000000000011606611227024124 0ustar chuckchuckpython-django-nova-0.3~git20110711/django_openstack/locale/0000775000175000017500000000000011606611227022345 5ustar chuckchuckpython-django-nova-0.3~git20110711/django_openstack/locale/ja/0000775000175000017500000000000011606611227022737 5ustar chuckchuckpython-django-nova-0.3~git20110711/django_openstack/locale/ja/LC_MESSAGES/0000775000175000017500000000000011606611227024524 5ustar chuckchuckpython-django-nova-0.3~git20110711/django_openstack/locale/ja/LC_MESSAGES/django.mo0000664000175000017500000003546611606611227026341 0ustar chuckchuckÞ•h\‹œÈ(ÉWòNJ ™ )¸ Àâ #£ +Ç ó  = Q o v +… 4± æ ñ ý   / ? +M )y U£ `ù Z Gu ,½ ê b &o#–º Ð*Ý U%hëŽz Œœ ¥ ²¾ÕIô>4\‘­ ÈÕVîSE/™+Éõž¤+µ.á!â2Í6ã6N#g‹§#Àä; Pq‘@¦%ç +( Taq ˆ•5¤(Ú)•-ÃæË{²".„QÖ}ëDiU®]5bD˜?Ý- 6K !‚ '¤ pÌ 0=!n!u!:‘!HÌ!"1"J"f"!…"§"-À"<î"?+#uk#˜á#z$cš$8þ$)7% a%¬n%5&5Q&,‡&´&3Ê&þ&‘',£'LÐ')!$)!F)h){) Ž)!›)'½)vå)$\*W*'Ù*,+.+6J+|+þ+DŒ,DÑ,-65-l.;‚.>¾.Bý.8@/y0R™1,ì12#72;[2,—2#Ä28è2,!3;N38Š3Ã3>á3) 4.J4dy4;Þ4)5JD55¥5-Á5ï5!6D'65l68¢6ÒÛ6®7©¾7ºh9(#:ÎL:;&(UH@4f-5S<=_B6aZ`1$?9>\R !#P[;:QI YN3 82TOgAFe) G0WVX+^EcD*L',M d]Ch/7.bK%J" Security Group: %(securitygroup.name)s "Select which users you would like to send credentials to from the '%(proj)s' project."A connection error has occurred. Please ensure you are still connected to VPN.A key named %s already exists.A security group named %s already exists.Add and remove protocols to the security group by authorizing and revoking port forwarding. For instance
[tcp, 80, 80] will allow access to HTTP from devices outside this security group.Are you sure you wish to delete keyAre you sure you wish to terminate instanceAttach VolumeCreate New VolumeCreates nova users for all users in the django auth database.Credentials sent successfullyDeleteDelete ProjectDo you really want to delete this project?<Do you really want to remove this user from project?Edit ImageEdit Image:Edit InstanceEdit Instance:Edit Roles for User:Edit User RolesExpired TokenFrom here you can edit multiple user roles.From here you can manage users and roles.From this page you can edit the name and description of an image that belongs to you.From this page you can give your instance an alias, so you don't have to remember its unique id.Generate X509 credentials.Here you can see up to the minute performance data about your instance.Image %s has been successfully deregistered.Image %s has been updated.ImagesImages are snapshots of running systems which can easily be deployed to run one or more instances.Instance %(inst)s has been terminated.Instance %(inst)s has been updated.Instance %s launched.Instance ID:Instance ID: %(instance.id)s Performance" InstancesInstances are virtual servers launched from images. You can launch instances from theKey %s has been successfully deleted.Key pairs are ssh credentials which are injected into images when they are launched. Creating a new key pair registers the public key and downloads the private key (a pem file). Protect and use the key as a normal private key.KeysLaunch ImageLaunch an ImageLocationMake PrivateMake PublicManage Users and RolesNo images currently available.No instances are currently running. You may start a new instance from theNo key pairs currently exist.No users are currently associated with this project.No volumes currently exist.Project %s does not exist.Remove ImageRemove User From ProjectSecurity Group %(grp)s: Access to %(proto)s ports %(fr)d - %(to)d has been authorized.Security Group %(grp)s: Access to %(proto)s ports %(fr)d - %(to)d has been revoked.Security Group %s has been succesfully created.Security Group %s was successfully deleted.Security GroupsSecurity groups are firewall rules which allow access to your instances from other groups as well as the internet. All ports/protocols are denied by default.Send CredentialsSuccessfully modified the project %(proj)s.Successfully started VPN for project %(proj)s.The link you clicked has expired.This credentials download link you have reached is either invalid or has expired. Each link is only good for one use. If you need to download your credentials again, please contact the %(brand)s support team.To get started using the command line management tools, you can download euca2ools and use them with your x509 credentials.Unable modify the project %(proj)s: %(code)s - %(msg)sUnable to attach volume: %sUnable to authorize: %sUnable to create key: %sUnable to create security group: %sUnable to create volume: %sUnable to delete key: %sUnable to delete security group: %sUnable to delete volume: %sUnable to deregister image: %sUnable to detach volume: %sUnable to launch: %sUnable to make image private: %sUnable to make image public: %sUnable to revoke: %sUnable to start VPN for the project %(proj)s: %(code)s - %(msg)sUnable to terminate %(inst)s: %(msg)sUnable to update image: %sUnable to update instance %(inst)s: %(msg)sUpdate ImageUpdate InstanceUser not authenticatedView Images.View InstancesVolume %(id)s %(name)s has been successfully created.Volume %s has been successfully deleted.Volume %s has been successfully detached.Volume %s is scheduled to be attached. If it doesn't become attached in two minutes, please try again (you may need to specify a different device).VolumesVolumes provide persistent block storage. Creating a new volume gives you a raw block device which you may format with your choice of filesystems (ext3 is recommended). A volume may only be attached to a single instance at a time.Welcome to the %(proj)s Overview. From here you can manage your instances, images, keys, and security groups.You are now using the region "%s".You can launch up to five instances of an image at a time. Some images allow for custom configuration to be passed in via User data.creating user %s... Project-Id-Version: openstack-dashboard Report-Msgid-Bugs-To: POT-Creation-Date: 2011-06-08 14:01+0900 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: Takeshi Nakajima Language-Team: LANGUAGE Language: Japanese MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; セキュリティグループã¯ã€ï¼š%(securitygroup.name)s ã§ã™'%(proj)s'よりã€èªè¨¼æƒ…報をé€ä¿¡ã™ã‚‹ãƒ¦ãƒ¼ã‚¶ã‚’é¸æŠžã—ã¦ãã ã•ã„。通信エラーãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚VPNã«æŽ¥ç¶šã—ã¦ã„ã‚‹ã‹ç¢ºèªã—ã¦ãã ã•ã„。%sã¨ã„ã†åå‰ã®ã‚­ãƒ¼ã¯æ—¢ã«å­˜åœ¨ã—ã¾ã™ã€‚%sã¨ã„ã†ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ã‚°ãƒ«ãƒ¼ãƒ—ã¯æ—¢ã«å­˜åœ¨ã—ã¾ã™ã€‚ãƒãƒ¼ãƒˆãƒ•ォワーディングをèªå¯ãƒ»ä¸è¨±å¯ã™ã‚‹äº‹ã§ã€ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ãƒ¼ã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒ—ロトコルを追加・削除ã—ã¾ã™ã€‚ 例 :
[tcp, 80, 80] ã¨è¨­å®šã™ã‚‹ã“ã¨ã§ã“ã®ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ãƒ¼ã‚°ãƒ«ãƒ¼ãƒ—外ã®ãƒ‡ãƒã‚¤ã‚¹ã‹ã‚‰HTTPアクセスを許å¯ã™ã‚‹äº‹ãŒã§ãã¾ã™ã€‚キーを削除ã—ã¦ã‚ˆã‚ã—ã„ã§ã™ã‹ã€‚インスタンスを終了ã—ã¦å®œã—ã„ã§ã™ã‹ï¼Ÿãƒœãƒªãƒ¥ãƒ¼ãƒ ã‚’付与ã™ã‚‹ã€‚æ–°è¦ãƒœãƒªãƒ¥ãƒ¼ãƒ ã‚’作æˆã™ã‚‹ã€‚Djangoã®èªè¨¼ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å†…ã®ã™ã¹ã¦ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«å¯¾ã—ã¦novaユーザーを作æˆã—ã¾ã™ã€‚èªè¨¼æƒ…å ±ãŒæ­£å¸¸ã«é€ä¿¡ã•れã¾ã—ãŸã€‚削除プロジェクトを削除本当ã«ã“ã®ãƒ—ロジェクトを削除ã—ã¾ã™ã‹ï¼Ÿ<本当ã«ã“ã®ãƒ¦ãƒ¼ã‚¶ã‚’プロジェクトã‹ã‚‰å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’編集ã™ã‚‹ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’編集:インスタンスを編集インスタンスを編集:ユーザã®ãƒ­ãƒ¼ãƒ«ã®ç·¨é›†ï¼šãƒ¦ãƒ¼ã‚¶è³‡æ ¼ã®ç·¨é›†ãƒˆãƒ¼ã‚¯ãƒ³ã®æœŸé™ãŒåˆ‡ã‚Œã¦ã„ã¾ã™ã€‚ã“ã“ã§ã€è¤‡æ•°ã®ãƒ¦ãƒ¼ã‚¶è³‡æ ¼ã‚’編集ã§ãã¾ã™ã€‚ã“ã“よりã€ãƒ¦ãƒ¼ã‚¶ã¨ãã®è³‡æ ¼ã‚’管ç†ã§ãã¾ã™ã€‚ã“ã®ãƒšãƒ¼ã‚¸ã§ã¯ã€ã”è‡ªèº«ãŒæ‰€æœ‰ã™ã‚‹ã‚¤ãƒ¡ãƒ¼ã‚¸ã®åå‰ã¨èª¬æ˜Žæ–‡ã‚’編集ã™ã‚‹äº‹ãŒã§ãã¾ã™ã€‚ã“ã®ãƒšãƒ¼ã‚¸ã§ã¯ã€ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã«ã‚¨ãƒ¼ãƒªã‚¢ã‚¹ã‚’設定ã™ã‚‹äº‹ãŒã§ãã€ç‹¬è‡ªã®IDã®ä»£ã‚りã«è¦šãˆã¦ãŠã事ãŒã§ãã¾ã™ã€‚X509資格情報生æˆã™ã‚‹ã€‚å„インスタンスã®åˆ†å˜ä½ã®ãƒ‘ーフォーマンスデータを見る事ãŒã§ãã¾ã™ã€‚イメージ%sãŒæ­£å¸¸ã«ç™»éŒ²å‰Šé™¤ã•れã¾ã—ãŸã€‚イメージ%sãŒæ›´æ–°ã•れã¾ã—ãŸã€‚イメージイメージã¨ã¯ã€å®Ÿè¡Œã™ã‚‹ã‚·ã‚¹ãƒ†ãƒ ã®ã‚¹ãƒŠãƒƒãƒ—ショットã§ã€1ã¤ã‚‚ã—ãã¯è¤‡æ•°ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¨ã—ã¦å®¹æ˜“ã«å®Ÿè¡Œã™ã‚‹äº‹ãŒã§ãã¾ã™ã€‚インスタンス%(inst)sã¯åœæ­¢ã•れã¾ã—ãŸã€‚インスタンス%(inst)sãŒæ›´æ–°ã•れã¾ã—ãŸã€‚インスタンス%sãŒé–‹å§‹ã—ã¾ã—ãŸã€‚インスタンスID:インスタンスID: %(instance.id)s Performance" インスタンスインスタンスã¯ã€ã‚¤ãƒ¡ãƒ¼ã‚¸ã‹ã‚‰èµ·å‹•ã™ã‚‹ä»®æƒ³ã‚µãƒ¼ãƒãƒ¼ã§ã™ã€‚... よりインスタンスを起動ã™ã‚‹äº‹ãŒã§ãã¾ã™ã€‚キー%sã¯æ­£å¸¸ã«å‰Šé™¤ã•れã¾ã—ãŸã€‚キーペアã¯ã€sshå½¢å¼ã®è³‡æ ¼æƒ…å ±ã§ã€ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’èµ·å‹•ã—ãŸæ™‚ã«ã€æŒ¿å…¥ã•れã¾ã™ã€‚æ–°ã—ã„キーペアを作æˆã™ã‚‹ã¨ãã€å…¬é–‹ã‚­ãƒ¼ã‚’登録ã—ã€ç§˜å¯†ã‚­ãƒ¼(pemファイル)をダウンロードã—ã¾ã™ã€‚ã“れã¯ã€é€šå¸¸ã®ç§˜å¯†ã‚­ãƒ¼ã®æ§˜ã«ä¿è­·ã—ãŸä¸Šã§ã”使用ãã ã•ã„。キーイメージを起動ã—ã¾ã™ã€‚イメージを起動ã—ã¾ã™ã€‚ロケーションéžå…¬é–‹ã«ã™ã‚‹å…¬é–‹ã™ã‚‹ãƒ¦ãƒ¼ã‚¶ã¨ãã®è³‡æ ¼ã®ç®¡ç†ç¾åœ¨ã‚¤ãƒ¡ãƒ¼ã‚¸ãŒã‚りã¾ã›ã‚“。インスタンスãŒç¾åœ¨å®Ÿè¡Œã•れã¦ã„ã¾ã›ã‚“。... より新ã—ã„インスタンスを起動ã§ãã¾ã™ã€‚キーペアãŒå­˜åœ¨ã—ã¾ã›ã‚“。ユーザãŒã„ãªã„ç¾åœ¨ã€ã“ã®ãƒ—ロジェクトã«é–¢é€£ä»˜ã‘られã¦ã„る。ボリュームãŒå­˜åœ¨ã—ã¾ã›ã‚“。プロジェクト%sã¯å­˜åœ¨ã—ã¾ã›ã‚“。イメージを削除ã™ã‚‹ãƒ—ロジェクトã‹ã‚‰ãƒ¦ãƒ¼ã‚¶ã‚’削除ã—ã¾ã™ã€‚セキュリティグループ %(grp)s ã® %(proto)s ãƒãƒ¼ãƒˆ %(fr)d - %(to)d ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã¯è¨±å¯ã•れã¾ã—ãŸã€‚セキュリティグループ %(grp)s ã® %(proto)s ãƒãƒ¼ãƒˆ %(fr)d - %(to)d ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã¯ãƒªãƒœãƒ¼ã‚¯(無効化)ã•れã¾ã—ãŸã€‚セキュリティグループ%sãŒæ­£å¸¸ã«ä½œæˆã•れã¾ã—ãŸã€‚セキュリティグループ%sãŒæ­£å¸¸ã«å‰Šé™¤ã•れã¾ã—ãŸã€‚セキュリティグループセキュリティーグループã¯ã€ä»–ã®ã‚°ãƒ«ãƒ¼ãƒ—やインターãƒãƒƒãƒˆã‚ˆã‚Šèµ·å‹•ã•れã¦ã„るインスタンスã¸ã®ã‚¢ã‚¯ã‚»ã‚¹è¨±å¯ã‚’設定ã™ã‚‹ãƒ•ァイヤーウォールã®ãƒ«ãƒ¼ãƒ«ã§ã™ã€‚åˆæœŸè¨­å®šå€¤ã¯ã€å…¨ã¦ã®ãƒãƒ¼ãƒˆ/プロトコルを拒å¦ã™ã‚‹æ§˜ã«ãªã£ã¦ã„ã¾ã™ã€‚èªè¨¼æƒ…報をé€ä¿¡ãƒ—ロジェクト%(proj)sを正常ã«ä¿®æ­£ã—ã¾ã—ãŸã€‚正常ã«VPNプロジェクト%(proj)sã‚’é–‹å§‹ã—ã¾ã—ãŸã€‚クリックã—ãŸãƒªãƒ³ã‚¯ã¯æœ‰åŠ¹æœŸé™ãŒåˆ‡ã‚Œã¦ã„ã¾ã™ã€‚指定ã•れãŸèªè¨¼è³‡æ ¼ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ãƒªãƒ³ã‚¯ã¯ã€ç„¡åŠ¹ã‹æœ‰åŠ¹æœŸé™ãŒåˆ‡ã‚Œã¦ã„ã¾ã™ã€‚ å„リンクã¯ä¸€åº¦ã ã‘使用ã™ã‚‹äº‹ãŒã§ãã¾ã™ã€‚å†åº¦è³‡æ ¼æƒ…報をダウンロードã™ã‚‹å¿…è¦ãŒ ã‚ã‚‹å ´åˆã¯ã€%(brand)sã®ã‚µãƒãƒ¼ãƒˆã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。コマンドライン形å¼ã®ç®¡ç†ãƒ„ールã§åˆ©ç”¨é–‹å§‹ã•れる場åˆã¯ã€download euca2oolsã§ãƒ„ールをダウンロードã—ã€ã‚ãªãŸã®x509資格情報を利用ã—ã¦ãŠä½¿ã„é ‚ã‘ã¾ã™ã€‚プロジェクト%(proj)s: %(code)s - %(msg)sを修正ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ボリューム%sを付与ã§ãã¾ã›ã‚“。%sã‚’èªè¨¼ã§ãã¾ã›ã‚“。キー%sを作æˆã§ãã¾ã›ã‚“。セキュリティグループ%sを作æˆã§ãã¾ã›ã‚“。ボリューム%sを作æˆã§ãã¾ã›ã‚“。キー%sを削除ã§ãã¾ã›ã‚“。セキュリティグループ%sを削除ã§ãã¾ã›ã‚“ボリューム%sを削除ã§ãã¾ã›ã‚“。イメージ%sã®ç™»éŒ²å‰Šé™¤ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ボリューム%sã‚’å–り外ã™äº‹ãŒã§ãã¾ã›ã‚“。%sã‚’èµ·å‹•ã§ãã¾ã›ã‚“。イメージ%sã‚’éžå…¬é–‹ã«ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。イメージ%sを公開ã§ãã¾ã›ã‚“。%sをリボーク(無効化)ã§ãã¾ã›ã‚“。プロジェクト%(proj)s: %(code)s - %(msg)sã®VPNã‚’é–‹å§‹ã™ã‚‹äº‹ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚(%(inst)s: %(msg)sã‚’åœæ­¢ã™ã‚‹äº‹ãŒã§ãã¾ã›ã‚“。イメージ%sã‚’æ›´æ–°ã§ãã¾ã›ã‚“。インスタンス%(inst)s: %(msg)sã‚’æ›´æ–°ã™ã‚‹äº‹ãŒã§ãã¾ã›ã‚“。イメージを更新インスタンスを更新ユーザãŒèªè¨¼ã•れã¦ãŠã‚Šã¾ã›ã‚“。イメージã®è¡¨ç¤ºã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’表示ã™ã‚‹ãƒœãƒªãƒ¥ãƒ¼ãƒ  %(id)s %(name)s ã¯æ­£å¸¸ã«ä½œæˆã•れã¾ã—ãŸã€‚ボリューム%sãŒæ­£å¸¸ã«å‰Šé™¤ã•れã¾ã—ãŸã€‚ボリューム%sãŒæ­£å¸¸ã«å–り外ã•れã¾ã—ãŸã€‚ボリューム%sãŒä»˜ä¸Žã•れる予定ã§ã™ã€‚ãれãŒ2分ã«å®Ÿè¡Œã•れãªã„å ´åˆã¯ã€ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。(別ã®ãƒ‡ãƒã‚¤ã‚¹ã‚’指定ã™ã‚‹å¿…è¦ãŒã‚ã‚‹å ´åˆãŒã‚りã¾ã™ã€‚)ボリュームボリュームã¯ã€ãƒ‘ーシスタントブロックストレージをæä¾›ã—ã¾ã™ã€‚æ–°ã—ã„ボリュームを作æˆã™ã‚‹ã¨ã€ãƒ–ロックデãƒã‚¤ã‚¹ãŒç¢ºä¿ã•れã€åˆ©ç”¨ã•れるファイルシステムã«ãã®ãƒ‡ãƒã‚¤ã‚¹ã‚’フォーマットã™ã‚‹äº‹ãŒã§ãã¾ã™ã€‚(ext3ãŒæŽ¨å¥¨ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆã§ã™ã€‚)1ã¤ã®ãƒœãƒªãƒ¥ãƒ¼ãƒ ã‚’毎回1ã¤ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã«ã®ã¿ä»˜ä¸Žã™ã‚‹äº‹ãŒã§ãã¾ã™ã€‚%(proj)sã®ã‚ªãƒ¼ãƒãƒ¼ãƒ“ューページã«ã‚ˆã†ã“ã。ã“ã“ã§ã€ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã€ã‚¤ãƒ¡ãƒ¼ã‚¸ã€ã‚­ãƒ¼ã€ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ãƒ¼ã‚°ãƒ«ãƒ¼ãƒ—を管ç†ã§ãã¾ã™ã€‚リージョン"%s"を使用中ã§ã™ã€‚1ã¤ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’一度ã«5ã¤ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¨ã—ã¦èµ·å‹•ã™ã‚‹äº‹ãŒã§ãã¾ã™ã€‚一部ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ‡ãƒ¼ã‚¿ã¨ã—ã¦ã‚«ã‚¹ã‚¿ãƒ è¨­å®šã‚’é€ä¿¡ã™ã‚‹äº‹ãŒã§ãã¾ã™ã€‚ユーザ%sを作æˆä¸­...python-django-nova-0.3~git20110711/django_openstack/locale/ja/LC_MESSAGES/django.po0000664000175000017500000005206111606611227026332 0ustar chuckchuck# Translations of Dashboard for OpenStack User Interface. # Copyright 2011 Midokura KK # This file is distributed under the same license as the Dashboard for OpenStack. # FIRST AUTHOR Jeffrey Wilcox, 2011. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: openstack-dashboard\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-06-08 14:01+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Takeshi Nakajima \n" "Language-Team: LANGUAGE \n" "Language: Japanese\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: management/commands/createnovausers.py:31 msgid "Creates nova users for all users in the django auth database." msgstr "" "Djangoã®èªè¨¼ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å†…ã®ã™ã¹ã¦ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«å¯¾ã—ã¦novaユーザーを作æˆã—ã¾" "ã™ã€‚" #: management/commands/createnovausers.py:38 #, python-format msgid "creating user %s... " msgstr "ユーザ%sを作æˆä¸­..." #: nova/forms.py:64 nova/forms.py:78 msgid "none available" msgstr "" #: nova/forms.py:182 #, python-format msgid "A key named %s already exists." msgstr "%sã¨ã„ã†åå‰ã®ã‚­ãƒ¼ã¯æ—¢ã«å­˜åœ¨ã—ã¾ã™ã€‚" #: nova/forms.py:196 #, python-format msgid "A security group named %s already exists." msgstr "%sã¨ã„ã†ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ã‚°ãƒ«ãƒ¼ãƒ—ã¯æ—¢ã«å­˜åœ¨ã—ã¾ã™ã€‚" #: nova/shortcuts.py:43 msgid "User not authenticated" msgstr "ユーザãŒèªè¨¼ã•れã¦ãŠã‚Šã¾ã›ã‚“。" #: nova/shortcuts.py:50 #, python-format msgid "Project %s does not exist." msgstr "プロジェクト%sã¯å­˜åœ¨ã—ã¾ã›ã‚“。" #: nova/views/admin.py:96 #, python-format msgid "Successfully started VPN for project %(proj)s." msgstr "正常ã«VPNプロジェクト%(proj)sã‚’é–‹å§‹ã—ã¾ã—ãŸã€‚" #: nova/views/admin.py:100 #, python-format msgid "Unable to start VPN for the project %(proj)s: %(code)s - %(msg)s" msgstr "" "プロジェクト%(proj)s: %(code)s - %(msg)sã®VPNã‚’é–‹å§‹ã™ã‚‹äº‹ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: nova/views/admin.py:140 #, python-format msgid "Successfully modified the project %(proj)s." msgstr "プロジェクト%(proj)sを正常ã«ä¿®æ­£ã—ã¾ã—ãŸã€‚" #: nova/views/admin.py:145 #, python-format msgid "Unable modify the project %(proj)s: %(code)s - %(msg)s" msgstr "プロジェクト%(proj)s: %(code)s - %(msg)sを修正ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: nova/views/images.py:94 #, python-format msgid "Unable to launch: %s" msgstr "%sã‚’èµ·å‹•ã§ãã¾ã›ã‚“。" #: nova/views/images.py:106 #, python-format msgid "Instance %s launched." msgstr "インスタンス%sãŒé–‹å§‹ã—ã¾ã—ãŸã€‚" #: nova/views/images.py:157 #, python-format msgid "Unable to deregister image: %s" msgstr "イメージ%sã®ç™»éŒ²å‰Šé™¤ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: nova/views/images.py:163 #, python-format msgid "Image %s has been successfully deregistered." msgstr "イメージ%sãŒæ­£å¸¸ã«ç™»éŒ²å‰Šé™¤ã•れã¾ã—ãŸã€‚" #: nova/views/images.py:188 #, python-format msgid "Unable to make image private: %s" msgstr "イメージ%sã‚’éžå…¬é–‹ã«ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。" #: nova/views/images.py:202 #, python-format msgid "Unable to make image public: %s" msgstr "イメージ%sを公開ã§ãã¾ã›ã‚“。" #: nova/views/images.py:228 #, python-format msgid "Unable to update image: %s" msgstr "イメージ%sã‚’æ›´æ–°ã§ãã¾ã›ã‚“。" #: nova/views/images.py:231 #, python-format msgid "Image %s has been updated." msgstr "イメージ%sãŒæ›´æ–°ã•れã¾ã—ãŸã€‚" #: nova/views/instances.py:145 #, python-format msgid "Unable to terminate %(inst)s: %(msg)s" msgstr "(%(inst)s: %(msg)sã‚’åœæ­¢ã™ã‚‹äº‹ãŒã§ãã¾ã›ã‚“。" #: nova/views/instances.py:156 #, python-format msgid "Instance %(inst)s has been terminated." msgstr "インスタンス%(inst)sã¯åœæ­¢ã•れã¾ã—ãŸã€‚" #: nova/views/instances.py:220 #, python-format msgid "Unable to update instance %(inst)s: %(msg)s" msgstr "インスタンス%(inst)s: %(msg)sã‚’æ›´æ–°ã™ã‚‹äº‹ãŒã§ãã¾ã›ã‚“。" #: nova/views/instances.py:232 #, python-format msgid "Instance %(inst)s has been updated." msgstr "インスタンス%(inst)sãŒæ›´æ–°ã•れã¾ã—ãŸã€‚" #: nova/views/keypairs.py:67 #, python-format msgid "Unable to create key: %s" msgstr "キー%sを作æˆã§ãã¾ã›ã‚“。" #: nova/views/keypairs.py:112 #, python-format msgid "Unable to delete key: %s" msgstr "キー%sを削除ã§ãã¾ã›ã‚“。" #: nova/views/keypairs.py:117 #, python-format msgid "Key %s has been successfully deleted." msgstr "キー%sã¯æ­£å¸¸ã«å‰Šé™¤ã•れã¾ã—ãŸã€‚" #: nova/views/regions.py:39 #, python-format msgid "You are now using the region \"%s\"." msgstr "リージョン\"%s\"を使用中ã§ã™ã€‚" #: nova/views/securitygroups.py:85 #, python-format msgid "Unable to create security group: %s" msgstr "セキュリティグループ%sを作æˆã§ãã¾ã›ã‚“。" #: nova/views/securitygroups.py:92 #, python-format msgid "Security Group %s has been succesfully created." msgstr "セキュリティグループ%sãŒæ­£å¸¸ã«ä½œæˆã•れã¾ã—ãŸã€‚" #: nova/views/securitygroups.py:125 #, python-format msgid "Unable to authorize: %s" msgstr "%sã‚’èªè¨¼ã§ãã¾ã›ã‚“。" #: nova/views/securitygroups.py:136 #, python-format msgid "" "Security Group %(grp)s: Access to %(proto)s ports %(fr)d - %(to)d has been " "authorized." msgstr "" "セキュリティグループ %(grp)s ã® %(proto)s ãƒãƒ¼ãƒˆ %(fr)d - %(to)d ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹" "ã¯è¨±å¯ã•れã¾ã—ãŸã€‚" #: nova/views/securitygroups.py:177 #, python-format msgid "Unable to revoke: %s" msgstr "%sをリボーク(無効化)ã§ãã¾ã›ã‚“。" #: nova/views/securitygroups.py:186 #, python-format msgid "" "Security Group %(grp)s: Access to %(proto)s ports %(fr)d - %(to)d has been " "revoked." msgstr "" "セキュリティグループ %(grp)s ã® %(proto)s ãƒãƒ¼ãƒˆ %(fr)d - %(to)d ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹" "ã¯ãƒªãƒœãƒ¼ã‚¯(無効化)ã•れã¾ã—ãŸã€‚" #: nova/views/securitygroups.py:210 #, python-format msgid "Unable to delete security group: %s" msgstr "セキュリティグループ%sを削除ã§ãã¾ã›ã‚“" #: nova/views/securitygroups.py:215 #, python-format msgid "Security Group %s was successfully deleted." msgstr "セキュリティグループ%sãŒæ­£å¸¸ã«å‰Šé™¤ã•れã¾ã—ãŸã€‚" #: nova/views/volumes.py:69 #, python-format msgid "Unable to create volume: %s" msgstr "ボリューム%sを作æˆã§ãã¾ã›ã‚“。" #: nova/views/volumes.py:77 #, python-format msgid "Volume %(id)s %(name)s has been successfully created." msgstr "ボリューム %(id)s %(name)s ã¯æ­£å¸¸ã«ä½œæˆã•れã¾ã—ãŸã€‚" #: nova/views/volumes.py:108 #, python-format msgid "Unable to delete volume: %s" msgstr "ボリューム%sを削除ã§ãã¾ã›ã‚“。" #: nova/views/volumes.py:114 #, python-format msgid "Volume %s has been successfully deleted." msgstr "ボリューム%sãŒæ­£å¸¸ã«å‰Šé™¤ã•れã¾ã—ãŸã€‚" #: nova/views/volumes.py:138 #, python-format msgid "Unable to attach volume: %s" msgstr "ボリューム%sを付与ã§ãã¾ã›ã‚“。" #: nova/views/volumes.py:145 #, python-format msgid "" "Volume %s is scheduled to be attached. If it doesn't become attached in two " "minutes, please try again (you may need to specify a different device)." msgstr "" "ボリューム%sãŒä»˜ä¸Žã•れる予定ã§ã™ã€‚ãれãŒ2分ã«å®Ÿè¡Œã•れãªã„å ´åˆã¯ã€ã‚‚ã†ä¸€åº¦ãŠè©¦" "ã—ãã ã•ã„。(別ã®ãƒ‡ãƒã‚¤ã‚¹ã‚’指定ã™ã‚‹å¿…è¦ãŒã‚ã‚‹å ´åˆãŒã‚りã¾ã™ã€‚)" #: nova/views/volumes.py:179 #, python-format msgid "Unable to detach volume: %s" msgstr "ボリューム%sã‚’å–り外ã™äº‹ãŒã§ãã¾ã›ã‚“。" #: nova/views/volumes.py:185 #, python-format msgid "Volume %s has been successfully detached." msgstr "ボリューム%sãŒæ­£å¸¸ã«å–り外ã•れã¾ã—ãŸã€‚" #: templates/admin/django_openstack/nova/project/delete_project.html:13 msgid "Delete Project" msgstr "プロジェクトを削除" #: templates/admin/django_openstack/nova/project/delete_project.html:14 msgid "Do you really want to delete this project?<" msgstr "本当ã«ã“ã®ãƒ—ロジェクトを削除ã—ã¾ã™ã‹ï¼Ÿ<" #: templates/admin/django_openstack/nova/project/delete_project_user.html:8 msgid "Delete" msgstr "削除" #: templates/admin/django_openstack/nova/project/delete_project_user.html:13 #: templates/admin/django_openstack/nova/project/project_user.html:67 msgid "Remove User From Project" msgstr "プロジェクトã‹ã‚‰ãƒ¦ãƒ¼ã‚¶ã‚’削除ã—ã¾ã™ã€‚" #: templates/admin/django_openstack/nova/project/delete_project_user.html:14 msgid "Do you really want to remove this user from project?" msgstr "本当ã«ã“ã®ãƒ¦ãƒ¼ã‚¶ã‚’プロジェクトã‹ã‚‰å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ" #: templates/admin/django_openstack/nova/project/send_credentials.html:46 #: templates/admin/django_openstack/nova/project/send_credentials.html:81 msgid "Send Credentials" msgstr "èªè¨¼æƒ…報をé€ä¿¡" #: templates/admin/django_openstack/nova/project/send_credentials.html:47 #, python-format msgid "" "\"Select which users you would like to send credentials to from the " "'%(proj)s' project.\"" msgstr "'%(proj)s'よりã€èªè¨¼æƒ…報をé€ä¿¡ã™ã‚‹ãƒ¦ãƒ¼ã‚¶ã‚’é¸æŠžã—ã¦ãã ã•ã„。" #: templates/admin/django_openstack/nova/project/send_credentials.html:49 msgid "Credentials sent successfully" msgstr "èªè¨¼æƒ…å ±ãŒæ­£å¸¸ã«é€ä¿¡ã•れã¾ã—ãŸã€‚" #: templates/django_openstack/nova/credentials/expired.html:6 msgid "Expired Token" msgstr "ãƒˆãƒ¼ã‚¯ãƒ³ã®æœŸé™ãŒåˆ‡ã‚Œã¦ã„ã¾ã™ã€‚" #: templates/django_openstack/nova/credentials/expired.html:10 msgid "The link you clicked has expired." msgstr "クリックã—ãŸãƒªãƒ³ã‚¯ã¯æœ‰åŠ¹æœŸé™ãŒåˆ‡ã‚Œã¦ã„ã¾ã™ã€‚" #: templates/django_openstack/nova/credentials/expired.html:12 #, python-format msgid "" "This credentials download link you have reached\n" " is either invalid or has expired. Each link is only good for one use. " "If\n" " you need to download your credentials again, please contact the\n" " %(brand)s support team." msgstr "" "指定ã•れãŸèªè¨¼è³‡æ ¼ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ãƒªãƒ³ã‚¯ã¯ã€ç„¡åŠ¹ã‹æœ‰åŠ¹æœŸé™ãŒåˆ‡ã‚Œã¦ã„ã¾ã™ã€‚\n" " å„リンクã¯ä¸€åº¦ã ã‘使用ã™ã‚‹äº‹ãŒã§ãã¾ã™ã€‚å†åº¦è³‡æ ¼æƒ…報をダウンロードã™ã‚‹å¿…" "è¦ãŒ\n" " ã‚ã‚‹å ´åˆã¯ã€%(brand)sã®ã‚µãƒãƒ¼ãƒˆã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。" #: templates/django_openstack/nova/images/_list.html:70 msgid "Make Private" msgstr "éžå…¬é–‹ã«ã™ã‚‹" #: templates/django_openstack/nova/images/_list.html:72 msgid "Make Public" msgstr "公開ã™ã‚‹" #: templates/django_openstack/nova/images/_list.html:80 msgid "Remove Image" msgstr "イメージを削除ã™ã‚‹" #: templates/django_openstack/nova/images/_list.html:110 msgid "No images currently available." msgstr "ç¾åœ¨ã‚¤ãƒ¡ãƒ¼ã‚¸ãŒã‚りã¾ã›ã‚“。" #: templates/django_openstack/nova/images/edit.html:13 msgid "Edit Image" msgstr "イメージを編集ã™ã‚‹" #: templates/django_openstack/nova/images/edit.html:14 msgid "" "From this page you can edit the name and description of an image that " "belongs to you." msgstr "" "ã“ã®ãƒšãƒ¼ã‚¸ã§ã¯ã€ã”è‡ªèº«ãŒæ‰€æœ‰ã™ã‚‹ã‚¤ãƒ¡ãƒ¼ã‚¸ã®åå‰ã¨èª¬æ˜Žæ–‡ã‚’編集ã™ã‚‹äº‹ãŒã§ãã¾" "ã™ã€‚" #: templates/django_openstack/nova/images/edit.html:18 msgid "Edit Image:" msgstr "イメージを編集:" #: templates/django_openstack/nova/images/edit.html:29 msgid "Update Image" msgstr "イメージを更新" #: templates/django_openstack/nova/images/index.html:4 msgid "Launch an Image" msgstr "イメージを起動ã—ã¾ã™ã€‚" #: templates/django_openstack/nova/images/index.html:14 msgid "Images" msgstr "イメージ" #: templates/django_openstack/nova/images/index.html:15 msgid "" "Images are snapshots of running systems which can easily be deployed to run " "one or more instances." msgstr "" "イメージã¨ã¯ã€å®Ÿè¡Œã™ã‚‹ã‚·ã‚¹ãƒ†ãƒ ã®ã‚¹ãƒŠãƒƒãƒ—ショットã§ã€1ã¤ã‚‚ã—ãã¯è¤‡æ•°ã®ã‚¤ãƒ³ã‚¹ã‚¿" "ンスã¨ã—ã¦å®¹æ˜“ã«å®Ÿè¡Œã™ã‚‹äº‹ãŒã§ãã¾ã™ã€‚" #: templates/django_openstack/nova/images/launch.html:13 #: templates/django_openstack/nova/images/launch.html:21 msgid "Launch Image" msgstr "イメージを起動ã—ã¾ã™ã€‚" #: templates/django_openstack/nova/images/launch.html:14 msgid "" "You can launch up to five instances of an image at a time. Some images allow " "for custom configuration to be passed in via User data." msgstr "" "1ã¤ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’一度ã«5ã¤ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¨ã—ã¦èµ·å‹•ã™ã‚‹äº‹ãŒã§ãã¾ã™ã€‚一部ã®ã‚¤" "メージã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ‡ãƒ¼ã‚¿ã¨ã—ã¦ã‚«ã‚¹ã‚¿ãƒ è¨­å®šã‚’é€ä¿¡ã™ã‚‹äº‹ãŒã§ãã¾ã™ã€‚" #: templates/django_openstack/nova/images/launch.html:23 msgid "Location" msgstr "ロケーション" #: templates/django_openstack/nova/instances/_instances_list.html:102 msgid "" "No instances are currently running. You may start a new instance from the" msgstr "" "インスタンスãŒç¾åœ¨å®Ÿè¡Œã•れã¦ã„ã¾ã›ã‚“。... より新ã—ã„インスタンスを起動ã§ãã¾" "ã™ã€‚" #: templates/django_openstack/nova/instances/detail_list.html:10 msgid "Instance ID:" msgstr "インスタンスID:" #: templates/django_openstack/nova/instances/detail_list.html:11 msgid "Here you can see up to the minute performance data about your instance." msgstr "å„インスタンスã®åˆ†å˜ä½ã®ãƒ‘ーフォーマンスデータを見る事ãŒã§ãã¾ã™ã€‚" #: templates/django_openstack/nova/instances/detail_list.html:18 #: templates/django_openstack/nova/instances/edit.html:18 msgid "Edit Instance:" msgstr "インスタンスを編集:" #: templates/django_openstack/nova/instances/detail_list.html:29 #: templates/django_openstack/nova/instances/edit.html:29 msgid "Update Instance" msgstr "インスタンスを更新" #: templates/django_openstack/nova/instances/edit.html:13 msgid "Edit Instance" msgstr "インスタンスを編集" #: templates/django_openstack/nova/instances/edit.html:14 msgid "" "From this page you can give your instance an alias, so you don't have to " "remember its unique id." msgstr "" "ã“ã®ãƒšãƒ¼ã‚¸ã§ã¯ã€ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã«ã‚¨ãƒ¼ãƒªã‚¢ã‚¹ã‚’設定ã™ã‚‹äº‹ãŒã§ãã€ç‹¬è‡ªã®IDã®ä»£ã‚り" "ã«è¦šãˆã¦ãŠã事ãŒã§ãã¾ã™ã€‚" #: templates/django_openstack/nova/instances/index.html:11 msgid "Instances" msgstr "インスタンス" #: templates/django_openstack/nova/instances/index.html:12 msgid "" "Instances are virtual servers launched from images. You can launch instances " "from the" msgstr "" "インスタンスã¯ã€ã‚¤ãƒ¡ãƒ¼ã‚¸ã‹ã‚‰èµ·å‹•ã™ã‚‹ä»®æƒ³ã‚µãƒ¼ãƒãƒ¼ã§ã™ã€‚... よりインスタンスを" "èµ·å‹•ã™ã‚‹äº‹ãŒã§ãã¾ã™ã€‚" #: templates/django_openstack/nova/instances/index.html:22 msgid "Are you sure you wish to terminate instance" msgstr "インスタンスを終了ã—ã¦å®œã—ã„ã§ã™ã‹ï¼Ÿ" #: templates/django_openstack/nova/instances/index.html:26 msgid "" "A connection error has occurred. Please ensure you are still connected to " "VPN." msgstr "通信エラーãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚VPNã«æŽ¥ç¶šã—ã¦ã„ã‚‹ã‹ç¢ºèªã—ã¦ãã ã•ã„。" #: templates/django_openstack/nova/instances/performance.html:10 #, python-format msgid "Instance ID: %(instance.id)s Performance\" " msgstr "インスタンスID: %(instance.id)s Performance\" " #: templates/django_openstack/nova/keypairs/_list.html:28 msgid "No key pairs currently exist." msgstr "キーペアãŒå­˜åœ¨ã—ã¾ã›ã‚“。" #: templates/django_openstack/nova/keypairs/index.html:13 msgid "Keys" msgstr "キー" #: templates/django_openstack/nova/keypairs/index.html:14 msgid "" "Key pairs are ssh credentials which are injected into images when they are " "launched. Creating a new key pair registers the public key and downloads the " "private key (a pem file). Protect and use the key as a normal private " "key." msgstr "" "キーペアã¯ã€sshå½¢å¼ã®è³‡æ ¼æƒ…å ±ã§ã€ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’èµ·å‹•ã—ãŸæ™‚ã«ã€æŒ¿å…¥ã•れã¾ã™ã€‚æ–°ã—ã„" "キーペアを作æˆã™ã‚‹ã¨ãã€å…¬é–‹ã‚­ãƒ¼ã‚’登録ã—ã€ç§˜å¯†ã‚­ãƒ¼(pemファイル)をダウンロード" "ã—ã¾ã™ã€‚ã“れã¯ã€é€šå¸¸ã®ç§˜å¯†ã‚­ãƒ¼ã®æ§˜ã«ä¿è­·ã—ãŸä¸Šã§ã”使用ãã ã•ã„。" #: templates/django_openstack/nova/keypairs/index.html:36 msgid "Are you sure you wish to delete key" msgstr "キーを削除ã—ã¦ã‚ˆã‚ã—ã„ã§ã™ã‹ã€‚" #: templates/django_openstack/nova/projects/edit_user.html:24 msgid "Edit User Roles" msgstr "ユーザ資格ã®ç·¨é›†" #: templates/django_openstack/nova/projects/edit_user.html:25 msgid "From here you can edit multiple user roles." msgstr "ã“ã“ã§ã€è¤‡æ•°ã®ãƒ¦ãƒ¼ã‚¶è³‡æ ¼ã‚’編集ã§ãã¾ã™ã€‚" #: templates/django_openstack/nova/projects/edit_user.html:35 msgid "Edit Roles for User:" msgstr "ユーザã®ãƒ­ãƒ¼ãƒ«ã®ç·¨é›†ï¼š" #: templates/django_openstack/nova/projects/edit_user.html:67 #: templates/django_openstack/nova/projects/manage.html:39 msgid "No users are currently associated with this project." msgstr "ユーザãŒã„ãªã„ç¾åœ¨ã€ã“ã®ãƒ—ロジェクトã«é–¢é€£ä»˜ã‘られã¦ã„る。" #: templates/django_openstack/nova/projects/index.html:14 #, python-format msgid "" "Welcome to the %(proj)s Overview. From here you can manage " "your instances, images, keys, and security groups." msgstr "" "%(proj)sã®ã‚ªãƒ¼ãƒãƒ¼ãƒ“ューページã«ã‚ˆã†ã“ã。ã“ã“ã§ã€ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã€" "イメージã€ã‚­ãƒ¼ã€ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ãƒ¼ã‚°ãƒ«ãƒ¼ãƒ—を管ç†ã§ãã¾ã™ã€‚" #: templates/django_openstack/nova/projects/index.html:15 msgid "" "To get started using the command line management tools, you can download euca2ools and use them with your x509 " "credentials." msgstr "" "コマンドライン形å¼ã®ç®¡ç†ãƒ„ールã§åˆ©ç”¨é–‹å§‹ã•れる場åˆã¯ã€download " "euca2oolsã§ãƒ„ールをダウンロードã—ã€ã‚ãªãŸã®x509資格情報を利用ã—ã¦ãŠä½¿ã„é ‚" "ã‘ã¾ã™ã€‚" #: templates/django_openstack/nova/projects/index.html:21 msgid "Generate X509 credentials." msgstr "X509資格情報生æˆã™ã‚‹ã€‚" #: templates/django_openstack/nova/projects/index.html:22 msgid "View Instances" msgstr "インスタンスを表示ã™ã‚‹" #: templates/django_openstack/nova/projects/index.html:23 msgid "View Images." msgstr "イメージã®è¡¨ç¤º" #: templates/django_openstack/nova/projects/manage.html:8 msgid "Manage Users and Roles" msgstr "ユーザã¨ãã®è³‡æ ¼ã®ç®¡ç†" #: templates/django_openstack/nova/projects/manage.html:9 msgid "From here you can manage users and roles." msgstr "ã“ã“よりã€ãƒ¦ãƒ¼ã‚¶ã¨ãã®è³‡æ ¼ã‚’管ç†ã§ãã¾ã™ã€‚" #: templates/django_openstack/nova/securitygroups/detail.html:19 #, python-format msgid " Security Group: %(securitygroup.name)s " msgstr "セキュリティグループã¯ã€ï¼š%(securitygroup.name)s ã§ã™" #: templates/django_openstack/nova/securitygroups/detail.html:20 msgid "" "Add and remove protocols to the security group by authorizing and revoking " "port forwarding. For instance
[tcp, 80, 80] will allow access to HTTP " "from devices outside this security group." msgstr "" "ãƒãƒ¼ãƒˆãƒ•ォワーディングをèªå¯ãƒ»ä¸è¨±å¯ã™ã‚‹äº‹ã§ã€ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ãƒ¼ã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒ—ロト" "コルを追加・削除ã—ã¾ã™ã€‚ 例 :
[tcp, 80, 80] ã¨è¨­å®šã™ã‚‹ã“ã¨ã§ã“ã®ã‚»" "キュリティーグループ外ã®ãƒ‡ãƒã‚¤ã‚¹ã‹ã‚‰HTTPアクセスを許å¯ã™ã‚‹äº‹ãŒã§ãã¾ã™ã€‚" #: templates/django_openstack/nova/securitygroups/index.html:19 msgid "Security Groups" msgstr "セキュリティグループ" #: templates/django_openstack/nova/securitygroups/index.html:20 msgid "" "Security groups are firewall rules which allow access to your instances from " "other groups as well as the internet. All ports/protocols are denied by " "default." msgstr "" "セキュリティーグループã¯ã€ä»–ã®ã‚°ãƒ«ãƒ¼ãƒ—やインターãƒãƒƒãƒˆã‚ˆã‚Šèµ·å‹•ã•れã¦ã„るイン" "スタンスã¸ã®ã‚¢ã‚¯ã‚»ã‚¹è¨±å¯ã‚’設定ã™ã‚‹ãƒ•ァイヤーウォールã®ãƒ«ãƒ¼ãƒ«ã§ã™ã€‚åˆæœŸè¨­å®šå€¤" "ã¯ã€å…¨ã¦ã®ãƒãƒ¼ãƒˆ/プロトコルを拒å¦ã™ã‚‹æ§˜ã«ãªã£ã¦ã„ã¾ã™ã€‚" #: templates/django_openstack/nova/volumes/index.html:8 msgid "Volumes" msgstr "ボリューム" #: templates/django_openstack/nova/volumes/index.html:9 msgid "" "Volumes provide persistent block storage. Creating a new volume gives you a " "raw block device which you may format with your choice of filesystems (ext3 " "is recommended). A volume may only be attached to a single instance at a " "time." msgstr "" "ボリュームã¯ã€ãƒ‘ーシスタントブロックストレージをæä¾›ã—ã¾ã™ã€‚æ–°ã—ã„ボリューム" "を作æˆã™ã‚‹ã¨ã€ãƒ–ロックデãƒã‚¤ã‚¹ãŒç¢ºä¿ã•れã€åˆ©ç”¨ã•れるファイルシステムã«ãã®ãƒ‡" "ãƒã‚¤ã‚¹ã‚’フォーマットã™ã‚‹äº‹ãŒã§ãã¾ã™ã€‚(ext3ãŒæŽ¨å¥¨ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆã§ã™ã€‚)1ã¤ã®ãƒœ" "リュームを毎回1ã¤ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã«ã®ã¿ä»˜ä¸Žã™ã‚‹äº‹ãŒã§ãã¾ã™ã€‚" #: templates/django_openstack/nova/volumes/index.html:59 msgid "No volumes currently exist." msgstr "ボリュームãŒå­˜åœ¨ã—ã¾ã›ã‚“。" #: templates/django_openstack/nova/volumes/index.html:68 msgid "Create New Volume" msgstr "æ–°è¦ãƒœãƒªãƒ¥ãƒ¼ãƒ ã‚’作æˆã™ã‚‹ã€‚" #: templates/django_openstack/nova/volumes/index.html:79 msgid "Attach Volume" msgstr "ボリュームを付与ã™ã‚‹ã€‚" python-django-nova-0.3~git20110711/django_openstack/locale/es/0000775000175000017500000000000011606611227022754 5ustar chuckchuckpython-django-nova-0.3~git20110711/django_openstack/locale/es/LC_MESSAGES/0000775000175000017500000000000011606611227024541 5ustar chuckchuckpython-django-nova-0.3~git20110711/django_openstack/locale/es/LC_MESSAGES/django.mo0000664000175000017500000000065111606611227026342 0ustar chuckchuckÞ•$,8o9Project-Id-Version: openstack-dashboard Report-Msgid-Bugs-To: POT-Creation-Date: 2011-06-08 14:01+0900 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: LANGUAGE Language: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); python-django-nova-0.3~git20110711/django_openstack/locale/es/LC_MESSAGES/django.po0000664000175000017500000003306011606611227026345 0ustar chuckchuck# Translations of Dashboard for OpenStack User Interface. # Copyright 2011 Midokura KK # This file is distributed under the same license as the Dashboard for OpenStack. # FIRST AUTHOR Jeffrey Wilcox, 2011. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: openstack-dashboard\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-06-08 14:01+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: management/commands/createnovausers.py:31 msgid "Creates nova users for all users in the django auth database." msgstr "" #: management/commands/createnovausers.py:38 #, python-format msgid "creating user %s... " msgstr "" #: nova/forms.py:64 nova/forms.py:78 msgid "none available" msgstr "" #: nova/forms.py:182 #, python-format msgid "A key named %s already exists." msgstr "" #: nova/forms.py:196 #, python-format msgid "A security group named %s already exists." msgstr "" #: nova/shortcuts.py:43 msgid "User not authenticated" msgstr "" #: nova/shortcuts.py:50 #, python-format msgid "Project %s does not exist." msgstr "" #: nova/views/admin.py:96 #, python-format msgid "Successfully started VPN for project %(proj)s." msgstr "" #: nova/views/admin.py:100 #, python-format msgid "Unable to start VPN for the project %(proj)s: %(code)s - %(msg)s" msgstr "" #: nova/views/admin.py:140 #, python-format msgid "Successfully modified the project %(proj)s." msgstr "" #: nova/views/admin.py:145 #, python-format msgid "Unable modify the project %(proj)s: %(code)s - %(msg)s" msgstr "" #: nova/views/images.py:94 #, python-format msgid "Unable to launch: %s" msgstr "" #: nova/views/images.py:106 #, python-format msgid "Instance %s launched." msgstr "" #: nova/views/images.py:157 #, python-format msgid "Unable to deregister image: %s" msgstr "" #: nova/views/images.py:163 #, python-format msgid "Image %s has been successfully deregistered." msgstr "" #: nova/views/images.py:188 #, python-format msgid "Unable to make image private: %s" msgstr "" #: nova/views/images.py:202 #, python-format msgid "Unable to make image public: %s" msgstr "" #: nova/views/images.py:228 #, python-format msgid "Unable to update image: %s" msgstr "" #: nova/views/images.py:231 #, python-format msgid "Image %s has been updated." msgstr "" #: nova/views/instances.py:145 #, python-format msgid "Unable to terminate %(inst)s: %(msg)s" msgstr "" #: nova/views/instances.py:156 #, python-format msgid "Instance %(inst)s has been terminated." msgstr "" #: nova/views/instances.py:220 #, python-format msgid "Unable to update instance %(inst)s: %(msg)s" msgstr "" #: nova/views/instances.py:232 #, python-format msgid "Instance %(inst)s has been updated." msgstr "" #: nova/views/keypairs.py:67 #, python-format msgid "Unable to create key: %s" msgstr "" #: nova/views/keypairs.py:112 #, python-format msgid "Unable to delete key: %s" msgstr "" #: nova/views/keypairs.py:117 #, python-format msgid "Key %s has been successfully deleted." msgstr "" #: nova/views/regions.py:39 #, python-format msgid "You are now using the region \"%s\"." msgstr "" #: nova/views/securitygroups.py:85 #, python-format msgid "Unable to create security group: %s" msgstr "" #: nova/views/securitygroups.py:92 #, python-format msgid "Security Group %s has been succesfully created." msgstr "" #: nova/views/securitygroups.py:125 #, python-format msgid "Unable to authorize: %s" msgstr "" #: nova/views/securitygroups.py:136 #, python-format msgid "" "Security Group %(grp)s: Access to %(proto)s ports %(fr)d - %(to)d has been " "authorized." msgstr "" #: nova/views/securitygroups.py:177 #, python-format msgid "Unable to revoke: %s" msgstr "" #: nova/views/securitygroups.py:186 #, python-format msgid "" "Security Group %(grp)s: Access to %(proto)s ports %(fr)d - %(to)d has been " "revoked." msgstr "" #: nova/views/securitygroups.py:210 #, python-format msgid "Unable to delete security group: %s" msgstr "" #: nova/views/securitygroups.py:215 #, python-format msgid "Security Group %s was successfully deleted." msgstr "" #: nova/views/volumes.py:69 #, python-format msgid "Unable to create volume: %s" msgstr "" #: nova/views/volumes.py:77 #, python-format msgid "Volume %(id)s %(name)s has been successfully created." msgstr "" #: nova/views/volumes.py:108 #, python-format msgid "Unable to delete volume: %s" msgstr "" #: nova/views/volumes.py:114 #, python-format msgid "Volume %s has been successfully deleted." msgstr "" #: nova/views/volumes.py:138 #, python-format msgid "Unable to attach volume: %s" msgstr "" #: nova/views/volumes.py:145 #, python-format msgid "" "Volume %s is scheduled to be attached. If it doesn't become attached in two " "minutes, please try again (you may need to specify a different device)." msgstr "" #: nova/views/volumes.py:179 #, python-format msgid "Unable to detach volume: %s" msgstr "" #: nova/views/volumes.py:185 #, python-format msgid "Volume %s has been successfully detached." msgstr "" #: templates/admin/django_openstack/nova/project/delete_project.html:13 msgid "Delete Project" msgstr "" #: templates/admin/django_openstack/nova/project/delete_project.html:14 msgid "Do you really want to delete this project?<" msgstr "" #: templates/admin/django_openstack/nova/project/delete_project_user.html:8 msgid "Delete" msgstr "" #: templates/admin/django_openstack/nova/project/delete_project_user.html:13 #: templates/admin/django_openstack/nova/project/project_user.html:67 msgid "Remove User From Project" msgstr "" #: templates/admin/django_openstack/nova/project/delete_project_user.html:14 msgid "Do you really want to remove this user from project?" msgstr "" #: templates/admin/django_openstack/nova/project/send_credentials.html:46 #: templates/admin/django_openstack/nova/project/send_credentials.html:81 msgid "Send Credentials" msgstr "" #: templates/admin/django_openstack/nova/project/send_credentials.html:47 #, python-format msgid "" "\"Select which users you would like to send credentials to from the " "'%(proj)s' project.\"" msgstr "" #: templates/admin/django_openstack/nova/project/send_credentials.html:49 msgid "Credentials sent successfully" msgstr "" #: templates/django_openstack/nova/credentials/expired.html:6 msgid "Expired Token" msgstr "" #: templates/django_openstack/nova/credentials/expired.html:10 msgid "The link you clicked has expired." msgstr "" #: templates/django_openstack/nova/credentials/expired.html:12 #, python-format msgid "" "This credentials download link you have reached\n" " is either invalid or has expired. Each link is only good for one use. " "If\n" " you need to download your credentials again, please contact the\n" " %(brand)s support team." msgstr "" #: templates/django_openstack/nova/images/_list.html:70 msgid "Make Private" msgstr "" #: templates/django_openstack/nova/images/_list.html:72 msgid "Make Public" msgstr "" #: templates/django_openstack/nova/images/_list.html:80 msgid "Remove Image" msgstr "" #: templates/django_openstack/nova/images/_list.html:110 msgid "No images currently available." msgstr "" #: templates/django_openstack/nova/images/edit.html:13 msgid "Edit Image" msgstr "" #: templates/django_openstack/nova/images/edit.html:14 msgid "" "From this page you can edit the name and description of an image that " "belongs to you." msgstr "" #: templates/django_openstack/nova/images/edit.html:18 msgid "Edit Image:" msgstr "" #: templates/django_openstack/nova/images/edit.html:29 msgid "Update Image" msgstr "" #: templates/django_openstack/nova/images/index.html:4 msgid "Launch an Image" msgstr "" #: templates/django_openstack/nova/images/index.html:14 msgid "Images" msgstr "" #: templates/django_openstack/nova/images/index.html:15 msgid "" "Images are snapshots of running systems which can easily be deployed to run " "one or more instances." msgstr "" #: templates/django_openstack/nova/images/launch.html:13 #: templates/django_openstack/nova/images/launch.html:21 msgid "Launch Image" msgstr "" #: templates/django_openstack/nova/images/launch.html:14 msgid "" "You can launch up to five instances of an image at a time. Some images allow " "for custom configuration to be passed in via User data." msgstr "" #: templates/django_openstack/nova/images/launch.html:23 msgid "Location" msgstr "" #: templates/django_openstack/nova/instances/_instances_list.html:102 msgid "" "No instances are currently running. You may start a new instance from the" msgstr "" #: templates/django_openstack/nova/instances/detail_list.html:10 msgid "Instance ID:" msgstr "" #: templates/django_openstack/nova/instances/detail_list.html:11 msgid "Here you can see up to the minute performance data about your instance." msgstr "" #: templates/django_openstack/nova/instances/detail_list.html:18 #: templates/django_openstack/nova/instances/edit.html:18 msgid "Edit Instance:" msgstr "" #: templates/django_openstack/nova/instances/detail_list.html:29 #: templates/django_openstack/nova/instances/edit.html:29 msgid "Update Instance" msgstr "" #: templates/django_openstack/nova/instances/edit.html:13 msgid "Edit Instance" msgstr "" #: templates/django_openstack/nova/instances/edit.html:14 msgid "" "From this page you can give your instance an alias, so you don't have to " "remember its unique id." msgstr "" #: templates/django_openstack/nova/instances/index.html:11 msgid "Instances" msgstr "" #: templates/django_openstack/nova/instances/index.html:12 msgid "" "Instances are virtual servers launched from images. You can launch instances " "from the" msgstr "" #: templates/django_openstack/nova/instances/index.html:22 msgid "Are you sure you wish to terminate instance" msgstr "" #: templates/django_openstack/nova/instances/index.html:26 msgid "" "A connection error has occurred. Please ensure you are still connected to " "VPN." msgstr "" #: templates/django_openstack/nova/instances/performance.html:10 #, python-format msgid "Instance ID: %(instance.id)s Performance\" " msgstr "" #: templates/django_openstack/nova/keypairs/_list.html:28 msgid "No key pairs currently exist." msgstr "" #: templates/django_openstack/nova/keypairs/index.html:13 msgid "Keys" msgstr "" #: templates/django_openstack/nova/keypairs/index.html:14 msgid "" "Key pairs are ssh credentials which are injected into images when they are " "launched. Creating a new key pair registers the public key and downloads the " "private key (a pem file). Protect and use the key as a normal private " "key." msgstr "" #: templates/django_openstack/nova/keypairs/index.html:36 msgid "Are you sure you wish to delete key" msgstr "" #: templates/django_openstack/nova/projects/edit_user.html:24 msgid "Edit User Roles" msgstr "" #: templates/django_openstack/nova/projects/edit_user.html:25 msgid "From here you can edit multiple user roles." msgstr "" #: templates/django_openstack/nova/projects/edit_user.html:35 msgid "Edit Roles for User:" msgstr "" #: templates/django_openstack/nova/projects/edit_user.html:67 #: templates/django_openstack/nova/projects/manage.html:39 msgid "No users are currently associated with this project." msgstr "" #: templates/django_openstack/nova/projects/index.html:14 #, python-format msgid "" "Welcome to the %(proj)s Overview. From here you can manage " "your instances, images, keys, and security groups." msgstr "" #: templates/django_openstack/nova/projects/index.html:15 msgid "" "To get started using the command line management tools, you can download euca2ools and use them with your x509 " "credentials." msgstr "" #: templates/django_openstack/nova/projects/index.html:21 msgid "Generate X509 credentials." msgstr "" #: templates/django_openstack/nova/projects/index.html:22 msgid "View Instances" msgstr "" #: templates/django_openstack/nova/projects/index.html:23 msgid "View Images." msgstr "" #: templates/django_openstack/nova/projects/manage.html:8 msgid "Manage Users and Roles" msgstr "" #: templates/django_openstack/nova/projects/manage.html:9 msgid "From here you can manage users and roles." msgstr "" #: templates/django_openstack/nova/securitygroups/detail.html:19 #, python-format msgid " Security Group: %(securitygroup.name)s " msgstr "" #: templates/django_openstack/nova/securitygroups/detail.html:20 msgid "" "Add and remove protocols to the security group by authorizing and revoking " "port forwarding. For instance
[tcp, 80, 80] will allow access to HTTP " "from devices outside this security group." msgstr "" #: templates/django_openstack/nova/securitygroups/index.html:19 msgid "Security Groups" msgstr "" #: templates/django_openstack/nova/securitygroups/index.html:20 msgid "" "Security groups are firewall rules which allow access to your instances from " "other groups as well as the internet. All ports/protocols are denied by " "default." msgstr "" #: templates/django_openstack/nova/volumes/index.html:8 msgid "Volumes" msgstr "" #: templates/django_openstack/nova/volumes/index.html:9 msgid "" "Volumes provide persistent block storage. Creating a new volume gives you a " "raw block device which you may format with your choice of filesystems (ext3 " "is recommended). A volume may only be attached to a single instance at a " "time." msgstr "" #: templates/django_openstack/nova/volumes/index.html:59 msgid "No volumes currently exist." msgstr "" #: templates/django_openstack/nova/volumes/index.html:68 msgid "Create New Volume" msgstr "" #: templates/django_openstack/nova/volumes/index.html:79 msgid "Attach Volume" msgstr "" python-django-nova-0.3~git20110711/django_openstack/locale/zh-cn/0000775000175000017500000000000011606611227023364 5ustar chuckchuckpython-django-nova-0.3~git20110711/django_openstack/locale/zh-cn/LC_MESSAGES/0000775000175000017500000000000011606611227025151 5ustar chuckchuckpython-django-nova-0.3~git20110711/django_openstack/locale/zh-cn/LC_MESSAGES/django.mo0000664000175000017500000000057611606611227026760 0ustar chuckchuckÞ•$,8D9Project-Id-Version: openstack-dashboard Report-Msgid-Bugs-To: POT-Creation-Date: 2011-06-08 14:01+0900 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: LANGUAGE Language: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit python-django-nova-0.3~git20110711/django_openstack/locale/zh-cn/LC_MESSAGES/django.po0000664000175000017500000003300111606611227026750 0ustar chuckchuck# Translations of Dashboard for OpenStack User Interface. # Copyright 2011 Midokura KK # This file is distributed under the same license as the Dashboard for OpenStack. # FIRST AUTHOR Jeffrey Wilcox, 2011. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: openstack-dashboard\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-06-08 14:01+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: management/commands/createnovausers.py:31 msgid "Creates nova users for all users in the django auth database." msgstr "" #: management/commands/createnovausers.py:38 #, python-format msgid "creating user %s... " msgstr "" #: nova/forms.py:64 nova/forms.py:78 msgid "none available" msgstr "" #: nova/forms.py:182 #, python-format msgid "A key named %s already exists." msgstr "" #: nova/forms.py:196 #, python-format msgid "A security group named %s already exists." msgstr "" #: nova/shortcuts.py:43 msgid "User not authenticated" msgstr "" #: nova/shortcuts.py:50 #, python-format msgid "Project %s does not exist." msgstr "" #: nova/views/admin.py:96 #, python-format msgid "Successfully started VPN for project %(proj)s." msgstr "" #: nova/views/admin.py:100 #, python-format msgid "Unable to start VPN for the project %(proj)s: %(code)s - %(msg)s" msgstr "" #: nova/views/admin.py:140 #, python-format msgid "Successfully modified the project %(proj)s." msgstr "" #: nova/views/admin.py:145 #, python-format msgid "Unable modify the project %(proj)s: %(code)s - %(msg)s" msgstr "" #: nova/views/images.py:94 #, python-format msgid "Unable to launch: %s" msgstr "" #: nova/views/images.py:106 #, python-format msgid "Instance %s launched." msgstr "" #: nova/views/images.py:157 #, python-format msgid "Unable to deregister image: %s" msgstr "" #: nova/views/images.py:163 #, python-format msgid "Image %s has been successfully deregistered." msgstr "" #: nova/views/images.py:188 #, python-format msgid "Unable to make image private: %s" msgstr "" #: nova/views/images.py:202 #, python-format msgid "Unable to make image public: %s" msgstr "" #: nova/views/images.py:228 #, python-format msgid "Unable to update image: %s" msgstr "" #: nova/views/images.py:231 #, python-format msgid "Image %s has been updated." msgstr "" #: nova/views/instances.py:145 #, python-format msgid "Unable to terminate %(inst)s: %(msg)s" msgstr "" #: nova/views/instances.py:156 #, python-format msgid "Instance %(inst)s has been terminated." msgstr "" #: nova/views/instances.py:220 #, python-format msgid "Unable to update instance %(inst)s: %(msg)s" msgstr "" #: nova/views/instances.py:232 #, python-format msgid "Instance %(inst)s has been updated." msgstr "" #: nova/views/keypairs.py:67 #, python-format msgid "Unable to create key: %s" msgstr "" #: nova/views/keypairs.py:112 #, python-format msgid "Unable to delete key: %s" msgstr "" #: nova/views/keypairs.py:117 #, python-format msgid "Key %s has been successfully deleted." msgstr "" #: nova/views/regions.py:39 #, python-format msgid "You are now using the region \"%s\"." msgstr "" #: nova/views/securitygroups.py:85 #, python-format msgid "Unable to create security group: %s" msgstr "" #: nova/views/securitygroups.py:92 #, python-format msgid "Security Group %s has been succesfully created." msgstr "" #: nova/views/securitygroups.py:125 #, python-format msgid "Unable to authorize: %s" msgstr "" #: nova/views/securitygroups.py:136 #, python-format msgid "" "Security Group %(grp)s: Access to %(proto)s ports %(fr)d - %(to)d has been " "authorized." msgstr "" #: nova/views/securitygroups.py:177 #, python-format msgid "Unable to revoke: %s" msgstr "" #: nova/views/securitygroups.py:186 #, python-format msgid "" "Security Group %(grp)s: Access to %(proto)s ports %(fr)d - %(to)d has been " "revoked." msgstr "" #: nova/views/securitygroups.py:210 #, python-format msgid "Unable to delete security group: %s" msgstr "" #: nova/views/securitygroups.py:215 #, python-format msgid "Security Group %s was successfully deleted." msgstr "" #: nova/views/volumes.py:69 #, python-format msgid "Unable to create volume: %s" msgstr "" #: nova/views/volumes.py:77 #, python-format msgid "Volume %(id)s %(name)s has been successfully created." msgstr "" #: nova/views/volumes.py:108 #, python-format msgid "Unable to delete volume: %s" msgstr "" #: nova/views/volumes.py:114 #, python-format msgid "Volume %s has been successfully deleted." msgstr "" #: nova/views/volumes.py:138 #, python-format msgid "Unable to attach volume: %s" msgstr "" #: nova/views/volumes.py:145 #, python-format msgid "" "Volume %s is scheduled to be attached. If it doesn't become attached in two " "minutes, please try again (you may need to specify a different device)." msgstr "" #: nova/views/volumes.py:179 #, python-format msgid "Unable to detach volume: %s" msgstr "" #: nova/views/volumes.py:185 #, python-format msgid "Volume %s has been successfully detached." msgstr "" #: templates/admin/django_openstack/nova/project/delete_project.html:13 msgid "Delete Project" msgstr "" #: templates/admin/django_openstack/nova/project/delete_project.html:14 msgid "Do you really want to delete this project?<" msgstr "" #: templates/admin/django_openstack/nova/project/delete_project_user.html:8 msgid "Delete" msgstr "" #: templates/admin/django_openstack/nova/project/delete_project_user.html:13 #: templates/admin/django_openstack/nova/project/project_user.html:67 msgid "Remove User From Project" msgstr "" #: templates/admin/django_openstack/nova/project/delete_project_user.html:14 msgid "Do you really want to remove this user from project?" msgstr "" #: templates/admin/django_openstack/nova/project/send_credentials.html:46 #: templates/admin/django_openstack/nova/project/send_credentials.html:81 msgid "Send Credentials" msgstr "" #: templates/admin/django_openstack/nova/project/send_credentials.html:47 #, python-format msgid "" "\"Select which users you would like to send credentials to from the " "'%(proj)s' project.\"" msgstr "" #: templates/admin/django_openstack/nova/project/send_credentials.html:49 msgid "Credentials sent successfully" msgstr "" #: templates/django_openstack/nova/credentials/expired.html:6 msgid "Expired Token" msgstr "" #: templates/django_openstack/nova/credentials/expired.html:10 msgid "The link you clicked has expired." msgstr "" #: templates/django_openstack/nova/credentials/expired.html:12 #, python-format msgid "" "This credentials download link you have reached\n" " is either invalid or has expired. Each link is only good for one use. " "If\n" " you need to download your credentials again, please contact the\n" " %(brand)s support team." msgstr "" #: templates/django_openstack/nova/images/_list.html:70 msgid "Make Private" msgstr "" #: templates/django_openstack/nova/images/_list.html:72 msgid "Make Public" msgstr "" #: templates/django_openstack/nova/images/_list.html:80 msgid "Remove Image" msgstr "" #: templates/django_openstack/nova/images/_list.html:110 msgid "No images currently available." msgstr "" #: templates/django_openstack/nova/images/edit.html:13 msgid "Edit Image" msgstr "" #: templates/django_openstack/nova/images/edit.html:14 msgid "" "From this page you can edit the name and description of an image that " "belongs to you." msgstr "" #: templates/django_openstack/nova/images/edit.html:18 msgid "Edit Image:" msgstr "" #: templates/django_openstack/nova/images/edit.html:29 msgid "Update Image" msgstr "" #: templates/django_openstack/nova/images/index.html:4 msgid "Launch an Image" msgstr "" #: templates/django_openstack/nova/images/index.html:14 msgid "Images" msgstr "" #: templates/django_openstack/nova/images/index.html:15 msgid "" "Images are snapshots of running systems which can easily be deployed to run " "one or more instances." msgstr "" #: templates/django_openstack/nova/images/launch.html:13 #: templates/django_openstack/nova/images/launch.html:21 msgid "Launch Image" msgstr "" #: templates/django_openstack/nova/images/launch.html:14 msgid "" "You can launch up to five instances of an image at a time. Some images allow " "for custom configuration to be passed in via User data." msgstr "" #: templates/django_openstack/nova/images/launch.html:23 msgid "Location" msgstr "" #: templates/django_openstack/nova/instances/_instances_list.html:102 msgid "" "No instances are currently running. You may start a new instance from the" msgstr "" #: templates/django_openstack/nova/instances/detail_list.html:10 msgid "Instance ID:" msgstr "" #: templates/django_openstack/nova/instances/detail_list.html:11 msgid "Here you can see up to the minute performance data about your instance." msgstr "" #: templates/django_openstack/nova/instances/detail_list.html:18 #: templates/django_openstack/nova/instances/edit.html:18 msgid "Edit Instance:" msgstr "" #: templates/django_openstack/nova/instances/detail_list.html:29 #: templates/django_openstack/nova/instances/edit.html:29 msgid "Update Instance" msgstr "" #: templates/django_openstack/nova/instances/edit.html:13 msgid "Edit Instance" msgstr "" #: templates/django_openstack/nova/instances/edit.html:14 msgid "" "From this page you can give your instance an alias, so you don't have to " "remember its unique id." msgstr "" #: templates/django_openstack/nova/instances/index.html:11 msgid "Instances" msgstr "" #: templates/django_openstack/nova/instances/index.html:12 msgid "" "Instances are virtual servers launched from images. You can launch instances " "from the" msgstr "" #: templates/django_openstack/nova/instances/index.html:22 msgid "Are you sure you wish to terminate instance" msgstr "" #: templates/django_openstack/nova/instances/index.html:26 msgid "" "A connection error has occurred. Please ensure you are still connected to " "VPN." msgstr "" #: templates/django_openstack/nova/instances/performance.html:10 #, python-format msgid "Instance ID: %(instance.id)s Performance\" " msgstr "" #: templates/django_openstack/nova/keypairs/_list.html:28 msgid "No key pairs currently exist." msgstr "" #: templates/django_openstack/nova/keypairs/index.html:13 msgid "Keys" msgstr "" #: templates/django_openstack/nova/keypairs/index.html:14 msgid "" "Key pairs are ssh credentials which are injected into images when they are " "launched. Creating a new key pair registers the public key and downloads the " "private key (a pem file). Protect and use the key as a normal private " "key." msgstr "" #: templates/django_openstack/nova/keypairs/index.html:36 msgid "Are you sure you wish to delete key" msgstr "" #: templates/django_openstack/nova/projects/edit_user.html:24 msgid "Edit User Roles" msgstr "" #: templates/django_openstack/nova/projects/edit_user.html:25 msgid "From here you can edit multiple user roles." msgstr "" #: templates/django_openstack/nova/projects/edit_user.html:35 msgid "Edit Roles for User:" msgstr "" #: templates/django_openstack/nova/projects/edit_user.html:67 #: templates/django_openstack/nova/projects/manage.html:39 msgid "No users are currently associated with this project." msgstr "" #: templates/django_openstack/nova/projects/index.html:14 #, python-format msgid "" "Welcome to the %(proj)s Overview. From here you can manage " "your instances, images, keys, and security groups." msgstr "" #: templates/django_openstack/nova/projects/index.html:15 msgid "" "To get started using the command line management tools, you can download euca2ools and use them with your x509 " "credentials." msgstr "" #: templates/django_openstack/nova/projects/index.html:21 msgid "Generate X509 credentials." msgstr "" #: templates/django_openstack/nova/projects/index.html:22 msgid "View Instances" msgstr "" #: templates/django_openstack/nova/projects/index.html:23 msgid "View Images." msgstr "" #: templates/django_openstack/nova/projects/manage.html:8 msgid "Manage Users and Roles" msgstr "" #: templates/django_openstack/nova/projects/manage.html:9 msgid "From here you can manage users and roles." msgstr "" #: templates/django_openstack/nova/securitygroups/detail.html:19 #, python-format msgid " Security Group: %(securitygroup.name)s " msgstr "" #: templates/django_openstack/nova/securitygroups/detail.html:20 msgid "" "Add and remove protocols to the security group by authorizing and revoking " "port forwarding. For instance
[tcp, 80, 80] will allow access to HTTP " "from devices outside this security group." msgstr "" #: templates/django_openstack/nova/securitygroups/index.html:19 msgid "Security Groups" msgstr "" #: templates/django_openstack/nova/securitygroups/index.html:20 msgid "" "Security groups are firewall rules which allow access to your instances from " "other groups as well as the internet. All ports/protocols are denied by " "default." msgstr "" #: templates/django_openstack/nova/volumes/index.html:8 msgid "Volumes" msgstr "" #: templates/django_openstack/nova/volumes/index.html:9 msgid "" "Volumes provide persistent block storage. Creating a new volume gives you a " "raw block device which you may format with your choice of filesystems (ext3 " "is recommended). A volume may only be attached to a single instance at a " "time." msgstr "" #: templates/django_openstack/nova/volumes/index.html:59 msgid "No volumes currently exist." msgstr "" #: templates/django_openstack/nova/volumes/index.html:68 msgid "Create New Volume" msgstr "" #: templates/django_openstack/nova/volumes/index.html:79 msgid "Attach Volume" msgstr "" python-django-nova-0.3~git20110711/django_openstack/locale/zh-tw/0000775000175000017500000000000011606611227023416 5ustar chuckchuckpython-django-nova-0.3~git20110711/django_openstack/locale/zh-tw/LC_MESSAGES/0000775000175000017500000000000011606611227025203 5ustar chuckchuckpython-django-nova-0.3~git20110711/django_openstack/locale/zh-tw/LC_MESSAGES/django.mo0000664000175000017500000000057611606611227027012 0ustar chuckchuckÞ•$,8D9Project-Id-Version: openstack-dashboard Report-Msgid-Bugs-To: POT-Creation-Date: 2011-06-08 14:01+0900 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: LANGUAGE Language: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit python-django-nova-0.3~git20110711/django_openstack/locale/zh-tw/LC_MESSAGES/django.po0000664000175000017500000003300111606611227027002 0ustar chuckchuck# Translations of Dashboard for OpenStack User Interface. # Copyright 2011 Midokura KK # This file is distributed under the same license as the Dashboard for OpenStack. # FIRST AUTHOR Jeffrey Wilcox, 2011. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: openstack-dashboard\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-06-08 14:01+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: management/commands/createnovausers.py:31 msgid "Creates nova users for all users in the django auth database." msgstr "" #: management/commands/createnovausers.py:38 #, python-format msgid "creating user %s... " msgstr "" #: nova/forms.py:64 nova/forms.py:78 msgid "none available" msgstr "" #: nova/forms.py:182 #, python-format msgid "A key named %s already exists." msgstr "" #: nova/forms.py:196 #, python-format msgid "A security group named %s already exists." msgstr "" #: nova/shortcuts.py:43 msgid "User not authenticated" msgstr "" #: nova/shortcuts.py:50 #, python-format msgid "Project %s does not exist." msgstr "" #: nova/views/admin.py:96 #, python-format msgid "Successfully started VPN for project %(proj)s." msgstr "" #: nova/views/admin.py:100 #, python-format msgid "Unable to start VPN for the project %(proj)s: %(code)s - %(msg)s" msgstr "" #: nova/views/admin.py:140 #, python-format msgid "Successfully modified the project %(proj)s." msgstr "" #: nova/views/admin.py:145 #, python-format msgid "Unable modify the project %(proj)s: %(code)s - %(msg)s" msgstr "" #: nova/views/images.py:94 #, python-format msgid "Unable to launch: %s" msgstr "" #: nova/views/images.py:106 #, python-format msgid "Instance %s launched." msgstr "" #: nova/views/images.py:157 #, python-format msgid "Unable to deregister image: %s" msgstr "" #: nova/views/images.py:163 #, python-format msgid "Image %s has been successfully deregistered." msgstr "" #: nova/views/images.py:188 #, python-format msgid "Unable to make image private: %s" msgstr "" #: nova/views/images.py:202 #, python-format msgid "Unable to make image public: %s" msgstr "" #: nova/views/images.py:228 #, python-format msgid "Unable to update image: %s" msgstr "" #: nova/views/images.py:231 #, python-format msgid "Image %s has been updated." msgstr "" #: nova/views/instances.py:145 #, python-format msgid "Unable to terminate %(inst)s: %(msg)s" msgstr "" #: nova/views/instances.py:156 #, python-format msgid "Instance %(inst)s has been terminated." msgstr "" #: nova/views/instances.py:220 #, python-format msgid "Unable to update instance %(inst)s: %(msg)s" msgstr "" #: nova/views/instances.py:232 #, python-format msgid "Instance %(inst)s has been updated." msgstr "" #: nova/views/keypairs.py:67 #, python-format msgid "Unable to create key: %s" msgstr "" #: nova/views/keypairs.py:112 #, python-format msgid "Unable to delete key: %s" msgstr "" #: nova/views/keypairs.py:117 #, python-format msgid "Key %s has been successfully deleted." msgstr "" #: nova/views/regions.py:39 #, python-format msgid "You are now using the region \"%s\"." msgstr "" #: nova/views/securitygroups.py:85 #, python-format msgid "Unable to create security group: %s" msgstr "" #: nova/views/securitygroups.py:92 #, python-format msgid "Security Group %s has been succesfully created." msgstr "" #: nova/views/securitygroups.py:125 #, python-format msgid "Unable to authorize: %s" msgstr "" #: nova/views/securitygroups.py:136 #, python-format msgid "" "Security Group %(grp)s: Access to %(proto)s ports %(fr)d - %(to)d has been " "authorized." msgstr "" #: nova/views/securitygroups.py:177 #, python-format msgid "Unable to revoke: %s" msgstr "" #: nova/views/securitygroups.py:186 #, python-format msgid "" "Security Group %(grp)s: Access to %(proto)s ports %(fr)d - %(to)d has been " "revoked." msgstr "" #: nova/views/securitygroups.py:210 #, python-format msgid "Unable to delete security group: %s" msgstr "" #: nova/views/securitygroups.py:215 #, python-format msgid "Security Group %s was successfully deleted." msgstr "" #: nova/views/volumes.py:69 #, python-format msgid "Unable to create volume: %s" msgstr "" #: nova/views/volumes.py:77 #, python-format msgid "Volume %(id)s %(name)s has been successfully created." msgstr "" #: nova/views/volumes.py:108 #, python-format msgid "Unable to delete volume: %s" msgstr "" #: nova/views/volumes.py:114 #, python-format msgid "Volume %s has been successfully deleted." msgstr "" #: nova/views/volumes.py:138 #, python-format msgid "Unable to attach volume: %s" msgstr "" #: nova/views/volumes.py:145 #, python-format msgid "" "Volume %s is scheduled to be attached. If it doesn't become attached in two " "minutes, please try again (you may need to specify a different device)." msgstr "" #: nova/views/volumes.py:179 #, python-format msgid "Unable to detach volume: %s" msgstr "" #: nova/views/volumes.py:185 #, python-format msgid "Volume %s has been successfully detached." msgstr "" #: templates/admin/django_openstack/nova/project/delete_project.html:13 msgid "Delete Project" msgstr "" #: templates/admin/django_openstack/nova/project/delete_project.html:14 msgid "Do you really want to delete this project?<" msgstr "" #: templates/admin/django_openstack/nova/project/delete_project_user.html:8 msgid "Delete" msgstr "" #: templates/admin/django_openstack/nova/project/delete_project_user.html:13 #: templates/admin/django_openstack/nova/project/project_user.html:67 msgid "Remove User From Project" msgstr "" #: templates/admin/django_openstack/nova/project/delete_project_user.html:14 msgid "Do you really want to remove this user from project?" msgstr "" #: templates/admin/django_openstack/nova/project/send_credentials.html:46 #: templates/admin/django_openstack/nova/project/send_credentials.html:81 msgid "Send Credentials" msgstr "" #: templates/admin/django_openstack/nova/project/send_credentials.html:47 #, python-format msgid "" "\"Select which users you would like to send credentials to from the " "'%(proj)s' project.\"" msgstr "" #: templates/admin/django_openstack/nova/project/send_credentials.html:49 msgid "Credentials sent successfully" msgstr "" #: templates/django_openstack/nova/credentials/expired.html:6 msgid "Expired Token" msgstr "" #: templates/django_openstack/nova/credentials/expired.html:10 msgid "The link you clicked has expired." msgstr "" #: templates/django_openstack/nova/credentials/expired.html:12 #, python-format msgid "" "This credentials download link you have reached\n" " is either invalid or has expired. Each link is only good for one use. " "If\n" " you need to download your credentials again, please contact the\n" " %(brand)s support team." msgstr "" #: templates/django_openstack/nova/images/_list.html:70 msgid "Make Private" msgstr "" #: templates/django_openstack/nova/images/_list.html:72 msgid "Make Public" msgstr "" #: templates/django_openstack/nova/images/_list.html:80 msgid "Remove Image" msgstr "" #: templates/django_openstack/nova/images/_list.html:110 msgid "No images currently available." msgstr "" #: templates/django_openstack/nova/images/edit.html:13 msgid "Edit Image" msgstr "" #: templates/django_openstack/nova/images/edit.html:14 msgid "" "From this page you can edit the name and description of an image that " "belongs to you." msgstr "" #: templates/django_openstack/nova/images/edit.html:18 msgid "Edit Image:" msgstr "" #: templates/django_openstack/nova/images/edit.html:29 msgid "Update Image" msgstr "" #: templates/django_openstack/nova/images/index.html:4 msgid "Launch an Image" msgstr "" #: templates/django_openstack/nova/images/index.html:14 msgid "Images" msgstr "" #: templates/django_openstack/nova/images/index.html:15 msgid "" "Images are snapshots of running systems which can easily be deployed to run " "one or more instances." msgstr "" #: templates/django_openstack/nova/images/launch.html:13 #: templates/django_openstack/nova/images/launch.html:21 msgid "Launch Image" msgstr "" #: templates/django_openstack/nova/images/launch.html:14 msgid "" "You can launch up to five instances of an image at a time. Some images allow " "for custom configuration to be passed in via User data." msgstr "" #: templates/django_openstack/nova/images/launch.html:23 msgid "Location" msgstr "" #: templates/django_openstack/nova/instances/_instances_list.html:102 msgid "" "No instances are currently running. You may start a new instance from the" msgstr "" #: templates/django_openstack/nova/instances/detail_list.html:10 msgid "Instance ID:" msgstr "" #: templates/django_openstack/nova/instances/detail_list.html:11 msgid "Here you can see up to the minute performance data about your instance." msgstr "" #: templates/django_openstack/nova/instances/detail_list.html:18 #: templates/django_openstack/nova/instances/edit.html:18 msgid "Edit Instance:" msgstr "" #: templates/django_openstack/nova/instances/detail_list.html:29 #: templates/django_openstack/nova/instances/edit.html:29 msgid "Update Instance" msgstr "" #: templates/django_openstack/nova/instances/edit.html:13 msgid "Edit Instance" msgstr "" #: templates/django_openstack/nova/instances/edit.html:14 msgid "" "From this page you can give your instance an alias, so you don't have to " "remember its unique id." msgstr "" #: templates/django_openstack/nova/instances/index.html:11 msgid "Instances" msgstr "" #: templates/django_openstack/nova/instances/index.html:12 msgid "" "Instances are virtual servers launched from images. You can launch instances " "from the" msgstr "" #: templates/django_openstack/nova/instances/index.html:22 msgid "Are you sure you wish to terminate instance" msgstr "" #: templates/django_openstack/nova/instances/index.html:26 msgid "" "A connection error has occurred. Please ensure you are still connected to " "VPN." msgstr "" #: templates/django_openstack/nova/instances/performance.html:10 #, python-format msgid "Instance ID: %(instance.id)s Performance\" " msgstr "" #: templates/django_openstack/nova/keypairs/_list.html:28 msgid "No key pairs currently exist." msgstr "" #: templates/django_openstack/nova/keypairs/index.html:13 msgid "Keys" msgstr "" #: templates/django_openstack/nova/keypairs/index.html:14 msgid "" "Key pairs are ssh credentials which are injected into images when they are " "launched. Creating a new key pair registers the public key and downloads the " "private key (a pem file). Protect and use the key as a normal private " "key." msgstr "" #: templates/django_openstack/nova/keypairs/index.html:36 msgid "Are you sure you wish to delete key" msgstr "" #: templates/django_openstack/nova/projects/edit_user.html:24 msgid "Edit User Roles" msgstr "" #: templates/django_openstack/nova/projects/edit_user.html:25 msgid "From here you can edit multiple user roles." msgstr "" #: templates/django_openstack/nova/projects/edit_user.html:35 msgid "Edit Roles for User:" msgstr "" #: templates/django_openstack/nova/projects/edit_user.html:67 #: templates/django_openstack/nova/projects/manage.html:39 msgid "No users are currently associated with this project." msgstr "" #: templates/django_openstack/nova/projects/index.html:14 #, python-format msgid "" "Welcome to the %(proj)s Overview. From here you can manage " "your instances, images, keys, and security groups." msgstr "" #: templates/django_openstack/nova/projects/index.html:15 msgid "" "To get started using the command line management tools, you can download euca2ools and use them with your x509 " "credentials." msgstr "" #: templates/django_openstack/nova/projects/index.html:21 msgid "Generate X509 credentials." msgstr "" #: templates/django_openstack/nova/projects/index.html:22 msgid "View Instances" msgstr "" #: templates/django_openstack/nova/projects/index.html:23 msgid "View Images." msgstr "" #: templates/django_openstack/nova/projects/manage.html:8 msgid "Manage Users and Roles" msgstr "" #: templates/django_openstack/nova/projects/manage.html:9 msgid "From here you can manage users and roles." msgstr "" #: templates/django_openstack/nova/securitygroups/detail.html:19 #, python-format msgid " Security Group: %(securitygroup.name)s " msgstr "" #: templates/django_openstack/nova/securitygroups/detail.html:20 msgid "" "Add and remove protocols to the security group by authorizing and revoking " "port forwarding. For instance
[tcp, 80, 80] will allow access to HTTP " "from devices outside this security group." msgstr "" #: templates/django_openstack/nova/securitygroups/index.html:19 msgid "Security Groups" msgstr "" #: templates/django_openstack/nova/securitygroups/index.html:20 msgid "" "Security groups are firewall rules which allow access to your instances from " "other groups as well as the internet. All ports/protocols are denied by " "default." msgstr "" #: templates/django_openstack/nova/volumes/index.html:8 msgid "Volumes" msgstr "" #: templates/django_openstack/nova/volumes/index.html:9 msgid "" "Volumes provide persistent block storage. Creating a new volume gives you a " "raw block device which you may format with your choice of filesystems (ext3 " "is recommended). A volume may only be attached to a single instance at a " "time." msgstr "" #: templates/django_openstack/nova/volumes/index.html:59 msgid "No volumes currently exist." msgstr "" #: templates/django_openstack/nova/volumes/index.html:68 msgid "Create New Volume" msgstr "" #: templates/django_openstack/nova/volumes/index.html:79 msgid "Attach Volume" msgstr "" python-django-nova-0.3~git20110711/django_openstack/locale/pt/0000775000175000017500000000000011606611227022770 5ustar chuckchuckpython-django-nova-0.3~git20110711/django_openstack/locale/pt/LC_MESSAGES/0000775000175000017500000000000011606611227024555 5ustar chuckchuckpython-django-nova-0.3~git20110711/django_openstack/locale/pt/LC_MESSAGES/django.mo0000664000175000017500000000057611606611227026364 0ustar chuckchuckÞ•$,8D9Project-Id-Version: openstack-dashboard Report-Msgid-Bugs-To: POT-Creation-Date: 2011-06-08 14:01+0900 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: LANGUAGE Language: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit python-django-nova-0.3~git20110711/django_openstack/locale/pt/LC_MESSAGES/django.po0000664000175000017500000003300111606611227026354 0ustar chuckchuck# Translations of Dashboard for OpenStack User Interface. # Copyright 2011 Midokura KK # This file is distributed under the same license as the Dashboard for OpenStack. # FIRST AUTHOR Jeffrey Wilcox, 2011. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: openstack-dashboard\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-06-08 14:01+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: management/commands/createnovausers.py:31 msgid "Creates nova users for all users in the django auth database." msgstr "" #: management/commands/createnovausers.py:38 #, python-format msgid "creating user %s... " msgstr "" #: nova/forms.py:64 nova/forms.py:78 msgid "none available" msgstr "" #: nova/forms.py:182 #, python-format msgid "A key named %s already exists." msgstr "" #: nova/forms.py:196 #, python-format msgid "A security group named %s already exists." msgstr "" #: nova/shortcuts.py:43 msgid "User not authenticated" msgstr "" #: nova/shortcuts.py:50 #, python-format msgid "Project %s does not exist." msgstr "" #: nova/views/admin.py:96 #, python-format msgid "Successfully started VPN for project %(proj)s." msgstr "" #: nova/views/admin.py:100 #, python-format msgid "Unable to start VPN for the project %(proj)s: %(code)s - %(msg)s" msgstr "" #: nova/views/admin.py:140 #, python-format msgid "Successfully modified the project %(proj)s." msgstr "" #: nova/views/admin.py:145 #, python-format msgid "Unable modify the project %(proj)s: %(code)s - %(msg)s" msgstr "" #: nova/views/images.py:94 #, python-format msgid "Unable to launch: %s" msgstr "" #: nova/views/images.py:106 #, python-format msgid "Instance %s launched." msgstr "" #: nova/views/images.py:157 #, python-format msgid "Unable to deregister image: %s" msgstr "" #: nova/views/images.py:163 #, python-format msgid "Image %s has been successfully deregistered." msgstr "" #: nova/views/images.py:188 #, python-format msgid "Unable to make image private: %s" msgstr "" #: nova/views/images.py:202 #, python-format msgid "Unable to make image public: %s" msgstr "" #: nova/views/images.py:228 #, python-format msgid "Unable to update image: %s" msgstr "" #: nova/views/images.py:231 #, python-format msgid "Image %s has been updated." msgstr "" #: nova/views/instances.py:145 #, python-format msgid "Unable to terminate %(inst)s: %(msg)s" msgstr "" #: nova/views/instances.py:156 #, python-format msgid "Instance %(inst)s has been terminated." msgstr "" #: nova/views/instances.py:220 #, python-format msgid "Unable to update instance %(inst)s: %(msg)s" msgstr "" #: nova/views/instances.py:232 #, python-format msgid "Instance %(inst)s has been updated." msgstr "" #: nova/views/keypairs.py:67 #, python-format msgid "Unable to create key: %s" msgstr "" #: nova/views/keypairs.py:112 #, python-format msgid "Unable to delete key: %s" msgstr "" #: nova/views/keypairs.py:117 #, python-format msgid "Key %s has been successfully deleted." msgstr "" #: nova/views/regions.py:39 #, python-format msgid "You are now using the region \"%s\"." msgstr "" #: nova/views/securitygroups.py:85 #, python-format msgid "Unable to create security group: %s" msgstr "" #: nova/views/securitygroups.py:92 #, python-format msgid "Security Group %s has been succesfully created." msgstr "" #: nova/views/securitygroups.py:125 #, python-format msgid "Unable to authorize: %s" msgstr "" #: nova/views/securitygroups.py:136 #, python-format msgid "" "Security Group %(grp)s: Access to %(proto)s ports %(fr)d - %(to)d has been " "authorized." msgstr "" #: nova/views/securitygroups.py:177 #, python-format msgid "Unable to revoke: %s" msgstr "" #: nova/views/securitygroups.py:186 #, python-format msgid "" "Security Group %(grp)s: Access to %(proto)s ports %(fr)d - %(to)d has been " "revoked." msgstr "" #: nova/views/securitygroups.py:210 #, python-format msgid "Unable to delete security group: %s" msgstr "" #: nova/views/securitygroups.py:215 #, python-format msgid "Security Group %s was successfully deleted." msgstr "" #: nova/views/volumes.py:69 #, python-format msgid "Unable to create volume: %s" msgstr "" #: nova/views/volumes.py:77 #, python-format msgid "Volume %(id)s %(name)s has been successfully created." msgstr "" #: nova/views/volumes.py:108 #, python-format msgid "Unable to delete volume: %s" msgstr "" #: nova/views/volumes.py:114 #, python-format msgid "Volume %s has been successfully deleted." msgstr "" #: nova/views/volumes.py:138 #, python-format msgid "Unable to attach volume: %s" msgstr "" #: nova/views/volumes.py:145 #, python-format msgid "" "Volume %s is scheduled to be attached. If it doesn't become attached in two " "minutes, please try again (you may need to specify a different device)." msgstr "" #: nova/views/volumes.py:179 #, python-format msgid "Unable to detach volume: %s" msgstr "" #: nova/views/volumes.py:185 #, python-format msgid "Volume %s has been successfully detached." msgstr "" #: templates/admin/django_openstack/nova/project/delete_project.html:13 msgid "Delete Project" msgstr "" #: templates/admin/django_openstack/nova/project/delete_project.html:14 msgid "Do you really want to delete this project?<" msgstr "" #: templates/admin/django_openstack/nova/project/delete_project_user.html:8 msgid "Delete" msgstr "" #: templates/admin/django_openstack/nova/project/delete_project_user.html:13 #: templates/admin/django_openstack/nova/project/project_user.html:67 msgid "Remove User From Project" msgstr "" #: templates/admin/django_openstack/nova/project/delete_project_user.html:14 msgid "Do you really want to remove this user from project?" msgstr "" #: templates/admin/django_openstack/nova/project/send_credentials.html:46 #: templates/admin/django_openstack/nova/project/send_credentials.html:81 msgid "Send Credentials" msgstr "" #: templates/admin/django_openstack/nova/project/send_credentials.html:47 #, python-format msgid "" "\"Select which users you would like to send credentials to from the " "'%(proj)s' project.\"" msgstr "" #: templates/admin/django_openstack/nova/project/send_credentials.html:49 msgid "Credentials sent successfully" msgstr "" #: templates/django_openstack/nova/credentials/expired.html:6 msgid "Expired Token" msgstr "" #: templates/django_openstack/nova/credentials/expired.html:10 msgid "The link you clicked has expired." msgstr "" #: templates/django_openstack/nova/credentials/expired.html:12 #, python-format msgid "" "This credentials download link you have reached\n" " is either invalid or has expired. Each link is only good for one use. " "If\n" " you need to download your credentials again, please contact the\n" " %(brand)s support team." msgstr "" #: templates/django_openstack/nova/images/_list.html:70 msgid "Make Private" msgstr "" #: templates/django_openstack/nova/images/_list.html:72 msgid "Make Public" msgstr "" #: templates/django_openstack/nova/images/_list.html:80 msgid "Remove Image" msgstr "" #: templates/django_openstack/nova/images/_list.html:110 msgid "No images currently available." msgstr "" #: templates/django_openstack/nova/images/edit.html:13 msgid "Edit Image" msgstr "" #: templates/django_openstack/nova/images/edit.html:14 msgid "" "From this page you can edit the name and description of an image that " "belongs to you." msgstr "" #: templates/django_openstack/nova/images/edit.html:18 msgid "Edit Image:" msgstr "" #: templates/django_openstack/nova/images/edit.html:29 msgid "Update Image" msgstr "" #: templates/django_openstack/nova/images/index.html:4 msgid "Launch an Image" msgstr "" #: templates/django_openstack/nova/images/index.html:14 msgid "Images" msgstr "" #: templates/django_openstack/nova/images/index.html:15 msgid "" "Images are snapshots of running systems which can easily be deployed to run " "one or more instances." msgstr "" #: templates/django_openstack/nova/images/launch.html:13 #: templates/django_openstack/nova/images/launch.html:21 msgid "Launch Image" msgstr "" #: templates/django_openstack/nova/images/launch.html:14 msgid "" "You can launch up to five instances of an image at a time. Some images allow " "for custom configuration to be passed in via User data." msgstr "" #: templates/django_openstack/nova/images/launch.html:23 msgid "Location" msgstr "" #: templates/django_openstack/nova/instances/_instances_list.html:102 msgid "" "No instances are currently running. You may start a new instance from the" msgstr "" #: templates/django_openstack/nova/instances/detail_list.html:10 msgid "Instance ID:" msgstr "" #: templates/django_openstack/nova/instances/detail_list.html:11 msgid "Here you can see up to the minute performance data about your instance." msgstr "" #: templates/django_openstack/nova/instances/detail_list.html:18 #: templates/django_openstack/nova/instances/edit.html:18 msgid "Edit Instance:" msgstr "" #: templates/django_openstack/nova/instances/detail_list.html:29 #: templates/django_openstack/nova/instances/edit.html:29 msgid "Update Instance" msgstr "" #: templates/django_openstack/nova/instances/edit.html:13 msgid "Edit Instance" msgstr "" #: templates/django_openstack/nova/instances/edit.html:14 msgid "" "From this page you can give your instance an alias, so you don't have to " "remember its unique id." msgstr "" #: templates/django_openstack/nova/instances/index.html:11 msgid "Instances" msgstr "" #: templates/django_openstack/nova/instances/index.html:12 msgid "" "Instances are virtual servers launched from images. You can launch instances " "from the" msgstr "" #: templates/django_openstack/nova/instances/index.html:22 msgid "Are you sure you wish to terminate instance" msgstr "" #: templates/django_openstack/nova/instances/index.html:26 msgid "" "A connection error has occurred. Please ensure you are still connected to " "VPN." msgstr "" #: templates/django_openstack/nova/instances/performance.html:10 #, python-format msgid "Instance ID: %(instance.id)s Performance\" " msgstr "" #: templates/django_openstack/nova/keypairs/_list.html:28 msgid "No key pairs currently exist." msgstr "" #: templates/django_openstack/nova/keypairs/index.html:13 msgid "Keys" msgstr "" #: templates/django_openstack/nova/keypairs/index.html:14 msgid "" "Key pairs are ssh credentials which are injected into images when they are " "launched. Creating a new key pair registers the public key and downloads the " "private key (a pem file). Protect and use the key as a normal private " "key." msgstr "" #: templates/django_openstack/nova/keypairs/index.html:36 msgid "Are you sure you wish to delete key" msgstr "" #: templates/django_openstack/nova/projects/edit_user.html:24 msgid "Edit User Roles" msgstr "" #: templates/django_openstack/nova/projects/edit_user.html:25 msgid "From here you can edit multiple user roles." msgstr "" #: templates/django_openstack/nova/projects/edit_user.html:35 msgid "Edit Roles for User:" msgstr "" #: templates/django_openstack/nova/projects/edit_user.html:67 #: templates/django_openstack/nova/projects/manage.html:39 msgid "No users are currently associated with this project." msgstr "" #: templates/django_openstack/nova/projects/index.html:14 #, python-format msgid "" "Welcome to the %(proj)s Overview. From here you can manage " "your instances, images, keys, and security groups." msgstr "" #: templates/django_openstack/nova/projects/index.html:15 msgid "" "To get started using the command line management tools, you can download euca2ools and use them with your x509 " "credentials." msgstr "" #: templates/django_openstack/nova/projects/index.html:21 msgid "Generate X509 credentials." msgstr "" #: templates/django_openstack/nova/projects/index.html:22 msgid "View Instances" msgstr "" #: templates/django_openstack/nova/projects/index.html:23 msgid "View Images." msgstr "" #: templates/django_openstack/nova/projects/manage.html:8 msgid "Manage Users and Roles" msgstr "" #: templates/django_openstack/nova/projects/manage.html:9 msgid "From here you can manage users and roles." msgstr "" #: templates/django_openstack/nova/securitygroups/detail.html:19 #, python-format msgid " Security Group: %(securitygroup.name)s " msgstr "" #: templates/django_openstack/nova/securitygroups/detail.html:20 msgid "" "Add and remove protocols to the security group by authorizing and revoking " "port forwarding. For instance
[tcp, 80, 80] will allow access to HTTP " "from devices outside this security group." msgstr "" #: templates/django_openstack/nova/securitygroups/index.html:19 msgid "Security Groups" msgstr "" #: templates/django_openstack/nova/securitygroups/index.html:20 msgid "" "Security groups are firewall rules which allow access to your instances from " "other groups as well as the internet. All ports/protocols are denied by " "default." msgstr "" #: templates/django_openstack/nova/volumes/index.html:8 msgid "Volumes" msgstr "" #: templates/django_openstack/nova/volumes/index.html:9 msgid "" "Volumes provide persistent block storage. Creating a new volume gives you a " "raw block device which you may format with your choice of filesystems (ext3 " "is recommended). A volume may only be attached to a single instance at a " "time." msgstr "" #: templates/django_openstack/nova/volumes/index.html:59 msgid "No volumes currently exist." msgstr "" #: templates/django_openstack/nova/volumes/index.html:68 msgid "Create New Volume" msgstr "" #: templates/django_openstack/nova/volumes/index.html:79 msgid "Attach Volume" msgstr "" python-django-nova-0.3~git20110711/django_openstack/locale/en-gb/0000775000175000017500000000000011606611227023335 5ustar chuckchuckpython-django-nova-0.3~git20110711/django_openstack/locale/en-gb/LC_MESSAGES/0000775000175000017500000000000011606611227025122 5ustar chuckchuckpython-django-nova-0.3~git20110711/django_openstack/locale/en-gb/LC_MESSAGES/django.mo0000664000175000017500000000057611606611227026731 0ustar chuckchuckÞ•$,8D9Project-Id-Version: openstack-dashboard Report-Msgid-Bugs-To: POT-Creation-Date: 2011-06-08 14:01+0900 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: LANGUAGE Language: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit python-django-nova-0.3~git20110711/django_openstack/locale/en-gb/LC_MESSAGES/django.po0000664000175000017500000003300111606611227026721 0ustar chuckchuck# Translations of Dashboard for OpenStack User Interface. # Copyright 2011 Midokura KK # This file is distributed under the same license as the Dashboard for OpenStack. # FIRST AUTHOR Jeffrey Wilcox, 2011. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: openstack-dashboard\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-06-08 14:01+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: management/commands/createnovausers.py:31 msgid "Creates nova users for all users in the django auth database." msgstr "" #: management/commands/createnovausers.py:38 #, python-format msgid "creating user %s... " msgstr "" #: nova/forms.py:64 nova/forms.py:78 msgid "none available" msgstr "" #: nova/forms.py:182 #, python-format msgid "A key named %s already exists." msgstr "" #: nova/forms.py:196 #, python-format msgid "A security group named %s already exists." msgstr "" #: nova/shortcuts.py:43 msgid "User not authenticated" msgstr "" #: nova/shortcuts.py:50 #, python-format msgid "Project %s does not exist." msgstr "" #: nova/views/admin.py:96 #, python-format msgid "Successfully started VPN for project %(proj)s." msgstr "" #: nova/views/admin.py:100 #, python-format msgid "Unable to start VPN for the project %(proj)s: %(code)s - %(msg)s" msgstr "" #: nova/views/admin.py:140 #, python-format msgid "Successfully modified the project %(proj)s." msgstr "" #: nova/views/admin.py:145 #, python-format msgid "Unable modify the project %(proj)s: %(code)s - %(msg)s" msgstr "" #: nova/views/images.py:94 #, python-format msgid "Unable to launch: %s" msgstr "" #: nova/views/images.py:106 #, python-format msgid "Instance %s launched." msgstr "" #: nova/views/images.py:157 #, python-format msgid "Unable to deregister image: %s" msgstr "" #: nova/views/images.py:163 #, python-format msgid "Image %s has been successfully deregistered." msgstr "" #: nova/views/images.py:188 #, python-format msgid "Unable to make image private: %s" msgstr "" #: nova/views/images.py:202 #, python-format msgid "Unable to make image public: %s" msgstr "" #: nova/views/images.py:228 #, python-format msgid "Unable to update image: %s" msgstr "" #: nova/views/images.py:231 #, python-format msgid "Image %s has been updated." msgstr "" #: nova/views/instances.py:145 #, python-format msgid "Unable to terminate %(inst)s: %(msg)s" msgstr "" #: nova/views/instances.py:156 #, python-format msgid "Instance %(inst)s has been terminated." msgstr "" #: nova/views/instances.py:220 #, python-format msgid "Unable to update instance %(inst)s: %(msg)s" msgstr "" #: nova/views/instances.py:232 #, python-format msgid "Instance %(inst)s has been updated." msgstr "" #: nova/views/keypairs.py:67 #, python-format msgid "Unable to create key: %s" msgstr "" #: nova/views/keypairs.py:112 #, python-format msgid "Unable to delete key: %s" msgstr "" #: nova/views/keypairs.py:117 #, python-format msgid "Key %s has been successfully deleted." msgstr "" #: nova/views/regions.py:39 #, python-format msgid "You are now using the region \"%s\"." msgstr "" #: nova/views/securitygroups.py:85 #, python-format msgid "Unable to create security group: %s" msgstr "" #: nova/views/securitygroups.py:92 #, python-format msgid "Security Group %s has been succesfully created." msgstr "" #: nova/views/securitygroups.py:125 #, python-format msgid "Unable to authorize: %s" msgstr "" #: nova/views/securitygroups.py:136 #, python-format msgid "" "Security Group %(grp)s: Access to %(proto)s ports %(fr)d - %(to)d has been " "authorized." msgstr "" #: nova/views/securitygroups.py:177 #, python-format msgid "Unable to revoke: %s" msgstr "" #: nova/views/securitygroups.py:186 #, python-format msgid "" "Security Group %(grp)s: Access to %(proto)s ports %(fr)d - %(to)d has been " "revoked." msgstr "" #: nova/views/securitygroups.py:210 #, python-format msgid "Unable to delete security group: %s" msgstr "" #: nova/views/securitygroups.py:215 #, python-format msgid "Security Group %s was successfully deleted." msgstr "" #: nova/views/volumes.py:69 #, python-format msgid "Unable to create volume: %s" msgstr "" #: nova/views/volumes.py:77 #, python-format msgid "Volume %(id)s %(name)s has been successfully created." msgstr "" #: nova/views/volumes.py:108 #, python-format msgid "Unable to delete volume: %s" msgstr "" #: nova/views/volumes.py:114 #, python-format msgid "Volume %s has been successfully deleted." msgstr "" #: nova/views/volumes.py:138 #, python-format msgid "Unable to attach volume: %s" msgstr "" #: nova/views/volumes.py:145 #, python-format msgid "" "Volume %s is scheduled to be attached. If it doesn't become attached in two " "minutes, please try again (you may need to specify a different device)." msgstr "" #: nova/views/volumes.py:179 #, python-format msgid "Unable to detach volume: %s" msgstr "" #: nova/views/volumes.py:185 #, python-format msgid "Volume %s has been successfully detached." msgstr "" #: templates/admin/django_openstack/nova/project/delete_project.html:13 msgid "Delete Project" msgstr "" #: templates/admin/django_openstack/nova/project/delete_project.html:14 msgid "Do you really want to delete this project?<" msgstr "" #: templates/admin/django_openstack/nova/project/delete_project_user.html:8 msgid "Delete" msgstr "" #: templates/admin/django_openstack/nova/project/delete_project_user.html:13 #: templates/admin/django_openstack/nova/project/project_user.html:67 msgid "Remove User From Project" msgstr "" #: templates/admin/django_openstack/nova/project/delete_project_user.html:14 msgid "Do you really want to remove this user from project?" msgstr "" #: templates/admin/django_openstack/nova/project/send_credentials.html:46 #: templates/admin/django_openstack/nova/project/send_credentials.html:81 msgid "Send Credentials" msgstr "" #: templates/admin/django_openstack/nova/project/send_credentials.html:47 #, python-format msgid "" "\"Select which users you would like to send credentials to from the " "'%(proj)s' project.\"" msgstr "" #: templates/admin/django_openstack/nova/project/send_credentials.html:49 msgid "Credentials sent successfully" msgstr "" #: templates/django_openstack/nova/credentials/expired.html:6 msgid "Expired Token" msgstr "" #: templates/django_openstack/nova/credentials/expired.html:10 msgid "The link you clicked has expired." msgstr "" #: templates/django_openstack/nova/credentials/expired.html:12 #, python-format msgid "" "This credentials download link you have reached\n" " is either invalid or has expired. Each link is only good for one use. " "If\n" " you need to download your credentials again, please contact the\n" " %(brand)s support team." msgstr "" #: templates/django_openstack/nova/images/_list.html:70 msgid "Make Private" msgstr "" #: templates/django_openstack/nova/images/_list.html:72 msgid "Make Public" msgstr "" #: templates/django_openstack/nova/images/_list.html:80 msgid "Remove Image" msgstr "" #: templates/django_openstack/nova/images/_list.html:110 msgid "No images currently available." msgstr "" #: templates/django_openstack/nova/images/edit.html:13 msgid "Edit Image" msgstr "" #: templates/django_openstack/nova/images/edit.html:14 msgid "" "From this page you can edit the name and description of an image that " "belongs to you." msgstr "" #: templates/django_openstack/nova/images/edit.html:18 msgid "Edit Image:" msgstr "" #: templates/django_openstack/nova/images/edit.html:29 msgid "Update Image" msgstr "" #: templates/django_openstack/nova/images/index.html:4 msgid "Launch an Image" msgstr "" #: templates/django_openstack/nova/images/index.html:14 msgid "Images" msgstr "" #: templates/django_openstack/nova/images/index.html:15 msgid "" "Images are snapshots of running systems which can easily be deployed to run " "one or more instances." msgstr "" #: templates/django_openstack/nova/images/launch.html:13 #: templates/django_openstack/nova/images/launch.html:21 msgid "Launch Image" msgstr "" #: templates/django_openstack/nova/images/launch.html:14 msgid "" "You can launch up to five instances of an image at a time. Some images allow " "for custom configuration to be passed in via User data." msgstr "" #: templates/django_openstack/nova/images/launch.html:23 msgid "Location" msgstr "" #: templates/django_openstack/nova/instances/_instances_list.html:102 msgid "" "No instances are currently running. You may start a new instance from the" msgstr "" #: templates/django_openstack/nova/instances/detail_list.html:10 msgid "Instance ID:" msgstr "" #: templates/django_openstack/nova/instances/detail_list.html:11 msgid "Here you can see up to the minute performance data about your instance." msgstr "" #: templates/django_openstack/nova/instances/detail_list.html:18 #: templates/django_openstack/nova/instances/edit.html:18 msgid "Edit Instance:" msgstr "" #: templates/django_openstack/nova/instances/detail_list.html:29 #: templates/django_openstack/nova/instances/edit.html:29 msgid "Update Instance" msgstr "" #: templates/django_openstack/nova/instances/edit.html:13 msgid "Edit Instance" msgstr "" #: templates/django_openstack/nova/instances/edit.html:14 msgid "" "From this page you can give your instance an alias, so you don't have to " "remember its unique id." msgstr "" #: templates/django_openstack/nova/instances/index.html:11 msgid "Instances" msgstr "" #: templates/django_openstack/nova/instances/index.html:12 msgid "" "Instances are virtual servers launched from images. You can launch instances " "from the" msgstr "" #: templates/django_openstack/nova/instances/index.html:22 msgid "Are you sure you wish to terminate instance" msgstr "" #: templates/django_openstack/nova/instances/index.html:26 msgid "" "A connection error has occurred. Please ensure you are still connected to " "VPN." msgstr "" #: templates/django_openstack/nova/instances/performance.html:10 #, python-format msgid "Instance ID: %(instance.id)s Performance\" " msgstr "" #: templates/django_openstack/nova/keypairs/_list.html:28 msgid "No key pairs currently exist." msgstr "" #: templates/django_openstack/nova/keypairs/index.html:13 msgid "Keys" msgstr "" #: templates/django_openstack/nova/keypairs/index.html:14 msgid "" "Key pairs are ssh credentials which are injected into images when they are " "launched. Creating a new key pair registers the public key and downloads the " "private key (a pem file). Protect and use the key as a normal private " "key." msgstr "" #: templates/django_openstack/nova/keypairs/index.html:36 msgid "Are you sure you wish to delete key" msgstr "" #: templates/django_openstack/nova/projects/edit_user.html:24 msgid "Edit User Roles" msgstr "" #: templates/django_openstack/nova/projects/edit_user.html:25 msgid "From here you can edit multiple user roles." msgstr "" #: templates/django_openstack/nova/projects/edit_user.html:35 msgid "Edit Roles for User:" msgstr "" #: templates/django_openstack/nova/projects/edit_user.html:67 #: templates/django_openstack/nova/projects/manage.html:39 msgid "No users are currently associated with this project." msgstr "" #: templates/django_openstack/nova/projects/index.html:14 #, python-format msgid "" "Welcome to the %(proj)s Overview. From here you can manage " "your instances, images, keys, and security groups." msgstr "" #: templates/django_openstack/nova/projects/index.html:15 msgid "" "To get started using the command line management tools, you can download euca2ools and use them with your x509 " "credentials." msgstr "" #: templates/django_openstack/nova/projects/index.html:21 msgid "Generate X509 credentials." msgstr "" #: templates/django_openstack/nova/projects/index.html:22 msgid "View Instances" msgstr "" #: templates/django_openstack/nova/projects/index.html:23 msgid "View Images." msgstr "" #: templates/django_openstack/nova/projects/manage.html:8 msgid "Manage Users and Roles" msgstr "" #: templates/django_openstack/nova/projects/manage.html:9 msgid "From here you can manage users and roles." msgstr "" #: templates/django_openstack/nova/securitygroups/detail.html:19 #, python-format msgid " Security Group: %(securitygroup.name)s " msgstr "" #: templates/django_openstack/nova/securitygroups/detail.html:20 msgid "" "Add and remove protocols to the security group by authorizing and revoking " "port forwarding. For instance
[tcp, 80, 80] will allow access to HTTP " "from devices outside this security group." msgstr "" #: templates/django_openstack/nova/securitygroups/index.html:19 msgid "Security Groups" msgstr "" #: templates/django_openstack/nova/securitygroups/index.html:20 msgid "" "Security groups are firewall rules which allow access to your instances from " "other groups as well as the internet. All ports/protocols are denied by " "default." msgstr "" #: templates/django_openstack/nova/volumes/index.html:8 msgid "Volumes" msgstr "" #: templates/django_openstack/nova/volumes/index.html:9 msgid "" "Volumes provide persistent block storage. Creating a new volume gives you a " "raw block device which you may format with your choice of filesystems (ext3 " "is recommended). A volume may only be attached to a single instance at a " "time." msgstr "" #: templates/django_openstack/nova/volumes/index.html:59 msgid "No volumes currently exist." msgstr "" #: templates/django_openstack/nova/volumes/index.html:68 msgid "Create New Volume" msgstr "" #: templates/django_openstack/nova/volumes/index.html:79 msgid "Attach Volume" msgstr "" python-django-nova-0.3~git20110711/django_openstack/locale/fr/0000775000175000017500000000000011606611227022754 5ustar chuckchuckpython-django-nova-0.3~git20110711/django_openstack/locale/fr/LC_MESSAGES/0000775000175000017500000000000011606611227024541 5ustar chuckchuckpython-django-nova-0.3~git20110711/django_openstack/locale/fr/LC_MESSAGES/django.mo0000664000175000017500000000064411606611227026344 0ustar chuckchuckÞ•$,8j9Project-Id-Version: openstack-dashboard Report-Msgid-Bugs-To: POT-Creation-Date: 2011-06-08 14:01+0900 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: LANGUAGE Language: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n>1; python-django-nova-0.3~git20110711/django_openstack/locale/fr/LC_MESSAGES/django.po0000664000175000017500000003305311606611227026347 0ustar chuckchuck# Translations of Dashboard for OpenStack User Interface. # Copyright 2011 Midokura KK # This file is distributed under the same license as the Dashboard for OpenStack. # FIRST AUTHOR Jeffrey Wilcox, 2011. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: openstack-dashboard\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-06-08 14:01+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n>1;\n" #: management/commands/createnovausers.py:31 msgid "Creates nova users for all users in the django auth database." msgstr "" #: management/commands/createnovausers.py:38 #, python-format msgid "creating user %s... " msgstr "" #: nova/forms.py:64 nova/forms.py:78 msgid "none available" msgstr "" #: nova/forms.py:182 #, python-format msgid "A key named %s already exists." msgstr "" #: nova/forms.py:196 #, python-format msgid "A security group named %s already exists." msgstr "" #: nova/shortcuts.py:43 msgid "User not authenticated" msgstr "" #: nova/shortcuts.py:50 #, python-format msgid "Project %s does not exist." msgstr "" #: nova/views/admin.py:96 #, python-format msgid "Successfully started VPN for project %(proj)s." msgstr "" #: nova/views/admin.py:100 #, python-format msgid "Unable to start VPN for the project %(proj)s: %(code)s - %(msg)s" msgstr "" #: nova/views/admin.py:140 #, python-format msgid "Successfully modified the project %(proj)s." msgstr "" #: nova/views/admin.py:145 #, python-format msgid "Unable modify the project %(proj)s: %(code)s - %(msg)s" msgstr "" #: nova/views/images.py:94 #, python-format msgid "Unable to launch: %s" msgstr "" #: nova/views/images.py:106 #, python-format msgid "Instance %s launched." msgstr "" #: nova/views/images.py:157 #, python-format msgid "Unable to deregister image: %s" msgstr "" #: nova/views/images.py:163 #, python-format msgid "Image %s has been successfully deregistered." msgstr "" #: nova/views/images.py:188 #, python-format msgid "Unable to make image private: %s" msgstr "" #: nova/views/images.py:202 #, python-format msgid "Unable to make image public: %s" msgstr "" #: nova/views/images.py:228 #, python-format msgid "Unable to update image: %s" msgstr "" #: nova/views/images.py:231 #, python-format msgid "Image %s has been updated." msgstr "" #: nova/views/instances.py:145 #, python-format msgid "Unable to terminate %(inst)s: %(msg)s" msgstr "" #: nova/views/instances.py:156 #, python-format msgid "Instance %(inst)s has been terminated." msgstr "" #: nova/views/instances.py:220 #, python-format msgid "Unable to update instance %(inst)s: %(msg)s" msgstr "" #: nova/views/instances.py:232 #, python-format msgid "Instance %(inst)s has been updated." msgstr "" #: nova/views/keypairs.py:67 #, python-format msgid "Unable to create key: %s" msgstr "" #: nova/views/keypairs.py:112 #, python-format msgid "Unable to delete key: %s" msgstr "" #: nova/views/keypairs.py:117 #, python-format msgid "Key %s has been successfully deleted." msgstr "" #: nova/views/regions.py:39 #, python-format msgid "You are now using the region \"%s\"." msgstr "" #: nova/views/securitygroups.py:85 #, python-format msgid "Unable to create security group: %s" msgstr "" #: nova/views/securitygroups.py:92 #, python-format msgid "Security Group %s has been succesfully created." msgstr "" #: nova/views/securitygroups.py:125 #, python-format msgid "Unable to authorize: %s" msgstr "" #: nova/views/securitygroups.py:136 #, python-format msgid "" "Security Group %(grp)s: Access to %(proto)s ports %(fr)d - %(to)d has been " "authorized." msgstr "" #: nova/views/securitygroups.py:177 #, python-format msgid "Unable to revoke: %s" msgstr "" #: nova/views/securitygroups.py:186 #, python-format msgid "" "Security Group %(grp)s: Access to %(proto)s ports %(fr)d - %(to)d has been " "revoked." msgstr "" #: nova/views/securitygroups.py:210 #, python-format msgid "Unable to delete security group: %s" msgstr "" #: nova/views/securitygroups.py:215 #, python-format msgid "Security Group %s was successfully deleted." msgstr "" #: nova/views/volumes.py:69 #, python-format msgid "Unable to create volume: %s" msgstr "" #: nova/views/volumes.py:77 #, python-format msgid "Volume %(id)s %(name)s has been successfully created." msgstr "" #: nova/views/volumes.py:108 #, python-format msgid "Unable to delete volume: %s" msgstr "" #: nova/views/volumes.py:114 #, python-format msgid "Volume %s has been successfully deleted." msgstr "" #: nova/views/volumes.py:138 #, python-format msgid "Unable to attach volume: %s" msgstr "" #: nova/views/volumes.py:145 #, python-format msgid "" "Volume %s is scheduled to be attached. If it doesn't become attached in two " "minutes, please try again (you may need to specify a different device)." msgstr "" #: nova/views/volumes.py:179 #, python-format msgid "Unable to detach volume: %s" msgstr "" #: nova/views/volumes.py:185 #, python-format msgid "Volume %s has been successfully detached." msgstr "" #: templates/admin/django_openstack/nova/project/delete_project.html:13 msgid "Delete Project" msgstr "" #: templates/admin/django_openstack/nova/project/delete_project.html:14 msgid "Do you really want to delete this project?<" msgstr "" #: templates/admin/django_openstack/nova/project/delete_project_user.html:8 msgid "Delete" msgstr "" #: templates/admin/django_openstack/nova/project/delete_project_user.html:13 #: templates/admin/django_openstack/nova/project/project_user.html:67 msgid "Remove User From Project" msgstr "" #: templates/admin/django_openstack/nova/project/delete_project_user.html:14 msgid "Do you really want to remove this user from project?" msgstr "" #: templates/admin/django_openstack/nova/project/send_credentials.html:46 #: templates/admin/django_openstack/nova/project/send_credentials.html:81 msgid "Send Credentials" msgstr "" #: templates/admin/django_openstack/nova/project/send_credentials.html:47 #, python-format msgid "" "\"Select which users you would like to send credentials to from the " "'%(proj)s' project.\"" msgstr "" #: templates/admin/django_openstack/nova/project/send_credentials.html:49 msgid "Credentials sent successfully" msgstr "" #: templates/django_openstack/nova/credentials/expired.html:6 msgid "Expired Token" msgstr "" #: templates/django_openstack/nova/credentials/expired.html:10 msgid "The link you clicked has expired." msgstr "" #: templates/django_openstack/nova/credentials/expired.html:12 #, python-format msgid "" "This credentials download link you have reached\n" " is either invalid or has expired. Each link is only good for one use. " "If\n" " you need to download your credentials again, please contact the\n" " %(brand)s support team." msgstr "" #: templates/django_openstack/nova/images/_list.html:70 msgid "Make Private" msgstr "" #: templates/django_openstack/nova/images/_list.html:72 msgid "Make Public" msgstr "" #: templates/django_openstack/nova/images/_list.html:80 msgid "Remove Image" msgstr "" #: templates/django_openstack/nova/images/_list.html:110 msgid "No images currently available." msgstr "" #: templates/django_openstack/nova/images/edit.html:13 msgid "Edit Image" msgstr "" #: templates/django_openstack/nova/images/edit.html:14 msgid "" "From this page you can edit the name and description of an image that " "belongs to you." msgstr "" #: templates/django_openstack/nova/images/edit.html:18 msgid "Edit Image:" msgstr "" #: templates/django_openstack/nova/images/edit.html:29 msgid "Update Image" msgstr "" #: templates/django_openstack/nova/images/index.html:4 msgid "Launch an Image" msgstr "" #: templates/django_openstack/nova/images/index.html:14 msgid "Images" msgstr "" #: templates/django_openstack/nova/images/index.html:15 msgid "" "Images are snapshots of running systems which can easily be deployed to run " "one or more instances." msgstr "" #: templates/django_openstack/nova/images/launch.html:13 #: templates/django_openstack/nova/images/launch.html:21 msgid "Launch Image" msgstr "" #: templates/django_openstack/nova/images/launch.html:14 msgid "" "You can launch up to five instances of an image at a time. Some images allow " "for custom configuration to be passed in via User data." msgstr "" #: templates/django_openstack/nova/images/launch.html:23 msgid "Location" msgstr "" #: templates/django_openstack/nova/instances/_instances_list.html:102 msgid "" "No instances are currently running. You may start a new instance from the" msgstr "" #: templates/django_openstack/nova/instances/detail_list.html:10 msgid "Instance ID:" msgstr "" #: templates/django_openstack/nova/instances/detail_list.html:11 msgid "Here you can see up to the minute performance data about your instance." msgstr "" #: templates/django_openstack/nova/instances/detail_list.html:18 #: templates/django_openstack/nova/instances/edit.html:18 msgid "Edit Instance:" msgstr "" #: templates/django_openstack/nova/instances/detail_list.html:29 #: templates/django_openstack/nova/instances/edit.html:29 msgid "Update Instance" msgstr "" #: templates/django_openstack/nova/instances/edit.html:13 msgid "Edit Instance" msgstr "" #: templates/django_openstack/nova/instances/edit.html:14 msgid "" "From this page you can give your instance an alias, so you don't have to " "remember its unique id." msgstr "" #: templates/django_openstack/nova/instances/index.html:11 msgid "Instances" msgstr "" #: templates/django_openstack/nova/instances/index.html:12 msgid "" "Instances are virtual servers launched from images. You can launch instances " "from the" msgstr "" #: templates/django_openstack/nova/instances/index.html:22 msgid "Are you sure you wish to terminate instance" msgstr "" #: templates/django_openstack/nova/instances/index.html:26 msgid "" "A connection error has occurred. Please ensure you are still connected to " "VPN." msgstr "" #: templates/django_openstack/nova/instances/performance.html:10 #, python-format msgid "Instance ID: %(instance.id)s Performance\" " msgstr "" #: templates/django_openstack/nova/keypairs/_list.html:28 msgid "No key pairs currently exist." msgstr "" #: templates/django_openstack/nova/keypairs/index.html:13 msgid "Keys" msgstr "" #: templates/django_openstack/nova/keypairs/index.html:14 msgid "" "Key pairs are ssh credentials which are injected into images when they are " "launched. Creating a new key pair registers the public key and downloads the " "private key (a pem file). Protect and use the key as a normal private " "key." msgstr "" #: templates/django_openstack/nova/keypairs/index.html:36 msgid "Are you sure you wish to delete key" msgstr "" #: templates/django_openstack/nova/projects/edit_user.html:24 msgid "Edit User Roles" msgstr "" #: templates/django_openstack/nova/projects/edit_user.html:25 msgid "From here you can edit multiple user roles." msgstr "" #: templates/django_openstack/nova/projects/edit_user.html:35 msgid "Edit Roles for User:" msgstr "" #: templates/django_openstack/nova/projects/edit_user.html:67 #: templates/django_openstack/nova/projects/manage.html:39 msgid "No users are currently associated with this project." msgstr "" #: templates/django_openstack/nova/projects/index.html:14 #, python-format msgid "" "Welcome to the %(proj)s Overview. From here you can manage " "your instances, images, keys, and security groups." msgstr "" #: templates/django_openstack/nova/projects/index.html:15 msgid "" "To get started using the command line management tools, you can download euca2ools and use them with your x509 " "credentials." msgstr "" #: templates/django_openstack/nova/projects/index.html:21 msgid "Generate X509 credentials." msgstr "" #: templates/django_openstack/nova/projects/index.html:22 msgid "View Instances" msgstr "" #: templates/django_openstack/nova/projects/index.html:23 msgid "View Images." msgstr "" #: templates/django_openstack/nova/projects/manage.html:8 msgid "Manage Users and Roles" msgstr "" #: templates/django_openstack/nova/projects/manage.html:9 msgid "From here you can manage users and roles." msgstr "" #: templates/django_openstack/nova/securitygroups/detail.html:19 #, python-format msgid " Security Group: %(securitygroup.name)s " msgstr "" #: templates/django_openstack/nova/securitygroups/detail.html:20 msgid "" "Add and remove protocols to the security group by authorizing and revoking " "port forwarding. For instance
[tcp, 80, 80] will allow access to HTTP " "from devices outside this security group." msgstr "" #: templates/django_openstack/nova/securitygroups/index.html:19 msgid "Security Groups" msgstr "" #: templates/django_openstack/nova/securitygroups/index.html:20 msgid "" "Security groups are firewall rules which allow access to your instances from " "other groups as well as the internet. All ports/protocols are denied by " "default." msgstr "" #: templates/django_openstack/nova/volumes/index.html:8 msgid "Volumes" msgstr "" #: templates/django_openstack/nova/volumes/index.html:9 msgid "" "Volumes provide persistent block storage. Creating a new volume gives you a " "raw block device which you may format with your choice of filesystems (ext3 " "is recommended). A volume may only be attached to a single instance at a " "time." msgstr "" #: templates/django_openstack/nova/volumes/index.html:59 msgid "No volumes currently exist." msgstr "" #: templates/django_openstack/nova/volumes/index.html:68 msgid "Create New Volume" msgstr "" #: templates/django_openstack/nova/volumes/index.html:79 msgid "Attach Volume" msgstr "" python-django-nova-0.3~git20110711/django_openstack/models.py0000664000175000017500000000162611606611227022750 0ustar chuckchuck# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2011 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Copyright 2011 Fourth Paradigm Development, Inc. # # 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. """ Stub file to work around django bug: https://code.djangoproject.com/ticket/7198 """ python-django-nova-0.3~git20110711/django_openstack/templates/0000775000175000017500000000000011606611227023104 5ustar chuckchuckpython-django-nova-0.3~git20110711/django_openstack/templates/django_openstack/0000775000175000017500000000000011606611227026415 5ustar chuckchuckpython-django-nova-0.3~git20110711/django_openstack/templates/django_openstack/dash/0000775000175000017500000000000011606611227027334 5ustar chuckchuckpython-django-nova-0.3~git20110711/django_openstack/templates/django_openstack/dash/_upload.html0000664000175000017500000000061411606611227031646 0ustar chuckchuck
{% csrf_token %} {% for hidden in form.hidden_fields %} {{hidden}} {% endfor %} {% for field in form.visible_fields %} {{field.label_tag}} {{field.errors}} {{field}} {% endfor %} {% block submit %} {% endblock %}
python-django-nova-0.3~git20110711/django_openstack/templates/django_openstack/dash/_launch.html0000664000175000017500000000061711606611227031637 0ustar chuckchuck
{% csrf_token %}
{% for hidden in form.hidden_fields %} {{hidden}} {% endfor %} {% for field in form.visible_fields %} {{field.label_tag}} {{field.errors}} {{field}} {% endfor %} {% block submit %} {% endblock %}
python-django-nova-0.3~git20110711/django_openstack/templates/django_openstack/syspanel/0000775000175000017500000000000011606611227030253 5ustar chuckchuck././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootpython-django-nova-0.3~git20110711/django_openstack/templates/django_openstack/syspanel/_create_flavor.htmlpython-django-nova-0.3~git20110711/django_openstack/templates/django_openstack/syspanel/_create_flav0000664000175000017500000000061611606611227032613 0ustar chuckchuck
{% csrf_token %}
{% for hidden in form.hidden_fields %} {{hidden}} {% endfor %} {% for field in form.visible_fields %} {{field.label_tag}} {{field.errors}} {{field}} {% endfor %} {% block submit %} {% endblock %}
python-django-nova-0.3~git20110711/django_openstack/templates/django_openstack/_messages.html0000664000175000017500000000222211606611227031247 0ustar chuckchuck{% for message in messages %}
{% if message.tags == "info" %}

{{ message }}

{% endif %} {% if message.tags == "warning" %}

{{ message }}

{% endif %} {% if message.tags == "success" %}

{{ message }}

{% endif %} {% if message.tags == "error" %}

{{ message }}

{% endif %}
{% endfor %} python-django-nova-0.3~git20110711/django_openstack/templates/django_openstack/auth/0000775000175000017500000000000011606611227027356 5ustar chuckchuckpython-django-nova-0.3~git20110711/django_openstack/templates/django_openstack/auth/_switch.html0000664000175000017500000000054111606611227031704 0ustar chuckchuck
{% csrf_token %}
{% for hidden in form.hidden_fields %} {{hidden}} {% endfor %} {% for field in form.visible_fields %} {{field.label_tag}} {{field.errors}} {{field}} {% endfor %} {% block submit %} {% endblock %}
python-django-nova-0.3~git20110711/django_openstack/templates/django_openstack/auth/_login.html0000664000175000017500000000054111606611227031513 0ustar chuckchuck
{% csrf_token %}
{% for hidden in form.hidden_fields %} {{hidden}} {% endfor %} {% for field in form.visible_fields %} {{field.label_tag}} {{field.errors}} {{field}} {% endfor %} {% block submit %} {% endblock %}
python-django-nova-0.3~git20110711/django_openstack/middleware/0000775000175000017500000000000011606611227023223 5ustar chuckchuckpython-django-nova-0.3~git20110711/django_openstack/middleware/keystone.py0000664000175000017500000000434111606611227025440 0ustar chuckchuck# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2011 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Copyright 2011 Fourth Paradigm Development, Inc. # # 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. from django.contrib import messages from django import shortcuts import openstackx import openstack class User(object): def __init__(self, token, user, tenant, admin): self.token = token self.username = user self.tenant = tenant self.admin = admin def is_authenticated(self): # TODO: deal with token expiration return self.token def is_admin(self): return self.admin def get_user_from_request(request): if 'user' not in request.session: return User(None,None,None,None) return User(request.session['token'], request.session['user'], request.session['tenant'], request.session['admin']) class LazyUser(object): def __get__(self, request, obj_type=None): if not hasattr(request, '_cached_user'): request._cached_user = get_user_from_request(request) return request._cached_user class AuthenticationMiddleware(object): def process_request(self, request): request.__class__.user = LazyUser() def process_exception(self, request, exception): if type(exception) in [openstack.compute.exceptions.Forbidden, openstackx.api.exceptions.Forbidden]: messages.error(request, 'Your token has expired.\ Please log in again') return shortcuts.redirect('/auth/logout') python-django-nova-0.3~git20110711/django_openstack/middleware/__init__.py0000664000175000017500000000000011606611227025322 0ustar chuckchuckpython-django-nova-0.3~git20110711/django_openstack/forms.py0000664000175000017500000001504611606611227022614 0ustar chuckchuck# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2011 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Copyright 2011 Fourth Paradigm Development, Inc. # # 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 datetime import logging import re from django import utils from django.conf import settings from django.contrib import messages from django.forms import widgets from django.utils import dates from django.utils import safestring from django.utils import formats from django.forms import * LOG = logging.getLogger('django_openstack.forms') RE_DATE = re.compile(r'(\d{4})-(\d\d?)-(\d\d?)$') class SelectDateWidget(widgets.Widget): """ A Widget that splits date input into three