More fixes for customization_module method

This commit is contained in:
Jordan OMara 2014-07-14 17:37:15 -04:00
parent 9253e0bac6
commit d932640781
32 changed files with 42 additions and 801 deletions

28
.gitignore vendored Normal file
View File

@ -0,0 +1,28 @@
*.pyc
*.swp
*.sqlite3
.environment_version
.selenium_log
.coverage*
.noseids
.DS_STORE
*.egg/
*.egg-info/
coverage.xml
nosetests.xml
pep8.txt
pylint.txt
reports
horizon.egg-info
tuskar_ui/test/.secret_key_store
doc/build/
doc/source/sourcecode
/static/
.venv
.tox
build
dist
AUTHORS
ChangeLog
tags
openstack_dashboard/dummydb.sqlite

View File

@ -1,60 +0,0 @@
Contributing
============
The code repository is located at `OpenStack <https://github.com/openstack>`__.
Please go there if you want to check it out:
git clone https://github.com/openstack/tuskar-ui.git
The list of bugs and blueprints is on Launchpad:
`<https://launchpad.net/tuskar-ui>`__
We use OpenStack's Gerrit for the code contributions:
`<https://review.openstack.org/#/q/status:open+project:openstack/tuskar-ui,n,z>`__
and we follow the `OpenStack Gerrit Workflow <https://wiki.openstack.org/wiki/Gerrit_Workflow>`__.
If you're interested in the code, here are some key places to start:
* `tuskar_ui/api.py <https://github.com/openstack/tuskar-ui/blob/master/tuskar_ui/api.py>`_
- This file contains all the API calls made to the Tuskar API
(through python-tuskarclient).
* `tuskar_ui/infrastructure <https://github.com/openstack/tuskar-ui/tree/master/tuskar_ui/infrastructure>`_
- The Tuskar UI code is contained within this directory.
Running tests
=============
There are several ways to run tests for tuskar-ui.
Using ``tox``:
This is the easiest way to run tests. When run, tox installs dependencies,
prepares the virtual python environment, then runs test commands. The gate
tests in gerrit usually also use tox to run tests. For avaliable tox
environments, see ``tox.ini``.
By running ``run_tests.sh``:
Tests can also be run using the ``run_tests.sh`` script, to see available
options, run it with the ``--help`` option. It handles preparing the
virtual environment and executing tests, but in contrast with tox, it does
not install all dependencies, e.g. ``jshint`` must be installed before
running the jshint testcase.
Manual tests:
To manually check tuskar-ui, it is possible to run a development server
for tuskar-ui by running ``run_tests.sh --runserver``.
To run the server with the settings used by the test environment:
``run_tests.sh --runserver 0.0.0.0:8000 --settings=tuskar_ui.test.settings``
OpenStack Style Commandments
============================
- Step 1: Read http://www.python.org/dev/peps/pep-0008/
- Step 2: Read http://www.python.org/dev/peps/pep-0008/ again
- Step 3: Read https://github.com/openstack-dev/hacking/blob/master/HACKING.rst

View File

@ -1,2 +0,0 @@
DASHBOARD = 'admin'
DISABLED = True

View File

@ -1,12 +0,0 @@
from tuskar_ui import exceptions
DASHBOARD = 'infrastructure'
ADD_INSTALLED_APPS = [
'tuskar_ui.infrastructure',
]
ADD_EXCEPTIONS = {
'recoverable': exceptions.RECOVERABLE,
'not_found': exceptions.NOT_FOUND,
'unauthorized': exceptions.UNAUTHORIZED,
}
DEFAULT = True

View File

@ -1,375 +0,0 @@
import os
from django.utils.translation import ugettext_lazy as _
from tuskar_ui import exceptions
DEBUG = True
TEMPLATE_DEBUG = DEBUG
# Required for Django 1.5.
# If horizon is running in production (DEBUG is False), set this
# with the list of host/domain names that the application can serve.
# For more information see:
# https://docs.djangoproject.com/en/dev/ref/settings/#allowed-hosts
#ALLOWED_HOSTS = ['horizon.example.com', ]
# Set SSL proxy settings:
# For Django 1.4+ pass this header from the proxy after terminating the SSL,
# and don't forget to strip it from the client's request.
# For more information see:
# https://docs.djangoproject.com/en/1.4/ref/settings/#secure-proxy-ssl-header
# SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTOCOL', 'https')
# If Horizon is being served through SSL, then uncomment the following two
# settings to better secure the cookies from security exploits
#CSRF_COOKIE_SECURE = True
#SESSION_COOKIE_SECURE = True
# Overrides for OpenStack API versions. Use this setting to force the
# OpenStack dashboard to use a specific API version for a given service API.
# NOTE: The version should be formatted as it appears in the URL for the
# service API. For example, The identity service APIs have inconsistent
# use of the decimal point, so valid options would be "2.0" or "3".
# OPENSTACK_API_VERSIONS = {
# "identity": 3
# }
# Set this to True if running on multi-domain model. When this is enabled, it
# will require user to enter the Domain name in addition to username for login.
# OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = False
# Overrides the default domain used when running on single-domain model
# with Keystone V3. All entities will be created in the default domain.
# OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = 'Default'
# Set Console type:
# valid options would be "AUTO", "VNC" or "SPICE"
# CONSOLE_TYPE = "AUTO"
# Default OpenStack Dashboard configuration.
HORIZON_CONFIG = {
'dashboards': ('project', 'admin', 'settings',),
'default_dashboard': 'project',
'user_home': 'openstack_dashboard.views.get_user_home',
'ajax_queue_limit': 10,
'auto_fade_alerts': {
'delay': 3000,
'fade_duration': 1500,
'types': ['alert-success', 'alert-info']
},
'help_url': "http://docs.openstack.org",
'exceptions': {'recoverable': exceptions.RECOVERABLE,
'not_found': exceptions.NOT_FOUND,
'unauthorized': exceptions.UNAUTHORIZED},
}
# Specify a regular expression to validate user passwords.
# HORIZON_CONFIG["password_validator"] = {
# "regex": '.*',
# "help_text": _("Your password does not meet the requirements.")
# }
# Disable simplified floating IP address management for deployments with
# multiple floating IP pools or complex network requirements.
# HORIZON_CONFIG["simple_ip_management"] = False
# Turn off browser autocompletion for the login form if so desired.
# HORIZON_CONFIG["password_autocomplete"] = "off"
LOCAL_PATH = os.path.dirname(os.path.abspath(__file__))
# Set custom secret key:
# You can either set it to a specific value or you can let horizion generate a
# default secret key that is unique on this machine, e.i. regardless of the
# amount of Python WSGI workers (if used behind Apache+mod_wsgi): However, there
# may be situations where you would want to set this explicitly, e.g. when
# multiple dashboard instances are distributed on different machines (usually
# behind a load-balancer). Either you have to make sure that a session gets all
# requests routed to the same dashboard instance or you set the same SECRET_KEY
# for all of them.
from horizon.utils import secret_key
SECRET_KEY = secret_key.generate_or_read_from_file(os.path.join(LOCAL_PATH, '.secret_key_store'))
# We recommend you use memcached for development; otherwise after every reload
# of the django development server, you will have to login again. To use
# memcached set CACHES to something like
# CACHES = {
# 'default': {
# 'BACKEND' : 'django.core.cache.backends.memcached.MemcachedCache',
# 'LOCATION' : '127.0.0.1:11211',
# }
#}
CACHES = {
'default': {
'BACKEND' : 'django.core.cache.backends.locmem.LocMemCache'
}
}
# Send email to the console by default
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
# Or send them to /dev/null
#EMAIL_BACKEND = 'django.core.mail.backends.dummy.EmailBackend'
# Configure these for your outgoing email host
# EMAIL_HOST = 'smtp.my-company.com'
# EMAIL_PORT = 25
# EMAIL_HOST_USER = 'djangomail'
# EMAIL_HOST_PASSWORD = 'top-secret!'
# For multiple regions uncomment this configuration, and add (endpoint, title).
# AVAILABLE_REGIONS = [
# ('http://cluster1.example.com:5000/v2.0', 'cluster1'),
# ('http://cluster2.example.com:5000/v2.0', 'cluster2'),
# ]
OPENSTACK_HOST = "stormsend.usersys.redhat.com"
OPENSTACK_KEYSTONE_URL = "http://%s:5000/v2.0" % OPENSTACK_HOST
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "Member"
# Disable SSL certificate checks (useful for self-signed certificates):
# OPENSTACK_SSL_NO_VERIFY = True
# The OPENSTACK_KEYSTONE_BACKEND settings can be used to identify the
# capabilities of the auth backend for Keystone.
# If Keystone has been configured to use LDAP as the auth backend then set
# can_edit_user to False and name to 'ldap'.
#
# TODO(tres): Remove these once Keystone has an API to identify auth backend.
OPENSTACK_KEYSTONE_BACKEND = {
'name': 'native',
'can_edit_user': True,
'can_edit_group': True,
'can_edit_project': True,
'can_edit_domain': True,
'can_edit_role': True
}
OPENSTACK_HYPERVISOR_FEATURES = {
'can_set_mount_point': True,
# NOTE: as of Grizzly this is not yet supported in Nova so enabling this
# setting will not do anything useful
'can_encrypt_volumes': False
}
# The OPENSTACK_NEUTRON_NETWORK settings can be used to enable optional
# services provided by neutron. Currently only the load balancer service
# is available.
OPENSTACK_NEUTRON_NETWORK = {
'enable_security_group': True,
'enable_lb': False,
}
# OPENSTACK_ENDPOINT_TYPE specifies the endpoint type to use for the endpoints
# in the Keystone service catalog. Use this setting when Horizon is running
# external to the OpenStack environment. The default is 'publicURL'.
#OPENSTACK_ENDPOINT_TYPE = "publicURL"
# SECONDARY_ENDPOINT_TYPE specifies the fallback endpoint type to use in the
# case that OPENSTACK_ENDPOINT_TYPE is not present in the endpoints
# in the Keystone service catalog. Use this setting when Horizon is running
# external to the OpenStack environment. The default is None. This
# value should differ from OPENSTACK_ENDPOINT_TYPE if used.
#SECONDARY_ENDPOINT_TYPE = "publicURL"
# The number of objects (Swift containers/objects or images) to display
# on a single page before providing a paging element (a "more" link)
# to paginate results.
API_RESULT_LIMIT = 1000
API_RESULT_PAGE_SIZE = 20
# The timezone of the server. This should correspond with the timezone
# of your entire OpenStack installation, and hopefully be in UTC.
TIME_ZONE = "UTC"
# When launching an instance, the menu of available flavors is
# sorted by RAM usage, ascending. Provide a callback method here
# (and/or a flag for reverse sort) for the sorted() method if you'd
# like a different behaviour. For more info, see
# http://docs.python.org/2/library/functions.html#sorted
# CREATE_INSTANCE_FLAVOR_SORT = {
# 'key': my_awesome_callback_method,
# 'reverse': False,
# }
LOGGING = {
'version': 1,
# When set to True this will disable all logging except
# for loggers specified in this configuration dictionary. Note that
# if nothing is specified here and disable_existing_loggers is True,
# django.db.backends will still log unless it is disabled explicitly.
'disable_existing_loggers': False,
'handlers': {
'null': {
'level': 'DEBUG',
'class': 'django.utils.log.NullHandler',
},
'console': {
# Set the level to "DEBUG" for verbose output logging.
'level': 'INFO',
'class': 'logging.StreamHandler',
},
},
'loggers': {
# Logging from django.db.backends is VERY verbose, send to null
# by default.
'django.db.backends': {
'handlers': ['null'],
'propagate': False,
},
'requests': {
'handlers': ['null'],
'propagate': False,
},
'horizon': {
'handlers': ['console'],
'propagate': False,
},
'openstack_dashboard': {
'handlers': ['console'],
'propagate': False,
},
'novaclient': {
'handlers': ['console'],
'propagate': False,
},
'cinderclient': {
'handlers': ['console'],
'propagate': False,
},
'keystoneclient': {
'handlers': ['console'],
'propagate': False,
},
'glanceclient': {
'handlers': ['console'],
'propagate': False,
},
'heatclient': {
'handlers': ['console'],
'propagate': False,
},
'nose.plugins.manager': {
'handlers': ['console'],
'propagate': False,
}
}
}
SECURITY_GROUP_RULES = {
'all_tcp': {
'name': 'ALL TCP',
'ip_protocol': 'tcp',
'from_port': '1',
'to_port': '65535',
},
'all_udp': {
'name': 'ALL UDP',
'ip_protocol': 'udp',
'from_port': '1',
'to_port': '65535',
},
'all_icmp': {
'name': 'ALL ICMP',
'ip_protocol': 'icmp',
'from_port': '-1',
'to_port': '-1',
},
'ssh': {
'name': 'SSH',
'ip_protocol': 'tcp',
'from_port': '22',
'to_port': '22',
},
'smtp': {
'name': 'SMTP',
'ip_protocol': 'tcp',
'from_port': '25',
'to_port': '25',
},
'dns': {
'name': 'DNS',
'ip_protocol': 'tcp',
'from_port': '53',
'to_port': '53',
},
'http': {
'name': 'HTTP',
'ip_protocol': 'tcp',
'from_port': '80',
'to_port': '80',
},
'pop3': {
'name': 'POP3',
'ip_protocol': 'tcp',
'from_port': '110',
'to_port': '110',
},
'imap': {
'name': 'IMAP',
'ip_protocol': 'tcp',
'from_port': '143',
'to_port': '143',
},
'ldap': {
'name': 'LDAP',
'ip_protocol': 'tcp',
'from_port': '389',
'to_port': '389',
},
'https': {
'name': 'HTTPS',
'ip_protocol': 'tcp',
'from_port': '443',
'to_port': '443',
},
'smtps': {
'name': 'SMTPS',
'ip_protocol': 'tcp',
'from_port': '465',
'to_port': '465',
},
'imaps': {
'name': 'IMAPS',
'ip_protocol': 'tcp',
'from_port': '993',
'to_port': '993',
},
'pop3s': {
'name': 'POP3S',
'ip_protocol': 'tcp',
'from_port': '995',
'to_port': '995',
},
'ms_sql': {
'name': 'MS SQL',
'ip_protocol': 'tcp',
'from_port': '1443',
'to_port': '1443',
},
'mysql': {
'name': 'MYSQL',
'ip_protocol': 'tcp',
'from_port': '3306',
'to_port': '3306',
},
'rdp': {
'name': 'RDP',
'ip_protocol': 'tcp',
'from_port': '3389',
'to_port': '3389',
},
}
TUSKAR_ENDPOINT_URL = "http://127.0.0.1:8585"
HORIZON_CONFIG['user_home'] = ''
OVERCLOUD_CREDS = {
'user': 'admin',
'password': 'password',
'tenant': 'admin',
'auth_url': 'http://localhost:5000/v2.0/',
}

View File

@ -19,6 +19,3 @@ pytz>=2010h
# Horizon Utility Requirements
# for SECURE_KEY generation
lockfile>=0.8
python-ironicclient
http://tarballs.openstack.org/python-tuskarclient/python-tuskarclient-master.tar.gz#egg=python-tuskarclient

View File

@ -1,7 +1,7 @@
[metadata]
name = tuskar-ui
version = 2013.2
summary = Tuskar Management Dashboard
name = tuskar-sat-ui
version = 2014.1
summary = Tuskar Management Dashboard Satellite Plugin
description-file =
README.rst
author = OpenStack
@ -29,7 +29,7 @@ setup-hooks =
[files]
packages =
tuskar_ui
tuskar_sat_ui
[build_sphinx]
all_files = 1

View File

@ -0,0 +1,2 @@
from tuskar_sat_ui.infrastructure import nodes
from tuskar_sat_ui.api import node

View File

@ -0,0 +1,8 @@
{% block custom_js_files %}
<script src='{{ STATIC_URL }}infrastructure/js/angular/horizon.base64.js' type='text/javascript' charset='utf-8'></script>
<script src='{{ STATIC_URL }}infrastructure/js/angular/horizon.node_errata.js' type='text/javascript' charset='utf-8'></script>
{% endblock %}
{% comment %} Tuskar-UI Client-side Templates (These should *not* be inside the "compress" tag.) {% endcomment %}
{% include "client_side/templates.html" %}

View File

@ -1,66 +0,0 @@
Metadata-Version: 1.1
Name: tuskar-ui
Version: 2013.2.dev66.ga4cfd9c
Summary: Tuskar Management Dashboard
Home-page: http://www.openstack.org/
Author: OpenStack
Author-email: openstack-dev@lists.openstack.org
License: UNKNOWN
Description: =========
Tuskar UI
=========
**Tuskar UI** is a user interface for
`Tuskar <https://github.com/openstack/tuskar>`__, a management API for
OpenStack deployments. It is a plugin for `OpenStack
Horizon <https://wiki.openstack.org/wiki/Horizon>`__.
High-Level Overview
-------------------
Tuskar UI endeavours to be a stateless UI, relying on Tuskar API calls
as much as possible. We use existing Horizon libraries and components
where possible. If added libraries and components are needed, we will
work with the OpenStack community to push those changes back into Horizon.
Interested in seeing Tuskar and Tuskar UI in action?
`Watch a demo! <https://www.youtube.com/watch?v=-6whFIqCqLU>`_
Installation Guide
------------------
Use the `Installation Guide <http://tuskar-ui.readthedocs.org/en/latest/install.html>`_ to install Tuskar UI.
License
-------
This project is licensed under the Apache License, version 2. More
information can be found in the LICENSE file.
Contact Us
----------
Join us on IRC (Internet Relay Chat)::
Network: Freenode (irc.freenode.net/tuskar)
Channel: #tuskar
Or send an email to openstack-dev@lists.openstack.org.
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: OpenStack
Classifier: Framework :: Django
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 2.6
Classifier: Topic :: Internet :: WWW/HTTP

View File

@ -1,197 +0,0 @@
.mailmap
.pylintrc
HACKING.rst
LICENSE
MANIFEST.in
Makefile
README.rst
_10_admin.py.example
_20_project.py.example
_50_tuskar.py.example
local_settings.py.example
manage.py
requirements.txt
run_tests.sh
setup.cfg
setup.py
test-requirements.txt
tox.ini
.tx/config
bin/less/lessc
bin/lib/less/browser.js
bin/lib/less/colors.js
bin/lib/less/cssmin.js
bin/lib/less/functions.js
bin/lib/less/index.js
bin/lib/less/parser.js
bin/lib/less/rhino.js
bin/lib/less/tree.js
bin/lib/less/tree/alpha.js
bin/lib/less/tree/anonymous.js
bin/lib/less/tree/assignment.js
bin/lib/less/tree/call.js
bin/lib/less/tree/color.js
bin/lib/less/tree/comment.js
bin/lib/less/tree/condition.js
bin/lib/less/tree/dimension.js
bin/lib/less/tree/directive.js
bin/lib/less/tree/element.js
bin/lib/less/tree/expression.js
bin/lib/less/tree/import.js
bin/lib/less/tree/javascript.js
bin/lib/less/tree/keyword.js
bin/lib/less/tree/media.js
bin/lib/less/tree/mixin.js
bin/lib/less/tree/operation.js
bin/lib/less/tree/paren.js
bin/lib/less/tree/quoted.js
bin/lib/less/tree/rule.js
bin/lib/less/tree/ruleset.js
bin/lib/less/tree/selector.js
bin/lib/less/tree/url.js
bin/lib/less/tree/value.js
bin/lib/less/tree/variable.js
doc/Makefile
doc/make.bat
doc/source/HACKING.rst
doc/source/README.rst
doc/source/conf.py
doc/source/devstack_baremetal.rst
doc/source/index.rst
doc/source/install.rst
tools/install_venv.py
tools/with_venv.sh
tuskar_ui/__init__.py
tuskar_ui/cached_property.py
tuskar_ui/exceptions.py
tuskar_ui/forms.py
tuskar_ui/handle_errors.py
tuskar_ui/tables.py
tuskar_ui/utils.py
tuskar_ui/workflows.py
tuskar_ui.egg-info/PKG-INFO
tuskar_ui.egg-info/SOURCES.txt
tuskar_ui.egg-info/dependency_links.txt
tuskar_ui.egg-info/not-zip-safe
tuskar_ui.egg-info/requires.txt
tuskar_ui.egg-info/top_level.txt
tuskar_ui/api/__init__.py
tuskar_ui/api/flavor.py
tuskar_ui/api/heat.py
tuskar_ui/api/node.py
tuskar_ui/api/tuskar.py
tuskar_ui/infrastructure/__init__.py
tuskar_ui/infrastructure/dashboard.py
tuskar_ui/infrastructure/flavors/__init__.py
tuskar_ui/infrastructure/flavors/panel.py
tuskar_ui/infrastructure/flavors/tables.py
tuskar_ui/infrastructure/flavors/tabs.py
tuskar_ui/infrastructure/flavors/tests.py
tuskar_ui/infrastructure/flavors/urls.py
tuskar_ui/infrastructure/flavors/views.py
tuskar_ui/infrastructure/flavors/workflows.py
tuskar_ui/infrastructure/flavors/templates/flavors/create.html
tuskar_ui/infrastructure/flavors/templates/flavors/details.html
tuskar_ui/infrastructure/flavors/templates/flavors/index.html
tuskar_ui/infrastructure/nodes/__init__.py
tuskar_ui/infrastructure/nodes/forms.py
tuskar_ui/infrastructure/nodes/panel.py
tuskar_ui/infrastructure/nodes/tables.py
tuskar_ui/infrastructure/nodes/tabs.py
tuskar_ui/infrastructure/nodes/tests.py
tuskar_ui/infrastructure/nodes/urls.py
tuskar_ui/infrastructure/nodes/views.py
tuskar_ui/infrastructure/nodes/templates/nodes/_nodes_formset_field.html
tuskar_ui/infrastructure/nodes/templates/nodes/_nodes_formset_form.html
tuskar_ui/infrastructure/nodes/templates/nodes/_overview.html
tuskar_ui/infrastructure/nodes/templates/nodes/_register.html
tuskar_ui/infrastructure/nodes/templates/nodes/details.html
tuskar_ui/infrastructure/nodes/templates/nodes/index.html
tuskar_ui/infrastructure/nodes/templates/nodes/register.html
tuskar_ui/infrastructure/overcloud/__init__.py
tuskar_ui/infrastructure/overcloud/forms.py
tuskar_ui/infrastructure/overcloud/panel.py
tuskar_ui/infrastructure/overcloud/tables.py
tuskar_ui/infrastructure/overcloud/tabs.py
tuskar_ui/infrastructure/overcloud/tests.py
tuskar_ui/infrastructure/overcloud/urls.py
tuskar_ui/infrastructure/overcloud/views.py
tuskar_ui/infrastructure/overcloud/templates/overcloud/_detail_overview.html
tuskar_ui/infrastructure/overcloud/templates/overcloud/_role_edit.html
tuskar_ui/infrastructure/overcloud/templates/overcloud/_undeploy_confirmation.html
tuskar_ui/infrastructure/overcloud/templates/overcloud/_undeploy_in_progress.html
tuskar_ui/infrastructure/overcloud/templates/overcloud/detail.html
tuskar_ui/infrastructure/overcloud/templates/overcloud/node_counts.html
tuskar_ui/infrastructure/overcloud/templates/overcloud/overcloud_role.html
tuskar_ui/infrastructure/overcloud/templates/overcloud/role_edit.html
tuskar_ui/infrastructure/overcloud/templates/overcloud/scale_node_counts.html
tuskar_ui/infrastructure/overcloud/templates/overcloud/undeploy_confirmation.html
tuskar_ui/infrastructure/overcloud/templates/overcloud/undeployed_configuration.html
tuskar_ui/infrastructure/overcloud/templates/overcloud/undeployed_overview.html
tuskar_ui/infrastructure/overcloud/workflows/__init__.py
tuskar_ui/infrastructure/overcloud/workflows/scale.py
tuskar_ui/infrastructure/overcloud/workflows/scale_node_counts.py
tuskar_ui/infrastructure/overcloud/workflows/undeployed.py
tuskar_ui/infrastructure/overcloud/workflows/undeployed_configuration.py
tuskar_ui/infrastructure/overcloud/workflows/undeployed_overview.py
tuskar_ui/infrastructure/static/bootstrap/less/variables.less
tuskar_ui/infrastructure/static/infrastructure/angular_templates/numberpicker.html
tuskar_ui/infrastructure/static/infrastructure/js/horizon.capacity.js
tuskar_ui/infrastructure/static/infrastructure/js/horizon.d3circleschart.js
tuskar_ui/infrastructure/static/infrastructure/js/horizon.d3singlebarchart.js
tuskar_ui/infrastructure/static/infrastructure/js/tuskar.formset_table.js
tuskar_ui/infrastructure/static/infrastructure/js/tuskar.js
tuskar_ui/infrastructure/static/infrastructure/js/tuskar.menu_formset.js
tuskar_ui/infrastructure/static/infrastructure/js/tuskar.templates.js
tuskar_ui/infrastructure/static/infrastructure/js/angular/horizon.number_picker.js
tuskar_ui/infrastructure/static/infrastructure/less/bootstrap.less
tuskar_ui/infrastructure/static/infrastructure/less/breadcrumbs.less
tuskar_ui/infrastructure/static/infrastructure/less/buttons.less
tuskar_ui/infrastructure/static/infrastructure/less/capacities.less
tuskar_ui/infrastructure/static/infrastructure/less/flavor_usages.less
tuskar_ui/infrastructure/static/infrastructure/less/formsets.less
tuskar_ui/infrastructure/static/infrastructure/less/horizon_upgrades.less
tuskar_ui/infrastructure/static/infrastructure/less/individual_pages.less
tuskar_ui/infrastructure/static/infrastructure/less/infrastructure.less
tuskar_ui/infrastructure/static/infrastructure/less/numberpicker.less
tuskar_ui/infrastructure/static/infrastructure/less/tables.less
tuskar_ui/infrastructure/static/infrastructure/tests/formset_table.js
tuskar_ui/infrastructure/templates/client_side/_modal_chart.html
tuskar_ui/infrastructure/templates/client_side/templates.html
tuskar_ui/infrastructure/templates/formset_table/_row.html
tuskar_ui/infrastructure/templates/formset_table/_table.html
tuskar_ui/infrastructure/templates/formset_table/menu_formset.html
tuskar_ui/infrastructure/templates/horizon/common/_form_errors.html
tuskar_ui/infrastructure/templates/horizon/common/_form_field.html
tuskar_ui/infrastructure/templates/horizon/common/_form_fields.html
tuskar_ui/infrastructure/templates/horizon/common/_horizontal_field.html
tuskar_ui/infrastructure/templates/horizon/common/_horizontal_fields.html
tuskar_ui/infrastructure/templates/horizon/common/_items_count_domain_page_header.html
tuskar_ui/infrastructure/templates/horizon/common/_items_count_tab_group.html
tuskar_ui/infrastructure/templates/infrastructure/_fullscreen_workflow.html
tuskar_ui/infrastructure/templates/infrastructure/_fullscreen_workflow_base.html
tuskar_ui/infrastructure/templates/infrastructure/_performance_chart.html
tuskar_ui/infrastructure/templates/infrastructure/_scripts.html
tuskar_ui/infrastructure/templates/infrastructure/_workflow_base.html
tuskar_ui/infrastructure/templates/infrastructure/base.html
tuskar_ui/infrastructure/templates/infrastructure/base_detail.html
tuskar_ui/infrastructure/templates/infrastructure/qunit.html
tuskar_ui/infrastructure/templatetags/__init__.py
tuskar_ui/infrastructure/templatetags/chart_helpers.py
tuskar_ui/test/__init__.py
tuskar_ui/test/formset_table_tests.py
tuskar_ui/test/helpers.py
tuskar_ui/test/selenium.py
tuskar_ui/test/settings.py
tuskar_ui/test/urls.py
tuskar_ui/test/api_tests/__init__.py
tuskar_ui/test/api_tests/heat_tests.py
tuskar_ui/test/api_tests/node_tests.py
tuskar_ui/test/api_tests/tuskar_tests.py
tuskar_ui/test/test_data/__init__.py
tuskar_ui/test/test_data/exceptions.py
tuskar_ui/test/test_data/flavor_data.py
tuskar_ui/test/test_data/heat_data.py
tuskar_ui/test/test_data/node_data.py
tuskar_ui/test/test_data/tuskar_data.py
tuskar_ui/test/test_data/utils.py

View File

@ -1 +0,0 @@
http://tarballs.openstack.org/python-tuskarclient/python-tuskarclient-master.tar.gz#egg=python-tuskarclient

View File

@ -1 +0,0 @@

View File

@ -1,20 +0,0 @@
pbr>=0.6,!=0.7,<1.0
django>=1.4,<1.6
django_compressor>=1.3
django_openstack_auth>=1.1.3
eventlet>=0.13.0
kombu>=2.4.8
iso8601>=0.1.8
netaddr>=0.7.6
python-cinderclient>=1.0.6
python-glanceclient>=0.9.0
python-heatclient>=0.2.3
python-keystoneclient>=0.4.1
python-novaclient>=2.15.0
python-neutronclient>=2.3.0,<3
python-swiftclient>=1.5
python-ceilometerclient>=1.0.6
pytz>=2010h
lockfile>=0.8
python-ironicclient
python>=tuskarclient

View File

@ -1 +0,0 @@
tuskar_ui

View File

@ -1,59 +0,0 @@
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from django import forms
from django.utils.translation import ugettext_lazy as _
import netaddr
def fieldset(self, *args, **kwargs):
"""A helper function for grouping fields based on their names."""
prefix = kwargs.pop('prefix', None)
names = args or self.fields.keys()
for name in names:
if prefix is None or name.startswith(prefix):
yield forms.forms.BoundField(self, self.fields[name], name)
class NumberInput(forms.widgets.TextInput):
input_type = 'number'
class NumberPickerInput(NumberInput):
def __init__(self, attrs=None):
default_attrs = {'hr-number-picker': '', 'ng-cloak': '', }
if attrs:
default_attrs.update(attrs)
super(NumberPickerInput, self).__init__(default_attrs)
class MACField(forms.fields.Field):
def clean(self, value):
class mac_dialect(netaddr.mac_eui48):
"""Same validation as Nova uses."""
word_fmt = '%.02x'
word_sep = ':'
try:
return str(netaddr.EUI(
value.strip(), version=48, dialect=mac_dialect)).upper()
except (netaddr.AddrFormatError, TypeError):
raise forms.ValidationError(_(u'Enter a valid MAC address.'))
class NetworkField(forms.fields.Field):
def clean(self, value):
try:
return str(netaddr.IPNetwork(value, version=4))
except netaddr.AddrFormatError:
raise forms.ValidationError(_("Enter valid IPv4 network address."))