From 82d6c943fbafcd88f412725393b9d2faee9712c6 Mon Sep 17 00:00:00 2001 From: termie Date: Tue, 14 Jun 2011 14:26:45 -0700 Subject: [PATCH] stripping out user/project stuff, step 1 --- django-nova-syspanel/LICENSE | 176 -------- django-nova-syspanel/README | 38 -- django-nova-syspanel/bootstrap.py | 260 ----------- django-nova-syspanel/buildout.cfg | 19 - django-nova-syspanel/setup.py | 32 -- .../locale/en-gb/LC_MESSAGES/django.mo | Bin 382 -> 0 bytes .../locale/en-gb/LC_MESSAGES/django.po | 239 ---------- .../locale/es/LC_MESSAGES/django.mo | Bin 425 -> 0 bytes .../locale/es/LC_MESSAGES/django.po | 240 ---------- .../locale/fr/LC_MESSAGES/django.mo | Bin 420 -> 0 bytes .../locale/fr/LC_MESSAGES/django.po | 240 ---------- .../locale/ja/LC_MESSAGES/django.mo | Bin 8433 -> 0 bytes .../locale/ja/LC_MESSAGES/django.po | 282 ------------ .../locale/pt/LC_MESSAGES/django.mo | Bin 382 -> 0 bytes .../locale/pt/LC_MESSAGES/django.po | 239 ---------- .../locale/zh-cn/LC_MESSAGES/django.mo | Bin 382 -> 0 bytes .../locale/zh-cn/LC_MESSAGES/django.po | 239 ---------- .../locale/zh-tw/LC_MESSAGES/django.mo | Bin 382 -> 0 bytes .../locale/zh-tw/LC_MESSAGES/django.po | 239 ---------- .../src/django_nova_syspanel/models.py | 418 ------------------ .../security/disable_project_credentials.html | 20 - .../django_nova_syspanel/security/index.html | 81 ---- .../src/django_nova_syspanel/urls.py | 32 -- .../django_nova_syspanel/views/security.py | 121 ----- .../src/django_openstack/core/__init__.py | 0 .../src/django_openstack/core/connection.py | 34 -- django-openstack/src/django_openstack/log.py | 16 - .../django_openstack/management/__init__.py | 0 .../management/commands/__init__.py | 0 .../management/commands/createnovausers.py | 40 -- .../src/django_openstack/models.py | 131 ------ .../src/django_openstack/nova/forms.py | 130 ------ .../src/django_openstack/nova/manager.py | 1 - .../src/django_openstack/nova/shortcuts.py | 1 - .../nova/urls/admin_project.py | 55 --- .../django_openstack/nova/urls/admin_roles.py | 32 -- .../src/django_openstack/nova/urls/project.py | 81 ++-- .../src/django_openstack/nova/views/admin.py | 4 +- .../nova/views/credentials.py | 52 --- .../src/django_openstack/nova/views/images.py | 2 +- .../django_openstack/nova/views/instances.py | 3 +- .../django_openstack/nova/views/keypairs.py | 139 ------ .../django_openstack/nova/views/projects.py | 3 +- .../django_openstack/nova/views/regions.py | 41 -- .../nova/views/securitygroups.py | 220 --------- .../django_openstack/nova/views/volumes.py | 2 +- .../django_openstack/syspanel}/__init__.py | 0 .../src/django_openstack/syspanel}/forms.py | 0 .../src/django_openstack/syspanel/urls.py | 31 ++ .../syspanel}/views/__init__.py | 0 .../django_openstack/syspanel}/views/cloud.py | 2 - .../django_openstack/syspanel}/views/home.py | 0 .../syspanel}/views/instances.py | 2 - .../syspanel}/views/volumes.py | 2 - .../django_openstack/syspanel}/views/vpns.py | 1 - .../nova/project/add_project.html | 45 -- .../nova/project/add_project_user.html | 69 --- .../nova/project/base_projects.html | 17 - .../nova/project/change_list.html | 3 - .../nova/project/delete_project.html | 26 -- .../nova/project/delete_project_user.html | 26 -- .../nova/project/edit_project.html | 84 ---- .../nova/project/global_edit_user.html | 71 --- .../nova/project/project_list.html | 42 -- .../nova/project/project_user.html | 76 ---- .../nova/project/send_credentials.html | 87 ---- .../nova/project/user_list.html | 39 -- .../django_nova_syspanel/cloudview/index.html | 0 .../templates/django_nova_syspanel/index.html | 0 .../django_nova_syspanel/instances/index.html | 0 .../django_nova_syspanel/volumes/index.html | 0 .../django_nova_syspanel/vpns/index.html | 0 .../django_openstack/credentials/expired.html | 17 - .../keypairs/_create_form.html | 5 - .../django_openstack/keypairs/_list.html | 31 -- .../django_openstack/keypairs/base.html | 7 - .../django_openstack/keypairs/index.html | 77 ---- .../securitygroups/_authorize_form.html | 5 - .../securitygroups/_create_form.html | 5 - .../securitygroups/_revoke_form.html | 3 - .../django_openstack/securitygroups/base.html | 7 - .../securitygroups/detail.html | 62 --- .../securitygroups/index.html | 59 --- .../{django_openstack_tags.py => branding.py} | 0 .../src/django_openstack/testurls.py | 5 +- openstack-dashboard/dashboard/settings.py | 2 +- .../dashboard/templates/admin/index.html | 2 +- .../dashboard/templates/base-root.html | 2 +- .../dashboard/templates/index.html | 2 +- .../templates/registration/login.html | 2 +- .../registration/password_reset_email.html | 2 +- openstack-dashboard/dashboard/urls.py | 11 +- openstack-dashboard/tools/install_venv.py | 7 - 93 files changed, 74 insertions(+), 4764 deletions(-) delete mode 100644 django-nova-syspanel/LICENSE delete mode 100644 django-nova-syspanel/README delete mode 100644 django-nova-syspanel/bootstrap.py delete mode 100644 django-nova-syspanel/buildout.cfg delete mode 100644 django-nova-syspanel/setup.py delete mode 100644 django-nova-syspanel/src/django_nova_syspanel/locale/en-gb/LC_MESSAGES/django.mo delete mode 100644 django-nova-syspanel/src/django_nova_syspanel/locale/en-gb/LC_MESSAGES/django.po delete mode 100644 django-nova-syspanel/src/django_nova_syspanel/locale/es/LC_MESSAGES/django.mo delete mode 100644 django-nova-syspanel/src/django_nova_syspanel/locale/es/LC_MESSAGES/django.po delete mode 100644 django-nova-syspanel/src/django_nova_syspanel/locale/fr/LC_MESSAGES/django.mo delete mode 100644 django-nova-syspanel/src/django_nova_syspanel/locale/fr/LC_MESSAGES/django.po delete mode 100644 django-nova-syspanel/src/django_nova_syspanel/locale/ja/LC_MESSAGES/django.mo delete mode 100644 django-nova-syspanel/src/django_nova_syspanel/locale/ja/LC_MESSAGES/django.po delete mode 100644 django-nova-syspanel/src/django_nova_syspanel/locale/pt/LC_MESSAGES/django.mo delete mode 100644 django-nova-syspanel/src/django_nova_syspanel/locale/pt/LC_MESSAGES/django.po delete mode 100644 django-nova-syspanel/src/django_nova_syspanel/locale/zh-cn/LC_MESSAGES/django.mo delete mode 100644 django-nova-syspanel/src/django_nova_syspanel/locale/zh-cn/LC_MESSAGES/django.po delete mode 100644 django-nova-syspanel/src/django_nova_syspanel/locale/zh-tw/LC_MESSAGES/django.mo delete mode 100644 django-nova-syspanel/src/django_nova_syspanel/locale/zh-tw/LC_MESSAGES/django.po delete mode 100644 django-nova-syspanel/src/django_nova_syspanel/models.py delete mode 100644 django-nova-syspanel/src/django_nova_syspanel/templates/django_nova_syspanel/security/disable_project_credentials.html delete mode 100644 django-nova-syspanel/src/django_nova_syspanel/templates/django_nova_syspanel/security/index.html delete mode 100644 django-nova-syspanel/src/django_nova_syspanel/urls.py delete mode 100644 django-nova-syspanel/src/django_nova_syspanel/views/security.py delete mode 100644 django-openstack/src/django_openstack/core/__init__.py delete mode 100644 django-openstack/src/django_openstack/core/connection.py delete mode 100644 django-openstack/src/django_openstack/log.py delete mode 100644 django-openstack/src/django_openstack/management/__init__.py delete mode 100644 django-openstack/src/django_openstack/management/commands/__init__.py delete mode 100644 django-openstack/src/django_openstack/management/commands/createnovausers.py delete mode 100644 django-openstack/src/django_openstack/models.py delete mode 100644 django-openstack/src/django_openstack/nova/urls/admin_project.py delete mode 100644 django-openstack/src/django_openstack/nova/urls/admin_roles.py delete mode 100644 django-openstack/src/django_openstack/nova/views/credentials.py delete mode 100644 django-openstack/src/django_openstack/nova/views/keypairs.py delete mode 100644 django-openstack/src/django_openstack/nova/views/regions.py delete mode 100644 django-openstack/src/django_openstack/nova/views/securitygroups.py rename {django-nova-syspanel/src/django_nova_syspanel => django-openstack/src/django_openstack/syspanel}/__init__.py (100%) rename {django-nova-syspanel/src/django_nova_syspanel => django-openstack/src/django_openstack/syspanel}/forms.py (100%) create mode 100644 django-openstack/src/django_openstack/syspanel/urls.py rename {django-nova-syspanel/src/django_nova_syspanel => django-openstack/src/django_openstack/syspanel}/views/__init__.py (100%) rename {django-nova-syspanel/src/django_nova_syspanel => django-openstack/src/django_openstack/syspanel}/views/cloud.py (86%) rename {django-nova-syspanel/src/django_nova_syspanel => django-openstack/src/django_openstack/syspanel}/views/home.py (100%) rename {django-nova-syspanel/src/django_nova_syspanel => django-openstack/src/django_openstack/syspanel}/views/instances.py (98%) rename {django-nova-syspanel/src/django_nova_syspanel => django-openstack/src/django_openstack/syspanel}/views/volumes.py (98%) rename {django-nova-syspanel/src/django_nova_syspanel => django-openstack/src/django_openstack/syspanel}/views/vpns.py (96%) delete mode 100644 django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/add_project.html delete mode 100644 django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/add_project_user.html delete mode 100644 django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/base_projects.html delete mode 100644 django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/change_list.html delete mode 100644 django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/delete_project.html delete mode 100644 django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/delete_project_user.html delete mode 100644 django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/edit_project.html delete mode 100644 django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/global_edit_user.html delete mode 100644 django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/project_list.html delete mode 100644 django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/project_user.html delete mode 100644 django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/send_credentials.html delete mode 100644 django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/user_list.html rename {django-nova-syspanel/src/django_nova_syspanel => django-openstack/src/django_openstack}/templates/django_nova_syspanel/cloudview/index.html (100%) rename {django-nova-syspanel/src/django_nova_syspanel => django-openstack/src/django_openstack}/templates/django_nova_syspanel/index.html (100%) rename {django-nova-syspanel/src/django_nova_syspanel => django-openstack/src/django_openstack}/templates/django_nova_syspanel/instances/index.html (100%) rename {django-nova-syspanel/src/django_nova_syspanel => django-openstack/src/django_openstack}/templates/django_nova_syspanel/volumes/index.html (100%) rename {django-nova-syspanel/src/django_nova_syspanel => django-openstack/src/django_openstack}/templates/django_nova_syspanel/vpns/index.html (100%) delete mode 100644 django-openstack/src/django_openstack/templates/django_openstack/credentials/expired.html delete mode 100644 django-openstack/src/django_openstack/templates/django_openstack/keypairs/_create_form.html delete mode 100644 django-openstack/src/django_openstack/templates/django_openstack/keypairs/_list.html delete mode 100644 django-openstack/src/django_openstack/templates/django_openstack/keypairs/base.html delete mode 100644 django-openstack/src/django_openstack/templates/django_openstack/keypairs/index.html delete mode 100644 django-openstack/src/django_openstack/templates/django_openstack/securitygroups/_authorize_form.html delete mode 100644 django-openstack/src/django_openstack/templates/django_openstack/securitygroups/_create_form.html delete mode 100644 django-openstack/src/django_openstack/templates/django_openstack/securitygroups/_revoke_form.html delete mode 100644 django-openstack/src/django_openstack/templates/django_openstack/securitygroups/base.html delete mode 100644 django-openstack/src/django_openstack/templates/django_openstack/securitygroups/detail.html delete mode 100644 django-openstack/src/django_openstack/templates/django_openstack/securitygroups/index.html rename django-openstack/src/django_openstack/templatetags/templatetags/{django_openstack_tags.py => branding.py} (100%) diff --git a/django-nova-syspanel/LICENSE b/django-nova-syspanel/LICENSE deleted file mode 100644 index 68c771a09..000000000 --- a/django-nova-syspanel/LICENSE +++ /dev/null @@ -1,176 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - diff --git a/django-nova-syspanel/README b/django-nova-syspanel/README deleted file mode 100644 index fbd9a8dd6..000000000 --- a/django-nova-syspanel/README +++ /dev/null @@ -1,38 +0,0 @@ -OpenStack Django-Nova-Syspanel ------------------------------- - -The Django-Nova-Syspanel package provides a django app that interacts -with the OpenStack Nova cloud controller to view the health of a -running OpenStack installation. - -This is packaged, and intended to be used inside of, OpenStack -Dashboard, which is located at - - http://launchpad.net/openstack-dashboard - -Development against this application is best done inside this reference -implementation, though in practice any django app can install this -application. - - -Getting Started ---------------- - -Django-Nova-Syspanel uses Buildout (http://www.buildout.org/) to -manage local development. To configure your local Buildout -environment: - - $ python bootstrap.py - $ bin/buildout - -This will install all the dependencies of django-nova-syspanel and -provide some useful scripts in the bin/ directory: - - bin/python provides a python shell for the current buildout. - bin/django provides django functions for the current buildout. - - -You should now be able to run unit tests as follows: - - $ bin/django test - diff --git a/django-nova-syspanel/bootstrap.py b/django-nova-syspanel/bootstrap.py deleted file mode 100644 index 5f2cb0835..000000000 --- a/django-nova-syspanel/bootstrap.py +++ /dev/null @@ -1,260 +0,0 @@ -############################################################################## -# -# Copyright (c) 2006 Zope Foundation and Contributors. -# All Rights Reserved. -# -# This software is subject to the provisions of the Zope Public License, -# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. -# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED -# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS -# FOR A PARTICULAR PURPOSE. -# -############################################################################## -"""Bootstrap a buildout-based project - -Simply run this script in a directory containing a buildout.cfg. -The script accepts buildout command-line options, so you can -use the -c option to specify an alternate configuration file. -""" - -import os, shutil, sys, tempfile, textwrap, urllib, urllib2, subprocess -from optparse import OptionParser - -if sys.platform == 'win32': - def quote(c): - if ' ' in c: - return '"%s"' % c # work around spawn lamosity on windows - else: - return c -else: - quote = str - -# See zc.buildout.easy_install._has_broken_dash_S for motivation and comments. -stdout, stderr = subprocess.Popen( - [sys.executable, '-Sc', - 'try:\n' - ' import ConfigParser\n' - 'except ImportError:\n' - ' print 1\n' - 'else:\n' - ' print 0\n'], - stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate() -has_broken_dash_S = bool(int(stdout.strip())) - -# In order to be more robust in the face of system Pythons, we want to -# run without site-packages loaded. This is somewhat tricky, in -# particular because Python 2.6's distutils imports site, so starting -# with the -S flag is not sufficient. However, we'll start with that: -if not has_broken_dash_S and 'site' in sys.modules: - # We will restart with python -S. - args = sys.argv[:] - args[0:0] = [sys.executable, '-S'] - args = map(quote, args) - os.execv(sys.executable, args) -# Now we are running with -S. We'll get the clean sys.path, import site -# because distutils will do it later, and then reset the path and clean -# out any namespace packages from site-packages that might have been -# loaded by .pth files. -clean_path = sys.path[:] -import site -sys.path[:] = clean_path -for k, v in sys.modules.items(): - if k in ('setuptools', 'pkg_resources') or ( - hasattr(v, '__path__') and - len(v.__path__)==1 and - not os.path.exists(os.path.join(v.__path__[0],'__init__.py'))): - # This is a namespace package. Remove it. - sys.modules.pop(k) - -is_jython = sys.platform.startswith('java') - -setuptools_source = 'http://peak.telecommunity.com/dist/ez_setup.py' -distribute_source = 'http://python-distribute.org/distribute_setup.py' - -# parsing arguments -def normalize_to_url(option, opt_str, value, parser): - if value: - if '://' not in value: # It doesn't smell like a URL. - value = 'file://%s' % ( - urllib.pathname2url( - os.path.abspath(os.path.expanduser(value))),) - if opt_str == '--download-base' and not value.endswith('/'): - # Download base needs a trailing slash to make the world happy. - value += '/' - else: - value = None - name = opt_str[2:].replace('-', '_') - setattr(parser.values, name, value) - -usage = '''\ -[DESIRED PYTHON FOR BUILDOUT] bootstrap.py [options] - -Bootstraps a buildout-based project. - -Simply run this script in a directory containing a buildout.cfg, using the -Python that you want bin/buildout to use. - -Note that by using --setup-source and --download-base to point to -local resources, you can keep this script from going over the network. -''' - -parser = OptionParser(usage=usage) -parser.add_option("-v", "--version", dest="version", - help="use a specific zc.buildout version") -parser.add_option("-d", "--distribute", - action="store_true", dest="use_distribute", default=False, - help="Use Distribute rather than Setuptools.") -parser.add_option("--setup-source", action="callback", dest="setup_source", - callback=normalize_to_url, nargs=1, type="string", - help=("Specify a URL or file location for the setup file. " - "If you use Setuptools, this will default to " + - setuptools_source + "; if you use Distribute, this " - "will default to " + distribute_source +".")) -parser.add_option("--download-base", action="callback", dest="download_base", - callback=normalize_to_url, nargs=1, type="string", - help=("Specify a URL or directory for downloading " - "zc.buildout and either Setuptools or Distribute. " - "Defaults to PyPI.")) -parser.add_option("--eggs", - help=("Specify a directory for storing eggs. Defaults to " - "a temporary directory that is deleted when the " - "bootstrap script completes.")) -parser.add_option("-t", "--accept-buildout-test-releases", - dest='accept_buildout_test_releases', - action="store_true", default=False, - help=("Normally, if you do not specify a --version, the " - "bootstrap script and buildout gets the newest " - "*final* versions of zc.buildout and its recipes and " - "extensions for you. If you use this flag, " - "bootstrap and buildout will get the newest releases " - "even if they are alphas or betas.")) -parser.add_option("-c", None, action="store", dest="config_file", - help=("Specify the path to the buildout configuration " - "file to be used.")) - -options, args = parser.parse_args() - -# if -c was provided, we push it back into args for buildout's main function -if options.config_file is not None: - args += ['-c', options.config_file] - -if options.eggs: - eggs_dir = os.path.abspath(os.path.expanduser(options.eggs)) -else: - eggs_dir = tempfile.mkdtemp() - -if options.setup_source is None: - if options.use_distribute: - options.setup_source = distribute_source - else: - options.setup_source = setuptools_source - -if options.accept_buildout_test_releases: - args.append('buildout:accept-buildout-test-releases=true') -args.append('bootstrap') - -try: - import pkg_resources - import setuptools # A flag. Sometimes pkg_resources is installed alone. - if not hasattr(pkg_resources, '_distribute'): - raise ImportError -except ImportError: - ez_code = urllib2.urlopen( - options.setup_source).read().replace('\r\n', '\n') - ez = {} - exec ez_code in ez - setup_args = dict(to_dir=eggs_dir, download_delay=0) - if options.download_base: - setup_args['download_base'] = options.download_base - if options.use_distribute: - setup_args['no_fake'] = True - ez['use_setuptools'](**setup_args) - if 'pkg_resources' in sys.modules: - reload(sys.modules['pkg_resources']) - import pkg_resources - # This does not (always?) update the default working set. We will - # do it. - for path in sys.path: - if path not in pkg_resources.working_set.entries: - pkg_resources.working_set.add_entry(path) - -cmd = [quote(sys.executable), - '-c', - quote('from setuptools.command.easy_install import main; main()'), - '-mqNxd', - quote(eggs_dir)] - -if not has_broken_dash_S: - cmd.insert(1, '-S') - -find_links = options.download_base -if not find_links: - find_links = os.environ.get('bootstrap-testing-find-links') -if find_links: - cmd.extend(['-f', quote(find_links)]) - -if options.use_distribute: - setup_requirement = 'distribute' -else: - setup_requirement = 'setuptools' -ws = pkg_resources.working_set -setup_requirement_path = ws.find( - pkg_resources.Requirement.parse(setup_requirement)).location -env = dict( - os.environ, - PYTHONPATH=setup_requirement_path) - -requirement = 'zc.buildout' -version = options.version -if version is None and not options.accept_buildout_test_releases: - # Figure out the most recent final version of zc.buildout. - import setuptools.package_index - _final_parts = '*final-', '*final' - def _final_version(parsed_version): - for part in parsed_version: - if (part[:1] == '*') and (part not in _final_parts): - return False - return True - index = setuptools.package_index.PackageIndex( - search_path=[setup_requirement_path]) - if find_links: - index.add_find_links((find_links,)) - req = pkg_resources.Requirement.parse(requirement) - if index.obtain(req) is not None: - best = [] - bestv = None - for dist in index[req.project_name]: - distv = dist.parsed_version - if _final_version(distv): - if bestv is None or distv > bestv: - best = [dist] - bestv = distv - elif distv == bestv: - best.append(dist) - if best: - best.sort() - version = best[-1].version -if version: - requirement = '=='.join((requirement, version)) -cmd.append(requirement) - -if is_jython: - import subprocess - exitcode = subprocess.Popen(cmd, env=env).wait() -else: # Windows prefers this, apparently; otherwise we would prefer subprocess - exitcode = os.spawnle(*([os.P_WAIT, sys.executable] + cmd + [env])) -if exitcode != 0: - sys.stdout.flush() - sys.stderr.flush() - print ("An error occurred when trying to install zc.buildout. " - "Look above this message for any errors that " - "were output by easy_install.") - sys.exit(exitcode) - -ws.add_entry(eggs_dir) -ws.require(requirement) -import zc.buildout.buildout -zc.buildout.buildout.main(args) -if not options.eggs: # clean up temporary egg directory - shutil.rmtree(eggs_dir) diff --git a/django-nova-syspanel/buildout.cfg b/django-nova-syspanel/buildout.cfg deleted file mode 100644 index c129890b5..000000000 --- a/django-nova-syspanel/buildout.cfg +++ /dev/null @@ -1,19 +0,0 @@ -[buildout] -parts = python django -develop = . -eggs = django-nova-syspanel - -[python] -recipe = zc.recipe.egg -interpreter = python -eggs = ${buildout:eggs} - -[django] -recipe = djangorecipe -version = 1.2.4 -project = django_nova_syspanel -projectegg = django_nova_syspanel -settings = testsettings -test = django_nova_syspanel -eggs = ${buildout:eggs} - diff --git a/django-nova-syspanel/setup.py b/django-nova-syspanel/setup.py deleted file mode 100644 index b5ea9c728..000000000 --- a/django-nova-syspanel/setup.py +++ /dev/null @@ -1,32 +0,0 @@ -import os -from setuptools import setup, find_packages, findall - -def read(fname): - return open(os.path.join(os.path.dirname(__file__), fname)).read() - -setup( - name = "django-nova-syspanel", - version = "0.1", - url = 'https://launchpad.net/openstack-dashboard/', - license = 'Apache 2.0', - description = "A Django interface for OpenStack Nova.", - long_description = read('README'), - author = 'Todd Willey', - author_email = 'xtoddx@gmail.com', - packages = find_packages('src'), - package_dir = {'': 'src'}, - package_data = {'django_nova_syspanel': - [s[len('src/django_nova_syspanel/'):] for s in - findall('src/django_nova_syspanel/templates')]}, - install_requires = ['setuptools', 'boto==1.9b', 'mox>=0.5.0'], - classifiers = [ - 'Development Status :: 4 - Beta', - 'Framework :: Django', - 'Intended Audience :: Developers', - 'License :: OSI Approved :: Apache License', - 'Operating System :: OS Independent', - 'Programming Language :: Python', - 'Topic :: Internet :: WWW/HTTP', - ] -) - diff --git a/django-nova-syspanel/src/django_nova_syspanel/locale/en-gb/LC_MESSAGES/django.mo b/django-nova-syspanel/src/django_nova_syspanel/locale/en-gb/LC_MESSAGES/django.mo deleted file mode 100644 index b3e33f7bd1abe7c058de46c6ac8e57a5134906e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 382 zcmYL^%TB{E5Jih%l_hHyUa%`uoC=}TJk-#*B~sE6_JnU)7HQq`nXI8fZZLD@KQXI-(Rs z$mPE24*Yq~Jj@}@APUK2#?rX|lFhl72\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" - -#: models.py:24 models.py:25 -msgid "Forbidden" -msgstr "" - -#: models.py:39 -msgid "An unexpected error occurred. Please try your request again." -msgstr "" - -#: templates/django_nova_syspanel/index.html:9 -msgid "" -"View all running instances other than VPNs. Schedule instances for\treboot " -"or termination. Download logs." -msgstr "" - -#: templates/django_nova_syspanel/index.html:15 -#: templates/django_nova_syspanel/volumes/index.html:24 -msgid "" -"View all volumes. See size, status, and mount point. Detach and destroy " -"volumes." -msgstr "" - -#: templates/django_nova_syspanel/index.html:21 -#: templates/django_nova_syspanel/vpns/index.html:25 -msgid "" -"View all projects VPN status. Schedule launch, termination, and reboot. Send " -"credentials." -msgstr "" - -#: templates/django_nova_syspanel/index.html:27 -msgid "" -"View servers that participate in your cloud. See statistics about\trunning " -"services and served objects." -msgstr "" - -#: templates/django_nova_syspanel/index.html:33 -msgid "" -"Perform operations to deal with rogue users, limit or prevent compromise, " -"and deal with external threats." -msgstr "" - -#: templates/django_nova_syspanel/cloudview/index.html:9 -msgid "" -"View servers that participate in your cloud. See statistics about running " -"services and served objects." -msgstr "" - -#: templates/django_nova_syspanel/instances/index.html:23 -msgid "Manage Instances" -msgstr "" - -#: templates/django_nova_syspanel/instances/index.html:24 -msgid "" -"View all running instances other than VPNs. Schedule instances for reboot or " -"termination. Download logs." -msgstr "" - -#: templates/django_nova_syspanel/instances/index.html:36 -msgid "Refresh List" -msgstr "" - -#: templates/django_nova_syspanel/instances/index.html:66 -msgid "Console Log" -msgstr "" - -#: templates/django_nova_syspanel/security/disable_project_credentials.html:9 -msgid "" -"\n" -" If a user's credentials were comprimised, you will need to use \n" -" `nova-manage user revoke USERNAME`, and the restart all VPNs for " -"projects\n" -" they are a member of. " -msgstr "" - -#: templates/django_nova_syspanel/security/disable_project_credentials.html:15 -#, python-format -msgid "" -"\n" -" The VPN for %(project)s is currently offline. You can turn it back on\n" -" using " -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:7 -msgid "Security" -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:9 -msgid "Use the following tools to secure the cloud during a security event" -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:14 -msgid "" -"Scenario: Project account credentials have been compromised." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:15 -msgid "" -"Action: Disable the user or project. This should invalidate " -"the credentials, also deny the specific port assigned to the user." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:34 -msgid "" -"Scenario: The issue pin points to be coming in from a " -"specific external ip or ip range." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:35 -msgid "" -"Action: Block the IP or IP range. This should manipulate ip " -"tables to block the ip or ip range." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:55 -msgid "" -"Scenario: Issues affecting multiple public entry points or " -"could not determine to be a specific one." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:56 -msgid "" -"Action: Disable all public IPs on all VMs. This should " -"unplumb the device the public ip was on." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:69 -msgid "" -"Scenario: Issue related to VPN service affecting multiple " -"customers." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:70 -msgid "" -"Action: Disable VPN service. This should turn off the VPN " -"ip." -msgstr "" - -#: templates/django_nova_syspanel/volumes/index.html:23 -msgid "Manage Volumes" -msgstr "" - -#: templates/django_nova_syspanel/vpns/index.html:24 -msgid "Manage VPNs" -msgstr "" - -#: views/instances.py:44 -#, python-format -msgid "Instance %s has been scheduled for termination." -msgstr "" - -#: views/instances.py:48 -#, python-format -msgid "There were issues trying to terminate instance %s. Please try again." -msgstr "" - -#: views/instances.py:79 -#, python-format -msgid "Instance %s has been scheduled for reboot." -msgstr "" - -#: views/instances.py:83 -#, python-format -msgid "There were issues trying to reboot instance %s. Please try again." -msgstr "" - -#: views/security.py:41 -#, python-format -msgid "Unable to disable project %(name)s: %(code)s - %(msg)s" -msgstr "" - -#: views/security.py:46 -#, python-format -msgid "Project %s has been successfully disabled." -msgstr "" - -#: views/security.py:52 -msgid "Invalid form data" -msgstr "" - -#: views/security.py:68 -#, python-format -msgid "Unable to block IPs range %(cidr)s: %(code)s %(msg)s" -msgstr "" - -#: views/security.py:74 -#, python-format -msgid "IPs range %shas been successfully blocked" -msgstr "" - -#: views/security.py:88 -#, python-format -msgid "Unable to shut off public IPs: %(code)s - %(msg)s" -msgstr "" - -#: views/security.py:91 -msgid "Public IPs have been turned off." -msgstr "" - -#: views/security.py:114 -#, python-format -msgid "Unable to shut off all VPNs: %(code)s - %(msg)s" -msgstr "" - -#: views/security.py:118 -msgid "VPNs have been successfully turned off." -msgstr "" - -#: views/volumes.py:44 -#, python-format -msgid "Volume %s has been scheduled to be detached." -msgstr "" - -#: views/volumes.py:57 -#, python-format -msgid "Unable to delete volume %(vol)s: %(msg)s" -msgstr "" - -#: views/volumes.py:61 -#, python-format -msgid "Volume %s has been successfully deleted." -msgstr "" diff --git a/django-nova-syspanel/src/django_nova_syspanel/locale/es/LC_MESSAGES/django.mo b/django-nova-syspanel/src/django_nova_syspanel/locale/es/LC_MESSAGES/django.mo deleted file mode 100644 index d987dc31a046f6a32a8c73f1fe7a3bfe0d46830a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 425 zcmYL^(MrQG6owVO>ZR9SMDRkHXSPG6%bcvP-7K{0=sH2~vNm?rE-6VS`XIiZ&*G_y z`{5%A`NH}0b#(Z-huKGtkyGRVxj@>uh{Vf2uC4Q*xsoqDHxL%^z?H6~phPxYXv6YX zD41TaBvXZz@ZV{OfjKrW~8EIvWy}!^WuQq1hE%JBhUBK zV6nJGRg_y+a>zK_P!f5w>C&5`7e%AG>Pl7a9IP6Laj^TN)3vR!6ov~N_t9W)!{5zi zQ?p78NWNxDb2D6K6L5E4TkDxC2t+Q6N|cnitIAmOdaGCs6R9?u64Cq|^{_V}zuV!N MASXlOoDZzMZ{>k^xBvhE diff --git a/django-nova-syspanel/src/django_nova_syspanel/locale/es/LC_MESSAGES/django.po b/django-nova-syspanel/src/django_nova_syspanel/locale/es/LC_MESSAGES/django.po deleted file mode 100644 index 0b7534cc4..000000000 --- a/django-nova-syspanel/src/django_nova_syspanel/locale/es/LC_MESSAGES/django.po +++ /dev/null @@ -1,240 +0,0 @@ -# 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:02+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" - -#: models.py:24 models.py:25 -msgid "Forbidden" -msgstr "" - -#: models.py:39 -msgid "An unexpected error occurred. Please try your request again." -msgstr "" - -#: templates/django_nova_syspanel/index.html:9 -msgid "" -"View all running instances other than VPNs. Schedule instances for\treboot " -"or termination. Download logs." -msgstr "" - -#: templates/django_nova_syspanel/index.html:15 -#: templates/django_nova_syspanel/volumes/index.html:24 -msgid "" -"View all volumes. See size, status, and mount point. Detach and destroy " -"volumes." -msgstr "" - -#: templates/django_nova_syspanel/index.html:21 -#: templates/django_nova_syspanel/vpns/index.html:25 -msgid "" -"View all projects VPN status. Schedule launch, termination, and reboot. Send " -"credentials." -msgstr "" - -#: templates/django_nova_syspanel/index.html:27 -msgid "" -"View servers that participate in your cloud. See statistics about\trunning " -"services and served objects." -msgstr "" - -#: templates/django_nova_syspanel/index.html:33 -msgid "" -"Perform operations to deal with rogue users, limit or prevent compromise, " -"and deal with external threats." -msgstr "" - -#: templates/django_nova_syspanel/cloudview/index.html:9 -msgid "" -"View servers that participate in your cloud. See statistics about running " -"services and served objects." -msgstr "" - -#: templates/django_nova_syspanel/instances/index.html:23 -msgid "Manage Instances" -msgstr "" - -#: templates/django_nova_syspanel/instances/index.html:24 -msgid "" -"View all running instances other than VPNs. Schedule instances for reboot or " -"termination. Download logs." -msgstr "" - -#: templates/django_nova_syspanel/instances/index.html:36 -msgid "Refresh List" -msgstr "" - -#: templates/django_nova_syspanel/instances/index.html:66 -msgid "Console Log" -msgstr "" - -#: templates/django_nova_syspanel/security/disable_project_credentials.html:9 -msgid "" -"\n" -" If a user's credentials were comprimised, you will need to use \n" -" `nova-manage user revoke USERNAME`, and the restart all VPNs for " -"projects\n" -" they are a member of. " -msgstr "" - -#: templates/django_nova_syspanel/security/disable_project_credentials.html:15 -#, python-format -msgid "" -"\n" -" The VPN for %(project)s is currently offline. You can turn it back on\n" -" using " -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:7 -msgid "Security" -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:9 -msgid "Use the following tools to secure the cloud during a security event" -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:14 -msgid "" -"Scenario: Project account credentials have been compromised." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:15 -msgid "" -"Action: Disable the user or project. This should invalidate " -"the credentials, also deny the specific port assigned to the user." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:34 -msgid "" -"Scenario: The issue pin points to be coming in from a " -"specific external ip or ip range." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:35 -msgid "" -"Action: Block the IP or IP range. This should manipulate ip " -"tables to block the ip or ip range." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:55 -msgid "" -"Scenario: Issues affecting multiple public entry points or " -"could not determine to be a specific one." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:56 -msgid "" -"Action: Disable all public IPs on all VMs. This should " -"unplumb the device the public ip was on." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:69 -msgid "" -"Scenario: Issue related to VPN service affecting multiple " -"customers." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:70 -msgid "" -"Action: Disable VPN service. This should turn off the VPN " -"ip." -msgstr "" - -#: templates/django_nova_syspanel/volumes/index.html:23 -msgid "Manage Volumes" -msgstr "" - -#: templates/django_nova_syspanel/vpns/index.html:24 -msgid "Manage VPNs" -msgstr "" - -#: views/instances.py:44 -#, python-format -msgid "Instance %s has been scheduled for termination." -msgstr "" - -#: views/instances.py:48 -#, python-format -msgid "There were issues trying to terminate instance %s. Please try again." -msgstr "" - -#: views/instances.py:79 -#, python-format -msgid "Instance %s has been scheduled for reboot." -msgstr "" - -#: views/instances.py:83 -#, python-format -msgid "There were issues trying to reboot instance %s. Please try again." -msgstr "" - -#: views/security.py:41 -#, python-format -msgid "Unable to disable project %(name)s: %(code)s - %(msg)s" -msgstr "" - -#: views/security.py:46 -#, python-format -msgid "Project %s has been successfully disabled." -msgstr "" - -#: views/security.py:52 -msgid "Invalid form data" -msgstr "" - -#: views/security.py:68 -#, python-format -msgid "Unable to block IPs range %(cidr)s: %(code)s %(msg)s" -msgstr "" - -#: views/security.py:74 -#, python-format -msgid "IPs range %shas been successfully blocked" -msgstr "" - -#: views/security.py:88 -#, python-format -msgid "Unable to shut off public IPs: %(code)s - %(msg)s" -msgstr "" - -#: views/security.py:91 -msgid "Public IPs have been turned off." -msgstr "" - -#: views/security.py:114 -#, python-format -msgid "Unable to shut off all VPNs: %(code)s - %(msg)s" -msgstr "" - -#: views/security.py:118 -msgid "VPNs have been successfully turned off." -msgstr "" - -#: views/volumes.py:44 -#, python-format -msgid "Volume %s has been scheduled to be detached." -msgstr "" - -#: views/volumes.py:57 -#, python-format -msgid "Unable to delete volume %(vol)s: %(msg)s" -msgstr "" - -#: views/volumes.py:61 -#, python-format -msgid "Volume %s has been successfully deleted." -msgstr "" diff --git a/django-nova-syspanel/src/django_nova_syspanel/locale/fr/LC_MESSAGES/django.mo b/django-nova-syspanel/src/django_nova_syspanel/locale/fr/LC_MESSAGES/django.mo deleted file mode 100644 index 6fd244cb8c8ce0fee4b5ff8105a094b2bfb51d0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 420 zcmYL^K~KUk7=|%=+R?Lz9=zd)8!=`SAxt)K$;QYSCVDGd9mCNsZ87>o{CoZuzp0To zdD1q0n(yt``PpX&bAntTm&hq{g|u;z9bOJ_ZJqxtmE7^%Kv=*dSGtmd64`K}4a;Al zV0yceOchqj8>tM$x~vMgKa?6WNr|;gGMFmP3_b*(8BR&xb{w#8!FGvrL+yUo9@sXD zkn*>x9q{Kp1zrkq0=`Ec5*mly=VTFB5z_`T#e}Yzk&2SpI*Q1`ivw~O#9kOpJl{`) z)oP5YC=aaUka4!BB=Q#XwKqpEiY9f{ld3#ASTzpg;P^+UXIoP#3>P@=qru*Wznkl( zW|bI{e9M&PX0*;`;2yoU)(ck\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" - -#: models.py:24 models.py:25 -msgid "Forbidden" -msgstr "" - -#: models.py:39 -msgid "An unexpected error occurred. Please try your request again." -msgstr "" - -#: templates/django_nova_syspanel/index.html:9 -msgid "" -"View all running instances other than VPNs. Schedule instances for\treboot " -"or termination. Download logs." -msgstr "" - -#: templates/django_nova_syspanel/index.html:15 -#: templates/django_nova_syspanel/volumes/index.html:24 -msgid "" -"View all volumes. See size, status, and mount point. Detach and destroy " -"volumes." -msgstr "" - -#: templates/django_nova_syspanel/index.html:21 -#: templates/django_nova_syspanel/vpns/index.html:25 -msgid "" -"View all projects VPN status. Schedule launch, termination, and reboot. Send " -"credentials." -msgstr "" - -#: templates/django_nova_syspanel/index.html:27 -msgid "" -"View servers that participate in your cloud. See statistics about\trunning " -"services and served objects." -msgstr "" - -#: templates/django_nova_syspanel/index.html:33 -msgid "" -"Perform operations to deal with rogue users, limit or prevent compromise, " -"and deal with external threats." -msgstr "" - -#: templates/django_nova_syspanel/cloudview/index.html:9 -msgid "" -"View servers that participate in your cloud. See statistics about running " -"services and served objects." -msgstr "" - -#: templates/django_nova_syspanel/instances/index.html:23 -msgid "Manage Instances" -msgstr "" - -#: templates/django_nova_syspanel/instances/index.html:24 -msgid "" -"View all running instances other than VPNs. Schedule instances for reboot or " -"termination. Download logs." -msgstr "" - -#: templates/django_nova_syspanel/instances/index.html:36 -msgid "Refresh List" -msgstr "" - -#: templates/django_nova_syspanel/instances/index.html:66 -msgid "Console Log" -msgstr "" - -#: templates/django_nova_syspanel/security/disable_project_credentials.html:9 -msgid "" -"\n" -" If a user's credentials were comprimised, you will need to use \n" -" `nova-manage user revoke USERNAME`, and the restart all VPNs for " -"projects\n" -" they are a member of. " -msgstr "" - -#: templates/django_nova_syspanel/security/disable_project_credentials.html:15 -#, python-format -msgid "" -"\n" -" The VPN for %(project)s is currently offline. You can turn it back on\n" -" using " -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:7 -msgid "Security" -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:9 -msgid "Use the following tools to secure the cloud during a security event" -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:14 -msgid "" -"Scenario: Project account credentials have been compromised." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:15 -msgid "" -"Action: Disable the user or project. This should invalidate " -"the credentials, also deny the specific port assigned to the user." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:34 -msgid "" -"Scenario: The issue pin points to be coming in from a " -"specific external ip or ip range." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:35 -msgid "" -"Action: Block the IP or IP range. This should manipulate ip " -"tables to block the ip or ip range." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:55 -msgid "" -"Scenario: Issues affecting multiple public entry points or " -"could not determine to be a specific one." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:56 -msgid "" -"Action: Disable all public IPs on all VMs. This should " -"unplumb the device the public ip was on." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:69 -msgid "" -"Scenario: Issue related to VPN service affecting multiple " -"customers." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:70 -msgid "" -"Action: Disable VPN service. This should turn off the VPN " -"ip." -msgstr "" - -#: templates/django_nova_syspanel/volumes/index.html:23 -msgid "Manage Volumes" -msgstr "" - -#: templates/django_nova_syspanel/vpns/index.html:24 -msgid "Manage VPNs" -msgstr "" - -#: views/instances.py:44 -#, python-format -msgid "Instance %s has been scheduled for termination." -msgstr "" - -#: views/instances.py:48 -#, python-format -msgid "There were issues trying to terminate instance %s. Please try again." -msgstr "" - -#: views/instances.py:79 -#, python-format -msgid "Instance %s has been scheduled for reboot." -msgstr "" - -#: views/instances.py:83 -#, python-format -msgid "There were issues trying to reboot instance %s. Please try again." -msgstr "" - -#: views/security.py:41 -#, python-format -msgid "Unable to disable project %(name)s: %(code)s - %(msg)s" -msgstr "" - -#: views/security.py:46 -#, python-format -msgid "Project %s has been successfully disabled." -msgstr "" - -#: views/security.py:52 -msgid "Invalid form data" -msgstr "" - -#: views/security.py:68 -#, python-format -msgid "Unable to block IPs range %(cidr)s: %(code)s %(msg)s" -msgstr "" - -#: views/security.py:74 -#, python-format -msgid "IPs range %shas been successfully blocked" -msgstr "" - -#: views/security.py:88 -#, python-format -msgid "Unable to shut off public IPs: %(code)s - %(msg)s" -msgstr "" - -#: views/security.py:91 -msgid "Public IPs have been turned off." -msgstr "" - -#: views/security.py:114 -#, python-format -msgid "Unable to shut off all VPNs: %(code)s - %(msg)s" -msgstr "" - -#: views/security.py:118 -msgid "VPNs have been successfully turned off." -msgstr "" - -#: views/volumes.py:44 -#, python-format -msgid "Volume %s has been scheduled to be detached." -msgstr "" - -#: views/volumes.py:57 -#, python-format -msgid "Unable to delete volume %(vol)s: %(msg)s" -msgstr "" - -#: views/volumes.py:61 -#, python-format -msgid "Volume %s has been successfully deleted." -msgstr "" diff --git a/django-nova-syspanel/src/django_nova_syspanel/locale/ja/LC_MESSAGES/django.mo b/django-nova-syspanel/src/django_nova_syspanel/locale/ja/LC_MESSAGES/django.mo deleted file mode 100644 index a52e22a481d3a56dd9e669f80e2eb747a45548f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8433 zcmdT|TW}NC8Q$j71UG4$^qO9h(~A=b$e1+Eqy{p9;G|A4c)&12JJZQpI+hkzyUOkg z;&$44S6mI$gj-@lY77Jn4k9E#3aw%8sG=O3~)9MA>0e>0{#n_1}?ih z!1KU4xW6CD(mBroe+nNv!1rK<$f)@(tkcfC=C~fu#R~UkdD63w#9k2Y~kj-v@ph_-7zQ zDEE9h*#8i4C+<6dwEp+NCxA`&1?xM2P)#v_2G9k*0Q@`fN5G!1D9SUyUju&#obgpf zc^1flbpIxhjB;lC5Lc-26!0w+yepr6*vp`FEK^=F7Of% zZmqenL|$YU!m1FZAy)G3LExQuk+0x#1+9iPRJ7%ZoU0H(sERg3u^%d(8!R$qQ~&Kn(?9SCB&TLI|o? z6T{Wf%T$)Px%H6Ek`_;K!_idTW*fN0S<=krEG?_qJT-^)nR&KB({*NWo??zkyO@;m zykV|a6Is!{ra}32Zplm)h9nMV4FMM+09jkX1I!+W+^H?f#h?&xCB z5$~32q#?FDgX8Rsnb%VcMr*met~#7)Ip(N6I=9I;J(b<~8oTix?7sGaOEjCdOZyOy z^;)v-ENKOdlS+{nv|P)L#gU_P`5s+M!UP-E2d?k5YYoX8IX$24k+M^q4woOpolt*+ zN}F%uKyn!oip&lpRC|yzQ7-ZrL}MYB$;+ zItwhc`k=CAIB=PTEFz{DrUSzqZe_tuNfBar#X=K=tpu}yEnPv1Ff|Erh7*3r864sOndtGVW@Vh3xlhceyRidrTd2$NA?zPNpTt)sOv^P|p$Xr9|MFz_o{6z$d z{LC#2znV#zkSSzgm(Ep`3UUf+h=qW>kVh3@YFgDmsHaTBHsSrHW?FgLw0g7@;;#@_ zWyY{(I|J%T^Xz;w$!)tguOrQ6it&`vVW6TI;A^uDPedz|8J^1PP>1S^#d}QCX}OuD zL4Z^$2DDx>m1JZY2&*ccL6M8jw4*PmlvO^P$RutnUEGoz%^bI+Kv@}593I@DIT>b| zY0#5W#h$}-lvyW88NMD2iiI*Lp4EMoI5-)Ls}9&2k)y@~abKl^+LFT3YALAFhAInO zh1$}htl+(<(HXW>vmIq6M-(-uPXS?2k!4emyn!iJAMpgF3A_u&RN_z@^f1oX6A^hG zth|AgRfa5*l@c4{$;_mdvS!(Bta)bAOmVb@=9yVLJSjL0QV1C$gW?iKk4Z);#L-x-s7a zVs0>WQ%y15Od}ya{y`C|Z}y;oQKUEL%+`L)=P;NCj|D!-%AzfM0+i*Bn#{C&9G1hlq$RbSoH2}`geED_$TE2tjzO+!N%W*1Gw;lZoEvsJe2q9r zkx20#IcS9*`dH_%n>#1Ww1%}g=s4(#a0f?mTHRoAO&OEfOI0lBhKY_;Vl^B^lN&>s zrP`5Pmq@90rpHvRRMQGhlS87@PHU;e;(XdpbenCgscU(6;wh?~*qB%X$F{LYTIbD6 zv_6(-eVomEw5|1#*{$DeZN>R{=xEP?M+Kn z+evhzU)h*7OskD`tLsoiHMUG$r>@nqDqG+f^5c_PEoH9DTWZVN+!NSmr1O}X6Wv_R zwy~v)mOZm-(KGFA!P2Eq>RO9wrK@Y&*t2R*HMq^2Iy*YstA@{OX>CFibDtS!M7x1niBxQ3kN0R!Q6K?#seG zCftp}9rh2M^>=L*?wD{-i+(qHE)d>se{jF>21@7gC0TkK2u+-wPfr z%7a(@gQE}`d#VTpKx6NuDC`r36T&+x3U5m@P73!(WZo6hz26fq{_y=UESS7J5o#H^ zKzR7INa}1VKtgHjr3MzeB&sq73h%J+aQZufA55e!1NY(BTh0PRjl0JrGN_%!rUOq@>z~>X2 zrjEHXb{+y+Ir7HF$RM4Qa`%uO-tO|o5q|&%fh|%QaxIuqjLr*LL>mJy><%Lo?fB@* zRH@TBISwm|l`ll$C22UQKyIybOpVf2hd0#w`jWt%ORr3h|AGkWArpp0VT&m2BI-%! z1PS9G-4Ew{bUSMk81w*7aMH^}8*f~A$B8+Gt=9|&X?D6M?dv?y@75kM=5GTt2mH$j z|a`^CeckAL~h^zZ~^Nq0i%_Ij?lW7GQ&Pxm8}C5QJ7PLJ%k!7;+yNNNU^03M1R z;}3!{sE0!pRq8@5yiuwj*ah9eEqPv066Xo`sK4o*$;*4n2T(CVaajVXo*)~c;Be{8 zMd_uRc1WXeqM#siQM{!VH?G`a;kc1cWO`Q2sl+p^FtGIK{^`PKUCzKTZ(HfL*TXVO zRY%r;FzM*Us8+)lkq(m=x0Vi~xWWPO%0}tT6S4vAC=XpM?+t#!YAhJ0dQ25}^W=EH ze-Q?QEGVU;ltl2qw|nYDKrXybNDXScf=q-ru}*k!)!V|mESZV8ge6Ids`I5FFQ-P& z_=CuzAZsPFN%L2Qw}-k+t?hwhn(ZL=rBg@z@o@@zP2CP8Rqervvi(pQn243 zt+Ivs(Y4l>&v}y5!4}?1cKQk8a#^r z*7MUtyCikMiqq4tyj41dia;v^DpFRV2q6JBZt_Rbx5ns*EeKm=#nstE&fXC@2t)v* zkni#MT(?DFtO@1_N^TGsmR492go`*DvXf$Z@)W2!bp-_l1g)s$fp2K-a3lP*S$Ibp z1cfv$R%kIf4nbp4cJ7dg@=D#|HMxQc=M9u!Ju5Q_I@V=ILlzd}tokpX*f4j(r+v!M znyitIsv9I@i5Ppjj{ZAP$IS4b0ubzP8<-wC8v6d)BCB%h+h_Do10s9fOml5{Z1=~th+ILgJy3ARIgeH`(n z^gEJM4!|hCau%B!8KqX$?}g77{cey2RA#CV9We2N@XpX&6;?k|d}{O*wR7x^KRm(x z{qE$%2$gRfIeF=IIq6}bp;{*$SR}VpbiFDWNpz%EObL`Js)V6_&m(u3%xraJdA#r41O6o12bK0Dn#)Z^vau# z!#8#11@VcE@EBE&l@FaQ9g&ZswW%?7^^+~>L_Xg|@9{v#=@G7x4^!@FX>ix%6-*)M z7I@N*jrMZ(4N|Op?#$Ha*6{hgqB_k{4XQt$3o6\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" - -#: models.py:24 models.py:25 -msgid "Forbidden" -msgstr "アクセスを許可されていません。" - -#: models.py:39 -msgid "An unexpected error occurred. Please try your request again." -msgstr "" -"予期しないエラーが発生しました。もう一度リクエストを試してみてください。" - -#: templates/django_nova_syspanel/index.html:9 -msgid "" -"View all running instances other than VPNs. Schedule instances for\treboot " -"or termination. Download logs." -msgstr "" -"VPN以外で実行中のすべてのインスタンスを表示。再起動または終了のインスタンスス" -"ケジュールを設定。ログをダウンロード。" - -#: templates/django_nova_syspanel/index.html:15 -#: templates/django_nova_syspanel/volumes/index.html:24 -msgid "" -"View all volumes. See size, status, and mount point. Detach and destroy " -"volumes." -msgstr "" -"すべてのボリュームを表示。サイズ、ステータスおよびマウントポイントを参照。ボ" -"リュームを取り外して破棄。" - -#: templates/django_nova_syspanel/index.html:21 -#: templates/django_nova_syspanel/vpns/index.html:25 -msgid "" -"View all projects VPN status. Schedule launch, termination, and reboot. Send " -"credentials." -msgstr "" -"すべてのプロジェクトのVPNステータスを表示。起動、終了、再起動のスケジュールを" -"設定。認証情報を送信。" - -#: templates/django_nova_syspanel/index.html:27 -msgid "" -"View servers that participate in your cloud. See statistics about\trunning " -"services and served objects." -msgstr "" -"クラウドに参加しているサーバーを表示。実行中のサービスと提供オブジェクトに関" -"する統計情報を参照してください。" - -#: templates/django_nova_syspanel/index.html:33 -msgid "" -"Perform operations to deal with rogue users, limit or prevent compromise, " -"and deal with external threats." -msgstr "" -"不正なユーザーへの対応する操作を実行し、情報漏洩の制限または防止し、外部から" -"の脅威に対処する。" - -#: templates/django_nova_syspanel/cloudview/index.html:9 -msgid "" -"View servers that participate in your cloud. See statistics about running " -"services and served objects." -msgstr "" -"クラウドに参加しているサーバーを表示。実行中のサービスと提供オブジェクトに関" -"する統計情報を参照してください。" - -#: templates/django_nova_syspanel/instances/index.html:23 -msgid "Manage Instances" -msgstr "インスタンスを管理する。" - -#: templates/django_nova_syspanel/instances/index.html:24 -msgid "" -"View all running instances other than VPNs. Schedule instances for reboot or " -"termination. Download logs." -msgstr "" -"VPN以外で実行中のすべてのインスタンスを表示。再起動または終了のインスタンスス" -"ケジュールを設定。ログをダウンロード。" - -#: templates/django_nova_syspanel/instances/index.html:36 -msgid "Refresh List" -msgstr "リストを再読み込みする。" - -#: templates/django_nova_syspanel/instances/index.html:66 -msgid "Console Log" -msgstr "ログをコンソールする。" - -#: templates/django_nova_syspanel/security/disable_project_credentials.html:9 -msgid "" -"\n" -" If a user's credentials were comprimised, you will need to use \n" -" `nova-manage user revoke USERNAME`, and the restart all VPNs for " -"projects\n" -" they are a member of. " -msgstr "" -"\n" -" ユーザーの認証情報が漏洩していた場合には、USERNAMEを取り消すことができる" -"nova-manage userを利用し、\n" -" 参加している全てのVPNを再起動してください。" - -#: templates/django_nova_syspanel/security/disable_project_credentials.html:15 -#, python-format -msgid "" -"\n" -" The VPN for %(project)s is currently offline. You can turn it back on\n" -" using " -msgstr "" -"\n" -" 現在、%(project)sのVPNはオフラインになっています。あなたが使用していたも" -"のを元に戻すことができます" - -#: templates/django_nova_syspanel/security/index.html:7 -msgid "Security" -msgstr "セキュリティ" - -#: templates/django_nova_syspanel/security/index.html:9 -msgid "Use the following tools to secure the cloud during a security event" -msgstr "" -"セキュリティイベント中にクラウドのセキュリティを確保するために、次のツールを" -"使用してください。" - -#: templates/django_nova_syspanel/security/index.html:14 -msgid "" -"Scenario: Project account credentials have been compromised." -msgstr "" -"シナリオ:プロジェクトアカウントの認証情報が漏洩しています。" - -#: templates/django_nova_syspanel/security/index.html:15 -msgid "" -"Action: Disable the user or project. This should invalidate " -"the credentials, also deny the specific port assigned to the user." -msgstr "" -"アクション:ユーザーまはたプロジェクトを無効にする。これは認" -"証情報を無効にし、ユーザーに割り当てられている特定のポートを拒否します。" - -#: templates/django_nova_syspanel/security/index.html:34 -msgid "" -"Scenario: The issue pin points to be coming in from a " -"specific external ip or ip range." -msgstr "" -"シナリオ:この問題は特定の範囲の外部IPアドレスから来ているこ" -"とを示しています。" - -#: templates/django_nova_syspanel/security/index.html:35 -msgid "" -"Action: Block the IP or IP range. This should manipulate ip " -"tables to block the ip or ip range." -msgstr "" -"アクション:そのIPアドレスの範囲をブロックします。IPアドレス" -"範囲をブロックするには、IPアドレステーブルを操作する必要があります。" - -#: templates/django_nova_syspanel/security/index.html:55 -msgid "" -"Scenario: Issues affecting multiple public entry points or " -"could not determine to be a specific one." -msgstr "" -"シナリオ:やポイントに影響を及ぼす複数のパブリックエントリの" -"問題は、1つ具体的にできなかった決定します。" - -#: templates/django_nova_syspanel/security/index.html:56 -msgid "" -"Action: Disable all public IPs on all VMs. This should " -"unplumb the device the public ip was on." -msgstr "" -"アクション:全てのVM上の全てのパブリックIPアドレスを無効にし" -"ます。この操作には、パブリックIPアドレスが付与されたデバイスを取り外す必要が" -"あります。" - -#: templates/django_nova_syspanel/security/index.html:69 -msgid "" -"Scenario: Issue related to VPN service affecting multiple " -"customers." -msgstr "" -"シナリオ:複数の顧客に影響を与えるVPNサービスに関連する問題" - -#: templates/django_nova_syspanel/security/index.html:70 -msgid "" -"Action: Disable VPN service. This should turn off the VPN " -"ip." -msgstr "" -"アクション:VPNサービスを無効にする。この操作には、VPNのIPを" -"オフにする必要があります。" - -#: templates/django_nova_syspanel/volumes/index.html:23 -msgid "Manage Volumes" -msgstr "ボリュームを管理する。" - -#: templates/django_nova_syspanel/vpns/index.html:24 -msgid "Manage VPNs" -msgstr "VPNを管理する。" - -#: views/instances.py:44 -#, python-format -msgid "Instance %s has been scheduled for termination." -msgstr "インスタンス%sは終了処理されます。" - -#: views/instances.py:48 -#, python-format -msgid "There were issues trying to terminate instance %s. Please try again." -msgstr "" -"インスタンス%sの終了処理中に問題が生じています。もう一度やり直してください。" - -#: views/instances.py:79 -#, python-format -msgid "Instance %s has been scheduled for reboot." -msgstr "インスタンス%sは再起動されます。" - -#: views/instances.py:83 -#, python-format -msgid "There were issues trying to reboot instance %s. Please try again." -msgstr "" -"インスタンス%sの再起動中に問題が生じています。もう一度やり直してください。" - -#: views/security.py:41 -#, python-format -msgid "Unable to disable project %(name)s: %(code)s - %(msg)s" -msgstr "プロジェクト%(name)sを無効にすることができません。: %(code)s - %(msg)s" - -#: views/security.py:46 -#, python-format -msgid "Project %s has been successfully disabled." -msgstr "プロジェクト%sが無効になりました。" - -#: views/security.py:52 -msgid "Invalid form data" -msgstr "無効なフォームデータ" - -#: views/security.py:68 -#, python-format -msgid "Unable to block IPs range %(cidr)s: %(code)s %(msg)s" -msgstr "" -"IPアドレス範囲%(cidr)sをブロックすることができません。: %(code)s %(msg)s" - -#: views/security.py:74 -#, python-format -msgid "IPs range %shas been successfully blocked" -msgstr "IPアドレス範囲%sは、正常にブロックされました。" - -#: views/security.py:88 -#, python-format -msgid "Unable to shut off public IPs: %(code)s - %(msg)s" -msgstr "パブリックIPアドレスを遮断することができません。: %(code)s - %(msg)s" - -#: views/security.py:91 -msgid "Public IPs have been turned off." -msgstr "パブリックIPアドレスがオフになっています。" - -#: views/security.py:114 -#, python-format -msgid "Unable to shut off all VPNs: %(code)s - %(msg)s" -msgstr "全てのVPNを遮断することができません。: %(code)s - %(msg)s" - -#: views/security.py:118 -msgid "VPNs have been successfully turned off." -msgstr "VPNは正常にオフになりました。" - -#: views/volumes.py:44 -#, python-format -msgid "Volume %s has been scheduled to be detached." -msgstr "ボリューム%s取り外されます。" - -#: views/volumes.py:57 -#, python-format -msgid "Unable to delete volume %(vol)s: %(msg)s" -msgstr "ボリューム%(vol)sを削除することができません。%(msg)s" - -#: views/volumes.py:61 -#, python-format -msgid "Volume %s has been successfully deleted." -msgstr "ボリューム%sが正常に削除されました。" diff --git a/django-nova-syspanel/src/django_nova_syspanel/locale/pt/LC_MESSAGES/django.mo b/django-nova-syspanel/src/django_nova_syspanel/locale/pt/LC_MESSAGES/django.mo deleted file mode 100644 index b3e33f7bd1abe7c058de46c6ac8e57a5134906e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 382 zcmYL^%TB{E5Jih%l_hHyUa%`uoC=}TJk-#*B~sE6_JnU)7HQq`nXI8fZZLD@KQXI-(Rs z$mPE24*Yq~Jj@}@APUK2#?rX|lFhl72\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" - -#: models.py:24 models.py:25 -msgid "Forbidden" -msgstr "" - -#: models.py:39 -msgid "An unexpected error occurred. Please try your request again." -msgstr "" - -#: templates/django_nova_syspanel/index.html:9 -msgid "" -"View all running instances other than VPNs. Schedule instances for\treboot " -"or termination. Download logs." -msgstr "" - -#: templates/django_nova_syspanel/index.html:15 -#: templates/django_nova_syspanel/volumes/index.html:24 -msgid "" -"View all volumes. See size, status, and mount point. Detach and destroy " -"volumes." -msgstr "" - -#: templates/django_nova_syspanel/index.html:21 -#: templates/django_nova_syspanel/vpns/index.html:25 -msgid "" -"View all projects VPN status. Schedule launch, termination, and reboot. Send " -"credentials." -msgstr "" - -#: templates/django_nova_syspanel/index.html:27 -msgid "" -"View servers that participate in your cloud. See statistics about\trunning " -"services and served objects." -msgstr "" - -#: templates/django_nova_syspanel/index.html:33 -msgid "" -"Perform operations to deal with rogue users, limit or prevent compromise, " -"and deal with external threats." -msgstr "" - -#: templates/django_nova_syspanel/cloudview/index.html:9 -msgid "" -"View servers that participate in your cloud. See statistics about running " -"services and served objects." -msgstr "" - -#: templates/django_nova_syspanel/instances/index.html:23 -msgid "Manage Instances" -msgstr "" - -#: templates/django_nova_syspanel/instances/index.html:24 -msgid "" -"View all running instances other than VPNs. Schedule instances for reboot or " -"termination. Download logs." -msgstr "" - -#: templates/django_nova_syspanel/instances/index.html:36 -msgid "Refresh List" -msgstr "" - -#: templates/django_nova_syspanel/instances/index.html:66 -msgid "Console Log" -msgstr "" - -#: templates/django_nova_syspanel/security/disable_project_credentials.html:9 -msgid "" -"\n" -" If a user's credentials were comprimised, you will need to use \n" -" `nova-manage user revoke USERNAME`, and the restart all VPNs for " -"projects\n" -" they are a member of. " -msgstr "" - -#: templates/django_nova_syspanel/security/disable_project_credentials.html:15 -#, python-format -msgid "" -"\n" -" The VPN for %(project)s is currently offline. You can turn it back on\n" -" using " -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:7 -msgid "Security" -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:9 -msgid "Use the following tools to secure the cloud during a security event" -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:14 -msgid "" -"Scenario: Project account credentials have been compromised." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:15 -msgid "" -"Action: Disable the user or project. This should invalidate " -"the credentials, also deny the specific port assigned to the user." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:34 -msgid "" -"Scenario: The issue pin points to be coming in from a " -"specific external ip or ip range." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:35 -msgid "" -"Action: Block the IP or IP range. This should manipulate ip " -"tables to block the ip or ip range." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:55 -msgid "" -"Scenario: Issues affecting multiple public entry points or " -"could not determine to be a specific one." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:56 -msgid "" -"Action: Disable all public IPs on all VMs. This should " -"unplumb the device the public ip was on." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:69 -msgid "" -"Scenario: Issue related to VPN service affecting multiple " -"customers." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:70 -msgid "" -"Action: Disable VPN service. This should turn off the VPN " -"ip." -msgstr "" - -#: templates/django_nova_syspanel/volumes/index.html:23 -msgid "Manage Volumes" -msgstr "" - -#: templates/django_nova_syspanel/vpns/index.html:24 -msgid "Manage VPNs" -msgstr "" - -#: views/instances.py:44 -#, python-format -msgid "Instance %s has been scheduled for termination." -msgstr "" - -#: views/instances.py:48 -#, python-format -msgid "There were issues trying to terminate instance %s. Please try again." -msgstr "" - -#: views/instances.py:79 -#, python-format -msgid "Instance %s has been scheduled for reboot." -msgstr "" - -#: views/instances.py:83 -#, python-format -msgid "There were issues trying to reboot instance %s. Please try again." -msgstr "" - -#: views/security.py:41 -#, python-format -msgid "Unable to disable project %(name)s: %(code)s - %(msg)s" -msgstr "" - -#: views/security.py:46 -#, python-format -msgid "Project %s has been successfully disabled." -msgstr "" - -#: views/security.py:52 -msgid "Invalid form data" -msgstr "" - -#: views/security.py:68 -#, python-format -msgid "Unable to block IPs range %(cidr)s: %(code)s %(msg)s" -msgstr "" - -#: views/security.py:74 -#, python-format -msgid "IPs range %shas been successfully blocked" -msgstr "" - -#: views/security.py:88 -#, python-format -msgid "Unable to shut off public IPs: %(code)s - %(msg)s" -msgstr "" - -#: views/security.py:91 -msgid "Public IPs have been turned off." -msgstr "" - -#: views/security.py:114 -#, python-format -msgid "Unable to shut off all VPNs: %(code)s - %(msg)s" -msgstr "" - -#: views/security.py:118 -msgid "VPNs have been successfully turned off." -msgstr "" - -#: views/volumes.py:44 -#, python-format -msgid "Volume %s has been scheduled to be detached." -msgstr "" - -#: views/volumes.py:57 -#, python-format -msgid "Unable to delete volume %(vol)s: %(msg)s" -msgstr "" - -#: views/volumes.py:61 -#, python-format -msgid "Volume %s has been successfully deleted." -msgstr "" diff --git a/django-nova-syspanel/src/django_nova_syspanel/locale/zh-cn/LC_MESSAGES/django.mo b/django-nova-syspanel/src/django_nova_syspanel/locale/zh-cn/LC_MESSAGES/django.mo deleted file mode 100644 index b3e33f7bd1abe7c058de46c6ac8e57a5134906e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 382 zcmYL^%TB{E5Jih%l_hHyUa%`uoC=}TJk-#*B~sE6_JnU)7HQq`nXI8fZZLD@KQXI-(Rs z$mPE24*Yq~Jj@}@APUK2#?rX|lFhl72\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" - -#: models.py:24 models.py:25 -msgid "Forbidden" -msgstr "" - -#: models.py:39 -msgid "An unexpected error occurred. Please try your request again." -msgstr "" - -#: templates/django_nova_syspanel/index.html:9 -msgid "" -"View all running instances other than VPNs. Schedule instances for\treboot " -"or termination. Download logs." -msgstr "" - -#: templates/django_nova_syspanel/index.html:15 -#: templates/django_nova_syspanel/volumes/index.html:24 -msgid "" -"View all volumes. See size, status, and mount point. Detach and destroy " -"volumes." -msgstr "" - -#: templates/django_nova_syspanel/index.html:21 -#: templates/django_nova_syspanel/vpns/index.html:25 -msgid "" -"View all projects VPN status. Schedule launch, termination, and reboot. Send " -"credentials." -msgstr "" - -#: templates/django_nova_syspanel/index.html:27 -msgid "" -"View servers that participate in your cloud. See statistics about\trunning " -"services and served objects." -msgstr "" - -#: templates/django_nova_syspanel/index.html:33 -msgid "" -"Perform operations to deal with rogue users, limit or prevent compromise, " -"and deal with external threats." -msgstr "" - -#: templates/django_nova_syspanel/cloudview/index.html:9 -msgid "" -"View servers that participate in your cloud. See statistics about running " -"services and served objects." -msgstr "" - -#: templates/django_nova_syspanel/instances/index.html:23 -msgid "Manage Instances" -msgstr "" - -#: templates/django_nova_syspanel/instances/index.html:24 -msgid "" -"View all running instances other than VPNs. Schedule instances for reboot or " -"termination. Download logs." -msgstr "" - -#: templates/django_nova_syspanel/instances/index.html:36 -msgid "Refresh List" -msgstr "" - -#: templates/django_nova_syspanel/instances/index.html:66 -msgid "Console Log" -msgstr "" - -#: templates/django_nova_syspanel/security/disable_project_credentials.html:9 -msgid "" -"\n" -" If a user's credentials were comprimised, you will need to use \n" -" `nova-manage user revoke USERNAME`, and the restart all VPNs for " -"projects\n" -" they are a member of. " -msgstr "" - -#: templates/django_nova_syspanel/security/disable_project_credentials.html:15 -#, python-format -msgid "" -"\n" -" The VPN for %(project)s is currently offline. You can turn it back on\n" -" using " -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:7 -msgid "Security" -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:9 -msgid "Use the following tools to secure the cloud during a security event" -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:14 -msgid "" -"Scenario: Project account credentials have been compromised." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:15 -msgid "" -"Action: Disable the user or project. This should invalidate " -"the credentials, also deny the specific port assigned to the user." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:34 -msgid "" -"Scenario: The issue pin points to be coming in from a " -"specific external ip or ip range." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:35 -msgid "" -"Action: Block the IP or IP range. This should manipulate ip " -"tables to block the ip or ip range." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:55 -msgid "" -"Scenario: Issues affecting multiple public entry points or " -"could not determine to be a specific one." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:56 -msgid "" -"Action: Disable all public IPs on all VMs. This should " -"unplumb the device the public ip was on." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:69 -msgid "" -"Scenario: Issue related to VPN service affecting multiple " -"customers." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:70 -msgid "" -"Action: Disable VPN service. This should turn off the VPN " -"ip." -msgstr "" - -#: templates/django_nova_syspanel/volumes/index.html:23 -msgid "Manage Volumes" -msgstr "" - -#: templates/django_nova_syspanel/vpns/index.html:24 -msgid "Manage VPNs" -msgstr "" - -#: views/instances.py:44 -#, python-format -msgid "Instance %s has been scheduled for termination." -msgstr "" - -#: views/instances.py:48 -#, python-format -msgid "There were issues trying to terminate instance %s. Please try again." -msgstr "" - -#: views/instances.py:79 -#, python-format -msgid "Instance %s has been scheduled for reboot." -msgstr "" - -#: views/instances.py:83 -#, python-format -msgid "There were issues trying to reboot instance %s. Please try again." -msgstr "" - -#: views/security.py:41 -#, python-format -msgid "Unable to disable project %(name)s: %(code)s - %(msg)s" -msgstr "" - -#: views/security.py:46 -#, python-format -msgid "Project %s has been successfully disabled." -msgstr "" - -#: views/security.py:52 -msgid "Invalid form data" -msgstr "" - -#: views/security.py:68 -#, python-format -msgid "Unable to block IPs range %(cidr)s: %(code)s %(msg)s" -msgstr "" - -#: views/security.py:74 -#, python-format -msgid "IPs range %shas been successfully blocked" -msgstr "" - -#: views/security.py:88 -#, python-format -msgid "Unable to shut off public IPs: %(code)s - %(msg)s" -msgstr "" - -#: views/security.py:91 -msgid "Public IPs have been turned off." -msgstr "" - -#: views/security.py:114 -#, python-format -msgid "Unable to shut off all VPNs: %(code)s - %(msg)s" -msgstr "" - -#: views/security.py:118 -msgid "VPNs have been successfully turned off." -msgstr "" - -#: views/volumes.py:44 -#, python-format -msgid "Volume %s has been scheduled to be detached." -msgstr "" - -#: views/volumes.py:57 -#, python-format -msgid "Unable to delete volume %(vol)s: %(msg)s" -msgstr "" - -#: views/volumes.py:61 -#, python-format -msgid "Volume %s has been successfully deleted." -msgstr "" diff --git a/django-nova-syspanel/src/django_nova_syspanel/locale/zh-tw/LC_MESSAGES/django.mo b/django-nova-syspanel/src/django_nova_syspanel/locale/zh-tw/LC_MESSAGES/django.mo deleted file mode 100644 index b3e33f7bd1abe7c058de46c6ac8e57a5134906e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 382 zcmYL^%TB{E5Jih%l_hHyUa%`uoC=}TJk-#*B~sE6_JnU)7HQq`nXI8fZZLD@KQXI-(Rs z$mPE24*Yq~Jj@}@APUK2#?rX|lFhl72\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" - -#: models.py:24 models.py:25 -msgid "Forbidden" -msgstr "" - -#: models.py:39 -msgid "An unexpected error occurred. Please try your request again." -msgstr "" - -#: templates/django_nova_syspanel/index.html:9 -msgid "" -"View all running instances other than VPNs. Schedule instances for\treboot " -"or termination. Download logs." -msgstr "" - -#: templates/django_nova_syspanel/index.html:15 -#: templates/django_nova_syspanel/volumes/index.html:24 -msgid "" -"View all volumes. See size, status, and mount point. Detach and destroy " -"volumes." -msgstr "" - -#: templates/django_nova_syspanel/index.html:21 -#: templates/django_nova_syspanel/vpns/index.html:25 -msgid "" -"View all projects VPN status. Schedule launch, termination, and reboot. Send " -"credentials." -msgstr "" - -#: templates/django_nova_syspanel/index.html:27 -msgid "" -"View servers that participate in your cloud. See statistics about\trunning " -"services and served objects." -msgstr "" - -#: templates/django_nova_syspanel/index.html:33 -msgid "" -"Perform operations to deal with rogue users, limit or prevent compromise, " -"and deal with external threats." -msgstr "" - -#: templates/django_nova_syspanel/cloudview/index.html:9 -msgid "" -"View servers that participate in your cloud. See statistics about running " -"services and served objects." -msgstr "" - -#: templates/django_nova_syspanel/instances/index.html:23 -msgid "Manage Instances" -msgstr "" - -#: templates/django_nova_syspanel/instances/index.html:24 -msgid "" -"View all running instances other than VPNs. Schedule instances for reboot or " -"termination. Download logs." -msgstr "" - -#: templates/django_nova_syspanel/instances/index.html:36 -msgid "Refresh List" -msgstr "" - -#: templates/django_nova_syspanel/instances/index.html:66 -msgid "Console Log" -msgstr "" - -#: templates/django_nova_syspanel/security/disable_project_credentials.html:9 -msgid "" -"\n" -" If a user's credentials were comprimised, you will need to use \n" -" `nova-manage user revoke USERNAME`, and the restart all VPNs for " -"projects\n" -" they are a member of. " -msgstr "" - -#: templates/django_nova_syspanel/security/disable_project_credentials.html:15 -#, python-format -msgid "" -"\n" -" The VPN for %(project)s is currently offline. You can turn it back on\n" -" using " -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:7 -msgid "Security" -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:9 -msgid "Use the following tools to secure the cloud during a security event" -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:14 -msgid "" -"Scenario: Project account credentials have been compromised." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:15 -msgid "" -"Action: Disable the user or project. This should invalidate " -"the credentials, also deny the specific port assigned to the user." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:34 -msgid "" -"Scenario: The issue pin points to be coming in from a " -"specific external ip or ip range." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:35 -msgid "" -"Action: Block the IP or IP range. This should manipulate ip " -"tables to block the ip or ip range." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:55 -msgid "" -"Scenario: Issues affecting multiple public entry points or " -"could not determine to be a specific one." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:56 -msgid "" -"Action: Disable all public IPs on all VMs. This should " -"unplumb the device the public ip was on." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:69 -msgid "" -"Scenario: Issue related to VPN service affecting multiple " -"customers." -msgstr "" - -#: templates/django_nova_syspanel/security/index.html:70 -msgid "" -"Action: Disable VPN service. This should turn off the VPN " -"ip." -msgstr "" - -#: templates/django_nova_syspanel/volumes/index.html:23 -msgid "Manage Volumes" -msgstr "" - -#: templates/django_nova_syspanel/vpns/index.html:24 -msgid "Manage VPNs" -msgstr "" - -#: views/instances.py:44 -#, python-format -msgid "Instance %s has been scheduled for termination." -msgstr "" - -#: views/instances.py:48 -#, python-format -msgid "There were issues trying to terminate instance %s. Please try again." -msgstr "" - -#: views/instances.py:79 -#, python-format -msgid "Instance %s has been scheduled for reboot." -msgstr "" - -#: views/instances.py:83 -#, python-format -msgid "There were issues trying to reboot instance %s. Please try again." -msgstr "" - -#: views/security.py:41 -#, python-format -msgid "Unable to disable project %(name)s: %(code)s - %(msg)s" -msgstr "" - -#: views/security.py:46 -#, python-format -msgid "Project %s has been successfully disabled." -msgstr "" - -#: views/security.py:52 -msgid "Invalid form data" -msgstr "" - -#: views/security.py:68 -#, python-format -msgid "Unable to block IPs range %(cidr)s: %(code)s %(msg)s" -msgstr "" - -#: views/security.py:74 -#, python-format -msgid "IPs range %shas been successfully blocked" -msgstr "" - -#: views/security.py:88 -#, python-format -msgid "Unable to shut off public IPs: %(code)s - %(msg)s" -msgstr "" - -#: views/security.py:91 -msgid "Public IPs have been turned off." -msgstr "" - -#: views/security.py:114 -#, python-format -msgid "Unable to shut off all VPNs: %(code)s - %(msg)s" -msgstr "" - -#: views/security.py:118 -msgid "VPNs have been successfully turned off." -msgstr "" - -#: views/volumes.py:44 -#, python-format -msgid "Volume %s has been scheduled to be detached." -msgstr "" - -#: views/volumes.py:57 -#, python-format -msgid "Unable to delete volume %(vol)s: %(msg)s" -msgstr "" - -#: views/volumes.py:61 -#, python-format -msgid "Volume %s has been successfully deleted." -msgstr "" diff --git a/django-nova-syspanel/src/django_nova_syspanel/models.py b/django-nova-syspanel/src/django_nova_syspanel/models.py deleted file mode 100644 index d95e8ea26..000000000 --- a/django-nova-syspanel/src/django_nova_syspanel/models.py +++ /dev/null @@ -1,418 +0,0 @@ -import sys -import boto -import boto.exception -import boto.s3 -from boto.ec2.volume import Volume -from xml.dom import minidom - -from django.conf import settings -from django.contrib.auth.models import User -from django.core.exceptions import PermissionDenied -from django.db.models.signals import post_save -from django.shortcuts import render_to_response -from django.template import RequestContext -from django.utils.translation import ugettext as _ - -from nova_adminclient import NovaAdminClient - -project_permissions = ('admin',) - - -class NovaResponseError(Exception): - def __init__(self, ec2error): - if ec2error.reason == 'Forbidden': - self.code = _('Forbidden') - self.message = _('Forbidden') - return - - dom = minidom.parseString(ec2error.body) - err = dom.getElementsByTagName('Errors')[0] - - try: - self.code = err.getElementsByTagName('Code')[0].childNodes[0].data - except IndexError: - self.code = 'Unknown' - - try: - self.message = err.getElementsByTagName('Message')[0].childNodes[0].data - except IndexError: - self.message = _('An unexpected error occurred. Please try your request again.') - - dom.unlink() - - def __str__(self): - return '%s (%s)' % (self.message, self.code) - - -def handle_nova_error(fn): - def decorator(view_func): - def wrapper(*args, **kwargs): - try: - return view_func(*args, **kwargs) - except boto.exception.EC2ResponseError, e: - if e.reason == 'Forbidden': - raise PermissionDenied() - else: - raise NovaResponseError(e) - return wrapper - return decorator(fn) - - -def get_nova_admin_connection(): - """ - Returns a Nova administration connection. - """ - return NovaAdminClient( - clc_url=settings.NOVA_DEFAULT_ENDPOINT, - region=settings.NOVA_DEFAULT_REGION, - access_key=settings.NOVA_ACCESS_KEY, - secret_key=settings.NOVA_SECRET_KEY) - - -class VolumeInfo(object): - """Foo""" - - def __init__(self, connection=None, username=None, endpoint=None): - self.connection = connection - self.username = username - self.endpoint = endpoint - - self.id = None - self.create_time = None - self.status = None - self.size = None - self.snapshot_id = None - self.attach_data = None - self.zone = None - - self.display_name = None - self.display_description = None - - def startElement(self, name, attrs, connection): - return None - - def endElement(self, name, value, connection): - if name == 'volumeId': - self.id = str(value) - elif name == 'size': - self.size = int(value) - elif name == 'status': - self.status = str(value) - elif name == 'displayName': - self.display_name = str(value) - elif name == 'displayDescription': - self.display_description = str(value) - else: - setattr(self, name, str(value)) - - -class ProjectManager(object): - def __init__(self, username, project, region): - self.username = username - self.projectname = project.projectname - self.projectManagerId = project.projectManagerId - self.region = region - - def get_nova_connection(self): - """ - Returns a boto connection for a user's project. - """ - nova = get_nova_admin_connection() - return nova.connection_for(self.username, - self.projectname, - clc_url=self.region['endpoint'], - region=self.region['name']) - - def get_zip(self): - """ - Returns a buffer of a zip file containing signed credentials - for the project's Nova user. - """ - nova = get_nova_admin_connection() - return nova.get_zip(self.username, self.projectname) - - def get_images(self, image_ids=None): - conn = self.get_nova_connection() - images = conn.get_all_images(image_ids=image_ids) - sorted_images = [i for i in images if i.ownerId == self.username] + \ - [i for i in images if i.ownerId != self.username] - - return [i for i in sorted_images - if i.type == 'machine' and i.location.split('/')[0] != 'nova'] - - def get_image(self, image_id): - try: - return self.get_images(image_ids=[image_id, ])[0] - except IndexError: - return None - - @handle_nova_error - def deregister_image(self, image_id): - """ - Removes the image's listing but leaves the image - and manifest in the object store in tact. - """ - conn = self.get_nova_connection() - return conn.deregister_image(image_id) - - @handle_nova_error - def update_image(self, image_id, display_name=None, description=None): - conn = self.get_nova_connection() - params = {'ImageId': image_id, - 'DisplayName': display_name, - 'Description': description} - return conn.get_object('UpdateImage', params, boto.ec2.image.Image) - - @handle_nova_error - def run_instances(self, image_id, **kwargs): - """ - Runs instances of the specified image id. - """ - conn = self.get_nova_connection() - return conn.run_instances(image_id, **kwargs) - - def get_instance_count(self): - """ - Returns the number of active instances in this project - or None if unknown. - """ - try: - return len(self.get_instances()) - except: - return None - - @handle_nova_error - def get_instances(self): - """ - Returns all instances in this project. - """ - conn = self.get_nova_connection() - reservations = conn.get_all_instances() - instances = [] - for reservation in reservations: - for instance in reservation.instances: - instances.append(instance) - return instances - - @handle_nova_error - def get_instance(self, instance_id): - """ - Returns detail about the specified instance. - """ - conn = self.get_nova_connection() - # TODO: Refactor this once nova's describe_instances filters by instance_id. - reservations = conn.get_all_instances() - for reservation in reservations: - for instance in reservation.instances: - if instance.id == instance_id: - return instance - return None - - @handle_nova_error - def update_instance(self, instance_id, updates): - conn = self.get_nova_connection() - params = {'InstanceId': instance_id, - 'DisplayName': updates['nickname'], - 'DisplayDescription': updates['description']} - return conn.get_object('UpdateInstance', params, - boto.ec2.instance.Instance) - - def get_instance_graph(self, region, instance_id, graph_name): - # TODO(devcamcar): Need better support for multiple regions. - # Need a way to get object store by region. - s3 = boto.s3.connection.S3Connection( - aws_access_key_id=settings.NOVA_ACCESS_KEY, - aws_secret_access_key=settings.NOVA_SECRET_KEY, - is_secure=False, - calling_format=boto.s3.connection.OrdinaryCallingFormat(), - port=3333, - host=settings.NOVA_CLC_IP) - key = '_%s.monitor' % instance_id - - try: - bucket = s3.get_bucket(key, validate=False) - except S3ResponseError, e: - if e.code == "NoSuchBucket": - return None - else: - raise e - - key = bucket.get_key(graph_name) - - return key.read() - - @handle_nova_error - def terminate_instance(self, instance_id): - """ Terminates the specified instance within this project. """ - conn = self.get_nova_connection() - conn.terminate_instances([instance_id]) - - @handle_nova_error - def get_security_groups(self): - """ - Returns all security groups associated with this project. - """ - conn = self.get_nova_connection() - groups = [] - - for g in conn.get_all_security_groups(): - # Do not show vpn group. - #if g.name != 'vpn-secgroup': - groups.append(g) - - return groups - - @handle_nova_error - def get_security_group(self, name): - """ - Returns the specified security group for this project. - """ - conn = self.get_nova_connection() - - try: - return conn.get_all_security_groups(groupnames=name.encode('ASCII'))[0] - except IndexError: - return None - - @handle_nova_error - def has_security_group(self, name): - """ - Indicates whether a security group with the specified name - exists in this project. - """ - return self.get_security_group(name) != None - - @handle_nova_error - def create_security_group(self, name, description): - """ - Creates a new security group in this project. - """ - conn = self.get_nova_connection() - return conn.create_security_group(name, description) - - @handle_nova_error - def delete_security_group(self, name): - """ - Deletes a security group from the project. - """ - conn = self.get_nova_connection() - return conn.delete_security_group(name=name) - - @handle_nova_error - def authorize_security_group(self, group_name, ip_protocol, from_port, to_port): - """ - Authorizes a rule for the specified security group. - """ - conn = self.get_nova_connection() - return conn.authorize_security_group( - group_name=group_name, - ip_protocol=ip_protocol, - from_port=from_port, - to_port=to_port, - cidr_ip='0.0.0.0/0') - - @handle_nova_error - def revoke_security_group(self, group_name, ip_protocol, from_port, to_port): - """ - Revokes a rule for the specified security group. - """ - conn = self.get_nova_connection() - return conn.revoke_security_group( - group_name=group_name, - ip_protocol=ip_protocol, - from_port=from_port, - to_port=to_port, - cidr_ip='0.0.0.0/0') - - @handle_nova_error - def get_key_pairs(self): - """ - Returns all key pairs associated with this project. - """ - conn = self.get_nova_connection() - keys = [] - - for k in conn.get_all_key_pairs(): - # Do not show vpn key. - if k.name != 'vpn-key': - keys.append(k) - - return keys - - @handle_nova_error - def get_key_pair(self, name): - """ - Returns the specified security group for this project. - """ - conn = self.get_nova_connection() - - try: - return conn.get_all_key_pairs(keynames=name.encode('ASCII'))[0] - except IndexError: - return None - - @handle_nova_error - def has_key_pair(self, name): - """ - Indicates whether a key pair with the specified name - exists in this project. - """ - return self.get_key_pair(name) != None - - @handle_nova_error - def create_key_pair(self, name): - """ - Creates a new key pair for this project. - """ - conn = self.get_nova_connection() - return conn.create_key_pair(name) - - @handle_nova_error - def delete_key_pair(self, name): - """ - Deletes a new key pair from this project. - """ - conn = self.get_nova_connection() - conn.delete_key_pair(name) - - @handle_nova_error - def get_volumes(self): - """ - Returns all volumes in this project. - """ - conn = self.get_nova_connection() - return conn.get_all_volumes() - - @handle_nova_error - def create_volume(self, size, display_name=None, display_description=None, - snapshot=None): - conn = self.get_nova_connection() - params = {'Size': size, 'DisplayName': display_name, - 'DisplayDescription': display_description} - return conn.get_object('CreateVolume', params, boto.ec2.volume.Volume) - - @handle_nova_error - def delete_volume(self, volume_id): - conn = self.get_nova_connection() - return conn.delete_volume(volume_id) - - @handle_nova_error - def attach_volume(self, volume_id, instance_id, device): - conn = self.get_nova_connection() - return conn.attach_volume(volume_id, instance_id, device) - - @handle_nova_error - def detach_volume(self, volume_id): - conn = self.get_nova_connection() - return conn.detach_volume(volume_id) - - -def user_post_save(sender, instance, created, *args, **kwargs): - """ - Creates a Nova User when a new Django User is created. - """ - if created: - nova = get_nova_admin_connection() - if not nova.has_user(instance.username): - nova.create_user(instance.username) -post_save.connect(user_post_save, User, dispatch_uid='django.contrib.auth.models.User.post_save') diff --git a/django-nova-syspanel/src/django_nova_syspanel/templates/django_nova_syspanel/security/disable_project_credentials.html b/django-nova-syspanel/src/django_nova_syspanel/templates/django_nova_syspanel/security/disable_project_credentials.html deleted file mode 100644 index 38d495b3c..000000000 --- a/django-nova-syspanel/src/django_nova_syspanel/templates/django_nova_syspanel/security/disable_project_credentials.html +++ /dev/null @@ -1,20 +0,0 @@ -{% extends "base.html" %} -{% load i18n %} - -{% block breadcrumb %}{{ block.super }}
  • Security
  • {% endblock %} - -{% block content %} -

    {{project}} Disabled

    - -

    {%blocktrans%} - If a user's credentials were comprimised, you will need to use - `nova-manage user revoke USERNAME`, and the restart all VPNs for projects - they are a member of. {%endblocktrans%} -

    - -

    {%blocktrans%} - The VPN for {{project}} is currently offline. You can turn it back on - using {%endblocktrans%}VPN overview. -

    - -{% endblock %} diff --git a/django-nova-syspanel/src/django_nova_syspanel/templates/django_nova_syspanel/security/index.html b/django-nova-syspanel/src/django_nova_syspanel/templates/django_nova_syspanel/security/index.html deleted file mode 100644 index 4f0b182d4..000000000 --- a/django-nova-syspanel/src/django_nova_syspanel/templates/django_nova_syspanel/security/index.html +++ /dev/null @@ -1,81 +0,0 @@ -{% extends "base.html" %} -{% load i18n %} - -{% block breadcrumb %}{{ block.super }}
  • Security
  • {% endblock %} - -{% block content %} -

    {% trans "Security" %}

    - -

    {% trans "Use the following tools to secure the cloud during a security event" %}

    - -
    -
    -
    -

    {% trans "Scenario: Project account credentials have been compromised." %}

    -

    {% trans "Action: Disable the user or project. This should invalidate the credentials, also deny the specific port assigned to the user." %}

    -
    - -
    - {% csrf_token %} -
    - {% for field in project_form %} - {{ field.label_tag }} - {% if field.errors %}{{ field.errors }}{% endif %} - {{ field }} - {% endfor %} - - -
    -
    -
    - -
    -
    -

    {% trans "Scenario: The issue pin points to be coming in from a specific external ip or ip range." %}

    -

    {% trans "Action: Block the IP or IP range. This should manipulate ip tables to block the ip or ip range." %}

    -
    - -
    - {% csrf_token %} -
    - {% for field in ip_form %} - {{ field.label_tag }} - {% if field.errors %}{{ field.errors }}{% endif %} - {{ field }} - {% endfor %} - - -
    -
    -
    -
    - -
    -
    -

    {% trans "Scenario: Issues affecting multiple public entry points or could not determine to be a specific one." %}

    -

    {% trans "Action: Disable all public IPs on all VMs. This should unplumb the device the public ip was on." %}

    -
    - -
    - {% csrf_token %} -
    - -
    -
    -
    - -
    -
    -

    {% trans "Scenario: Issue related to VPN service affecting multiple customers." %}

    -

    {% trans "Action: Disable VPN service. This should turn off the VPN ip." %}

    -
    - -
    - {% csrf_token %} -
    - -
    -
    -
    - -{% endblock %} diff --git a/django-nova-syspanel/src/django_nova_syspanel/urls.py b/django-nova-syspanel/src/django_nova_syspanel/urls.py deleted file mode 100644 index e15d16f96..000000000 --- a/django-nova-syspanel/src/django_nova_syspanel/urls.py +++ /dev/null @@ -1,32 +0,0 @@ -from django.conf.urls.defaults import * -from django.conf import settings -from django.contrib import admin - -admin.autodiscover() - -urlpatterns = patterns('', - url(r'^$', 'django_nova_syspanel.views.home.index', name='syspanel_index'), - url(r'^instances/$', 'django_nova_syspanel.views.instances.index', name='syspanel_instances'), - url(r'^instances/(?P[^/]+)/terminate$', 'django_nova_syspanel.views.instances.terminate', name='syspanel_instance_terminate'), - url(r'^instances/(?P[^/]+)/restart$', 'django_nova_syspanel.views.instances.restart', name='syspanel_instance_restart'), - url(r'^instances/(?P[^/]+)/console_log$', 'django_nova_syspanel.views.instances.console', name='syspanel_instance_console'), - - url(r'^volumes/$', 'django_nova_syspanel.views.volumes.index', name='syspanel_volumes'), - url(r'^volumes/(?P[^/]+)/delete$', 'django_nova_syspanel.views.volumes.delete', name='syspanel_delete_volume'), - url(r'^volumes/(?P[^/]+)/detach$', 'django_nova_syspanel.views.volumes.detach', name='syspanel_detach_volume'), - - url(r'^security/$', 'django_nova_syspanel.views.security.index', name='syspanel_security'), - url(r'^security/disable_project_credentials/$', 'django_nova_syspanel.views.security.disable_project_credentials', name='syspanel_security_disable_project_credentials'), - url(r'^security/disable_ip_range/$', 'django_nova_syspanel.views.security.disable_ip', name='syspanel_security_disable_ip_range'), - url(r'^security/disable_public_ips/$', 'django_nova_syspanel.views.security.disable_public_ips', name='syspanel_security_disable_public_ips'), - url(r'^security/disable_vpn/$', 'django_nova_syspanel.views.security.disable_vpn', name='syspanel_security_disable_vpn'), - - url(r'^vpns/$', 'django_nova_syspanel.views.vpns.index', name='syspanel_vpns'), - url(r'^vpns/(?P[^/]+)/launch$', 'django_nova_syspanel.views.vpns.launch', name='syspanel_vpn_launch'), - url(r'^vpns/(?P[^/]+)/send_credentials$', 'django_nova_syspanel.views.vpns.send_credentials', name='syspanel_vpn_send_credentials'), - url(r'^vpns/(?P[^/]+)/terminate$', 'django_nova_syspanel.views.vpns.terminate', name='syspanel_vpn_terminate'), - url(r'^vpns/(?P[^/]+)/restart$', 'django_nova_syspanel.views.vpns.restart', name='syspanel_vpn_restart'), - url(r'^vpns/(?P[^/]+)/console_log$', 'django_nova_syspanel.views.vpns.console', name='syspanel_vpn_console'), - - url(r'^cloudview/$', 'django_nova_syspanel.views.cloud.index', name='syspanel_cloudview'), -) diff --git a/django-nova-syspanel/src/django_nova_syspanel/views/security.py b/django-nova-syspanel/src/django_nova_syspanel/views/security.py deleted file mode 100644 index 43c2d690a..000000000 --- a/django-nova-syspanel/src/django_nova_syspanel/views/security.py +++ /dev/null @@ -1,121 +0,0 @@ -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_nova_syspanel.forms import DisableProject -from django_nova_syspanel.forms import DisableIpAddress -from django_nova_syspanel.models import NovaResponseError, get_nova_admin_connection - - -@login_required -def index(request): - disable_project_form = DisableProject() - disable_ip_form = DisableIpAddress() - return render_to_response('django_nova_syspanel/security/index.html', - {'project_form': disable_project_form, - 'ip_form': disable_ip_form, }, - context_instance=template.RequestContext(request)) - - -@login_required -def disable_project_credentials(request): - if request.method == "POST": - nova = get_nova_admin_connection() - form = DisableProject(request.POST) - if form.is_valid(): - name = form.cleaned_data['project_name'] - conn = nova.connection_for(settings.NOVA_ADMIN_USER, name) - vpn = [x for x in nova.get_vpns() if x.project_id == name] - if vpn: - # NOTE(todd): Check, because it could already be shut-off - vpn = vpn[0] - try: - nova.disable_project_credentials(name) - if vpn and vpn.instance_id: - conn.terminate_instances([vpn.instance_id]) - except NovaResponseError, e: - messages.error(request, - _('Unable to disable project %(name)s: %(code)s - %(msg)s') % - {'name': name, 'code': e.code, 'msg': e.message}) - return redirect('syspanel_security') - else: - messages.success(request, - _('Project %s has been successfully disabled.') % - form.cleaned_data['project_name']) - return render_to_response( - 'django_nova_syspanel/security/disable_project_credentials.html', - context_instance=template.RequestContext(request)) - else: - messages.error(request, _('Invalid form data')) - return redirect('syspanel_security') - else: - return redirect('syspanel_security') - - -@login_required -def disable_ip(request): - if request.method == "POST": - conn = get_nova_admin_connection() - form = DisableIpAddress(request.POST) - if form.is_valid(): - try: - conn.block_ips(form.cleaned_data['cidr']) - except NovaResponseError, e: - messages.error(request, - _('Unable to block IPs range %(cidr)s: %(code)s %(msg)s') % - {'cidr': form.cleaned_data['cidr'], - 'code': e.code, - 'msg': e.message}) - else: - messages.success(request, - _('IPs range %shas been successfully blocked') % - form.cleaned_data['cidr']) - - return redirect('syspanel_security') - - -@login_required -def disable_public_ips(request): - if request.method == "POST": - try: - nova = get_nova_admin_connection() - nova.disable_all_floating_ips() - except NovaResponseError, e: - messages.error(request, - _('Unable to shut off public IPs: %(code)s - %(msg)s') % - {'code': e.code, 'msg': e.message, }) - else: - messages.success(request, _('Public IPs have been turned off.')) - return redirect('syspanel_security') - - -@login_required -def disable_vpn(request): - if request.method == "POST": - nova = get_nova_admin_connection() - conn = nova.connection_for(settings.NOVA_ADMIN_USER, - settings.NOVA_PROJECT) - try: - collector = [] - for vpn in nova.get_vpns(): - if not vpn.instance_id: - continue - collector.append(vpn) - if len(collector) >= 5: - conn.terminate_instances([x.instance_id for x in collector]) - collector = [] - if collector: - conn.terminate_instances([x.instance_id for x in collector]) - except NovaResponseError, e: - messages.error(request, - _('Unable to shut off all VPNs: %(code)s - %(msg)s') % - {'code': e.code, 'msg': e.message, }) - else: - messages.success(request, - _('VPNs have been successfully turned off.')) - return redirect('syspanel_security') - else: - return redirect('syspanel_security') diff --git a/django-openstack/src/django_openstack/core/__init__.py b/django-openstack/src/django_openstack/core/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/django-openstack/src/django_openstack/core/connection.py b/django-openstack/src/django_openstack/core/connection.py deleted file mode 100644 index 9dab44856..000000000 --- a/django-openstack/src/django_openstack/core/connection.py +++ /dev/null @@ -1,34 +0,0 @@ -# vim: tabstop=4 shiftwidth=4 softtabstop=4 - -# Copyright 2010 United States Government as represented by the -# Administrator of the National Aeronautics and Space Administration. -# All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. -""" -Manage connections to Nova's admin API. -""" - -import nova_adminclient as adminclient -from django.conf import settings - - -def get_nova_admin_connection(): - """ - Returns a Nova administration connection. - """ - return adminclient.NovaAdminClient( - clc_url=settings.NOVA_DEFAULT_ENDPOINT, - region=settings.NOVA_DEFAULT_REGION, - access_key=settings.NOVA_ACCESS_KEY, - secret_key=settings.NOVA_SECRET_KEY) diff --git a/django-openstack/src/django_openstack/log.py b/django-openstack/src/django_openstack/log.py deleted file mode 100644 index c954dd6d5..000000000 --- a/django-openstack/src/django_openstack/log.py +++ /dev/null @@ -1,16 +0,0 @@ -# vim: tabstop=4 shiftwidth=4 softtabstop=4 - -''' -django_openstack logging functions Currently does nothing useful, but if -everything already points here, makes adding more complex logging simpler in -the future -''' - -import logging - - -def getLogger(name): - ''' - Returns a python logger - ''' - return logging.getLogger(name) diff --git a/django-openstack/src/django_openstack/management/__init__.py b/django-openstack/src/django_openstack/management/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/django-openstack/src/django_openstack/management/commands/__init__.py b/django-openstack/src/django_openstack/management/commands/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/django-openstack/src/django_openstack/management/commands/createnovausers.py b/django-openstack/src/django_openstack/management/commands/createnovausers.py deleted file mode 100644 index a463f0359..000000000 --- a/django-openstack/src/django_openstack/management/commands/createnovausers.py +++ /dev/null @@ -1,40 +0,0 @@ -# vim: tabstop=4 shiftwidth=4 softtabstop=4 - -# Copyright 2010 United States Government as represented by the -# Administrator of the National Aeronautics and Space Administration. -# All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. -""" -Management commands for synchronizing the Django auth database and Nova -users database. -""" - -from django.core.management.base import NoArgsCommand -from django.contrib.auth.models import User -from django.utils.translation import ugettext as _ - -from django_nova.connection import get_nova_admin_connection - - -class Command(NoArgsCommand): - help = _('Creates nova users for all users in the django auth database.') - - def handle_noargs(self, **options): - nova = get_nova_admin_connection() - users = User.objects.all() - for user in users: - if not nova.has_user(user.username): - self.stdout.write(_('creating user %s... ') % user.username) - nova.create_user(user.username) - self.stdout.write('ok\n') diff --git a/django-openstack/src/django_openstack/models.py b/django-openstack/src/django_openstack/models.py deleted file mode 100644 index 892c35eb0..000000000 --- a/django-openstack/src/django_openstack/models.py +++ /dev/null @@ -1,131 +0,0 @@ -# vim: tabstop=4 shiftwidth=4 softtabstop=4 - -# Copyright 2010 United States Government as represented by the -# Administrator of the National Aeronautics and Space Administration. -# All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. -""" -Database models for authorization credentials and synchronizing Nova users. -""" - -import datetime -import random -import re -import sha -from django.conf import settings -from django.contrib.auth import models as auth_models -from django.contrib.sites import models as site_models -from django.core import mail -from django.db import models -from django.db.models.signals import post_save -from django.template.loader import render_to_string -from django_openstack import log as logging -from django_openstack.core.connection import get_nova_admin_connection - - -LOG = logging.getLogger('django_openstack') - - -SHA1_RE = re.compile('^[a-f0-9]{40}$') - - -class CredentialsAuthorization(models.Model): - username = models.CharField(max_length=128) - project = models.CharField(max_length=128) - auth_token = models.CharField(max_length=40) - auth_date = models.DateTimeField(auto_now_add=True) - - def __str__(self): - return '%s/%s:%s' % (self.username, self.project, self.auth_token) - - @classmethod - def get_by_token(cls, token): - if SHA1_RE.search(token): - try: - credentials = cls.objects.get(auth_token=token) - except cls.DoesNotExist: - return None - if not credentials.auth_token_expired(): - return credentials - return None - - @classmethod - def authorize(cls, username, project): - return cls.objects.create(username=username, - project=project, - auth_token=cls.create_auth_token(username)) - - @staticmethod - def create_auth_token(username): - salt = sha.new(str(random.random())).hexdigest()[:5] - return sha.new(salt + username).hexdigest() - - def auth_token_expired(self): - expiration_date = datetime.timedelta( - days=int(settings.CREDENTIAL_AUTHORIZATION_DAYS)) - - return self.auth_date + expiration_date <= datetime.datetime.now() - - def get_download_url(self): - return settings.CREDENTIAL_DOWNLOAD_URL + self.auth_token - - def get_zip(self): - nova = get_nova_admin_connection() - self.delete() - return nova.get_zip(self.username, self.project) - - -def credentials_post_save(sender, instance, created, *args, **kwargs): - """ - Creates a Nova User when a new Django User is created. - """ - if created: - site = site_models.Site.objects.get_current() - user = auth_models.User.objects.get(username=instance.username) - context = { - 'user': user, - 'download_url': instance.get_download_url(), - 'dashboard_url': 'http://%s/' % site.domain - } - subject = render_to_string('credentials/credentials_email_subject.txt') - body = render_to_string('credentials/credentials_email.txt', context) - - message = mail.EmailMessage(subject=subject.strip(), - body=body, - to=[user.email]) - message.send(fail_silently=False) - LOG.info('Credentials sent to user "%s" at "%s"' % - (instance.name, user.email)) -post_save.connect(credentials_post_save, - CredentialsAuthorization, - dispatch_uid='django_openstack.CredentialsAuthorization.post_save') - - -def user_post_save(sender, instance, created, *args, **kwargs): - """ - Creates a Nova User when a new Django User is created. - """ - - # NOTE(devcamcar): If running unit tests, don't use a real endpoint. - if settings.NOVA_DEFAULT_ENDPOINT == 'none': - return - - if created: - nova = get_nova_admin_connection() - if not nova.has_user(instance.username): - nova.create_user(instance.username) - LOG.info('User "%s" created in Nova' % instance.username) -post_save.connect(user_post_save, - auth_models.User, - dispatch_uid='django_openstack.User.post_save') diff --git a/django-openstack/src/django_openstack/nova/forms.py b/django-openstack/src/django_openstack/nova/forms.py index 90cbc7a32..13b8d07fb 100644 --- a/django-openstack/src/django_openstack/nova/forms.py +++ b/django-openstack/src/django_openstack/nova/forms.py @@ -26,7 +26,6 @@ from django import forms from django.contrib.auth import models as auth_models from django.utils.translation import ugettext as _ -from django_openstack.core.connection import get_nova_admin_connection from django_openstack.nova.exceptions import wrap_nova_error @@ -86,44 +85,6 @@ def get_protocols(): ) -@wrap_nova_error -def get_roles(project_roles=True): - nova = get_nova_admin_connection() - roles = nova.get_roles(project_roles=project_roles) - return [(role.role, role.role) for role in roles] - - -@wrap_nova_error -def get_members(project): - nova = get_nova_admin_connection() - members = nova.get_project_members(project) - return [str(user.memberId) for user in members] - - -@wrap_nova_error -def set_project_roles(projectname, username, roles): - nova = get_nova_admin_connection() - # hacky work around to interface correctly with multiple select form - _remove_roles(projectname, username) - - for role in roles: - nova.add_user_role(username, str(role), projectname) - - -def _remove_roles(project, username): - nova = get_nova_admin_connection() - userroles = nova.get_user_roles(username, project) - roles = [str(role.role) for role in userroles] - - for role in roles: - if role == "developer": - nova.remove_user_role(username, "developer", project) - if role == "sysadmin": - nova.remove_user_role(username, "sysadmin", project) - if role == "netadmin": - nova.remove_user_role(username, "netadmin", project) - - class ProjectFormBase(forms.Form): def __init__(self, project, *args, **kwargs): self.project = project @@ -171,39 +132,6 @@ class UpdateImageForm(forms.Form): self.fields['description'].initial = image.description -class CreateKeyPairForm(ProjectFormBase): - name = forms.RegexField(regex=alphanumeric_re) - - def clean_name(self): - name = self.cleaned_data['name'] - - if self.project.has_key_pair(name): - raise forms.ValidationError( - _('A key named %s already exists.') % name) - - return name - - -class CreateSecurityGroupForm(ProjectFormBase): - name = forms.RegexField(regex=alphanumeric_re) - description = forms.CharField() - - def clean_name(self): - name = self.cleaned_data['name'] - - if self.project.has_security_group(name): - raise forms.ValidationError( - _('A security group named %s already exists.') % name) - - return name - - -class AuthorizeSecurityGroupRuleForm(forms.Form): - protocol = forms.ChoiceField(choices=get_protocols()) - from_port = forms.IntegerField(min_value=1, max_value=65535) - to_port = forms.IntegerField(min_value=1, max_value=65535) - - class CreateVolumeForm(forms.Form): size = forms.IntegerField(label='Size (in GB)', min_value=1, @@ -221,61 +149,3 @@ class AttachVolumeForm(ProjectFormBase): super(AttachVolumeForm, self).__init__(project, *args, **kwargs) self.fields['volume'].choices = get_available_volume_choices(project) self.fields['instance'].choices = get_instance_choices(project) - - -class ProjectForm(forms.Form): - projectname = forms.CharField(label="Project Name", max_length=20) - description = forms.CharField(label="Description", - widget=forms.widgets.Textarea()) - manager = forms.ModelChoiceField(queryset=auth_models.User.objects.all(), - label="Project Manager") - - -class GlobalRolesForm(forms.Form): - role = forms.MultipleChoiceField(label='Roles', required=False) - - def __init__(self, *args, **kwargs): - super(GlobalRolesForm, self).__init__(*args, **kwargs) - self.fields['role'].choices = get_roles(project_roles=False) - - -class ProjectUserForm(forms.Form): - role = forms.MultipleChoiceField(label='Roles', required=False) - - def __init__(self, project, user, *args, **kwargs): - super(ProjectUserForm, self).__init__(*args, **kwargs) - self.project = project - self.user = user - self.fields['role'].choices = get_roles() - - def save(self): - set_project_roles(self.project.projectname, - self.user.username, - self.cleaned_data['role']) - - -class AddProjectUserForm(forms.Form): - username = forms.ModelChoiceField(queryset='', - label='Username', - empty_label='Select a Username') - role = forms.MultipleChoiceField(label='Roles') - - def __init__(self, *args, **kwargs): - project = kwargs.pop('project') - super(AddProjectUserForm, self).__init__(*args, **kwargs) - members = get_members(project) - - self.fields['username'].queryset = \ - auth_models.User.objects.exclude(username__in=members) - self.fields['role'].choices = get_roles() - - -class SendCredentialsForm(forms.Form): - users = forms.MultipleChoiceField(label='Users', required=True) - - def __init__(self, *args, **kwargs): - query_list = kwargs.pop('query_list') - super(SendCredentialsForm, self).__init__(*args, **kwargs) - - self.fields['users'].choices = \ - [(choices, choices) for choices in query_list] diff --git a/django-openstack/src/django_openstack/nova/manager.py b/django-openstack/src/django_openstack/nova/manager.py index 56ff2f6f1..655bd2b6f 100644 --- a/django-openstack/src/django_openstack/nova/manager.py +++ b/django-openstack/src/django_openstack/nova/manager.py @@ -24,7 +24,6 @@ import boto.ec2.volume import boto.exception import boto.s3 from django.conf import settings -from django_openstack.core.connection import get_nova_admin_connection from django_openstack.nova.exceptions import wrap_nova_error diff --git a/django-openstack/src/django_openstack/nova/shortcuts.py b/django-openstack/src/django_openstack/nova/shortcuts.py index 46c50d6a5..d6b2d31ee 100644 --- a/django-openstack/src/django_openstack/nova/shortcuts.py +++ b/django-openstack/src/django_openstack/nova/shortcuts.py @@ -26,7 +26,6 @@ from django.core.exceptions import PermissionDenied from django.http import Http404 from django.utils.translation import ugettext as _ -from django_openstack.core.connection import get_nova_admin_connection from django_openstack.nova import manager from django_openstack.nova.exceptions import wrap_nova_error diff --git a/django-openstack/src/django_openstack/nova/urls/admin_project.py b/django-openstack/src/django_openstack/nova/urls/admin_project.py deleted file mode 100644 index 49e967902..000000000 --- a/django-openstack/src/django_openstack/nova/urls/admin_project.py +++ /dev/null @@ -1,55 +0,0 @@ -# vim: tabstop=4 shiftwidth=4 softtabstop=4 - -# Copyright 2010 United States Government as represented by the -# Administrator of the National Aeronautics and Space Administration. -# All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. -""" -URL patterns for managing Nova projects through the Django admin interface. -""" - -from django.conf.urls.defaults import * - - -#TODO(devcamcar): Standardize url names admin_project_*. - -urlpatterns = patterns('', - url(r'^$', - 'django_openstack.nova.views.admin.projects_list', - name='admin_projects'), - url(r'^add/$', - 'django_openstack.nova.views.admin.add_project', - name='add_project'), - url(r'^(?P[^/]+)/$', - 'django_openstack.nova.views.admin.project_view', - name='admin_project'), - url(r'^(?P[^/]+)/user/(?P[^/]+)/delete/', - 'django_openstack.nova.views.admin.delete_project_user', - name='admin_project_delete_user'), - url(r'^(?P[^/]+)/delete/$', - 'django_openstack.nova.views.admin.delete_project', - name='delete_project'), - url(r'^(?P[^/]+)/user/add/$', - 'django_openstack.nova.views.admin.add_project_user', - name='add_project_user'), - url(r'^(?P[^/]+)/user/(?P[^/]+)/$', - 'django_openstack.nova.views.admin.project_user', - name='project_user'), - url(r'^(?P[^/]+)/sendcredentials/$', - 'django_openstack.nova.views.admin.project_sendcredentials', - name='admin_project_sendcredentials'), - url(r'^(?P[^/]+)/start_vpn/$', - 'django_openstack.nova.views.admin.project_start_vpn', - name='admin_project_start_vpn'), -) diff --git a/django-openstack/src/django_openstack/nova/urls/admin_roles.py b/django-openstack/src/django_openstack/nova/urls/admin_roles.py deleted file mode 100644 index 6e635d4d6..000000000 --- a/django-openstack/src/django_openstack/nova/urls/admin_roles.py +++ /dev/null @@ -1,32 +0,0 @@ -# vim: tabstop=4 shiftwidth=4 softtabstop=4 - -# Copyright 2010 United States Government as represented by the -# Administrator of the National Aeronautics and Space Administration. -# All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. -""" -URL patterns for managing Nova user roles through the Django admin interface. -""" - -from django.conf.urls.defaults import * - - -urlpatterns = patterns('', - url(r'^(?P[^/]+)/$', - 'django_openstack.nova.views.admin.user_roles', - name='admin_user_roles'), - url(r'^$', - 'django_openstack.nova.views.admin.users_list', - name='admin_users_list'), -) diff --git a/django-openstack/src/django_openstack/nova/urls/project.py b/django-openstack/src/django_openstack/nova/urls/project.py index 958eb2bb1..8ad6494dd 100644 --- a/django-openstack/src/django_openstack/nova/urls/project.py +++ b/django-openstack/src/django_openstack/nova/urls/project.py @@ -27,15 +27,14 @@ urlpatterns = patterns('', url(r'^(?P[^/]+)/$', 'django_openstack.nova.views.projects.detail', name='nova_project'), - url(r'^(?P[^/]+)/manage/(?P[^/]+)/', - 'django_openstack.nova.views.projects.edit_user', - name='nova_project_edit_user'), - url(r'^(?P[^/]+)/manage$', - 'django_openstack.nova.views.projects.manage', - name='nova_project_manage'), - url(r'^(?P[^/]+)/download/credentials$', - 'django_openstack.nova.views.projects.download_credentials', - name='nova_download_credentials'), + #url(r'^(?P[^/]+)/manage/(?P[^/]+)/', + # 'django_openstack.nova.views.projects.edit_user', + # name='nova_project_edit_user'), + #url(r'^(?P[^/]+)/manage$', + # 'django_openstack.nova.views.projects.manage', + # name='nova_project_manage'), + + # images url(r'^(?P[^/]+)/images$', 'django_openstack.nova.views.images.index', name='nova_images'), @@ -57,6 +56,8 @@ urlpatterns = patterns('', url(r'^(?P[^/]+)/instances$', 'django_openstack.nova.views.instances.index', name='nova_instances'), + + # instances url(r'^(?P[^/]+)/instances/refresh$', 'django_openstack.nova.views.instances.refresh', name='nova_instances_refresh'), @@ -84,49 +85,21 @@ urlpatterns = patterns('', url(r'^(?P[^/]+)/instances/(?P[^/]+)/graph/(?P[^/]+)$', 'django_openstack.nova.views.instances.graph', name='nova_instances_graph'), - url(r'^(?P[^/]+)/keys$', - 'django_openstack.nova.views.keypairs.index', - name='nova_keypairs'), - url(r'^(?P[^/]+)/keys/add$', - 'django_openstack.nova.views.keypairs.add', - name='nova_keypairs_add'), - url(r'^(?P[^/]+)/keys/delete$', - 'django_openstack.nova.views.keypairs.delete', - name='nova_keypairs_delete'), - url(r'^(?P[^/]+)/keys/(?P.*)/download$', - 'django_openstack.nova.views.keypairs.download', - name='nova_keypairs_download'), - #url(r'^(?P[^/]+)/securitygroups/$', - # 'django_openstack.nova.views.securitygroups.index', - # name='nova_securitygroups'), - #url(r'^(?P[^/]+)/securitygroups/add$', - # 'django_openstack.nova.views.securitygroups.add', - # name='nova_securitygroups_add'), - #url(r'^(?P[^/]+)/securitygroups/(?P[^/]+)$', - # 'django_openstack.nova.views.securitygroups.detail', - # name='nova_securitygroups_detail'), - #url(r'^(?P[^/]+)/securitygroups/(?P[^/]+)/authorize/$', - # 'django_openstack.nova.views.securitygroups.authorize', - # name='nova_securitygroups_authorize'), - #url(r'^(?P[^/]+)/securitygroups/(?P[^/]+)/delete/$', - # 'django_openstack.nova.views.securitygroups.delete', - # name='nova_securitygroups_delete'), - #url(r'^(?P[^/]+)/securitygroups/(?P.*)/revoke/$', - # 'django_openstack.nova.views.securitygroups.revoke', - # name='nova_securitygroups_revoke'), - url(r'^(?P[^/]+)/volumes/$', - 'django_openstack.nova.views.volumes.index', - name='nova_volumes'), - url(r'^(?P[^/]+)/volumes/add$', - 'django_openstack.nova.views.volumes.add', - name='nova_volumes_add'), - url(r'^(?P[^/]+)/volumes/attach$', - 'django_openstack.nova.views.volumes.attach', - name='nova_volumes_attach'), - url(r'^(?P[^/]+)/volumes/(?P[^/]+)/detach$', - 'django_openstack.nova.views.volumes.detach', - name='nova_volumes_detach'), - url(r'^(?P[^/]+)/volumes/(?P[^/]+)/delete$', - 'django_openstack.nova.views.volumes.delete', - name='nova_volumes_delete'), + + # volumes + #url(r'^(?P[^/]+)/volumes/$', + # 'django_openstack.nova.views.volumes.index', + # name='nova_volumes'), + #url(r'^(?P[^/]+)/volumes/add$', + # 'django_openstack.nova.views.volumes.add', + # name='nova_volumes_add'), + #url(r'^(?P[^/]+)/volumes/attach$', + # 'django_openstack.nova.views.volumes.attach', + # name='nova_volumes_attach'), + #url(r'^(?P[^/]+)/volumes/(?P[^/]+)/detach$', + # 'django_openstack.nova.views.volumes.detach', + # name='nova_volumes_detach'), + #url(r'^(?P[^/]+)/volumes/(?P[^/]+)/delete$', + # 'django_openstack.nova.views.volumes.delete', + # name='nova_volumes_delete'), ) diff --git a/django-openstack/src/django_openstack/nova/views/admin.py b/django-openstack/src/django_openstack/nova/views/admin.py index f48f71670..1f79c14dd 100644 --- a/django-openstack/src/django_openstack/nova/views/admin.py +++ b/django-openstack/src/django_openstack/nova/views/admin.py @@ -20,6 +20,8 @@ Views for managing Nova through the Django admin interface. """ +import logging + import boto.exception from django import http @@ -29,9 +31,7 @@ from django.contrib.admin.views.decorators import staff_member_required from django.contrib.auth import models as auth_models from django.shortcuts import redirect, render_to_response from django.utils.translation import ugettext as _ -from django_openstack import log as logging from django_openstack import models -from django_openstack.core.connection import get_nova_admin_connection from django_openstack.nova import forms diff --git a/django-openstack/src/django_openstack/nova/views/credentials.py b/django-openstack/src/django_openstack/nova/views/credentials.py deleted file mode 100644 index 3b2a8f3fd..000000000 --- a/django-openstack/src/django_openstack/nova/views/credentials.py +++ /dev/null @@ -1,52 +0,0 @@ -# vim: tabstop=4 shiftwidth=4 softtabstop=4 - -# Copyright 2010 United States Government as represented by the -# Administrator of the National Aeronautics and Space Administration. -# All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -""" -Views for downloading X509 credentials. Useful when using an invitation -style system for configuring first time users. -""" - -from django import http -from django.conf import settings -from django.shortcuts import render_to_response -from django_openstack import log as logging -from django_openstack import models - - -LOG = logging.getLogger('django_openstack.nova') - - -def authorize_credentials(request, auth_token): - """Sends X509 credentials to user if their auth token is valid.""" - auth_token = auth_token.lower() - credentials = models.CredentialsAuthorization.get_by_token(auth_token) - - # NOTE(devcamcar): If nothing returned, then token was bad or has expired. - if not credentials: - LOG.info("Credentials token bad or expired for user %s" % - str(request.user)) - return render_to_response( - 'django_openstack/nova/credentials/expired.html') - - response = http.HttpResponse(mimetype='application/zip') - response['Content-Disposition'] = \ - 'attachment; filename=%s-%s-%s-x509.zip' % \ - (settings.SITE_NAME, credentials.project, credentials.username) - response.write(credentials.get_zip()) - - return response diff --git a/django-openstack/src/django_openstack/nova/views/images.py b/django-openstack/src/django_openstack/nova/views/images.py index 5a6699fb9..c8ce06308 100644 --- a/django-openstack/src/django_openstack/nova/views/images.py +++ b/django-openstack/src/django_openstack/nova/views/images.py @@ -20,6 +20,7 @@ Views for managing Nova images. """ +import logging import re from django import http @@ -29,7 +30,6 @@ 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_openstack import log as logging from django_openstack.nova import exceptions from django_openstack.nova import forms from django_openstack.nova import shortcuts diff --git a/django-openstack/src/django_openstack/nova/views/instances.py b/django-openstack/src/django_openstack/nova/views/instances.py index c0292468c..6b118b742 100644 --- a/django-openstack/src/django_openstack/nova/views/instances.py +++ b/django-openstack/src/django_openstack/nova/views/instances.py @@ -20,6 +20,8 @@ Views for managing Nova instances. """ +import logging + from django import http from django import template from django.conf import settings @@ -27,7 +29,6 @@ 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_openstack import log as logging from django_openstack.nova import exceptions from django_openstack.nova import forms as nova_forms from django_openstack.nova import shortcuts diff --git a/django-openstack/src/django_openstack/nova/views/keypairs.py b/django-openstack/src/django_openstack/nova/views/keypairs.py deleted file mode 100644 index ab987ef14..000000000 --- a/django-openstack/src/django_openstack/nova/views/keypairs.py +++ /dev/null @@ -1,139 +0,0 @@ -# vim: tabstop=4 shiftwidth=4 softtabstop=4 - -# Copyright 2010 United States Government as represented by the -# Administrator of the National Aeronautics and Space Administration. -# All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -""" -Views for managing Nova keypairs. -""" - -from django import http -from django import template -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_openstack import log as logging -from django_openstack.nova import exceptions -from django_openstack.nova import forms -from django_openstack.nova import shortcuts -from django_openstack.nova.exceptions import handle_nova_error - - -LOG = logging.getLogger('django_openstack.nova') - - -@login_required -@handle_nova_error -def index(request, project_id, download_key=None): - project = shortcuts.get_project_or_404(request, project_id) - keypairs = project.get_key_pairs() - - return render_to_response('django_openstack/nova/keypairs/index.html', { - 'create_form': forms.CreateKeyPairForm(project), - 'region': project.region, - 'project': project, - 'keypairs': keypairs, - 'download_key': download_key - }, context_instance=template.RequestContext(request)) - - -@login_required -@handle_nova_error -def add(request, project_id): - project = shortcuts.get_project_or_404(request, project_id) - - if request.method == 'POST': - form = forms.CreateKeyPairForm(project, request.POST) - - if form.is_valid(): - try: - keypair = project.create_key_pair(form.cleaned_data['name']) - except exceptions.NovaApiError, e: - messages.error(request, - _('Unable to create key: %s') % e.message) - LOG.error('Unable to create key for user "%s" on project "%s".' - ' Exception: "%s"' % - (str(request.user), project_id, e.message)) - else: - LOG.info('Keypair "%s" for project "%s" created successfully' % - (keypair.name, project_id)) - if request.POST['js'] == '1': - request.session['key.%s' % keypair.name] = keypair.material - return index(request, - project_id, - download_key=keypair.name) - else: - response = http.HttpResponse(mimetype='application/binary') - response['Content-Disposition'] = \ - 'attachment; filename=%s.pem' % \ - form.cleaned_data['name'] - response.write(keypair.material) - return response - else: - keypairs = project.get_key_pairs() - - return render_to_response( - 'django_openstack/nova/keypairs/index.html', - {'create_form': form, - 'region': project.region, - 'project': project, - 'keypairs': keypairs}, - context_instance=template.RequestContext(request)) - - return redirect('nova_keypairs', project_id) - - -@login_required -@handle_nova_error -def delete(request, project_id): - project = shortcuts.get_project_or_404(request, project_id) - - if request.method == 'POST': - key_name = request.POST['key_name'] - - try: - project.delete_key_pair(key_name) - except exceptions.NovaApiError, e: - messages.error(request, - _('Unable to delete key: %s') % e.message) - LOG.error('Unable to delete key "%s". Exception: "%s"' % - (key_name, e.message_)) - else: - messages.success(request, - _('Key %s has been successfully deleted.') % \ - key_name) - LOG.info('Key "%s" successfully deleted' % key_name) - - return redirect('nova_keypairs', project_id) - - -@login_required -@handle_nova_error -def download(request, project_id, key_name): - # Ensure the project exists. - shortcuts.get_project_or_404(request, project_id) - - try: - material = request.session.pop('key.%s' % key_name) - except KeyError: - return redirect('nova_keypairs', project_id) - - response = http.HttpResponse(mimetype='application/binary') - response['Content-Disposition'] = 'attachment; filename=%s.pem' % key_name - response.write(material) - - return response diff --git a/django-openstack/src/django_openstack/nova/views/projects.py b/django-openstack/src/django_openstack/nova/views/projects.py index 3ad489589..885ddd143 100644 --- a/django-openstack/src/django_openstack/nova/views/projects.py +++ b/django-openstack/src/django_openstack/nova/views/projects.py @@ -19,14 +19,13 @@ """ Views for managing Nova projects. """ +import logging from django import http from django import template from django.conf import settings from django.contrib.auth.decorators import login_required from django.shortcuts import redirect, render_to_response -from django_openstack.core.connection import get_nova_admin_connection -from django_openstack import log as logging from django_openstack.nova import forms as nova_forms from django_openstack.nova.exceptions import handle_nova_error from django_openstack.nova.shortcuts import get_project_or_404 diff --git a/django-openstack/src/django_openstack/nova/views/regions.py b/django-openstack/src/django_openstack/nova/views/regions.py deleted file mode 100644 index 89419dfe2..000000000 --- a/django-openstack/src/django_openstack/nova/views/regions.py +++ /dev/null @@ -1,41 +0,0 @@ -# vim: tabstop=4 shiftwidth=4 softtabstop=4 - -# Copyright 2010 United States Government as represented by the -# Administrator of the National Aeronautics and Space Administration. -# All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -""" -Views for managing Nova regions. -""" - -from django.contrib import messages -from django.contrib.auth.decorators import login_required -from django.shortcuts import redirect -from django.utils.translation import ugettext as _ -from django_openstack import log as logging -from django_openstack.nova.shortcuts import set_current_region - - -LOG = logging.getLogger('django_openstack.nova') - - -@login_required -def change(request): - region = request.POST['region'] - redirect_url = request.POST['redirect_url'] - set_current_region(request, region) - messages.success(request, _('You are now using the region "%s".') % region) - LOG.info('User "%s" changed to region "%s"' % (str(request.user), region)) - return redirect(redirect_url) diff --git a/django-openstack/src/django_openstack/nova/views/securitygroups.py b/django-openstack/src/django_openstack/nova/views/securitygroups.py deleted file mode 100644 index 7e8ef3387..000000000 --- a/django-openstack/src/django_openstack/nova/views/securitygroups.py +++ /dev/null @@ -1,220 +0,0 @@ -# vim: tabstop=4 shiftwidth=4 softtabstop=4 - -# Copyright 2010 United States Government as represented by the -# Administrator of the National Aeronautics and Space Administration. -# All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -""" -Views for managing Nova security groups. -""" - -from django import http -from django import template -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_openstack import log as logging -from django_openstack.nova import exceptions -from django_openstack.nova import forms -from django_openstack.nova.exceptions import handle_nova_error -from django_openstack.nova.shortcuts import get_project_or_404 - - -LOG = logging.getLogger('django_openstack.nova') - - -@login_required -@handle_nova_error -def index(request, project_id): - project = get_project_or_404(request, project_id) - securitygroups = project.get_security_groups() - - return render_to_response( - 'django_openstack/nova/securitygroups/index.html', - {'create_form': forms.CreateSecurityGroupForm(project), - 'project': project, - 'securitygroups': securitygroups}, - context_instance=template.RequestContext(request)) - - -@login_required -@handle_nova_error -def detail(request, project_id, group_name): - project = get_project_or_404(request, project_id) - securitygroup = project.get_security_group(group_name) - - if not securitygroup: - raise http.Http404 - - return render_to_response( - 'django_openstack/nova/securitygroups/detail.html', - {'authorize_form': forms.AuthorizeSecurityGroupRuleForm(), - 'project': project, - 'securitygroup': securitygroup}, - context_instance=template.RequestContext(request)) - - -@login_required -@handle_nova_error -def add(request, project_id): - project = get_project_or_404(request, project_id) - - if request.method == 'POST': - form = forms.CreateSecurityGroupForm(project, request.POST) - if form.is_valid(): - try: - project.create_security_group( - form.cleaned_data['name'], - form.cleaned_data['description']) - except exceptions.NovaApiError, e: - messages.error( - request, - _('Unable to create security group: %s') % e.message) - LOG.error('Unable to create security group "%s" on project' - ' "%s". Exception "%s"' % (form.cleaned_data['name'], - project_id, e.message)) - else: - messages.success( - request, - _('Security Group %s has been succesfully created.') % \ - form.cleaned_data['name']) - LOG.info('Security Group "%s" created on project "%s"' % - (form.cleaned_data['name'], project_id)) - else: - securitygroups = project.get_security_groups() - - return render_to_response( - 'django_openstack/nova/securitygroups/index.html', - {'create_form': form, - 'project': project, - 'securitygroups': securitygroups}, - context_instance=template.RequestContext(request)) - - return redirect('nova_securitygroups', project_id) - - -@login_required -@handle_nova_error -def authorize(request, project_id, group_name): - project = get_project_or_404(request, project_id) - - if request.method == 'POST': - form = forms.AuthorizeSecurityGroupRuleForm(request.POST) - if form.is_valid(): - try: - project.authorize_security_group( - group_name=group_name, - ip_protocol=form.cleaned_data['protocol'], - from_port=form.cleaned_data['from_port'], - to_port=form.cleaned_data['to_port']) - except exceptions.NovaApiError, e: - messages.error(request, - _('Unable to authorize: %s') % e.message) - LOG.error('Unable to authorize access for protocol "%s" for' - ' ports %d-%d on group "%s" in project "%s".' - ' Exception: "%s"' % - (form.cleaned_data['protocol'], - form.cleaned_data['from_port'], - form.cleaned_data['to_port'], - group_name, project_id, e.message)) - else: - messages.success( - request, - _('Security Group %(grp)s: Access to %(proto)s ports %(fr)d - %(to)d has been authorized.') % - {'grp': group_name, - 'proto': form.cleaned_data['protocol'], - 'fr': form.cleaned_data['from_port'], - 'to': form.cleaned_data['to_port']}) - LOG.info('Access to group "%s" in project "%s" granted' - ' for "%s" ports %d-%d' % - (group_name, project_id, - form.cleaned_data['protocol'], - form.cleaned_data['from_port'], - form.cleaned_data['to_port'])) - - else: - securitygroup = project.get_security_group(group_name) - - if not securitygroup: - raise http.Http404 - - return render_to_response( - 'django_openstack/nova/securitygroups/detail.html', - {'authorize_form': form, - 'project': project, - 'securitygroup': securitygroup}, - context_instance=template.RequestContext(request)) - - return redirect('nova_securitygroups_detail', project_id, group_name) - - -@login_required -@handle_nova_error -def revoke(request, project_id, group_name): - project = get_project_or_404(request, project_id) - - if request.method == 'POST': - try: - project.revoke_security_group( - group_name=group_name, - ip_protocol=request.POST['protocol'], - from_port=request.POST['from_port'], - to_port=request.POST['to_port']) - except exceptions.NovaApiError, e: - messages.error(request, _('Unable to revoke: %s') % e.message) - LOG.error('Unable to revoke access to group "%s" in project "%s"' - ' for "%s" ports %d-%d. Exception: "%s"' % - (group_name, project_id, request.POST['protocol'], - request.POST['from_port'], request.POST['to_port'], - e.message)) - else: - messages.success( - request, - _('Security Group %(grp)s: Access to %(proto)s ports %(fr)d - %(to)d has been revoked.') % - {'grp': group_name, - 'proto': form.cleaned_data['protocol'], - 'fr': form.cleaned_data['from_port'], - 'to': form.cleaned_data['to_port']}) - LOG.info('Access to group "%s" granted on project "%s" for' - ' "%s" ports %d-%d' % - (group_name, project_id, request.POST['protocol'], - request.POST['from_port'], request.POST['to_port'])) - - return redirect('nova_securitygroups_detail', project_id, group_name) - - -@login_required -@handle_nova_error -def delete(request, project_id, group_name): - project = get_project_or_404(request, project_id) - - if request.method == 'POST': - try: - project.delete_security_group(name=group_name) - except exceptions.NovaApiError, e: - messages.error( - request, - _('Unable to delete security group: %s') % e.message) - LOG.error('Unable to delete security group "%s" on project "%s".' - ' Exception: "%s"' % (group_name, project_id, e.message)) - else: - messages.success(request, - _('Security Group %s was successfully deleted.') % - group_name) - LOG.info('Security group "%s" deleted from project "%s"' % - (group_name, project_id)) - - return redirect('nova_securitygroups', project_id) diff --git a/django-openstack/src/django_openstack/nova/views/volumes.py b/django-openstack/src/django_openstack/nova/views/volumes.py index c66e4a63b..eea6317dc 100644 --- a/django-openstack/src/django_openstack/nova/views/volumes.py +++ b/django-openstack/src/django_openstack/nova/views/volumes.py @@ -19,13 +19,13 @@ """ Views for managing Nova volumes. """ +import logging from django import template 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_openstack import log as logging from django_openstack.nova import exceptions from django_openstack.nova import forms from django_openstack.nova import shortcuts diff --git a/django-nova-syspanel/src/django_nova_syspanel/__init__.py b/django-openstack/src/django_openstack/syspanel/__init__.py similarity index 100% rename from django-nova-syspanel/src/django_nova_syspanel/__init__.py rename to django-openstack/src/django_openstack/syspanel/__init__.py diff --git a/django-nova-syspanel/src/django_nova_syspanel/forms.py b/django-openstack/src/django_openstack/syspanel/forms.py similarity index 100% rename from django-nova-syspanel/src/django_nova_syspanel/forms.py rename to django-openstack/src/django_openstack/syspanel/forms.py diff --git a/django-openstack/src/django_openstack/syspanel/urls.py b/django-openstack/src/django_openstack/syspanel/urls.py new file mode 100644 index 000000000..1a1261738 --- /dev/null +++ b/django-openstack/src/django_openstack/syspanel/urls.py @@ -0,0 +1,31 @@ +from django.conf.urls.defaults import * +from django.conf import settings +from django.contrib import admin + +admin.autodiscover() + +urlpatterns = patterns('', + url(r'^$', 'django_openstack.syspanel.views.home.index', name='syspanel_index'), + + # instances + url(r'^instances/$', 'django_openstack.syspanel.views.instances.index', name='syspanel_instances'), + url(r'^instances/(?P[^/]+)/terminate$', 'django_openstack.syspanel.views.instances.terminate', name='syspanel_instance_terminate'), + url(r'^instances/(?P[^/]+)/restart$', 'django_openstack.syspanel.views.instances.restart', name='syspanel_instance_restart'), + url(r'^instances/(?P[^/]+)/console_log$', 'django_openstack.syspanel.views.instances.console', name='syspanel_instance_console'), + + # volumes + #url(r'^volumes/$', 'django_openstack.syspanel.views.volumes.index', name='syspanel_volumes'), + #url(r'^volumes/(?P[^/]+)/delete$', 'django_openstack.syspanel.views.volumes.delete', name='syspanel_delete_volume'), + #url(r'^volumes/(?P[^/]+)/detach$', 'django_openstack.syspanel.views.volumes.detach', name='syspanel_detach_volume'), + + # vpns + url(r'^vpns/$', 'django_openstack.syspanel.views.vpns.index', name='syspanel_vpns'), + url(r'^vpns/(?P[^/]+)/launch$', 'django_openstack.syspanel.views.vpns.launch', name='syspanel_vpn_launch'), + url(r'^vpns/(?P[^/]+)/send_credentials$', 'django_openstack.syspanel.views.vpns.send_credentials', name='syspanel_vpn_send_credentials'), + url(r'^vpns/(?P[^/]+)/terminate$', 'django_openstack.syspanel.views.vpns.terminate', name='syspanel_vpn_terminate'), + url(r'^vpns/(?P[^/]+)/restart$', 'django_openstack.syspanel.views.vpns.restart', name='syspanel_vpn_restart'), + url(r'^vpns/(?P[^/]+)/console_log$', 'django_openstack.syspanel.views.vpns.console', name='syspanel_vpn_console'), + + # cloudview + url(r'^cloudview/$', 'django_openstack.syspanel.views.cloud.index', name='syspanel_cloudview'), +) diff --git a/django-nova-syspanel/src/django_nova_syspanel/views/__init__.py b/django-openstack/src/django_openstack/syspanel/views/__init__.py similarity index 100% rename from django-nova-syspanel/src/django_nova_syspanel/views/__init__.py rename to django-openstack/src/django_openstack/syspanel/views/__init__.py diff --git a/django-nova-syspanel/src/django_nova_syspanel/views/cloud.py b/django-openstack/src/django_openstack/syspanel/views/cloud.py similarity index 86% rename from django-nova-syspanel/src/django_nova_syspanel/views/cloud.py rename to django-openstack/src/django_openstack/syspanel/views/cloud.py index a2fbf10da..a366fd77f 100644 --- a/django-nova-syspanel/src/django_nova_syspanel/views/cloud.py +++ b/django-openstack/src/django_openstack/syspanel/views/cloud.py @@ -2,8 +2,6 @@ from django import template from django.contrib.auth.decorators import login_required from django.shortcuts import render_to_response -from django_nova_syspanel.models import get_nova_admin_connection - @login_required def index(request): diff --git a/django-nova-syspanel/src/django_nova_syspanel/views/home.py b/django-openstack/src/django_openstack/syspanel/views/home.py similarity index 100% rename from django-nova-syspanel/src/django_nova_syspanel/views/home.py rename to django-openstack/src/django_openstack/syspanel/views/home.py diff --git a/django-nova-syspanel/src/django_nova_syspanel/views/instances.py b/django-openstack/src/django_openstack/syspanel/views/instances.py similarity index 98% rename from django-nova-syspanel/src/django_nova_syspanel/views/instances.py rename to django-openstack/src/django_openstack/syspanel/views/instances.py index fa8de8f4e..73ff99a4a 100644 --- a/django-nova-syspanel/src/django_nova_syspanel/views/instances.py +++ b/django-openstack/src/django_openstack/syspanel/views/instances.py @@ -5,8 +5,6 @@ from django.contrib.auth.decorators import login_required from django.shortcuts import render_to_response from django.utils.translation import ugettext as _ -from django_nova_syspanel.models import * - def _reservations_to_instances(reservation_list): rv = [] diff --git a/django-nova-syspanel/src/django_nova_syspanel/views/volumes.py b/django-openstack/src/django_openstack/syspanel/views/volumes.py similarity index 98% rename from django-nova-syspanel/src/django_nova_syspanel/views/volumes.py rename to django-openstack/src/django_openstack/syspanel/views/volumes.py index a07e2837c..b5fdfe070 100644 --- a/django-nova-syspanel/src/django_nova_syspanel/views/volumes.py +++ b/django-openstack/src/django_openstack/syspanel/views/volumes.py @@ -6,8 +6,6 @@ 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_nova_syspanel.models import * - @login_required def index(request): diff --git a/django-nova-syspanel/src/django_nova_syspanel/views/vpns.py b/django-openstack/src/django_openstack/syspanel/views/vpns.py similarity index 96% rename from django-nova-syspanel/src/django_nova_syspanel/views/vpns.py rename to django-openstack/src/django_openstack/syspanel/views/vpns.py index f47821161..877d525f5 100644 --- a/django-nova-syspanel/src/django_nova_syspanel/views/vpns.py +++ b/django-openstack/src/django_openstack/syspanel/views/vpns.py @@ -3,7 +3,6 @@ from django import template from django.conf import settings from django.contrib.auth.decorators import login_required from django.shortcuts import redirect, render_to_response -from django_nova_syspanel.models import get_nova_admin_connection @login_required diff --git a/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/add_project.html b/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/add_project.html deleted file mode 100644 index e91fe66d9..000000000 --- a/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/add_project.html +++ /dev/null @@ -1,45 +0,0 @@ -{% extends "admin/django_openstack/nova/project/base_projects.html" %} -{% load admin_modify adminmedia %} - -{% block extrahead %} -{{ block.super }} -{{ media }} -{% endblock %} - -{% block extrastyle %}{{ block.super }}{% endblock %} - -{% block coltype %}colMS{% endblock %} - -{% block bodyclass %} change-form{% endblock %} - -{% block breadcrumbs %} - -{% endblock %} - -{% block content %} -
    - {% block object-tools %} - {% endblock %} -
    - {% csrf_token %} -
    - {% for field in form.visible_fields %} -
    - {{ field.errors }} - {{ field.label_tag }}{{ field }} - {% if field.field.help_text %}

    {{ field.field.help_text|safe }}

    {% endif %} -
    - {% endfor %} - {% for field in form.hidden_fields %} - {{ field }} - {% endfor %} - -
    - -
    -
    -{% endblock %} diff --git a/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/add_project_user.html b/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/add_project_user.html deleted file mode 100644 index e7dd85963..000000000 --- a/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/add_project_user.html +++ /dev/null @@ -1,69 +0,0 @@ -{% extends "admin/django_openstack/nova/project/base_projects.html" %} -{% load admin_modify adminmedia %} - -{% block extrahead %} -{{ block.super }} -{{ media }} - - - - - - - - -{% endblock %} - -{% block extrastyle %}{{ block.super }}{% endblock %} - -{% block coltype %}colMS{% endblock %} - -{% block bodyclass %} change-form{% endblock %} - -{% block breadcrumbs %} - -{% endblock %} - -{% block content %} -
    - {% block object-tools %} - {% endblock %} -
    - {% csrf_token %} -
    - - {% for field in form.visible_fields %} -
    - {{ field.errors }} - {{ field.label_tag }}{{ field }} - {% if field.field.help_text %}

    {{ field.field.help_text|safe }}

    {% endif %} -
    - {% endfor %} - {% for field in form.hidden_fields %} - {{ field }} - {% endfor %} - -
    -
    - - -
    - -
    -
    -{% endblock %} diff --git a/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/base_projects.html b/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/base_projects.html deleted file mode 100644 index 220412aa1..000000000 --- a/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/base_projects.html +++ /dev/null @@ -1,17 +0,0 @@ -{% extends "admin/change_list.html" %} -{% load i18n %} - -{% block extrastyle %} - {{block.super}} - -{% endblock %} -{% block breadcrumbs %}{% endblock %} -{% block content %} -
    -
    -
    - {% block innercontent %}{% endblock %} -
    -
    -
    -{% endblock %} diff --git a/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/change_list.html b/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/change_list.html deleted file mode 100644 index ba0046d7a..000000000 --- a/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/change_list.html +++ /dev/null @@ -1,3 +0,0 @@ -{% extends "admin/change_list.html" %} -{% load admin_extras %} -{% block result_list %}{% project_result_list cl %}{% endblock %} \ No newline at end of file diff --git a/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/delete_project.html b/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/delete_project.html deleted file mode 100644 index 0fe626dc4..000000000 --- a/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/delete_project.html +++ /dev/null @@ -1,26 +0,0 @@ -{% extends "admin/change_list.html" %} -{% load i18n %} - -{% block extrastyle %} - {{block.super}} - -{% endblock %} -{% block breadcrumbs %}{% endblock %} -{% block content %} -
    -
    -
    -

    {% trans "Delete Project" %}

    -

    {% trans "Do you really want to delete this project?<" %}/p> -

    - -
    - {% csrf_token %} -

    -
    -
    -
    -
    -{% endblock %} diff --git a/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/delete_project_user.html b/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/delete_project_user.html deleted file mode 100644 index 96bd7e518..000000000 --- a/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/delete_project_user.html +++ /dev/null @@ -1,26 +0,0 @@ -{% extends "admin/change_list.html" %} -{% load i18n %} - -{% block extrastyle %} - {{block.super}} - -{% endblock %} -{% block breadcrumbs %}{% endblock %} -{% block content %} -
    -
    -
    -

    {% trans "Remove User From Project" %}

    -

    {% trans "Do you really want to remove this user from project?" %}

    - - -
    - {% csrf_token %} -

    -
    -
    -
    -
    -{% endblock %} diff --git a/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/edit_project.html b/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/edit_project.html deleted file mode 100644 index f3f351652..000000000 --- a/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/edit_project.html +++ /dev/null @@ -1,84 +0,0 @@ -{% extends "admin/django_openstack/nova/project/base_projects.html" %} -{% load admin_modify adminmedia %} - -{% block extrahead %} -{{ block.super }} -{{ media }} -{% endblock %} - -{% block extrastyle %}{{ block.super }}{% endblock %} - -{% block coltype %}colMS{% endblock %} - -{% block bodyclass %} change-form{% endblock %} - -{% block breadcrumbs %} - -{% endblock %} - -{% block content %} -
    - {% block object-tools %} - {% endblock %} - -
    - {% csrf_token %} -
    - {% for field in form.visible_fields %} -
    - {{ field.errors }} - {{ field.label_tag }}{{ field }} - {% if field.field.help_text %}

    {{ field.field.help_text|safe }}

    {% endif %} -
    - {% endfor %} - {% for field in form.hidden_fields %} - {{ field }} - {% endfor %} -
    -
    - - -
    - -
    - - - - - - - - - - - {% for user in users %} - - - - - - {% endfor %} -
    UsernameProject RolesGlobal Roles
    - {{user.memberId}} {% if user.memberId == project.projectManagerId %}(project manager){%endif %} - - - {{user.project_roles}} - - {{user.global_roles}} -
    - - -
    -{% endblock %} diff --git a/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/global_edit_user.html b/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/global_edit_user.html deleted file mode 100644 index f7c795f34..000000000 --- a/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/global_edit_user.html +++ /dev/null @@ -1,71 +0,0 @@ -{% extends "admin/django_openstack/nova/project/base_projects.html" %} -{% load admin_modify adminmedia %} - -{% block extrahead %} -{{ block.super }} -{{ media }} - - - - - - - - -{% endblock %} - -{% block extrastyle %}{{ block.super }}{% endblock %} - -{% block coltype %}colMS{% endblock %} - -{% block bodyclass %} change-form{% endblock %} - -{% block breadcrumbs %} - -{% endblock %} - -{% block content %} -
    - {% block object-tools %} - {% endblock %} -
    - {% csrf_token %} -
    -
    - - {{user.username}} -
    - - {% for field in form.visible_fields %} -
    - {{ field.errors }} - {{ field.label_tag }}{{ field }} - {% if field.field.help_text %}

    {{ field.field.help_text|safe }}

    {% endif %} -
    - {% endfor %} - {% for field in form.hidden_fields %} - {{ field }} - {% endfor %} - -
    -
    - - -
    - -
    -
    -{% endblock %} diff --git a/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/project_list.html b/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/project_list.html deleted file mode 100644 index 1dc441555..000000000 --- a/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/project_list.html +++ /dev/null @@ -1,42 +0,0 @@ -{% extends "admin/django_openstack/nova/project/base_projects.html" %} -{% block extrahead %} - {{ block.super }} -{% endblock %} -{% block innercontent %} - - - - - - - - - - - - {% for project in projects %} - - - - - - - - - {% endfor %} -
    NameDescriptionProject ManagerSend CredentialsStart VPN
    - {{project.projectname}} - - {{project.description}} - - {{project.projectManagerId}} - - Send Credentials - - Start VPN -
    -{% endblock %} diff --git a/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/project_user.html b/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/project_user.html deleted file mode 100644 index 5fa80eb31..000000000 --- a/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/project_user.html +++ /dev/null @@ -1,76 +0,0 @@ -{% extends "admin/django_openstack/nova/project/base_projects.html" %} -{% load admin_modify adminmedia i18n %} - -{% block extrahead %} -{{ block.super }} -{{ media }} - - - - - - - - -{% endblock %} - -{% block extrastyle %}{{ block.super }}{% endblock %} - -{% block coltype %}colMS{% endblock %} - -{% block bodyclass %} change-form{% endblock %} - -{% block breadcrumbs %} - -{% endblock %} - -{% block content %} -
    - {% block object-tools %} - {% endblock %} -
    - {% csrf_token %} -
    -
    - - {{user.username}} -
    - - {% for field in form.visible_fields %} -
    - {{ field.errors }} - {{ field.label_tag }}{{ field }} - {% if field.field.help_text %}

    {{ field.field.help_text|safe }}

    {% endif %} -
    - {% endfor %} - {% for field in form.hidden_fields %} - {{ field }} - {% endfor %} - -
    -
    - {% if project.projectManagerId != user.username %} - - {% endif %} - - -
    - -
    -
    -{% endblock %} diff --git a/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/send_credentials.html b/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/send_credentials.html deleted file mode 100644 index 59fb35f87..000000000 --- a/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/send_credentials.html +++ /dev/null @@ -1,87 +0,0 @@ -{% extends "admin/base_site.html" %} -{% load i18n admin_modify adminmedia %} - -{% block title %}Send project credentials{{ block.super }}{% endblock %} - -{% block extrahead %} -{{ block.super }} -{{ media }} - - - - - - - - - - -{% endblock %} - - -{% block breadcrumbs %} - -{% endblock %} - -{% block content %} -
    - - - {% if not success %} -

    {% trans "Send Credentials"%}

    -

    {%blocktrans with proj=project.projectname%}"Select which users you would like to send credentials to from the '{{proj}}' project."{%endblocktrans%}

    - {% else %} -

    {% trans "Credentials sent successfully"%}

    - {% endif %} - -
    - {% if error %} - {{ error }} - {% endif %} - - {% if success %} - {{ success }} - {% endif %} - -
    - - {% if not success %} -
    - {% csrf_token %} -
    - - {% for field in form.visible_fields %} -
    - {{ field.errors }} - {{ field }} - {% if field.field.help_text %}

    {{ field.field.help_text|safe }}

    {% endif %} -
    - {% endfor %} - {% for field in form.hidden_fields %} - {{ field }} - {% endfor %} - -
    -
    - -
    - -
    - {% endif %} -
    -{% endblock %} diff --git a/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/user_list.html b/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/user_list.html deleted file mode 100644 index 0e9b0e259..000000000 --- a/django-openstack/src/django_openstack/templates/admin/django_openstack/nova/project/user_list.html +++ /dev/null @@ -1,39 +0,0 @@ -{% extends "admin/django_openstack/nova/project/base_projects.html" %} -{% block extrahead %} - {{ block.super }} -{% endblock %} - -{% block breadcrumbs %} - -{% endblock %} - -{% block innercontent %} -

    Select a User

    - - - - - - - - - - {% for user in users %} - - - - - - {% endfor %} -
    UsernameGlobal RolesActions
    - {{user.username}} - - (temporarily hidden) - {#user.roles#} - - Edit -
    -{% endblock %} diff --git a/django-nova-syspanel/src/django_nova_syspanel/templates/django_nova_syspanel/cloudview/index.html b/django-openstack/src/django_openstack/templates/django_nova_syspanel/cloudview/index.html similarity index 100% rename from django-nova-syspanel/src/django_nova_syspanel/templates/django_nova_syspanel/cloudview/index.html rename to django-openstack/src/django_openstack/templates/django_nova_syspanel/cloudview/index.html diff --git a/django-nova-syspanel/src/django_nova_syspanel/templates/django_nova_syspanel/index.html b/django-openstack/src/django_openstack/templates/django_nova_syspanel/index.html similarity index 100% rename from django-nova-syspanel/src/django_nova_syspanel/templates/django_nova_syspanel/index.html rename to django-openstack/src/django_openstack/templates/django_nova_syspanel/index.html diff --git a/django-nova-syspanel/src/django_nova_syspanel/templates/django_nova_syspanel/instances/index.html b/django-openstack/src/django_openstack/templates/django_nova_syspanel/instances/index.html similarity index 100% rename from django-nova-syspanel/src/django_nova_syspanel/templates/django_nova_syspanel/instances/index.html rename to django-openstack/src/django_openstack/templates/django_nova_syspanel/instances/index.html diff --git a/django-nova-syspanel/src/django_nova_syspanel/templates/django_nova_syspanel/volumes/index.html b/django-openstack/src/django_openstack/templates/django_nova_syspanel/volumes/index.html similarity index 100% rename from django-nova-syspanel/src/django_nova_syspanel/templates/django_nova_syspanel/volumes/index.html rename to django-openstack/src/django_openstack/templates/django_nova_syspanel/volumes/index.html diff --git a/django-nova-syspanel/src/django_nova_syspanel/templates/django_nova_syspanel/vpns/index.html b/django-openstack/src/django_openstack/templates/django_nova_syspanel/vpns/index.html similarity index 100% rename from django-nova-syspanel/src/django_nova_syspanel/templates/django_nova_syspanel/vpns/index.html rename to django-openstack/src/django_openstack/templates/django_nova_syspanel/vpns/index.html diff --git a/django-openstack/src/django_openstack/templates/django_openstack/credentials/expired.html b/django-openstack/src/django_openstack/templates/django_openstack/credentials/expired.html deleted file mode 100644 index 7fd741ff0..000000000 --- a/django-openstack/src/django_openstack/templates/django_openstack/credentials/expired.html +++ /dev/null @@ -1,17 +0,0 @@ -{% load django_nova_tags %} - - - - - Expired Token - - -
    -

    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 - {% site_branding %} support team.

    -
    - - diff --git a/django-openstack/src/django_openstack/templates/django_openstack/keypairs/_create_form.html b/django-openstack/src/django_openstack/templates/django_openstack/keypairs/_create_form.html deleted file mode 100644 index d295c4064..000000000 --- a/django-openstack/src/django_openstack/templates/django_openstack/keypairs/_create_form.html +++ /dev/null @@ -1,5 +0,0 @@ -{% for field in create_form %} -{{ field.label_tag }} -{% if field.errors %}{{ field.errors }}{% endif %} -{{ field }} -{% endfor %} diff --git a/django-openstack/src/django_openstack/templates/django_openstack/keypairs/_list.html b/django-openstack/src/django_openstack/templates/django_openstack/keypairs/_list.html deleted file mode 100644 index 2447a193a..000000000 --- a/django-openstack/src/django_openstack/templates/django_openstack/keypairs/_list.html +++ /dev/null @@ -1,31 +0,0 @@ - {% if keypairs %} - - - - - - - {% for keypair in keypairs %} - - - - - - {% endfor %} -
    Key Pair NameFingerprint 
    {{ keypair.name }}{{ keypair.fingerprint }} -
    - - - {% csrf_token %} -
    -
    - {% else %} -
    -
    -

    - - No key pairs currently exist. -

    -
    -
    - {% endif %} diff --git a/django-openstack/src/django_openstack/templates/django_openstack/keypairs/base.html b/django-openstack/src/django_openstack/templates/django_openstack/keypairs/base.html deleted file mode 100644 index 5fd996ca7..000000000 --- a/django-openstack/src/django_openstack/templates/django_openstack/keypairs/base.html +++ /dev/null @@ -1,7 +0,0 @@ -{% extends "django_nova/base.html" %} -{% load sidebar_tags %} - -{% block nav_projects %} - {% sidebar_select keys %} - {{ block.super }} -{% endblock %} \ No newline at end of file diff --git a/django-openstack/src/django_openstack/templates/django_openstack/keypairs/index.html b/django-openstack/src/django_openstack/templates/django_openstack/keypairs/index.html deleted file mode 100644 index 2233f4813..000000000 --- a/django-openstack/src/django_openstack/templates/django_openstack/keypairs/index.html +++ /dev/null @@ -1,77 +0,0 @@ -{% extends "django_nova/keypairs/base.html" %} - -{% block title %} - Cloud Computing{% endblock %} - -{% block headerjs %} -{{ block.super }} - -{% endblock %} - -{% block content %} - - - {% include "django_nova/_messages.html" %} - -
    - {% include "django_nova/keypairs/_list.html" %} -
    - -
    -
    - {% csrf_token %} - -
    -

    Create New Keypair

    - {% include "django_nova/keypairs/_create_form.html" %} - -
    -
    -
    - -
    -

    Are you sure you wish to delete key ?

    -
    -{% endblock %} - -{% block footerjs %} -{{ block.super }} - -{% endblock %} diff --git a/django-openstack/src/django_openstack/templates/django_openstack/securitygroups/_authorize_form.html b/django-openstack/src/django_openstack/templates/django_openstack/securitygroups/_authorize_form.html deleted file mode 100644 index 80de4beef..000000000 --- a/django-openstack/src/django_openstack/templates/django_openstack/securitygroups/_authorize_form.html +++ /dev/null @@ -1,5 +0,0 @@ -{% for field in authorize_form %} - {{ field.label_tag }} - {% if field.errors %}{{ field.errors }}{% endif %} - {{ field }} -{% endfor %} \ No newline at end of file diff --git a/django-openstack/src/django_openstack/templates/django_openstack/securitygroups/_create_form.html b/django-openstack/src/django_openstack/templates/django_openstack/securitygroups/_create_form.html deleted file mode 100644 index d295c4064..000000000 --- a/django-openstack/src/django_openstack/templates/django_openstack/securitygroups/_create_form.html +++ /dev/null @@ -1,5 +0,0 @@ -{% for field in create_form %} -{{ field.label_tag }} -{% if field.errors %}{{ field.errors }}{% endif %} -{{ field }} -{% endfor %} diff --git a/django-openstack/src/django_openstack/templates/django_openstack/securitygroups/_revoke_form.html b/django-openstack/src/django_openstack/templates/django_openstack/securitygroups/_revoke_form.html deleted file mode 100644 index 4a884cde5..000000000 --- a/django-openstack/src/django_openstack/templates/django_openstack/securitygroups/_revoke_form.html +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/django-openstack/src/django_openstack/templates/django_openstack/securitygroups/base.html b/django-openstack/src/django_openstack/templates/django_openstack/securitygroups/base.html deleted file mode 100644 index 0e8a232eb..000000000 --- a/django-openstack/src/django_openstack/templates/django_openstack/securitygroups/base.html +++ /dev/null @@ -1,7 +0,0 @@ -{% extends "django_nova/base.html" %} -{% load sidebar_tags %} - -{% block nav_projects %} - {% sidebar_select securitygroups %} - {{ block.super }} -{% endblock %} \ No newline at end of file diff --git a/django-openstack/src/django_openstack/templates/django_openstack/securitygroups/detail.html b/django-openstack/src/django_openstack/templates/django_openstack/securitygroups/detail.html deleted file mode 100644 index 0e4afb9c9..000000000 --- a/django-openstack/src/django_openstack/templates/django_openstack/securitygroups/detail.html +++ /dev/null @@ -1,62 +0,0 @@ -{% extends "django_nova/securitygroups/base.html" %} - -{% block title %} - Cloud Computing{% endblock %} - -{% block content %} -
    -
    - -
    - - - {% include "django_nova/_messages.html" %} - - - - - - - - - {% for rule in securitygroup.rules %} - - - - - - - {% endfor %} -
    ProtocolFrom PortTo Port
    {{ rule.ip_protocol }}{{ rule.from_port }}{{ rule.to_port }} -
    - {% csrf_token %} - {% include "django_nova/securitygroups/_revoke_form.html" %} - -
    -
    - -
    -

    Authorize

    -
    - {% csrf_token %} -
    - - {% include "django_nova/securitygroups/_authorize_form.html" %} - -
    -
    -
    -
    -
    -
    -
    -{% endblock %} diff --git a/django-openstack/src/django_openstack/templates/django_openstack/securitygroups/index.html b/django-openstack/src/django_openstack/templates/django_openstack/securitygroups/index.html deleted file mode 100644 index a3c992c60..000000000 --- a/django-openstack/src/django_openstack/templates/django_openstack/securitygroups/index.html +++ /dev/null @@ -1,59 +0,0 @@ -{% extends "django_nova/securitygroups/base.html" %} - -{% block title %} - Cloud Computing{% endblock %} - -{% block content %} -
    -
    - -
    - - - {% include "django_nova/_messages.html" %} - - - - - - - - - {% for securitygroup in securitygroups %} - - - - - - - {% endfor %} -
    NameDescriptionRules 
    {{ securitygroup.name }}{{ securitygroup.description }}{{ securitygroup.rules|length }} -
    - {% csrf_token %} - -
    -
    -
    -
    - {% csrf_token %} -
    -

    New Group

    - {% include "django_nova/securitygroups/_create_form.html" %} - -
    -
    -
    -
    -
    -
    -
    -{% endblock %} diff --git a/django-openstack/src/django_openstack/templatetags/templatetags/django_openstack_tags.py b/django-openstack/src/django_openstack/templatetags/templatetags/branding.py similarity index 100% rename from django-openstack/src/django_openstack/templatetags/templatetags/django_openstack_tags.py rename to django-openstack/src/django_openstack/templatetags/templatetags/branding.py diff --git a/django-openstack/src/django_openstack/testurls.py b/django-openstack/src/django_openstack/testurls.py index d1e34a54e..23a718a62 100644 --- a/django-openstack/src/django_openstack/testurls.py +++ b/django-openstack/src/django_openstack/testurls.py @@ -21,14 +21,13 @@ URL patterns for testing django-openstack views. """ from django.conf.urls.defaults import * -from django.conf.urls.defaults import * urlpatterns = patterns('', url(r'^projects/', include('django_openstack.nova.urls.project')), url(r'^region/', include('django_openstack.nova.urls.region')), - url(r'^admin/projects/', include('django_openstack.nova.urls.admin_project')), - url(r'^admin/roles/', include('django_openstack.nova.urls.admin_roles')), + #url(r'^admin/projects/', include('django_openstack.nova.urls.admin_project')), + #url(r'^admin/roles/', include('django_openstack.nova.urls.admin_roles')), url(r'^credentials/download/(?P\w+)/$', 'django_openstack.nova.views.credentials.authorize_credentials', name='nova_credentials_authorize'), diff --git a/openstack-dashboard/dashboard/settings.py b/openstack-dashboard/dashboard/settings.py index 70a75a3fc..73e27b60d 100644 --- a/openstack-dashboard/dashboard/settings.py +++ b/openstack-dashboard/dashboard/settings.py @@ -70,7 +70,7 @@ INSTALLED_APPS = ( 'django_openstack', 'django_openstack.nova', 'django_openstack.templatetags', - 'django_nova_syspanel', + 'django_openstack.syspanel', 'registration', ) diff --git a/openstack-dashboard/dashboard/templates/admin/index.html b/openstack-dashboard/dashboard/templates/admin/index.html index 8ea7f4e17..0bc38a997 100644 --- a/openstack-dashboard/dashboard/templates/admin/index.html +++ b/openstack-dashboard/dashboard/templates/admin/index.html @@ -1,5 +1,5 @@ {% extends "admin/base_site.html" %} -{% load django_openstack_tags i18n %} +{% load branding i18n %} {% block extrastyle %}{{ block.super }}{% endblock %} diff --git a/openstack-dashboard/dashboard/templates/base-root.html b/openstack-dashboard/dashboard/templates/base-root.html index 00babd2ba..6893a809e 100644 --- a/openstack-dashboard/dashboard/templates/base-root.html +++ b/openstack-dashboard/dashboard/templates/base-root.html @@ -1,4 +1,4 @@ -{% load django_openstack_tags i18n %} +{% load branding i18n %} diff --git a/openstack-dashboard/dashboard/templates/index.html b/openstack-dashboard/dashboard/templates/index.html index e8816a59f..cb50fac25 100644 --- a/openstack-dashboard/dashboard/templates/index.html +++ b/openstack-dashboard/dashboard/templates/index.html @@ -1,5 +1,5 @@ {% extends "base.html" %} -{% load django_openstack_tags i18n %} +{% load branding i18n %} {% block headercss %} {% endblock %} diff --git a/openstack-dashboard/dashboard/templates/registration/login.html b/openstack-dashboard/dashboard/templates/registration/login.html index 33f317eec..d6c452af6 100644 --- a/openstack-dashboard/dashboard/templates/registration/login.html +++ b/openstack-dashboard/dashboard/templates/registration/login.html @@ -1,5 +1,5 @@ {% extends "base.html" %} -{% load django_openstack_tags %} +{% load branding %} {% block region %}{% endblock %} diff --git a/openstack-dashboard/dashboard/templates/registration/password_reset_email.html b/openstack-dashboard/dashboard/templates/registration/password_reset_email.html index 9154a0637..43f2e0480 100644 --- a/openstack-dashboard/dashboard/templates/registration/password_reset_email.html +++ b/openstack-dashboard/dashboard/templates/registration/password_reset_email.html @@ -1,4 +1,4 @@ -{% load i18n %}{% load django_openstack_tags %} +{% load i18n %}{% load branding %} {% autoescape off %} You're receiving this e-mail because you requested a password reset for your user account at {% site_branding %}. diff --git a/openstack-dashboard/dashboard/urls.py b/openstack-dashboard/dashboard/urls.py index 32dfb7217..f1675ebf8 100644 --- a/openstack-dashboard/dashboard/urls.py +++ b/openstack-dashboard/dashboard/urls.py @@ -33,17 +33,8 @@ admin.autodiscover() urlpatterns = patterns('', url(r'^$', 'dashboard.views.index', name='index'), url(r'^i18n/setlang', django.views.i18n.set_language), - url(r'^accounts/register/$', - 'registration.views.register', - {'form_class': reg_forms.RegistrationFormUniqueEmail}, - name='registration_register'), - url(r'^accounts/', include('registration.urls')), url(r'^project/', include('django_openstack.nova.urls.project')), - url(r'^region/', include('django_openstack.nova.urls.region')), - url(r'^admin/project/', include('django_openstack.nova.urls.admin_project')), - url(r'^admin/roles/', include('django_openstack.nova.urls.admin_roles')), - url(r'^admin/', include(admin.site.urls)), - url(r'^syspanel/', include('django_nova_syspanel.urls')), + url(r'^syspanel/', include('django_openstack.syspanel.urls')), ) urlpatterns += patterns('', diff --git a/openstack-dashboard/tools/install_venv.py b/openstack-dashboard/tools/install_venv.py index 920982477..6b03d485c 100644 --- a/openstack-dashboard/tools/install_venv.py +++ b/openstack-dashboard/tools/install_venv.py @@ -122,12 +122,6 @@ def install_django_openstack(): run_command([WITH_VENV, 'python', 'setup.py', 'develop'], cwd=path) -def install_django_nova_syspanel(): - print 'Installing django_nova_syspanel in development mode...' - path = os.path.join(ROOT, '..', 'django-nova-syspanel') - run_command([WITH_VENV, 'python', 'setup.py', 'develop'], cwd=path) - - def print_summary(): summary = """ OpenStack Dashboard development environment setup is complete. @@ -145,7 +139,6 @@ def main(): create_virtualenv() install_dependencies() install_django_openstack() - install_django_nova_syspanel() print_summary() if __name__ == '__main__':