[new][horizon] horizon 10.0.0 release (newton)
We are grateful to announce the release of: horizon 10.0.0: OpenStack Dashboard This release is part of the newton release series. For more details, please see below. 10.0.0 ^^^^^^ Angular actions now should return a promise that resolves with an object structured in a way to indicate what the action did (or didn't do). JavaScript can now access the Keystone Token. Many of Horizons XStatic packages were updated during this cycle. A Details page for a resource type (e.g. Images) may now use the Angular application-level registry to register views so developers may easily create or extend details views. In this implementation these views are presented as tabs within the Details page. In an effort to standarize our HTML class naming conventions, we will be updating various class names to use dashes, instead of underscore or camelcasing, to match with Bootstrap's convention. Horizon no longer requires Nova (or Glance) to function; it will run as long as keystone is present (for instance, swift-only deployments). The Images panel now may be configured to use either the legacy or Angular code. To aid in continued maintenance of Horizon as a themable and customizable framework, the highly customized 'default' styles are being dropped in favor of standard Bootstrap styles. The 'default' theme will only house scss variable changes going forward. Angular components now exist to provide simple-to- configure panels and tables, based off of registry information about resources (e.g. Instances). Modal sizes now inherit from Bootstrap's theme variables. We now automatically determine the static folder location for xstatic packages being used by Horizon. New Features ************ * An action-result service provides convenience methods for construction of the result, and for parsing of a resolved object * [blueprint admin-neutron-l3-agent (https://blueprints.launchpad.net/horizon/+spec/admin- neutron-l3-agent)] Add support for managing neutron L3 agent hosts. The admin screen for system information now provides links / views to see what routers reside on what hosts. In addition, the admin view of routers now also provides a list of where the router is hosted and the link to see what other routers are sharing the same host. * Horizon and Horizon Plugins can access the Keystone Token from JavaScript so that they can make CORS calls directly to other OpenStack Services. This can enable much more responsive UI. * Added a new "ANGULAR FEATURES" dictionary to the settings. This allows simple toggling of new AngularJS features. * Added the Scheduler Hints tab to the new Launch Instance workflow to allow adding scheduler hints to an instance at launch. In addition to adding custom key-value pairs, the user can also choose from properties in the glance metadata definitions catalog that have the OS::Nova::Server resource type and scheduler_hints properties target. * Added settings support to the angular workflow service so each step in a workflow can specify a boolean setting that must pass in order for the step to be displayed. * [blueprint manage-ips Add ability to manage floating IPs in syspanel (https://blueprints.launchpad.net/horizon/+spec/manage- ips)] Admin dashboard Floating IPs panel has been added to Horizon. * [blueprint admin-views-filter-first (https://blueprints.launchpad.net/horizon/+spec/admin-views-filter- first)] This blueprint provides a configurable setting to allow operators require admin users to provide a search criteria first before loading data into admin views. * [blueprint angular-schema-form (https://blueprints.launchpad.net/horizon/+spec/angular-schema- form)] Added the Angular Schema Form library to Horizon. This allows developers to build angular forms and workflows from JSON. Read more at http://schemaform.io/ (http://schemaform.io/) * [blueprint angular-table-directive (https://blueprints.launchpad.net/horizon/+spec/angular-table- directive)] This blueprint provides a way for developers to programatically declare an Angular table vs writing HTML markup. It reduces the boilerplate HTML code. For a basic table, you need to pass in the data and the column configuration into the *hz-dynamic- table* directive. * [blueprint angular-template-overrides (https://blueprints.launchpad.net/horizon/+spec/angular-template- overrides)] This blueprint provides a way for deployers to use a theme to override HTML fragments used by Angular code in Horizon. For example, to override the launch instance help panel when the 'material' theme is used, create openstack_dashboard/themes/material/static/templates/framework /widgets/help-panel/help-panel.html. All of the client side templates are now compiled into a single JavaScript file that is minified and is given as an additional file in the manifest.json file. * [blueprint cinder-consistency-groups (https://blueprints.launchpad.net/horizon/+spec/cinder-consistency- groups)] This feature adds 2 new tabs to the Project Volumes panel. The first tab will display Consistency Groups, and the second tab will display Consistency Group Snapshots. Consistency Groups (CG) contain existing volumes, and allow the user to perform actions on the volumes in one step. Actions include: create/update/delete CGs, snapshot all volumes in a CG, clone all volumes in a CG, and create a new CG and volumes from a CG snapshot. Policies associated with Consistency Groups exist in the Cinder policy file, and by default, all actions are disabled. * [blueprint configurable-boot-sources (https://blueprints.launchpad.net/horizon/+spec/configurable-boot- sources)] Allows administrators to restrict which sources are available to boot from in the Launch Instance modal by adding 4 new settings to LAUNCH_INSTANCE_DEFAULTS (disable_image, disable_instance_snapshot, disable_volume, disable_volume_snapshot). * Create from a local file feature is added to both Angular and Django Create Image workflows. It works either in a 'legacy' mode which proxies an image upload through Django, or in a new 'direct' mode, which in turn implements [blueprint horizon-glance-large- image- upload (https://blueprints.launchpad.net/horizon/+spec/horizon- glance- large-image-upload)]. To use the direct mode HORIZON_IMAGES_UPLOAD_MODE setting should be changed to 'direct' value along with changing glance-api.conf cors.allowed_origin parameter to the URL from which Horizon is served. * Added ability to render angular row actions with additional details that explain the purpose of the action. These are rendered as tiles and are meant to depict the next steps a user might want to take for a given resource. * The port-details page has a new tab for managing Allowed Address Pairs. This tab and its features will only be available when this extension is active in Neutron. The Allowed Address Pairs tab will enable creating, deleting, and listing address pairs for the current port. * Allows to restrict CIDR range for user private network <https://blueprints.launchpad.net/horizon/+spec/restrict-private- network-input> * [blueprint Supports extra properties in project and user (https://blueprints.launchpad.net/horizon/+spec/support-extra-prop- for-project-and-user)] Support an ability to treat additional information for project and user as an extra attribute. * [blueprint navigation-improvements (https://blueprints.launchpad.net/horizon/+spec/navigation- improvements)] Breadcrumb navigation has been added across Horizon. * Support a parameter to specify subnet or fixed IP address when creating port. * A directive (hz-details) provides the ability to intelligently display a set of views (typically for a Details context). * A generic Details display parses the location to determine the resource type, and displays relevant details views for that type. * A Descriptor concept allows convenient passing of information that can globally identify an object, for use in generic views and actions. * Horizon now has a (non-navigational) route in Django so generic details pages are deep-linked. * A shared Django template is now available for use by any Angular page. * Adds complete support for Glance v2 so that Horizon no longer depends on having a Glance v1 endpoint in the Keystone catalog. Also provides code compatibility between Glance v1 and v2. * Adds a new config value called IMAGES_ALLOW_LOCATION, which allows users to set locations when creating or updating images. Depending on the Glance version, the ability to set locations is controlled by policies and/or configuration values. * Nova and Glance are no longer required in order to run Horizon. As long as keystone is present, Horizon will run correctly. * the "ANGULAR_FEATURES" setting now allows for a key "images_panel". If set to "True", then the Angular Images panel will be used, while the Python version will be used if set to "False". * Integration tests for Image features may also be toggled in openstack_dashboard/test/integration_tests/horizon.conf using the 'panel_type' feature, either set to 'legacy' or 'angular' to match the enabled panel type. * Horizon support for network IP availability feature. Enable Horizon admin network dashboard to be able to display IP availability. Enables 2 columns in the admin network subnets table to display the allocated IPs in a given subnet and unallocated free IPs for each subnet in the network. * Neutron network type for Geneve tunneling protocol is now supported. * Neutron provider network types for Midonet are now supported. To enable them, specify these network types in "supported_provider_types" in the configuration file. * [blueprint operation-history-log (https://blueprints.launchpad.net/horizon/+spec/operation-history- log)] Added a feature to log operation history of users. * Neutron provider network configuration now becomes more flexible so that operators can configure various provider network parameters including new network type, segmenatiton ID ranges and so on based on neutron network back-ends they use. * Added new setting INTEGRATION_TESTS_SUPPORT, default value is *False*. This value is used when running *manage.py compress* command, so by default all static assets and html classes used by integration tests are removed from Horizon production build. Integration tests gate job sets this variable to *True* and recompresses static assets. * The hz-resource-table directive takes in a Heat resource name (e.g. 'OS::Nova::Server') and uses the Angular registry to provide actions, columns, and summary views. * The hz-resource-panel directive takes in a Heat resource name (e.g. 'OS::Nova::Server') and displays an appropriate header and allows content to be transcluded to build the panel page. * Add a new setting OVERVIEW_DAYS_RANGE. It defines the default date range in the Overview panel meters - either today minus N days (if the value is integer N), or from the beginning of the current month until today (if set to None). This setting is be used to limit the amount of data fetched by default when rendering the Overview panel. The default value is 1, which differs from the past behaviour, since it caused serious lags on large deployments. * Modal sizes now inherit their value from theme variables. Two additional sizes are available now for use in Horizon, extra to the standard 3 sizes of Bootstrap Modals, modal-xs and modal-xl. * Added the "TOKEN_DELETE_DISABLED" setting, so that deployers can customise the revocation of a users token on log out. Known Issues ************ * If you set 'images_panel' to False for the ANGULAR_FEATURES option (which is not the default) and configure Horizon to use Glance v2, Ramdisk ID and Kernel ID don't show properly on the "Edit Image" screen. Upgrade Notes ************* * Although it's not required, it's best to make your actions return promises with the expected structure. * The "TEMPLATE_*" settings have been replaced with a "TEMPLATE" dict. This will likely cause issues when porting settings to this version of Horizon. The TEMPLATE_DEBUG setting has been removed and is tied to the DEBUG setting now. A detailed explanation of this dict can be found at https://docs.djangoproject.com/en/1.10/ref/settings/#templates * The "is_authenticated()" and "is_anonymous()" functions in Django OpenStack Auth's "User" class are properties when running under Django 1.10, and no longer take a margin parameter. * Horizon currently supports both Angular 1.3.x and Angular 1.4.x, but will remove 1.3 support in the future. See Migrating from 1.3 to 1.4 (https://docs.angularjs.org/guide/migration#migrating- from-1-3-to-1-4) * The breadcrumb navigation inside the details pages now applies across Horizon. A small change in the logic means that "custom_breadcrumb" items in the context no longer need to specify the panel name and link. See [blueprint navigation-improvements (https://blueprints.launchpad.net/horizon/+spec/navigation- improvements)] * The final django TEMPLATE_LOADERS configuration will now be generated from TEMPLATE_LOADERS, CACHED_TEMPLATE_LOADERS and ADD_TEMPLATE_LOADERS settings. See the settings documentation for more information. * It is no longer necessary to include the version suffix into OPENSTACK_KEYSTONE_URL setting. Thanks to a recent update of django- openstack-auth library as of 2.3.0 release, Horizon will append the proper version suffix to the URL based on the value stored inside OPENSTACK_API_VERSIONS['identity'] setting. * (optional) Use the common Angular template as the basis of any Angular pages to minimize boilerplate code and to ensure that we use similar features/framing. * If the 'default' theme is still required for legacy overrides to function, simply copy the styles in the 'default' theme into a pre- existing theme or create a new custom theme. * The "status_unknown" table row class has been replaced with the default bootstrap "warning" class. * Many Javascript files have moved to new locations in the horizon/lib static folder. Previously the locations of some files were hard- coded but now the locations are determined automatically based on the xstatic package name. Deprecation Notes ***************** * HORIZON_IMAGES_ALLOW_UPLOAD setting is deprecated and should be gradually replaced with HORIZON_IMAGES_UPLOAD_MODE setting. * Router rules is a horizon extension provided by Big Switch Networks. As part of the horizon-vendor-split work, we drop the extension from upstream horizon. It is now available as a separate plugin at https://github.com/bigswitch/horizon-bsn * LBaaS v1 dashboard is now deprecated and will be removed in Ocata release. LBaaS v1 feature was removed from neutron-lbaas in Ocata and this functionality in Horizon is only for backward compatibility so that operators can upgrade Horizon first. Note that the Dashboard support for LBaaS v2 is provided as a Horizon plugin via neutron- lbaas-dashboard project. * All instances of HTML class 'd3_pie_chart_usage' to 'pie-chart- usage' All instances of HTML class 'd3_pie_chart_distribution' to 'pie-chart-distribution' * The 'default_ipv4_subnet_pool_label' and 'default_ipv6_subnet_pool_label' options were deprecated in the Mitaka release and are no longer valid in the Newton release. Starting with Mitaka you can create one default subnet pool per address family through the Neutron API. These subnet pools will automatically show up in the subnet pool list using the name of the pool as label. * Inline Edit functionality for Horizon tables is now deprecated and will be removed in Horizon P (12.0) The functionality was removed from the following tables. Admin Volume Types table, Admin Metadata Definitions table, Identity Projects table and Identity Users table * Fullscreen Modals have been deprecated in favor of modal-xl. Currently, it is set to 95% of the viewable screen width. Security Issues *************** * Making Keystone Tokens available to JavaScript slightly increases the risk of a Token being captured. If you don't need this functionality, it can be disabled by setting the following option in your local_settings: ENABLE_CLIENT_TOKEN = False Bug Fixes ********* * Hardcoded admin role is replaced with RBAC policy check in panels. Now users access to the panels is defined by policies and not user roles. The change affected the Admin dashboard and its panels (Overview, Hypervisors, Instances and Metadata Definitions). * LP-1585682 is fixed which grants Horizon the ability to properly version Keystone webpath endpoints (URLs like http://<hostip>/identity instead of http://<hostip>:5000). * https://bugs.launchpad.net/horizon/+bug/1508571 Other Notes *********** * XStatic-Angular updated from 1.3.7.0 to 1.4.10.1 * XStatic-Angular-FileUpload updated from 1.4.0.1 to 12.0.4.0 * XStatic-Bootstrap-SCSS updated from 3.2.0.0 to 3.3.7.0 * XStatic-Bootswatch updated from 3.3.5.3 to 3.3.6.0 * XStatic-Font-Awesome updated from 4.3.0.0 to 4.5.0.0 * XStatic-Jasmine updated from 2.1.2.0 to 2.4.1.1 * XStatic-MDI updated from 1.1.70.1 to 1.4.57.0 * XStatic-Rickshaw updated from 1.5.0.0 to 1.5.1.0 * XStatic-Smart-Table updated from 1.4.5.3 to 1.4.13.1 * Glance v2 doesn't support the copy-from feature, so this feature is disabled in Horizon when using Glance v2. Changes in horizon 9.0.0.0rc1..10.0.0 ------------------------------------- f9b676a Imported Translations from Zanata 3ce1714 Update UPPER_CONSTRAINTS_FILE for stable/newton d9c214e Imported Translations from Zanata 79aa43b Imported Translations from Zanata 5869854 Fix Launch Instance without Cinder 5ed1b8d Imported Translations from Zanata 02ceefd Fix metadata removal d27528e Fix compatibility issues with Django 1.10 a33ac87 Multiple integration test fixes 74c9c15 Imported Translations from Zanata a3e058e Imported Translations from Zanata aa83294 Fix the collection of integration tests artifacts 6c3f962 Imported Translations from Zanata 6512bf2 Fix getting the images list in Admin->Images e066530 Imported Translations from Zanata bba91f5 Imported Translations from Zanata f55f1d8 Allow translator to control word order in delete confirm dialog 529313a Update .gitreview for stable/newton 4304971 Updated from global requirements aaa3ad4 Imported Translations from Zanata e15b61f Update admin filter first setting to a dict 2925562 Imported Translations from Zanata bc1fb49 Server-side filtering for Identity 45dedbb Imported Translations from Zanata c4ddce4 Do not embed unsafe content cf0aac9 Support for Glance v2 bff4854 Imported Translations from Zanata 0751638 Fix typo in Keypair creation in Launch Instance panel 2c56563 Remove the lowercase case boolean type in heat param_type 7bc8558 Imported Translations from Zanata c7df8a9 Allow magic search to be initialized by an event c2eba7c standardize release note page ordering 9628598 Fix five typos 041af0f Replace table row 'status_unknown' class with 'warning' class 7ec991e Imported Translations from Zanata 5afc9a9 Add material theme icon for star outline 766b426 Add material mapping for filter icon fbb98f6 Incorrect Test Data of Pool2 6fb02c5 Update action for namespaces table public/protected attributes 6a75fc2 Imported Translations from Zanata a084444 Cleanup setProperties in image module 313bc69 Fix comment typo 76833dd Add Python 3.5 classifier b056587 Enable Python 3.5 testing and fix tests 63ddedf Fix error detection in horizon test suite b26a988 Update comment in _10_set_custom_theme.py.example a0a8c07 Deprecate LBaaS v1 dashboard cd609a6 Imported Translations from Zanata deb4cc1 Add releasenotes for bug #1161144 ed3a382 Fix for typo in Horizon 9afd7d0 Modify use of assertTrue(A in B) 9d7b751 Implement admin_filter_first setting in Admin>Volumes 196be9a A follow up patch to #1570510 5627065 Escape backslash in the angular_escapes filter b7557f2 Imported Translations from Zanata 325309d horizon documentation corrections 9db0f0c Hard-code stubbed novaclient api_version to 2.1 289a9c5 Imported Translations from Zanata 1d0b5de doc: Use "warning" directive instead of "important" 9fcc9a4 Fix document sphinx error and warnings d8df8bf Add message for a result of update metadata e8298d9 Check if volume type encryption is enabled before retrieving the data a988f3c All Table Templates should support template overrides 1e7bd33 rename LaunchInstanceModal spec describe function 455a1ba Add rel note and example for TOKEN_DELETE_DISABLED d599fde The neutron policy file is out of date. This patch updates it to match neutron master. a465fe6 Server-side filtering for admin volumes c38318d Revert "Escape blackslash in the angular_escapes filter" 1918ea3 [TrivialFix] Ignore node_modules while we run flake8 test db032d6 fix table delete bug & collect table events 46f9989 remove unused quotas code f1cce3a Implements filter_first in routers bbd5d81 Documentation for translation in horizon 7e58cae Display username/project during password request da109c4 Updated from global requirements 0defe84 Imported Translations from Zanata 4b3157a [Trivial]Fix the number that failed to delete in swift 2ac3d51 Add the new device owner flag for HA router interface d580adb Escape blackslash in the angular_escapes filter 8e70469 FixedFilterAction.categorize: Make variable name generic and explain more in docs 9e2b2ba INSTANCE_LOG_LENGTH is missing from local_settings.py.example 8b46a83 Implements filter_first in networks 37cb18e Fix the parameter name in "allowed" function in "RestoreBackup" class 53bdad4 Ability to delete network items from their details page f60ecd0 Correct documentation around upper-constraints changes c64e132 Imported Translations from Zanata ede580c Incorrect param name in api.nova.server_delete f91d38b Fix unnecessary requests in angular image panel 8ec0ce0 Fix the issue workflow filter do not show all users 03ef147 Update create volume help text for angular workflow 7bf5ced Fix attribute email doesn't exist error in group panel 02b9e2e Fix intermittent integration test failures related to messages c930706 Updated from global requirements 175519c Imported Translations from Zanata 238d273 Project Creation from within Create User should work 210d420 hz-field-directive handle no value property 9445d15 Fix various issues with compressed angular templates and plugins 5894e15 Add a parameter fixed ip when creating a port c0d0c8c Add release note for package updates 1a0e284 Server-side filtering networks 2289190 Final changes to Angular Images before making default e8e1bdd Fix the parameter name in "allowed" function in "DeleteBackup" class 0c8b7c7 Imported Translations from Zanata c724777 Update create/edit image help text for angular workflow 7126d0d Use upper constraints for all jobs in tox.ini f5e8d61 Update the xstatic release process 053d0a6 Implement file update (edit) in Swift UI eac2099 Updated from global requirements ab11eef Supports extra properties in project and user 11e3828 Imported Translations from Zanata ece7915 Remove a misplaced double quote 115ff51 Updated from global requirements 88aaf89 Add filter action to Template Versions tables 07d33cf Prevent long names breaking table layouts 5c238e9 Add floating IP panel to admin dashboard adabe6e Remove admin_filter_first from horizon module to avoid confusion 3480693 Re-work static_settings to clean up 241eda4 Removed inline_edit functionality for tables f333ba1 Add ANGULAR_FEATURES toggle example 25ce4d7 Imported Translations from Zanata db9aebb Update Plugin Registry f85d2fd Fix the loss of JSON types when using multipart/form-data 2166e5a Support project column in admin view of NG images 79c2729 Updated from global requirements 3027c99 Syntactic sugar for setting multiple properties in registry 9c3f4ce Add unit tests to edit-image to improve coverage 4a9f988 Angular: Configuration of boot sources for launch instance a86c7d9 Remove Orchestration Resource Types names restriction d79a11e Show wait spinner after submit of wizard modal da2e935 Fix AttributeError in context_selection.py 21b723e Fix typo a0bd575 Hide nav in workflows if only one tab d526315 Fix typo in keystone_data.py 5a39ad7 Update the home-page in setup.cfg 33ceb91 Enable Angular Image panel 93af461 [Django] Allow to upload the image directly to Glance service ac404c4 Fix order of arguments in assertEqual 2807aa6 Remove router rules extension 1050755 Add ANGULAR_FEATURES setting dict 89ac0fc Imported Translations from Zanata 1342101 Restrict user private network cidr input 93b7edd Add more Nova API features for NG Instances a9da538 Add Try/Exception block to Network Forms 15909be modify the home-page info with the developer documentation d21fd86 Updated from global requirements 75427ad Pre-test hook for integration tests/deprecated 9814461 Imported Translations from Zanata 02594a7 Server-side filtering routers cf0c3bb Error in cinder quota RESTful api 60a265a [NG] Enhance Create Image workflow with upload tracking de1fa81 Imported Translations from Zanata 374e603 Use argparse instead of optparse 68f46ce Preview Page: Default Theme: Content Horizontally Scrolling 0e1279d [NG] Support local file upload in Create Image workflow 197b4b5 Add HTML lists to preview page 28c443f Do not send shared param when not allowed. b814a0a Add Apple OS X ".DS_Store" to ".gitignore" file cc76e4c Imported Translations from Zanata 21eed0b Remove openstack/common from the exclude list of flake8 in tox a536153 add translation and cleanup resource-browser-item.html 0b05f52 allow hiding help-button for first ng workflow step fc0b4e8 UX: System Information Overflow Fail 20bc6e1 Make 'switch' between legacy and Angular Images 79a86b3 UX: Add IPSec Policy Modal Hint List is hard to read 957d243 Updated from global requirements d9ba751 Imported Translations from Zanata bdbc683 Update Django 1.10 tox env 6f6f746 [Django 1.10] Fix urls.url wrong call 41e9d62 Remove embedded CSS 7580d15 Horizon Radio Buttons are now themeable. 8622e42 Allow global actions to execute 0e957dd Add Angular Schema Form 9ca0cc8 hz-images have transitional states defined 6ad2967 hz-resource-table handles transitional states 000c918 Imported Translations from Zanata 01720bd Horizon selects are now themable: DynamicTypedChoiceField 2e84d55 The sidebar caret should spin correctly. d829313 Do not allow spaces as key pair name 1268606 Fix missing 'THEME' key 7339641 Allow listFunction extra params 5e00cc5 Revert "i18n: trim whitespaces in extracted messages" a9fa029 [Django 1.10] Fix URL patterns again 27e9a03 Imported Translations from Zanata 299c661 Style: Update Image Metadata overflow fail Style: Host Aggregate: Update Metadata overflow fail a2b7c32 Fix unit test indentation and the test itself e3ef7ae Fix untranslated help text in Launch Instance window deda07c Memoize policy service 163489b Horizon selects are now themable: Project Panels 97bd050 Default subnet dns added to create network e5057c6 Correcting form_invalid get_context_data call 98002c8 Fix horizon-without-nova release note f9ba1ec Imported Translations from Zanata abf4ca6 Update devDependencies in package.json 26ee50f Updated from global requirements b353fd4 Imported Translations from Zanata 65f0f74 hz-dynamic-table: Column level permissions 64ded59 Update Plugin Registry 6868cb7 Remove old style policy checks 12f9ef8 Remove array metadata when no items + fix case 7a88458 Move get_filters to parent Class c2ec417 Resource Browser links now respect webroot c701552 Imported Translations from Zanata f730515 Remove 'default' theme styles 034f181 Ignore the test_report of integration test in .gitignore 989607e Stop memoizing on request argument in neutron api dd3cf51 Remove extraneous TODOs from Identity code 9c05819 Modified columns names in Admin->Hypervisor b507db7 Developer Registry Resource Browser dafa021 Remove multi select option on Resource types table 88984bc Add missing fields to Router Details page 018e99d Allow horizon to function without nova 7e65af5 Embed support for external data sinks into api.glance 32daa8c Imported Translations from Zanata b3658f7 No eslint errors in horizon.heattop.js 14f7b01 Fix for cinder api memoize issue 09b745a Imported Translations from Zanata e759783 No more no-unneeded-ternary eslint errors 4f1b6c4 No more block-scoped-var eslint errors 6cc5ce1 No more no-extra-parens eslint errors c3fd32b No more braces-style eslint errors 7cbd3b7 No more space-in-parens eslint errors 8f77a68 Allow ngdetails path to contain '/' 4577bf0 Cleanup the toastService in *.spec.js files 5752491 Updated from global requirements fb4b08f fix magic search bug 0eb0bd2 [TrivialFix] Hide expand in angular table if we haven't setSummaryTemplateUrl 617042b Allow wiring of <hz-dynamic-table> into <transfer-table> d6c0cdc Image uses hz-property for its drawer information 207513a NG Images Create Volume should use constant from images.module.js 8bbd310 [Django 1.10] Fix get_form uses kwargs c386d05 Imported Translations from Zanata 0aacdbe cleanup for ng create volume workflow ef9c96e Fix jasmine tests failing due to missing ng-file-upload dep baca291 Pay attention to Nova disabled quotas defined in a config file cf91124 Choose a server group when booting a VM with NG launch instance 8e55dd8 [TrivialFix]Remove the redundant required=True ccdb7b4 Fix show/hide password when clicking password icon 31e5672 Angular direct service access. 3ff5826 Adding hz-resource-property/-list and filter/value retrieval 8f35c43 Imported Translations from Zanata 63b3a2a Delete the useless API of heat cdddbcb Imported Translations from Zanata b934b16 Material theme form errors - fix red text on red bg 8fca93a Documentation and other improvements for registry 3157f29 Updating MDI todos. bb38c59 Revert "Router namespace not created in controller". 13339f2 Fixes issue where metadata is always removed on edit 31d6e2d Revert "Prevent creation of subnet via RBAC during new network creation" 454faaf Fix Django route for swift ui with folder path 1af2a96 Material: Progress Bars should allow text fdc17c5 Containers/Swift has unneccesary padding fca46ab Pre-populate the Angular template cache and allow template overrides f081f5c Document additional release process for xstatic 04ece63 Imported Translations from Zanata 70f1a0c Imported Translations from Zanata 2ef4286 Maximum/Total value now included as variable in msgid (i18n) 96aa8e4 Remove unused LOG 2cdb6b4 Updated from global requirements bc30e84 Imported Translations from Zanata ea1641b Instance Size (flavor) column is sortable when it should not 7b95e2a Magic-Search isn't rendered unless config is ready 712204e Fix the issue that it cannot do a policy check correctly 0363b56 Imported Translations from Zanata 2680b01 Correct the description for "Update Group" form fc02a02 Modify "Edit Flavor" action f87b58f i18n: trim whitespaces in extracted messages from AngularJS templates 2485681 Correct reraising of exception a01d61a Trivial fix to multi-domain description text e3d42c1 Imported Translations from Zanata a6990d4 Remove the wrong method from MigrateMaintenanceHost 146256f Modify hz-cell to use hz-field 7f69b0f [TrivialFix]Use the right indent for MigrateHostView ae94c55 Imported Translations from Zanata 077d386 Imported Translations from Zanata c135ffa Enable tox to run the subset test cases. f5c41b6 Do not import local/enabled when to run test 7fdebb6 Use "isspace()" to make code more simple 028aecc Take shared subnets into account for quotas 5c5f35a Angular LI:Make sure we always get all limits 21d5f07 [TrivialFix] Use more appropriate variable name 916a8d7 Imported Translations from Zanata 6639943 Fix create container modal style 086b33a Fix handling of swift object name == pseudo-folder name 3999685 Fix constant redirect on missing container name 0540141 Updated from global requirements eb60a8b Use absUrl, so WEBROOT isn't ignored on redirect c6251d9 Metadata definitions table with pagination shows inconsistent data 20f0ec4 Imported Translations from Zanata 9a535a1 Improve security rule notification message 3b5f73b Fix Magic Search Width Problems 878e53d Preview Page: Material: Code Icon fix 96399aa Registry-based client/server-side faceted search c8df615 Preview Page: Themable Checkbox should have different label 93bbec1 Preview Page: Form: Everything shouldn't say Legend a1f1e86 Add themable selects to the theme preview page 13727c6 [Django 1.10] Remove old style URLS 97f89f9 Add Django 1.10 tox env f16435b Imported Translations from Zanata d643153 Data Table Actions need context 9d05c25 Fix typo 'occured' -> 'occurred' f75db42 Implement Manage Attachments in Instances 77d7e26 Added correct cursor to components without the href attribute baf271e Imported Translations from Zanata b60275a Show name_or_id when router name is white space 5b865cf stop memoizing on request argument in cinder api 1f2f602 Do not allow "white space" as name field value b2b801b Add warning when falling back to insecure key generation 53fccaa Place Create Image in global actions, not batch actions da188a5 Correct IP Proto sec group rules help txt eb3180f Returning a tuple instead of list in list_extensions a05883d Addition of metadata for snapshot in VolumeSnapshot object 16d72cd Fix heat TemplateForm glance.image sizeformat error 797f823 Never import setting from openstack_dashboard 962abed Imported Translations from Zanata 9b0553d Second endpoint type default is not None 4724e10 Register Neutron Floating IP and Security Group names 4180e63 Allow metadata to be shown whether v1 or v2 glance data (NG) fd14a9e Set an empty string for no volume type directly e6cbcd3 Provide help-text capability for server-side filter choices f6cf068 Fixes JS linting error a865918 Add valuable exports to openstack RC file download 4570413 Add units in overview project page (limit summary) 3d3f99e Imported Translations from Zanata 5424cf2 Updated from global requirements 1676258 Changed auth_url in api/nova.py to point to keystone 488efd7 Implement admin_filter_first in Instances and Images Admin Views 0854bb9 Fix some spelling mistakes in horizon intermittantly should be intermittently finctionality should be functionality funcionalities should be functionalities 2004c89 Imported Translations from Zanata 81800f2 Line chart hover bubble unreadable fe04af0 Fix dropdowns sometimes not opening in integration tests 39eaca6 Add "Cancel" button for "Add static route" form 42e3c68 Add Line Charts to the Theme Preview Page 03ede4c Modals should inherit from the theme b450a03 Improved table deletion efficiency 2dd2aea Updated from global requirements 7e6ca1a Using registration for auto-generation of Image feature 3945b24 Adding Identity NGProjects API 0dba684 Use ng-file-upload to simplify JS API calls that upload files 4371f44 Imported Translations from Zanata 30e37aa Fix hz-dynamic-table formatting for magic-search and actions f20b3b1 Add check whether nova is enable or not in aggregate panel f464f4b Add a condition whether displaying the link jump to Encryption page 39937f9 [Trivial] Add required=False to router name in Create Router bc00c2f Imported Translations from Zanata 06e1272 Relocated error message to associated field and corrected grammar 957258a Fix css class for cancel button on metadata modal 9230998 Modified modal error message to display properly when present fffb269 Trivial: Remove unused 'horizon.app.core.images.events' ab9a0fe Imported Translations from Zanata 3b5d976 Add Angular Project Volumes Panel b1a2246 Add support for volume consistency group snapshots ffceacd Update Horizon for Angular 1.4 e6c7c33 Modify warning message abfaf12 Show instance lock/unlock actions based on the locked status 62b4e6f Escape angularjs templating in unsafe HTML 16a471f Clear confusing annotation in rest create_user 68ce548 Fix port validator b862494 UX: Remove duplicated view title under Settings section acf67e0 Change from client filter to server filter in metadata page c1ff33a Branding: Detail Actions need Context 448ad46 Updated from global requirements f85891a Register Image Names via .setNames() 96984f8 Fix coverage post job 01aa994 Adding resource panel and table features af62790 Updating heat policy file 1d886b7 Define Magic Search Event Constants eecb8bf Change default timeouts in integration tests fe76b2f Refactoring of network details pages d0ddd22 Horizon selects are now themable: Admin Panels 171dbf0 Modify exception message style according to i18n guidelines 7ddebc5 Imported Translations from Zanata aa005fe Add Try/Exception block to Networks Table ee16100 Update .gitignore for JetBrains(PyCharm) users 555503c Remove redundant conditional expression 4398017 Imported Translations from Zanata 144df75 make toggle buttons look consistent on ng modals 56fce18 Stop memoizing on request arguments in nova api 5c1f176 Table Column Sorting icons should inherit from theme cb19b47 Updated from global requirements 1392c33 Add help text to some DeleteAction 2d09356 Fix wrong data type of subnet_availabilities_list edfde8b ICMP type & code validation while adding Security Group rules cc42e94 Live migration auto schedule new host cb0d1ea admin permissions depends on OPENSTACK_KEYSTONE_ADMIN_ROLES 241cf1b Migrate swift ui to use hz-dynamic-table 6f17650 Hotfix the issue with too new Firefox version 71a7ac2 modified filter tab name for images shared by projects 6d8eb37 docs: Remove version from example c5d3192 Docs: Do not mention POT files 963d842 Imported Translations from Zanata 2b67ae6 Horizon selects are now themable: Launch Instance 3befade Prevent creation of subnet via RBAC during new network creation 35eb25a Make sure we always get all limits 4328c72 Enhance policy rules to workflow actions c0dce0f Make the date input box more neatly a45b6b9 Imported Translations from Zanata ca99225 Modified Instance Form Submit behavior. 1333729 Angular LI Required Icon isn't Brand Primary Color feb0ad0 Exclude networks with no subnets angular d63f93a Implement video capture for failed tests 0f16250 Imported Translations from Zanata e077903 Improvements to hz-dynamic-table 3850196 Handle non ASCII tenant names gracefully when downloading RC file 4e71364 updating keystone policy file d1134ad Updating nova policy file 873a761 In integration tests prevent getting volume size too early df14d97 API for getting and updating quotas ce8677e Validate minimum RAM for snapshot source 48ba05e Prevent duplicated ips on network topology ac4d09e Menu icon doesn't show in Resource Usage page 0b807ac Add Network IP Availability Extension b51aa1d Imported Translations from Zanata 2e6e528 Fix JS error when loading metadata modal e1d54c1 Updated from global requirements f56dc69 Make error message in modal a unified style bf9ad60 Deprecate the OPENSTACK_TOKEN_HASH_ENABLED option 2679c38 Default theme lacks support for dropup menus b3b8831 Add missing unit tests to NG launch instance c80edb1 Do not run exception handlers if test was skipped. 6735645 Theme Preview Page should include form-inline ff32f86 Updated from global requirements fe98059 Relax hz-table parent requirement e17935b getIdsOfType now returns all ids if type undefined c704623 Add Try/Exception to Extension Supported call in Ports 9468222 Flavors row level actions integration tests 313126a Navigational Breadcrumb should have contextual class 47d9c33 Horizon selects are now themable: Identity Panels db23d09 Allowing non-ASCII characters for Security Group names bf7c590 Output JS Karma test coverage reports to ./cover/ 1d60ffd Added safety check to initActions so unregistered types pass 75e9136 Remove redundant conditional expression 6e555e8 Pure project admin can't view Projects page d4a8023 Set some useful default values with the new launch wizard. 20c17d2 Horizon selects are now themable: Volumes c3da75a Delegate tearDown logic to addCleanup method 3aa3cc9 Adding generic table extensibility a459726 Fix untranslated strings and adding icon to OK button 26359bd Use Magic-Search for Security Groups step in Launch Instance 180bcf2 Correcting detail-row logic to not disrupt styling b2d7322 Panel static finder 5da5fd3 Reduce the default date range on Overview panel to 1 day a70a787 python 3.4 support for urlparse 0ee8895 Add router L3 agent info to info page b4e01a7 Imported Translations from Zanata b28f736 Updated from global requirements ce5fb26 Remove admin role name 'admin' hardcode 0c91293 Pass page_url instead of whole request to render 0c5c575 Add support for detail actions bf4f7e8 Updating package.json / npm packages df5b5fb add 'x' dismiss button to simpleModal 5ca5ecc Hide 'Back' and 'Next' button if the number of step is 1 5a9c4b0 Add feature to log operations of users to Horizon 408e358 Move out integration tests scaffolds from Horizon production code caa5e91 Fix Keystone version suffix when Keystone webpath is present 2481d2b Remove memoize that holds connections open 5934d83 Improve system info page 24b8528 Update the links of django docs to dev version 5fb8b29 Make the volume transfer name field required cd03154 Images uses generic/extensible details views 14f40d6 Use 'label' rather than 'button' for buttons in Edit Image 70056d0 Updated from global requirements eafec8e Temporarily disable the most problematic integration tests 1644a0e Add scrolling to the projector selector 388708b Updates horizon's copy of the cinder policy file c1e7afe Adding warning to Launch Instance when no availability zones eb0ecb3 Fix small typo 8a6667c Updated from global requirements 57962fb fixed row update of vpn table 315958a Use upper-constraints in tox test environments a0088d1 Fix the issue that delete actions are unclickable f3825a5 Fix project name refresh in project menu bar 4aef84b Support update volume type public status 926a451 Use 'trimmed' for blocktrans with multi-line contents 82e4089 Use 'Delete Instance' rather than 'Terminate' in legacy topology 4b870b1 Django compressor cannot find custom theme templates 6ec5dd3 Updated from global requirements 193756f Add module ngFileUpload as a dependency to main horizon.app module 75d30cb Don't attempt to list the "folder" contents of Swift objects f0a11af Disabling warnings of 'quote-props' bb1547c Add *args, **kwargs to ModalBackdropMixin's init method 1d7e388 Whitelist 'rm' in pep8 tox environment 18b351b Angular pages will reload if collapse/expand sidebar dbd9076 Fix doc build warnings and errors 1689596 Preview Page: Modal location is off c3278a2 table-detail (Angular) tables correct problem with row striping 0f4f613 Improve field name in User Detail 9402eb0 Fix untranslated strings in ng-instance 0ee3b7d Remove unnecessary help-panel in import keypair modal ee98b44 UX: Misaligned OpenStack Logo b743fef Trivial: Change message level from warning to info 11968c8 Generic details display framework e33cbd6 Don’t error if dhcp_agent_scheduler not enabled 340e67c Add policy checks in images panels f517259 Add recursive deletion to Swift UI 25010e1 [TrivialFix]Remove duplicated OS::Nova::Flavor registration e620120 Imported Translations from Zanata f58f3e0 Updated from global requirements bf10711 Add OS::Nova::Hypervisor display name registration 914a07a Refactor Orchectration Stacks menu 25b1aa8 Adding admin lookup of routers per l3 agent a337b89 Angular Table Directive cleanup 466a40e Magic Search inline doc cleanup 7515f1e allow hiding ng help-button for workflow steps 3536c71 Use correct casing on jQuery. 2ff54b5 Added tests for edit image description and name fb4c13e Imported Translations from Zanata 6ccd9fb Adding Create Image Action to angular images panel 802ec1f Change Metadata Display widget to case insensitive 6ad36e0 Fix existing metadata display in metadata widget dd80909 Adding old topology to compliment new 15ac226 Ensure horizon configurations could be customized c6bfe2d In integration tests wait 1 second after changing the password a7da1da Tutorials related to class Meta should use new style cba0d4d Add release notes for hz-dynamic-table directive e6e0a47 Fix key import in angular Launch Instance 654dfb7 Update tox.ini for pot files not in tree 334f9d3 Modify default sort in flavor table in ng-instance 0d5ce2e Updated from global requirements 1c0d8ce Simplify "Instance Count" verbiage cada006 Added 'help_url' example to local_settings.py 0d4c041 Trival: correct the 'View Credentials' icon 0054743 Fix translation test f54e28c Moved table action tutorial under tutorials adc9ab1 Cleaning up lint warnings for Image work 2e35583 Remove deprecated default_*_subnet_pool options f8cb496 Add semantic markup to Project Overview page 2e98d71 Fix file upload not setting content-type correctly d5b24d7 Use breadcrumb nav across Horizon df1cbab Adjust width so as not to be hidden by "help element” 6192bfd Images tables uses action promises 00b842e Horizon selects are now themable: Table Actions e2f4651 [Trivial] Wrong policy for Heat resource type details 94fd248 Heat Template Versions panel 86cf509 Updated from global requirements c140149 Add allowed address pair extension UI for neutron ports. 3b195c0 Removing unnecessary Angular Image files 83fc104 Imported Translations from Zanata 7da5ba6 Added tests for Identity Groups eac7e3a Remove unnecessary default-sort/ default-sort-reverse from hz-table bc2826e Choose a server group when booting a VM 5fdc140 Edit Extra Spec Value Fail e56aca8 Removed vestigial Magic-Search bar 27938b1 Added integration tests for Admin > System > Defaults Panel 7bc53a7 rename link "Download key pair" to "Re-generate key pair" d0dd62d [trivial] Add comma symbol to avoid misunderstanding 037d1c0 removing httplib2 test dependency 7b49a2c Add support for default dns for subnet fd569da Further Theming fixes for Launch Instances 5347015 Updated from global requirements 3e65e33 Improve Volume selection handling in LI 8caf61a Instance Detail Console Error is not consistent ea6d708 Remove broken "link" type action 8b76b5f Initial Clean Up Old Styles in _debt.scss fb33003 Angular Table Directive 421cdbc Tutorial for extending a workflow 0ec6dd5 Define row in cell_getter before check cell status 3963f03 No lock required for reading secret key 58553ba Add Charts to Preview Page 3e02f8d Imported Translations from Zanata bee35b5 Wait for user menu items to become visible before clicking them f0fb0a3 Imported Translations from Zanata 3881095 Fix js error when updating associations of metadata 4619696 Attach test logs individually for each test 8d32b0a Security group add/delete rules integration tests b9d8162 Fix incorrect breadcrumb on Admin > Details e86b1e4 Move magic-search bar out of the smart-table structure 79fcc65 Fix pre_test_hook fail and sidebar menu fail 32e8561 Improve Router integration tests coverage 7b43577 Fix the issue help_text is not translated in User Setting 69d44ce display error message below form element 0f1823f Remove unnecessary files on Create Network 9e506d1 Many dropdown actions are white text on white background 2b80998 Add filter function on resource type table a67d75f Enhances tox to not rely on run_tests eda58de Added test for check stacks creation and deletion functionality f623281 Provide integration test for managing a project's members d2b3cf9 Added test remove protected image 8741de4 [doc] fix syntax error in "Installing Horizon" 5d60039 Fix tests broken by novaclient 4.0.0 release 5d81611 Check that row is defined when wait cell status c407aa1 Imported Translations from Zanata e390773 Removed "Disable user" from dropdown menu for self 17176d0 Template loaders defined before local settings db604ac Remove redundant line to open login page 4153382 Allow delete servers in error state 2327e9c Improve error message of when Conflict error occur in ng-swift fb804ac Fix workflow bug in "Create Network" dialog 85b7725 Fix RST formatting errors 1372e7e Imported Translations from Zanata 4277f75 Updated from global requirements af0d4da Added a warning message if User Name is empty 4254165 Support scheduler hints when launching instance 84032cb Added tests for check RC files from API Access page 5b06cda Adding Edit Image Action to angular images panel 65eb9e9 Fix explicit waiting if instance has error status 755d07c Fix longtime tests 0039ac0 Add download button for volume transfer creds eb2c632 Sync segmentation ID ranges with Neutron ed7c766 Add Geneve support a968f9a Add network types used by midonet 27854cc Create Subnet missing cancel button d44eebe Added update image metadata test a4f3615 Add test for volumes attach/detach 8896835 Angular vs. Django Table Danger Button Inconsistency 718628f Updated from global requirements a4d58e7 Upgraded eslint-config-openstack to 1.2.4 b5673ec Net topology: Show console link only when useful 8da92fb Update JS dev dependencies 33b000a Fix doc build if git is absent 0d84df7 Change Registry Label for Server to Instance dbd4731 Use Chrome for JS unit tests b6e466f Set description field as required for nova-network 38a97f1 Added router set/clear gateway test. 5b118a2 Add test for check router create, edit, delete from Admin page 5fc69c9 Make neutron provider network configuration more flexible 3bf6e50 Default SESSION_ENGINE is not Local memory storage e4216cb Documentation on translation support in horizon plugins d76fb60 Reduced the left padding value on alert message 0032f3f Guard against instance row being displayed slowly in i9n tests ad18ae7 Add event broadcast to table row expansion fd92d8e Fix remaining Django 1.9 test failures 3b1d156 Add help text to image creation fields in Horizon ac63c15 Fix batch action buttons state loosening 7661db1 Fix Selenium Tests d6afbac Fix time in Nova test data b360c6f [TrivialFix] Rename run_tests.py to run_tests.sh cde3892 Imported Translations from Zanata fdf0bf6 Fix babel msgids to include tag attributes and entities 6bb41cd Added test for check launch volume as instance functionality 67caa07 Remove the DeleteInstance action unused name and classes ea92e73 Allow local/enabled panels to order relative to enabled panels 7f6942f Update the Administrator guide link with new one 8266e5d Tests for instance filtering are added f65ff0f Pass environment data to update stack action b05d3cf Add strip() to filter string in instances 80e52c1 Fix new Swift UI to work with Ceph backend 36ead14 Prevent transfer tables expanding out of modal 8e9b609 Refactor of BaseTestCase 0b3d811 Fix CheckBoxMixin:is_marked behavior 6a880bd Fix some trivial errors in plugin.rst e63b5d8 Make i9n tests correctly recognize the deletion of a last row in a table 9697a9f bump eslint version to 1.10.3 0c118e4 Remove PYTHONHASHSEED=0 from tox ff30c68 Use InAnyOrder for role creation mocks d2692ef NG launch instance: Clear fileInput value on text change d7e7148 Set mandatory fields 31e7091 Tests for images filtering are added bf32b9e Added test for check instances pagination functionality 3f4eeaa Imported Translations from Zanata 8ea75ad Fix typos in Horizon files 10e6bf5 Fixing updating user with no default project 9399680 Fix the issue which redirect to Not Found page dd4d1fb Imported Translations from Zanata 04c43e7 Imported Translations from Zanata b54965d Duplicate help message in metadata tab 19b6a65 Fix opening multiple Launch Instance during jQuery table polling 52128cc Separate subnets tests from networks tests file d3dd5e0 Make no response notification(msg) level to INFO 8ad7d1f Imported Translations from Zanata ff3232a Disable all actions while performing action 243394a Added test for image create from local file 0a6d9d5 "Clear Selection" is unlocalzed 15e83c6 Update URLs to Django 1.8+ style d649151 Using LOG.warning replace LOG.warn 2694d45 Imported Translations from Zanata e05a8fe Hide project switch menu when project is disabled 38df986 Follow up on detail title fix 09148f6 Cleaning up eslint warnings in the openstack-service-api directory d51bcdc Fix opening multiple Launch Instance during jQuery table polling 2143bb6 Imported Translations from Zanata efef226 Removes some redundant words 32510d8 Fixing updating user with no default project ac78a48 Image create "Copy Data" checkbox wrong label 7f1a831 Imported Translations from Zanata f9df264 Fixes truncated string in details overview table. fc7f1fd minor ng launch instance cleanup - remove unused css styles 46d3457 No unit test coverage for code related to Flavors 60722aa Do not cache templates in DEBUG mode 96fedc1 Provide an integration test for dynamic themes 184b67d Imported Translations from Zanata acba376 Imported Translations from Zanata f645d85 Fix the link of Django logging directive f1036b4 Imported Translations from Zanata f291170 ng Launch Instance wizard, constant cleanup be5f5aa Keep row 'data-display' attr up to date after inline editing a cell 7c71e21 Imported Translations from Zanata f07f296 Imported Translations from Zanata 74fe0ac Cleaning code to remove eslint warnings from Launch Instance 2d6e0fb Fix bad/inefficient API call for JS getImage() 48193a5 Doc page not displaying command-line with appropriate styling b96874b Update reno for stable/mitaka 5d0391f Update .gitreview for stable/mitaka 723bf09 Minor ng containers cleanup 1976cb9 Add trace to integration gate scripts 143f453 Delete repeated column 'enabled' in users table f65592d Add "data_required=True" check into heat rest api 83a2d36 Bootstrap Theme Preview links to sections don't work Edit b1f7fc4 Bypass get_domain call to keystone api 222774b Auto-detect in i9n tests which row action to bind to 3ec7f0b More documentation on writing i9n tests 7f550c5 Fix themable checkbox error state c259d66 Horizon support for Heat template versions 33b5439 Port list check is missing for LBaaS Add Member 6212128 Added tests for check change volume functionality 08e6a98 Added test for check Edit Consumer of QoS Spec functionality 07d748e Branding: Table Action dropdown hovers theme issue f195fea Fix issue with some modals are missing backdrop b6b685a Fixing test cases 935c483 Fixing the deprecated library function. 574228c Use JQuery promise/deferred objects to track AJAX dfcb6f3 fix-legend-overflow c7c86ed Optimize "open" method with context manager 1546981 Change the super argument to use the current class 701d75f Prevent 'Detach Interface' action if an interface is not attached 2c9b5b3 Refactor DataTable filtering functions into mixin Diffstat (except docs and test files) ------------------------------------- .eslintignore | 2 +- .eslintrc | 8 +- .gitignore | 4 + .gitreview | 1 + horizon/base.py | 28 +- horizon/conf/default.py | 5 +- horizon/contrib/staticfiles/__init__.py | 0 horizon/contrib/staticfiles/finders.py | 39 + horizon/exceptions.py | 2 +- horizon/forms/__init__.py | 9 + horizon/forms/base.py | 2 +- horizon/forms/fields.py | 158 +- horizon/forms/views.py | 22 +- horizon/karma.conf.js | 18 +- horizon/locale/ca/LC_MESSAGES/django.po | 23 +- horizon/locale/cs/LC_MESSAGES/django.po | 176 +- horizon/locale/cs/LC_MESSAGES/djangojs.po | 94 +- horizon/locale/de/LC_MESSAGES/django.po | 126 +- horizon/locale/de/LC_MESSAGES/djangojs.po | 143 +- horizon/locale/django.pot | 530 - horizon/locale/djangojs.pot | 614 - horizon/locale/en_AU/LC_MESSAGES/django.po | 154 +- horizon/locale/en_AU/LC_MESSAGES/djangojs.po | 220 +- horizon/locale/en_GB/LC_MESSAGES/django.po | 120 +- horizon/locale/en_GB/LC_MESSAGES/djangojs.po | 170 +- horizon/locale/es/LC_MESSAGES/django.po | 160 +- horizon/locale/es/LC_MESSAGES/djangojs.po | 78 +- horizon/locale/es_MX/LC_MESSAGES/django.po | 33 +- horizon/locale/fi_FI/LC_MESSAGES/django.po | 22 +- horizon/locale/fil/LC_MESSAGES/django.po | 6 +- horizon/locale/fr/LC_MESSAGES/django.po | 143 +- horizon/locale/fr/LC_MESSAGES/djangojs.po | 99 +- horizon/locale/hi/LC_MESSAGES/django.po | 23 +- horizon/locale/hi/LC_MESSAGES/djangojs.po | 186 - horizon/locale/hu/LC_MESSAGES/django.po | 6 +- horizon/locale/id/LC_MESSAGES/django.po | 152 +- horizon/locale/id/LC_MESSAGES/djangojs.po | 566 + horizon/locale/it/LC_MESSAGES/django.po | 107 +- horizon/locale/it/LC_MESSAGES/djangojs.po | 92 +- horizon/locale/ja/LC_MESSAGES/django.po | 116 +- horizon/locale/ja/LC_MESSAGES/djangojs.po | 151 +- horizon/locale/ko_KR/LC_MESSAGES/django.po | 149 +- horizon/locale/ko_KR/LC_MESSAGES/djangojs.po | 164 +- horizon/locale/nl_NL/LC_MESSAGES/django.po | 36 +- horizon/locale/nl_NL/LC_MESSAGES/djangojs.po | 13 +- horizon/locale/pa_IN/LC_MESSAGES/django.po | 33 +- horizon/locale/pa_IN/LC_MESSAGES/djangojs.po | 10 +- horizon/locale/pl_PL/LC_MESSAGES/django.po | 34 +- horizon/locale/pl_PL/LC_MESSAGES/djangojs.po | 13 +- horizon/locale/pt/LC_MESSAGES/django.po | 33 +- horizon/locale/pt_BR/LC_MESSAGES/django.po | 126 +- horizon/locale/pt_BR/LC_MESSAGES/djangojs.po | 75 +- horizon/locale/ru/LC_MESSAGES/django.po | 153 +- horizon/locale/ru/LC_MESSAGES/djangojs.po | 136 +- horizon/locale/sl_SI/LC_MESSAGES/django.po | 16 +- horizon/locale/sr/LC_MESSAGES/django.po | 14 +- horizon/locale/sr/LC_MESSAGES/djangojs.po | 169 - horizon/locale/tr_TR/LC_MESSAGES/django.po | 85 +- horizon/locale/tr_TR/LC_MESSAGES/djangojs.po | 27 +- horizon/locale/zh_CN/LC_MESSAGES/django.po | 173 +- horizon/locale/zh_CN/LC_MESSAGES/djangojs.po | 161 +- horizon/locale/zh_TW/LC_MESSAGES/django.po | 129 +- horizon/locale/zh_TW/LC_MESSAGES/djangojs.po | 53 +- horizon/middleware.py | 194 - horizon/middleware/__init__.py | 19 + horizon/middleware/base.py | 203 + horizon/middleware/operation_log.py | 162 + horizon/site_urls.py | 25 +- horizon/static/auth/login/login.spec.js | 8 +- .../static/framework/conf/permissions.service.js | 158 + .../framework/conf/permissions.service.spec.js | 119 + .../conf/resource-type-registry.service.js | 720 +- .../conf/resource-type-registry.service.spec.js | 268 +- horizon/static/framework/framework.module.js | 35 +- horizon/static/framework/framework.module.spec.js | 4 +- .../util/actions/action-result.service.js | 150 + .../util/actions/action-result.service.spec.js | 93 + .../framework/util/actions/actions.module.js | 21 + horizon/static/framework/util/filters/filters.js | 20 +- .../static/framework/util/filters/filters.spec.js | 17 +- .../filters/helpers.borrowed-from-underscore.js | 93 + horizon/static/framework/util/http/http.js | 48 +- horizon/static/framework/util/http/http.spec.js | 107 +- horizon/static/framework/util/i18n/i18n.js | 4 +- .../promise-toggle/hz-promise-toggle.directive.js | 6 +- .../util/tech-debt/helper-functions.service.js | 2 +- horizon/static/framework/util/util.module.js | 2 + horizon/static/framework/util/uuid/uuid.js | 45 + horizon/static/framework/util/uuid/uuid.spec.js | 70 + .../util/validators/hz-password-match.directive.js | 2 +- .../framework/widgets/action-list/action-list.scss | 5 + .../widgets/action-list/action.directive.js | 4 - .../action-list/actions-detail.template.html | 13 + .../widgets/action-list/actions-link.template.html | 3 - .../widgets/action-list/actions.controller.js | 26 +- .../widgets/action-list/actions.detail.mock.html | 2 + .../widgets/action-list/actions.directive.js | 67 +- .../widgets/action-list/actions.directive.spec.js | 73 +- .../widgets/action-list/actions.service.js | 47 +- .../static/framework/widgets/action-list/link.html | 7 - .../framework/widgets/action-list/split-link.html | 12 - .../widgets/charts/pie-chart.directive.js | 20 +- .../static/framework/widgets/charts/pie-chart.html | 2 +- .../framework/widgets/charts/pie-chart.spec.js | 2 +- .../framework/widgets/details/details.directive.js | 75 + .../static/framework/widgets/details/details.html | 13 + .../framework/widgets/details/details.module.js | 29 + .../details/routed-details-view.controller.js | 78 + .../details/routed-details-view.controller.spec.js | 112 + .../widgets/details/routed-details-view.html | 28 + .../framework/widgets/form/builders.provider.js | 66 + .../widgets/form/builders.provider.spec.js | 64 + horizon/static/framework/widgets/form/decorator.js | 162 + .../framework/widgets/form/decorator.spec.js | 60 + .../framework/widgets/form/fields/array.html | 39 + .../framework/widgets/form/fields/checkbox.html | 18 + .../framework/widgets/form/fields/checkboxes.html | 22 + .../framework/widgets/form/fields/default.html | 55 + .../framework/widgets/form/fields/fieldset.html | 4 + .../static/framework/widgets/form/fields/help.html | 1 + .../widgets/form/fields/radio-buttons.html | 23 + .../widgets/form/fields/radios-inline.html | 19 + .../framework/widgets/form/fields/radios.html | 19 + .../framework/widgets/form/fields/section.html | 1 + .../framework/widgets/form/fields/select.html | 16 + .../framework/widgets/form/fields/submit.html | 15 + .../framework/widgets/form/fields/tabarray.html | 70 + .../static/framework/widgets/form/fields/tabs.html | 41 + .../framework/widgets/form/fields/textarea.html | 39 + .../static/framework/widgets/form/form.module.js | 25 + .../widgets/form/modal-form.controller.js | 64 + .../widgets/form/modal-form.controller.spec.js | 71 + .../static/framework/widgets/form/modal-form.html | 51 + .../framework/widgets/form/modal-form.service.js | 72 + .../widgets/form/modal-form.service.spec.js | 74 + .../widgets/help-panel/help-panel.directive.js | 12 +- .../help-panel/help-panel.directive.spec.js | 6 +- .../framework/widgets/help-panel/help-panel.html | 11 +- .../widgets/load-edit/load-edit.directive.js | 17 + .../widgets/load-edit/load-edit.directive.spec.js | 12 +- .../magic-search/hz-magic-search-bar.directive.js | 101 +- .../widgets/magic-search/hz-magic-search-bar.html | 15 +- .../magic-search/hz-magic-search-bar.spec.js | 57 +- .../hz-magic-search-context.directive.js | 145 + .../magic-search/magic-search.controller.js | 46 +- .../magic-search/magic-search.controller.spec.js | 88 +- .../widgets/magic-search/magic-search.html | 28 +- .../widgets/magic-search/magic-search.module.js | 18 +- .../widgets/magic-search/magic-search.scss | 100 +- .../magic-search/st-magic-search.directive.js | 76 +- .../magic-search/st-magic-search.directive.spec.js | 110 +- .../widgets/metadata/tree/metadata-tree-item.html | 14 +- .../widgets/metadata/tree/metadata-tree.html | 4 +- .../framework/widgets/metadata/tree/tree.module.js | 1 + .../framework/widgets/metadata/tree/tree.scss | 28 +- .../widgets/metadata/tree/tree.service.js | 27 +- .../framework/widgets/metadata/tree/tree.spec.js | 3 +- .../modal-wait-spinner.service.js | 2 +- .../widgets/modal/delete-modal.service.js | 8 +- .../framework/widgets/modal/simple-modal.html | 5 +- .../widgets/panel/hz-resource-panel.controller.js | 34 + .../panel/hz-resource-panel.controller.spec.js | 57 + .../widgets/panel/hz-resource-panel.directive.js | 57 + .../framework/widgets/panel/hz-resource-panel.html | 4 + .../static/framework/widgets/panel/panel.module.js | 22 + .../widgets/property/hz-field.directive.js | 161 + .../hz-resource-property-list.directive.js | 88 + .../property/hz-resource-property-list.html | 12 + .../property/hz-resource-property.controller.js | 39 + .../property/hz-resource-property.directive.js | 63 + .../widgets/property/hz-resource-property.html | 5 + .../framework/widgets/property/property.module.js | 28 + .../framework/widgets/table/hz-cell.directive.js | 128 + .../widgets/table/hz-detail-row.directive.js | 100 + .../framework/widgets/table/hz-detail-row.html | 18 + .../widgets/table/hz-dynamic-table.controller.js | 90 + .../widgets/table/hz-dynamic-table.directive.js | 136 + .../table/hz-dynamic-table.directive.spec.js | 82 + .../framework/widgets/table/hz-dynamic-table.html | 109 + .../framework/widgets/table/hz-dynamic-table.scss | 23 + .../widgets/table/hz-dynamic-table.spec.js | 290 + .../widgets/table/hz-expand-detail.directive.js | 18 +- .../widgets/table/hz-resource-table.controller.js | 207 + .../table/hz-resource-table.controller.spec.js | 221 + .../widgets/table/hz-resource-table.directive.js | 77 + .../framework/widgets/table/hz-resource-table.html | 11 + .../widgets/table/hz-select-all.directive.js | 12 +- .../framework/widgets/table/hz-table.directive.js | 28 +- .../framework/widgets/table/table.controller.js | 27 +- .../static/framework/widgets/table/table.mock.html | 2 +- .../static/framework/widgets/table/table.module.js | 7 +- horizon/static/framework/widgets/table/table.scss | 62 +- .../static/framework/widgets/table/table.spec.js | 7 + .../widgets/transfer-table/filter-available.js | 112 + .../transfer-table/filter-available.spec.js | 89 + .../transfer-table/transfer-table.controller.js | 41 +- .../transfer-table/transfer-table.directive.js | 24 +- horizon/static/framework/widgets/widgets.module.js | 20 + horizon/static/framework/widgets/widgets.scss | 1 + .../framework/widgets/wizard/wizard.controller.js | 21 +- .../static/framework/widgets/wizard/wizard.html | 31 +- .../static/framework/widgets/wizard/wizard.spec.js | 28 +- horizon/static/horizon/js/horizon.communication.js | 53 +- horizon/static/horizon/js/horizon.d3barchart.js | 2 +- horizon/static/horizon/js/horizon.d3linechart.js | 169 +- horizon/static/horizon/js/horizon.d3piechart.js | 14 +- horizon/static/horizon/js/horizon.firewalls.js | 8 +- .../horizon/js/horizon.flatnetworktopology.js | 619 + horizon/static/horizon/js/horizon.forms.js | 152 +- horizon/static/horizon/js/horizon.heattop.js | 10 + horizon/static/horizon/js/horizon.instances.js | 22 +- horizon/static/horizon/js/horizon.membership.js | 12 +- horizon/static/horizon/js/horizon.modals.js | 154 +- .../static/horizon/js/horizon.networktopology.js | 142 +- .../horizon/js/horizon.networktopologycommon.js | 149 + horizon/static/horizon/js/horizon.quota.js | 27 +- horizon/static/horizon/js/horizon.selenium.js | 18 +- horizon/static/horizon/js/horizon.tables.js | 186 +- .../horizon/js/horizon.tables_inline_edit.js | 25 +- horizon/static/horizon/js/horizon.tabs.js | 13 +- horizon/static/horizon/js/horizon.templates.js | 10 +- horizon/static/horizon/js/horizon.users.js | 5 +- horizon/static/horizon/js/horizon.volumes.js | 7 +- horizon/tables/__init__.py | 1 + horizon/tables/actions.py | 61 +- horizon/tables/base.py | 97 +- horizon/tables/views.py | 133 +- horizon/tabs/base.py | 7 +- horizon/templates/auth/_description.html | 2 +- horizon/templates/auth/_login_form.html | 2 +- horizon/templates/bootstrap/breadcrumb.html | 15 + horizon/templates/bootstrap/progress_bar.html | 11 +- horizon/templates/horizon/_sidebar.html | 6 +- .../templates/horizon/client_side/_confirm.html | 14 + .../templates/horizon/client_side/_loading.html | 4 +- horizon/templates/horizon/client_side/_modal.html | 2 +- .../templates/horizon/client_side/_progress.html | 19 + .../templates/horizon/client_side/templates.html | 4 +- .../templates/horizon/common/_breadcrumb_nav.html | 26 - horizon/templates/horizon/common/_data_table.html | 6 +- .../horizon/common/_data_table_action.html | 11 +- .../common/_data_table_row_actions_dropdown.html | 2 +- .../horizon/common/_data_table_table_actions.html | 12 +- horizon/templates/horizon/common/_detail.html | 5 +- .../templates/horizon/common/_detail_header.html | 16 + horizon/templates/horizon/common/_form_errors.html | 4 +- horizon/templates/horizon/common/_form_field.html | 37 +- .../horizon/common/_form_field_decorator.html | 6 + .../horizon/common/_horizontal_field.html | 20 +- .../templates/horizon/common/_limit_summary.html | 32 +- .../templates/horizon/common/_usage_summary.html | 4 +- horizon/templates/horizon/common/_workflow.html | 33 +- .../horizon/common/fields/_themable_checkbox.html | 15 +- .../common/fields/_themable_radiobutton.html | 17 + .../horizon/common/fields/_themable_select.html | 61 + horizon/templates/horizon/jasmine/jasmine.html | 16 +- horizon/templatetags/angular.py | 124 + horizon/templatetags/bootstrap.py | 2 +- horizon/templatetags/breadcrumb_nav.py | 47 +- horizon/templatetags/horizon.py | 7 +- horizon/test/firefox_binary.py | 44 +- horizon/test/settings.py | 51 +- horizon/test/test_dashboards/cats/kittens/urls.py | 6 +- horizon/test/test_dashboards/cats/tigers/urls.py | 6 +- horizon/test/test_dashboards/dogs/puppies/urls.py | 6 +- horizon/test/urls.py | 10 +- horizon/test/webdriver.py | 85 +- horizon/themes.py | 26 +- horizon/utils/babel_extract_angular.py | 35 +- horizon/utils/escape.py | 31 + horizon/utils/memoized.py | 68 + horizon/utils/secret_key.py | 25 +- horizon/utils/validators.py | 14 + horizon/workflows/base.py | 47 +- horizon/workflows/views.py | 8 +- openstack_dashboard/api/cinder.py | 134 +- openstack_dashboard/api/glance.py | 251 +- openstack_dashboard/api/heat.py | 16 +- openstack_dashboard/api/keystone.py | 78 +- openstack_dashboard/api/network.py | 23 +- openstack_dashboard/api/network_base.py | 6 +- openstack_dashboard/api/neutron.py | 105 +- openstack_dashboard/api/nova.py | 123 +- openstack_dashboard/api/rest/cinder.py | 79 + openstack_dashboard/api/rest/config.py | 12 +- openstack_dashboard/api/rest/glance.py | 85 +- openstack_dashboard/api/rest/heat.py | 2 +- openstack_dashboard/api/rest/json_encoder.py | 2 +- openstack_dashboard/api/rest/keystone.py | 7 +- openstack_dashboard/api/rest/neutron.py | 61 + openstack_dashboard/api/rest/nova.py | 314 +- openstack_dashboard/api/rest/swift.py | 44 +- openstack_dashboard/api/rest/urls.py | 1 - openstack_dashboard/api/rest/utils.py | 28 +- openstack_dashboard/api/swift.py | 16 +- openstack_dashboard/conf/cinder_policy.json | 174 +- openstack_dashboard/conf/heat_policy.json | 54 +- openstack_dashboard/conf/keystone_policy.json | 72 +- openstack_dashboard/conf/neutron_policy.json | 186 +- openstack_dashboard/conf/nova_policy.json | 602 +- .../contrib/developer/resource_browser/__init__.py | 0 .../contrib/developer/resource_browser/panel.py | 22 + .../contrib/developer/resource_browser/urls.py | 20 + .../contrib/developer/resource_browser/views.py | 19 + .../static/dashboard/developer/developer.module.js | 3 +- .../rb-resource-panel.controller.js | 56 + .../rb-resource-panel.directive.js | 47 + .../rb-resource-panel/rb-resource-panel.html | 4 + .../resource-browser-item.controller.js | 222 + .../resource-browser-item.directive.js | 47 + .../resource-browser/resource-browser-item.html | 188 + .../resource-browser.controller.js | 41 + .../resource-browser/resource-browser.directive.js | 47 + .../resource-browser/resource-browser.html | 7 + .../resource-browser/resource-browser.module.js | 46 + .../resource-browser.module.spec.js | 25 + .../developer/resource-browser/resources.html | 1 + .../theme-preview/theme-preview.directive.js | 126 +- .../developer/theme-preview/theme-preview.html | 560 +- .../developer/theme-preview/theme-preview.scss | 18 +- .../contrib/developer/theme_preview/urls.py | 6 +- .../dashboards/admin/aggregates/panel.py | 6 +- .../dashboards/admin/aggregates/tables.py | 6 +- .../dashboards/admin/aggregates/urls.py | 6 +- openstack_dashboard/dashboards/admin/dashboard.py | 17 +- .../dashboards/admin/defaults/tables.py | 5 + .../dashboards/admin/defaults/urls.py | 7 +- .../dashboards/admin/flavors/tables.py | 8 +- .../dashboards/admin/flavors/urls.py | 6 +- .../dashboards/admin/flavors/workflows.py | 24 +- .../dashboards/admin/floating_ips/__init__.py | 0 .../dashboards/admin/floating_ips/forms.py | 64 + .../dashboards/admin/floating_ips/panel.py | 30 + .../dashboards/admin/floating_ips/tables.py | 91 + .../templates/floating_ips/_allocate.html | 9 + .../templates/floating_ips/allocate.html | 7 + .../templates/floating_ips/detail.html | 48 + .../floating_ips/templates/floating_ips/index.html | 7 + .../dashboards/admin/floating_ips/urls.py | 26 + .../dashboards/admin/floating_ips/views.py | 189 + .../dashboards/admin/hypervisors/compute/forms.py | 4 +- .../dashboards/admin/hypervisors/compute/tables.py | 25 +- .../dashboards/admin/hypervisors/compute/urls.py | 6 +- .../dashboards/admin/hypervisors/compute/views.py | 46 +- .../dashboards/admin/hypervisors/panel.py | 1 + .../dashboards/admin/hypervisors/tables.py | 12 +- .../hypervisors/templates/hypervisors/detail.html | 5 +- .../hypervisors/templates/hypervisors/index.html | 6 +- .../dashboards/admin/hypervisors/urls.py | 6 +- .../dashboards/admin/hypervisors/views.py | 5 +- .../dashboards/admin/images/tables.py | 7 +- .../dashboards/admin/images/urls.py | 28 +- .../dashboards/admin/images/views.py | 30 +- .../dashboards/admin/info/tables.py | 49 +- openstack_dashboard/dashboards/admin/info/tabs.py | 25 +- .../info/templates/info/_cell_endpoints_v2.html | 9 + .../info/templates/info/_cell_endpoints_v3.html | 6 + .../admin/info/templates/info/index.html | 2 +- openstack_dashboard/dashboards/admin/info/urls.py | 7 +- .../dashboards/admin/instances/forms.py | 15 +- .../dashboards/admin/instances/panel.py | 1 + .../dashboards/admin/instances/tables.py | 16 +- .../dashboards/admin/instances/urls.py | 14 +- .../dashboards/admin/instances/views.py | 30 +- .../dashboards/admin/metadata_defs/constants.py | 2 + .../dashboards/admin/metadata_defs/forms.py | 30 +- .../dashboards/admin/metadata_defs/panel.py | 2 + .../dashboards/admin/metadata_defs/tables.py | 47 +- .../templates/metadata_defs/_update.html | 18 + .../templates/metadata_defs/resource_types.html | 4 +- .../templates/metadata_defs/update.html | 7 + .../dashboards/admin/metadata_defs/urls.py | 7 +- .../dashboards/admin/metadata_defs/views.py | 45 +- .../dashboards/admin/metering/forms.py | 5 +- .../admin/metering/templates/metering/stats.html | 12 +- .../dashboards/admin/metering/urls.py | 7 +- .../dashboards/admin/networks/agents/forms.py | 2 +- .../dashboards/admin/networks/agents/tables.py | 7 +- .../dashboards/admin/networks/agents/tabs.py | 45 + .../dashboards/admin/networks/forms.py | 209 +- .../admin/networks/ports/extensions/__init__.py | 0 .../extensions/allowed_address_pairs/__init__.py | 0 .../extensions/allowed_address_pairs/forms.py | 21 + .../extensions/allowed_address_pairs/views.py | 25 + .../dashboards/admin/networks/ports/forms.py | 146 +- .../dashboards/admin/networks/ports/tables.py | 14 +- .../dashboards/admin/networks/ports/tabs.py | 4 +- .../dashboards/admin/networks/ports/urls.py | 14 +- .../dashboards/admin/networks/ports/views.py | 6 +- .../dashboards/admin/networks/subnets/tables.py | 85 +- .../dashboards/admin/networks/subnets/urls.py | 9 +- .../dashboards/admin/networks/subnets/views.py | 11 +- .../dashboards/admin/networks/subnets/workflows.py | 24 + .../dashboards/admin/networks/tables.py | 27 +- .../dashboards/admin/networks/urls.py | 14 +- .../dashboards/admin/networks/views.py | 150 +- .../dashboards/admin/ngflavors/urls.py | 6 +- .../dashboards/admin/overview/panel.py | 2 + .../dashboards/admin/overview/urls.py | 6 +- .../dashboards/admin/routers/ports/urls.py | 7 +- .../dashboards/admin/routers/tables.py | 16 +- .../dashboards/admin/routers/tabs.py | 5 +- .../dashboards/admin/routers/urls.py | 9 +- .../dashboards/admin/routers/views.py | 67 +- .../admin/flavors/table/flavors-table.html | 127 +- .../dashboards/admin/volumes/snapshots/forms.py | 2 +- .../dashboards/admin/volumes/snapshots/tables.py | 4 +- .../dashboards/admin/volumes/snapshots/urls.py | 6 +- .../dashboards/admin/volumes/tabs.py | 85 +- .../volumes/snapshots/_update_status.html | 2 +- .../volumes/volume_types/_create_qos_spec.html | 2 +- .../volumes/volume_types/_create_volume_type.html | 2 +- .../volume_types/_edit_qos_spec_consumer.html | 2 +- .../volumes/volume_types/_update_volume_type.html | 2 +- .../volume_encryption_type_detail.html | 6 +- .../templates/volumes/volumes/_manage_volume.html | 2 +- .../templates/volumes/volumes/_migrate_volume.html | 2 +- .../volumes/volumes/_unmanage_volume.html | 2 +- .../templates/volumes/volumes/_update_status.html | 2 +- .../dashboards/admin/volumes/urls.py | 6 +- .../admin/volumes/volume_types/extras/urls.py | 8 +- .../admin/volumes/volume_types/extras/views.py | 7 + .../dashboards/admin/volumes/volume_types/forms.py | 40 +- .../admin/volumes/volume_types/qos_specs/urls.py | 8 +- .../admin/volumes/volume_types/tables.py | 59 +- .../dashboards/admin/volumes/volume_types/urls.py | 7 +- .../dashboards/admin/volumes/volume_types/views.py | 1 + .../dashboards/admin/volumes/volumes/forms.py | 13 +- .../dashboards/admin/volumes/volumes/tables.py | 24 +- .../dashboards/admin/volumes/volumes/urls.py | 8 +- .../dashboards/identity/domains/tables.py | 2 +- .../dashboards/identity/domains/urls.py | 6 +- .../dashboards/identity/domains/workflows.py | 9 +- .../dashboards/identity/groups/tables.py | 24 +- .../identity/groups/templates/groups/_update.html | 2 +- .../dashboards/identity/groups/urls.py | 6 +- .../dashboards/identity/groups/views.py | 5 +- .../identity/identity_providers/protocols/forms.py | 2 +- .../identity_providers/protocols/tables.py | 4 - .../identity/identity_providers/protocols/urls.py | 7 +- .../dashboards/identity/identity_providers/urls.py | 7 +- .../dashboards/identity/mappings/urls.py | 7 +- .../dashboards/identity/ngusers/panel.py | 5 - .../dashboards/identity/ngusers/urls.py | 6 +- .../dashboards/identity/projects/tables.py | 81 +- .../templates/projects/_detail_overview.html | 6 + .../projects/templates/projects/detail.html | 5 +- .../dashboards/identity/projects/urls.py | 6 +- .../dashboards/identity/projects/views.py | 21 +- .../dashboards/identity/projects/workflows.py | 61 +- .../dashboards/identity/roles/tables.py | 10 +- .../dashboards/identity/roles/urls.py | 7 +- .../dashboards/identity/roles/views.py | 4 +- .../identity/users/table/table.controller.js | 2 +- .../identity/users/table/table.controller.spec.js | 1 + .../dashboard/identity/users/table/table.html | 2 - .../dashboards/identity/users/forms.py | 52 +- .../dashboards/identity/users/tables.py | 92 +- .../users/templates/users/_detail_overview.html | 10 +- .../identity/users/templates/users/detail.html | 5 +- .../dashboards/identity/users/urls.py | 10 +- .../dashboards/identity/users/views.py | 18 +- .../access_and_security/api_access/tables.py | 5 +- .../project/access_and_security/api_access/urls.py | 6 +- .../access_and_security/api_access/views.py | 12 +- .../access_and_security/floating_ips/forms.py | 2 +- .../access_and_security/floating_ips/tables.py | 41 +- .../access_and_security/floating_ips/urls.py | 8 +- .../access_and_security/floating_ips/workflows.py | 11 +- .../project/access_and_security/keypairs/forms.py | 5 +- .../project/access_and_security/keypairs/urls.py | 6 +- .../project/access_and_security/keypairs/views.py | 2 + .../access_and_security/security_groups/forms.py | 42 +- .../access_and_security/security_groups/tables.py | 40 +- .../access_and_security/security_groups/urls.py | 6 +- .../api_access/openrc.sh.template | 5 +- .../api_access/openrc_v2.sh.template | 6 +- .../access_and_security/keypairs/detail.html | 8 +- .../access_and_security/keypairs/download.html | 4 +- .../security_groups/detail.html | 6 +- .../dashboards/project/access_and_security/urls.py | 6 +- .../dashboards/project/containers/forms.py | 4 +- .../templates/containers/_container_loader.html | 4 +- .../containers/templates/containers/ngindex.html | 8 + .../dashboards/project/containers/urls.py | 13 +- .../dashboards/project/firewalls/forms.py | 26 +- .../dashboards/project/firewalls/tables.py | 3 +- .../templates/firewalls/_update_rule_help.html | 6 +- .../dashboards/project/firewalls/urls.py | 7 +- .../dashboards/project/firewalls/views.py | 4 - .../dashboards/project/firewalls/workflows.py | 14 +- .../dashboards/project/images/images/forms.py | 128 +- .../dashboards/project/images/images/tables.py | 24 +- .../dashboards/project/images/images/urls.py | 26 +- .../dashboards/project/images/images/views.py | 10 + .../dashboards/project/images/snapshots/urls.py | 6 +- .../images/templates/images/images/_create.html | 16 +- .../dashboards/project/images/urls.py | 21 +- .../dashboards/project/images/utils.py | 5 +- .../dashboards/project/images/views.py | 11 + .../dashboards/project/instances/forms.py | 149 +- .../dashboards/project/instances/tables.py | 127 +- .../dashboards/project/instances/tabs.py | 2 +- .../templates/instances/_attach_volume.html | 7 + .../templates/instances/_detach_volume.html | 7 + .../templates/instances/_detail_console.html | 6 +- .../templates/instances/_detail_overview.html | 2 +- .../templates/instances/_flavors_and_quotas.html | 10 +- .../templates/instances/attach_volume.html | 11 + .../templates/instances/detach_volume.html | 11 + .../dashboards/project/instances/urls.py | 24 +- .../dashboards/project/instances/utils.py | 28 + .../dashboards/project/instances/views.py | 91 +- .../project/instances/workflows/create_instance.py | 83 +- .../project/instances/workflows/resize_instance.py | 11 +- .../dashboards/project/loadbalancers/forms.py | 36 +- .../dashboards/project/loadbalancers/panel.py | 5 + .../dashboards/project/loadbalancers/tables.py | 8 +- .../templates/loadbalancers/_create_pool_help.html | 23 +- .../templates/loadbalancers/_create_vip_help.html | 9 +- .../dashboards/project/loadbalancers/urls.py | 7 +- .../dashboards/project/loadbalancers/views.py | 6 +- .../dashboards/project/loadbalancers/workflows.py | 96 +- .../dashboards/project/network_topology/tabs.py | 42 + .../templates/network_topology/_actions_list.html | 53 + .../templates/network_topology/_graph_view.html | 23 + .../templates/network_topology/_svg_element.html | 102 + .../templates/network_topology/_topology_view.html | 20 + .../client_side/_balloon_container.html | 9 +- .../templates/network_topology/index.html | 39 +- .../dashboards/project/network_topology/urls.py | 7 +- .../dashboards/project/network_topology/utils.py | 50 + .../dashboards/project/network_topology/views.py | 68 +- .../dashboards/project/networks/forms.py | 17 +- .../project/networks/ports/extensions/__init__.py | 0 .../extensions/allowed_address_pairs/__init__.py | 0 .../extensions/allowed_address_pairs/forms.py | 75 + .../extensions/allowed_address_pairs/tables.py | 96 + .../ports/extensions/allowed_address_pairs/tabs.py | 51 + .../extensions/allowed_address_pairs/views.py | 47 + .../dashboards/project/networks/ports/forms.py | 59 +- .../dashboards/project/networks/ports/tables.py | 7 +- .../dashboards/project/networks/ports/tabs.py | 28 +- .../dashboards/project/networks/ports/urls.py | 15 +- .../dashboards/project/networks/ports/views.py | 6 +- .../dashboards/project/networks/subnets/tables.py | 15 +- .../dashboards/project/networks/subnets/tabs.py | 25 + .../dashboards/project/networks/subnets/urls.py | 10 +- .../dashboards/project/networks/subnets/views.py | 23 +- .../project/networks/subnets/workflows.py | 18 +- .../dashboards/project/networks/tables.py | 30 +- .../dashboards/project/networks/tabs.py | 70 + .../networks/templates/networks/_create.html | 19 - .../templates/networks/_detail_overview.html | 20 +- .../networks/templates/networks/create.html | 16 - .../networks/templates/networks/detail.html | 21 +- .../templates/networks/ports/_add_addresspair.html | 9 + .../templates/networks/ports/_detail_overview.html | 2 +- .../templates/networks/ports/add_addresspair.html | 7 + .../networks/subnets/_detail_overview.html | 33 +- .../dashboards/project/networks/urls.py | 15 +- .../dashboards/project/networks/views.py | 69 +- .../dashboards/project/networks/workflows.py | 79 +- .../dashboards/project/ngdetails/__init__.py | 0 .../dashboards/project/ngdetails/panel.py | 25 + .../dashboards/project/ngdetails/urls.py | 22 + .../dashboards/project/ngdetails/views.py | 19 + .../dashboards/project/ngimages/__init__.py | 0 .../dashboards/project/ngimages/panel.py | 23 - .../project/ngimages/templates/ngimages/index.html | 15 - .../dashboards/project/ngimages/urls.py | 24 - .../dashboards/project/ngimages/views.py | 19 - .../dashboards/project/ngvolumes/__init__.py | 0 .../dashboards/project/ngvolumes/panel.py | 23 + .../dashboards/project/ngvolumes/urls.py | 22 + .../dashboards/project/ngvolumes/views.py | 19 + .../dashboards/project/overview/panel.py | 1 + .../dashboards/project/overview/urls.py | 7 +- .../routers/extensions/extraroutes/views.py | 4 +- .../routers/extensions/routerrules/__init__.py | 0 .../routers/extensions/routerrules/forms.py | 97 - .../routers/extensions/routerrules/rulemanager.py | 103 - .../routers/extensions/routerrules/tables.py | 79 - .../project/routers/extensions/routerrules/tabs.py | 227 - .../routers/extensions/routerrules/views.py | 59 - .../dashboards/project/routers/forms.py | 62 +- .../dashboards/project/routers/ports/forms.py | 4 +- .../dashboards/project/routers/ports/urls.py | 7 +- .../dashboards/project/routers/tables.py | 21 +- .../dashboards/project/routers/tabs.py | 11 +- .../templates/routers/_detail_overview.html | 39 + .../routers/extensions/routerrules/_create.html | 23 - .../routers/extensions/routerrules/create.html | 7 - .../routers/extensions/routerrules/grid.html | 147 - .../dashboards/project/routers/urls.py | 11 +- .../dashboards/project/routers/views.py | 5 +- .../dashboards/project/stacks/forms.py | 26 +- .../project/stacks/resource_types/panel.py | 1 + .../project/stacks/resource_types/tables.py | 18 +- .../project/stacks/resource_types/tabs.py | 6 - .../project/stacks/resource_types/urls.py | 6 +- .../dashboards/project/stacks/tables.py | 20 +- .../dashboards/project/stacks/tabs.py | 29 +- .../project/stacks/template_versions/__init__.py | 0 .../project/stacks/template_versions/panel.py | 23 + .../project/stacks/template_versions/tables.py | 51 + .../project/stacks/template_versions/tabs.py | 51 + .../stacks.template_versions/_details.html | 3 + .../templates/stacks.template_versions/index.html | 7 + .../project/stacks/template_versions/urls.py | 24 + .../project/stacks/template_versions/views.py | 61 + .../stacks/templates/stacks/_preview_details.html | 2 +- .../dashboards/project/stacks/urls.py | 6 +- .../dashboard/project/containers/_containers.scss | 9 + .../project/containers/containers-model.service.js | 155 +- .../containers/containers-model.service.spec.js | 186 +- .../project/containers/containers.controller.js | 12 +- .../dashboard/project/containers/containers.html | 4 +- .../project/containers/containers.module.js | 5 + .../project/containers/create-container-modal.html | 23 +- .../project/containers/create-folder-modal.html | 28 +- .../project/containers/delete-objects-modal.html | 39 + .../containers/delete-objects.controller.js | 64 + .../containers/delete-objects.controller.spec.js | 110 + .../project/containers/edit-object-controller.js | 48 + .../containers/edit-object-controller.spec.js | 55 + .../project/containers/edit-object-modal.html | 40 + .../project/containers/file-change-directive.js | 25 + .../project/containers/object-details-modal.html | 12 +- .../containers/object-name-exists.directive.js | 74 + .../object-name-exists.directive.spec.js | 69 + .../containers/objects-batch-actions.service.js | 198 + .../objects-batch-actions.service.spec.js | 245 + .../containers/objects-row-actions.service.js | 198 +- .../containers/objects-row-actions.service.spec.js | 137 +- .../project/containers/objects.controller.js | 207 +- .../project/containers/objects.controller.spec.js | 252 +- .../dashboard/project/containers/objects.html | 106 +- .../project/containers/select-container.html | 13 +- .../project/containers/upload-object-controller.js | 20 +- .../containers/upload-object-controller.spec.js | 27 +- .../project/containers/upload-object-modal.html | 42 +- .../dashboard/project/images/images.module.js | 46 - .../dashboard/project/images/images.module.spec.js | 44 - .../static/dashboard/project/project.module.js | 4 +- .../configuration/configuration.controller.js | 1 + .../configuration/configuration.html | 12 +- .../launch-instance/details/details.controller.js | 2 +- .../workflow/launch-instance/details/details.html | 21 +- .../launch-instance/flavor/flavor.controller.js | 33 +- .../workflow/launch-instance/flavor/flavor.html | 229 +- .../workflow/launch-instance/flavor/flavor.spec.js | 2 +- .../flavor/select-flavor-table.directive.js | 155 - .../flavor/select-flavor-table.html | 131 - .../keypair/create-keypair.controller.js | 8 +- .../launch-instance/keypair/create-keypair.html | 2 +- .../keypair/import-keypair.controller.js | 11 +- .../keypair/import-keypair.controller.spec.js | 11 +- .../launch-instance/keypair/import-keypair.html | 6 +- .../launch-instance/keypair/keypair-details.html | 4 +- .../launch-instance/keypair/keypair.controller.js | 41 +- .../keypair/keypair.controller.spec.js | 22 +- .../workflow/launch-instance/keypair/keypair.html | 114 +- .../launch-instance-modal.service.spec.js | 2 +- .../launch-instance-model.service.js | 251 +- .../launch-instance-model.service.spec.js | 546 +- .../launch-instance-workflow.service.js | 23 +- .../launch-instance-workflow.service.spec.js | 33 +- .../launch-instance/launch-instance.module.js | 23 +- .../launch-instance/metadata/metadata.html | 2 +- .../workflow/launch-instance/network/network.html | 181 +- .../launch-instance/networkports/ports.html | 22 +- .../scheduler-hints/scheduler-hints.controller.js | 49 + .../scheduler-hints/scheduler-hints.help.html | 3 + .../scheduler-hints/scheduler-hints.html | 12 + .../scheduler-hints/scheduler-hints.spec.js | 56 + .../security-groups/security-group-details.html | 2 +- .../security-groups/security-groups.controller.js | 18 +- .../security-groups/security-groups.help.html | 2 +- .../security-groups/security-groups.html | 26 +- .../server-groups/server-group-details.html | 13 + .../server-groups/server-groups.controller.js | 68 + .../server-groups/server-groups.help.html | 11 + .../server-groups/server-groups.html | 73 + .../server-groups/server-groups.spec.js | 74 + .../launch-instance/source/source-details.html | 43 +- .../launch-instance/source/source.controller.js | 148 +- .../source/source.controller.spec.js | 62 +- .../launch-instance/source/source.help.html | 15 +- .../workflow/launch-instance/source/source.html | 378 +- .../dashboards/project/volumes/backups/forms.py | 14 +- .../dashboards/project/volumes/backups/tables.py | 11 +- .../dashboards/project/volumes/backups/urls.py | 10 +- .../project/volumes/cg_snapshots/__init__.py | 0 .../project/volumes/cg_snapshots/forms.py | 76 + .../project/volumes/cg_snapshots/tables.py | 116 + .../project/volumes/cg_snapshots/tabs.py | 34 + .../project/volumes/cg_snapshots/urls.py | 24 + .../project/volumes/cg_snapshots/views.py | 138 + .../dashboards/project/volumes/cgroups/forms.py | 170 + .../dashboards/project/volumes/cgroups/tables.py | 94 +- .../dashboards/project/volumes/cgroups/urls.py | 18 +- .../dashboards/project/volumes/cgroups/views.py | 157 +- .../project/volumes/cgroups/workflows.py | 124 +- .../dashboards/project/volumes/snapshots/tables.py | 11 +- .../dashboards/project/volumes/snapshots/urls.py | 6 +- .../dashboards/project/volumes/tabs.py | 40 +- .../volumes/templates/volumes/_volume_limits.html | 63 + .../templates/volumes/cg_snapshots/_create.html | 9 + .../volumes/cg_snapshots/_detail_overview.html | 46 + .../templates/volumes/cg_snapshots/_update.html | 7 + .../templates/volumes/cg_snapshots/create.html | 7 + .../templates/volumes/cg_snapshots/update.html | 7 + .../templates/volumes/cgroups/_clone_cgroup.html | 9 + .../volumes/cgroups/_create_snapshot.html | 10 + .../volumes/templates/volumes/cgroups/_delete.html | 5 +- .../templates/volumes/cgroups/_remove_vols.html | 7 + .../volumes/cgroups/_snapshot_limits.html | 42 + .../templates/volumes/cgroups/clone_cgroup.html | 7 + .../templates/volumes/cgroups/create_snapshot.html | 7 + .../templates/volumes/cgroups/remove_vols.html | 7 + .../volumes/templates/volumes/volumes/_attach.html | 2 - .../volumes/volumes/_detail_overview.html | 8 +- .../volumes/templates/volumes/volumes/_limits.html | 8 +- .../volumes/templates/volumes/volumes/_retype.html | 6 +- .../templates/volumes/volumes/_show_transfer.html | 6 +- .../volumes/volumes/_upload_to_image.html | 6 +- .../volumes/volumes/encryption_detail.html | 6 +- .../dashboards/project/volumes/test.py | 13 +- .../dashboards/project/volumes/urls.py | 29 +- .../dashboards/project/volumes/volumes/forms.py | 54 +- .../dashboards/project/volumes/volumes/tables.py | 39 +- .../dashboards/project/volumes/volumes/urls.py | 11 +- .../dashboards/project/volumes/volumes/views.py | 39 +- .../dashboards/project/vpn/tables.py | 97 +- .../vpn/templates/vpn/_add_ike_policy_help.html | 20 + .../vpn/templates/vpn/_add_ipsec_policy_help.html | 19 + .../vpn/templates/vpn/_add_vpn_service_help.html | 7 + openstack_dashboard/dashboards/project/vpn/urls.py | 7 +- .../dashboards/project/vpn/workflows.py | 62 +- .../dashboards/settings/password/forms.py | 2 +- .../dashboards/settings/password/urls.py | 7 +- .../dashboards/settings/password/views.py | 1 - .../dashboards/settings/user/forms.py | 15 +- .../dashboards/settings/user/urls.py | 7 +- .../dashboards/settings/user/views.py | 1 - openstack_dashboard/django_pyscss_fix/__init__.py | 2 +- .../enabled/_1041_project_ng_volumes_panel.py | 30 + .../enabled/_1050_project_images_panel.py | 14 + .../enabled/_1051_project_ng_images_panel.py | 30 - .../enabled/_1070_project_ng_details_panel.py | 30 + .../_1640_project_template_versions_panel.py | 10 + .../enabled/_2111_admin_floating_ips_panel.py | 10 + .../enabled/_9020_resource_browser.py | 20 + openstack_dashboard/karma.conf.js | 16 +- .../_10_set_custom_theme.py.example | 2 +- .../_11_toggle_angular_features.py.example | 1 + .../local/local_settings.py.example | 168 +- .../locale/as/LC_MESSAGES/django.po | 361 +- .../locale/bn_IN/LC_MESSAGES/django.po | 355 +- .../locale/brx/LC_MESSAGES/django.po | 353 +- .../locale/cs/LC_MESSAGES/django.po | 3526 +++-- .../locale/cs/LC_MESSAGES/djangojs.po | 1388 +- .../locale/de/LC_MESSAGES/django.po | 2220 +-- .../locale/de/LC_MESSAGES/djangojs.po | 1135 +- openstack_dashboard/locale/django.pot | 15287 ------------------- openstack_dashboard/locale/djangojs.pot | 2993 ---- .../locale/en_AU/LC_MESSAGES/django.po | 2656 +++- .../locale/en_AU/LC_MESSAGES/djangojs.po | 2130 ++- .../locale/en_GB/LC_MESSAGES/django.po | 2057 ++- .../locale/en_GB/LC_MESSAGES/djangojs.po | 1305 +- .../locale/es/LC_MESSAGES/django.po | 1589 +- .../locale/es/LC_MESSAGES/djangojs.po | 213 +- .../locale/fr/LC_MESSAGES/django.po | 1228 +- .../locale/fr/LC_MESSAGES/djangojs.po | 651 +- .../locale/gu/LC_MESSAGES/django.po | 354 +- .../locale/hi/LC_MESSAGES/django.po | 292 +- .../locale/id/LC_MESSAGES/django.po | 8970 +++++++++++ .../locale/id/LC_MESSAGES/djangojs.po | 3289 ++++ .../locale/it/LC_MESSAGES/django.po | 1774 ++- .../locale/it/LC_MESSAGES/djangojs.po | 1301 +- .../locale/ja/LC_MESSAGES/django.po | 2154 +-- .../locale/ja/LC_MESSAGES/djangojs.po | 1121 +- .../locale/kn/LC_MESSAGES/django.po | 369 +- .../locale/ko_KR/LC_MESSAGES/django.po | 2658 ++-- .../locale/ko_KR/LC_MESSAGES/djangojs.po | 1181 +- .../locale/kok/LC_MESSAGES/django.po | 351 +- .../locale/ks/LC_MESSAGES/django.po | 355 +- .../locale/mai/LC_MESSAGES/django.po | 356 +- .../locale/mni/LC_MESSAGES/django.po | 365 +- .../locale/mr/LC_MESSAGES/django.po | 355 +- .../locale/ne/LC_MESSAGES/django.po | 349 +- .../locale/nl_NL/LC_MESSAGES/django.po | 206 +- .../locale/pa_IN/LC_MESSAGES/django.po | 368 +- .../locale/pl_PL/LC_MESSAGES/django.po | 709 +- .../locale/pl_PL/LC_MESSAGES/djangojs.po | 829 - .../locale/pt_BR/LC_MESSAGES/django.po | 1315 +- .../locale/pt_BR/LC_MESSAGES/djangojs.po | 470 +- .../locale/ru/LC_MESSAGES/django.po | 2243 ++- .../locale/ru/LC_MESSAGES/djangojs.po | 1642 +- .../locale/sr/LC_MESSAGES/django.po | 181 +- .../locale/ta/LC_MESSAGES/django.po | 366 +- .../locale/tr_TR/LC_MESSAGES/django.po | 707 +- .../locale/tr_TR/LC_MESSAGES/djangojs.po | 1017 -- .../locale/ur/LC_MESSAGES/django.po | 365 +- .../locale/zh_CN/LC_MESSAGES/django.po | 3434 +++-- .../locale/zh_CN/LC_MESSAGES/djangojs.po | 1394 +- .../locale/zh_TW/LC_MESSAGES/django.po | 1525 +- .../locale/zh_TW/LC_MESSAGES/djangojs.po | 1212 +- .../management/commands/make_web_conf.py | 163 +- .../management/commands/migrate_settings.py | 12 +- openstack_dashboard/policy.py | 1 + openstack_dashboard/settings.py | 179 +- openstack_dashboard/static/app/app.module.js | 16 +- .../static/app/core/conf/conf.module.js | 138 + openstack_dashboard/static/app/core/core.module.js | 87 +- .../static/app/core/images/_images.scss | 8 - .../app/core/images/actions/actions.module.js | 32 +- .../app/core/images/actions/actions.module.spec.js | 50 + .../core/images/actions/create-volume.service.js | 32 +- .../images/actions/create-volume.service.spec.js | 6 +- .../core/images/actions/create.action.service.js | 133 + .../images/actions/create.action.service.spec.js | 255 + .../core/images/actions/create.workflow.service.js | 58 + .../images/actions/create.workflow.service.spec.js | 56 + .../core/images/actions/delete-image.service.js | 30 +- .../images/actions/delete-image.service.spec.js | 45 +- .../app/core/images/actions/edit.action.service.js | 159 + .../images/actions/edit.action.service.spec.js | 190 + .../core/images/actions/edit.workflow.service.js | 57 + .../images/actions/edit.workflow.service.spec.js | 54 + .../core/images/actions/launch-instance.service.js | 11 +- .../images/actions/launch-instance.service.spec.js | 1 - .../actions/update-metadata.action.service.js | 33 +- .../actions/update-metadata.action.service.spec.js | 9 - .../static/app/core/images/admin-panel.html | 5 + .../core/images/detail/image-detail.controller.js | 69 - .../images/detail/image-detail.controller.spec.js | 88 - .../app/core/images/detail/image-detail.html | 82 - .../app/core/images/details/details.module.js | 52 + .../static/app/core/images/details/drawer.html | 21 + .../app/core/images/details/overview.controller.js | 62 + .../images/details/overview.controller.spec.js | 55 + .../static/app/core/images/details/overview.html | 44 + .../app/core/images/filters/image-status.filter.js | 49 - .../images/filters/image-status.filter.spec.js | 40 - .../app/core/images/filters/image-type.filter.js | 46 - .../core/images/filters/image-type.filter.spec.js | 48 - .../core/images/filters/image-visibility.filter.js | 16 +- .../images/filters/image-visibility.filter.spec.js | 14 +- .../static/app/core/images/images.module.js | 314 +- .../static/app/core/images/images.module.spec.js | 88 +- .../static/app/core/images/images.service.js | 135 + .../static/app/core/images/images.service.spec.js | 115 + .../static/app/core/images/panel.html | 4 + .../steps/create-image/create-image.controller.js | 177 + .../create-image/create-image.controller.spec.js | 246 + .../steps/create-image/create-image.help.html | 26 + .../images/steps/create-image/create-image.html | 263 + .../create-volume/create-volume.controller.js | 28 +- .../create-volume/create-volume.controller.spec.js | 53 +- .../steps/create-volume/create-volume.help.html | 22 +- .../images/steps/create-volume/create-volume.html | 134 +- .../steps/edit-image/edit-image.controller.js | 105 + .../steps/edit-image/edit-image.controller.spec.js | 153 + .../images/steps/edit-image/edit-image.help.html | 16 + .../core/images/steps/edit-image/edit-image.html | 150 + .../update-metadata/update-metadata.controller.js | 100 + .../update-metadata.controller.spec.js | 154 + .../update-metadata/update-metadata.help.html | 16 + .../steps/update-metadata/update-metadata.html | 6 + .../static/app/core/images/summary.controller.js | 55 + .../app/core/images/summary.controller.spec.js | 49 + .../static/app/core/images/table/images-table.html | 159 - .../app/core/images/table/images.controller.js | 130 - .../core/images/table/images.controller.spec.js | 149 - .../core/images/workflows/create-volume.service.js | 6 +- .../app/core/metadata/modal/modal.controller.js | 22 +- .../core/metadata/modal/modal.controller.spec.js | 38 +- .../static/app/core/metadata/modal/modal.html | 8 +- .../cinder-extensions.service.js | 6 +- .../core/openstack-service-api/cinder.service.js | 100 +- .../openstack-service-api/cinder.service.spec.js | 27 + .../core/openstack-service-api/common-test.mock.js | 12 +- .../openstack-service-api/extensions.service.js | 4 +- .../core/openstack-service-api/glance.service.js | 87 +- .../openstack-service-api/glance.service.spec.js | 148 +- .../app/core/openstack-service-api/heat.service.js | 17 +- .../keypair-download.service.js | 3 + .../core/openstack-service-api/keystone.service.js | 36 +- .../openstack-service-api/keystone.service.spec.js | 41 + .../core/openstack-service-api/network.service.js | 23 +- .../neutron-extensions.service.js | 6 +- .../neutron-extensions.service.spec.js | 16 +- .../core/openstack-service-api/neutron.service.js | 76 +- .../openstack-service-api/neutron.service.spec.js | 21 + .../nova-extensions.service.js | 6 +- .../app/core/openstack-service-api/nova.service.js | 435 +- .../openstack-service-api/nova.service.spec.js | 201 + .../openstack-service-api.module.js | 2 +- .../core/openstack-service-api/policy.service.js | 52 +- .../openstack-service-api/policy.service.spec.js | 67 +- .../security-group.service.js | 8 +- .../service-catalog.service.js | 14 +- .../core/openstack-service-api/settings.service.js | 16 +- .../core/openstack-service-api/swift.service.js | 145 +- .../openstack-service-api/swift.service.spec.js | 39 +- .../openstack-service-api/user-session.service.js | 6 +- .../static/app/core/workflow/decorator.service.js | 21 +- .../app/core/workflow/decorator.service.spec.js | 11 +- .../static/app/core/workflow/workflow.module.js | 2 - .../static/app/core/workflow/workflow.service.js | 12 +- .../static/app/redirect.controller.js | 2 +- .../static/app/redirect.controller.spec.js | 3 +- .../static/app/resources/resources.module.js | 88 + .../static/dashboard/scss/_bootstrap_helpers.scss | 37 + .../static/dashboard/scss/_debt.scss | 77 +- .../static/dashboard/scss/_layout.scss | 6 +- .../static/dashboard/scss/_mixins.scss | 15 + .../static/dashboard/scss/_util.scss | 2 +- .../static/dashboard/scss/_variables.scss | 17 +- .../dashboard/scss/components/_breadcrumbs.scss | 9 + .../static/dashboard/scss/components/_charts.scss | 1 - .../dashboard/scss/components/_checkboxes.scss | 4 +- .../dashboard/scss/components/_dl_lists.scss | 7 + .../dashboard/scss/components/_dropdowns.scss | 85 + .../static/dashboard/scss/components/_forms.scss | 18 +- .../dashboard/scss/components/_help_panel.scss | 4 +- .../static/dashboard/scss/components/_icons.scss | 9 + .../static/dashboard/scss/components/_loader.scss | 13 + .../dashboard/scss/components/_messages.scss | 11 +- .../static/dashboard/scss/components/_modals.scss | 60 +- .../static/dashboard/scss/components/_navbar.scss | 11 + .../scss/components/_network_topology.scss | 6 +- .../scss/components/_network_topology_svg.scss | 148 + .../dashboard/scss/components/_pending_bar.scss | 18 - .../dashboard/scss/components/_pie_charts.scss | 44 +- .../dashboard/scss/components/_progress_bars.scss | 60 + .../static/dashboard/scss/components/_quota.scss | 8 +- .../dashboard/scss/components/_radiobuttons.scss | 36 + .../static/dashboard/scss/components/_selects.scss | 80 + .../static/dashboard/scss/components/_sidebar.scss | 2 +- .../dashboard/scss/components/_table_actions.scss | 73 - .../static/dashboard/scss/components/_tables.scss | 56 +- .../static/dashboard/scss/horizon.scss | 14 +- openstack_dashboard/static_settings.py | 161 - openstack_dashboard/templates/403.html | 7 +- openstack_dashboard/templates/_stylesheets.html | 2 +- openstack_dashboard/templates/angular.html | 16 + .../templates/angular/angular_templates.html | 5 + .../templates/angular/angular_templates.js | 11 + openstack_dashboard/templates/base.html | 10 +- .../templates/context_selection/_project_list.html | 2 - .../templates/context_selection/_region_list.html | 4 +- openstack_dashboard/templates/horizon/_conf.html | 10 +- .../templates/horizon/_scripts.html | 35 +- .../templatetags/context_selection.py | 23 +- openstack_dashboard/test/error_pages_urls.py | 8 +- openstack_dashboard/test/helpers.py | 78 +- .../pages/admin/system/defaultspage.py | 110 + .../pages/admin/system/flavorspage.py | 99 +- .../pages/admin/system/hostaggregatespage.py | 2 +- .../pages/admin/system/instancespage.py | 18 + .../pages/admin/system/routerspage.py | 41 + .../pages/admin/system/volumes/volumetypespage.py | 19 + .../pages/identity/projectspage.py | 39 +- .../compute/access_and_security/apiaccesspage.py | 72 + .../compute/access_and_security/floatingipspage.py | 4 +- .../compute/access_and_security/keypairspage.py | 13 +- .../compute/access_and_security/managerulespage.py | 74 + .../access_and_security/securitygroupspage.py | 11 + .../pages/project/compute/imagespage.py | 134 +- .../pages/project/compute/instancespage.py | 47 +- .../project/compute/volumes/volumesnapshotspage.py | 11 +- .../pages/project/compute/volumes/volumespage.py | 133 +- .../pages/project/network/networkoverviewpage.py | 38 + .../pages/project/network/networkspage.py | 9 +- .../pages/project/network/routerinterfacespage.py | 101 + .../pages/project/network/routeroverviewpage.py | 42 + .../pages/project/network/routerspage.py | 80 +- .../pages/project/orchestration/stackspage.py | 99 + .../pages/settings/changepasswordpage.py | 7 + openstack_dashboard/test/settings.py | 69 +- openstack_dashboard/test/test_data/cinder_data.py | 27 +- openstack_dashboard/test/test_data/exceptions.py | 4 + openstack_dashboard/test/test_data/glance_data.py | 116 +- openstack_dashboard/test/test_data/heat_data.py | 35 + .../test/test_data/keystone_data.py | 21 +- openstack_dashboard/test/test_data/neutron_data.py | 41 +- openstack_dashboard/test/test_data/nova_data.py | 72 +- openstack_dashboard/test/test_data/swift_data.py | 22 +- .../test/test_panels/another_panel/urls.py | 6 +- .../test/test_panels/nonloading_panel/urls.py | 6 +- .../test/test_panels/plugin_panel/urls.py | 6 +- .../test/test_panels/second_panel/urls.py | 6 +- openstack_dashboard/test/urls.py | 18 +- openstack_dashboard/themes/default/_styles.scss | 2 - openstack_dashboard/themes/default/_variables.scss | 856 +- .../themes/default/bootstrap/_styles.scss | 7 - .../themes/default/bootstrap/_variables.scss | 853 -- .../default/bootstrap/components/_dropdowns.scss | 46 - .../default/bootstrap/components/_forms.scss | 10 - .../default/bootstrap/components/_navbar.scss | 29 - .../themes/default/bootstrap/components/_navs.scss | 10 - .../themes/default/bootstrap/components/_type.scss | 5 - .../themes/default/horizon/_styles.scss | 51 - .../themes/default/horizon/_variables.scss | 13 - .../horizon/components/_breadcrumb_header.scss | 10 - .../horizon/components/_context_selection.scss | 49 - .../themes/default/horizon/components/_login.scss | 3 - .../default/horizon/components/_messages.scss | 29 - .../themes/default/horizon/components/_navbar.scss | 3 - .../default/horizon/components/_pie_charts.scss | 12 - .../themes/default/horizon/components/_quota.scss | 6 - .../default/horizon/components/_selects.scss | 3 + .../default/horizon/components/_sidebar.scss | 107 - .../default/horizon/components/_table_actions.scss | 3 - .../themes/default/horizon/components/_tables.scss | 28 - .../themes/material/static/bootstrap/_styles.scss | 2 +- .../themes/material/static/horizon/_icons.scss | 12 +- .../themes/material/static/horizon/_styles.scss | 19 +- .../static/horizon/components/_checkboxes.scss | 1 - .../static/horizon/components/_dropdowns.scss | 9 + .../static/horizon/components/_help_panel.scss | 25 +- .../static/horizon/components/_magic_search.scss | 8 +- .../static/horizon/components/_progress_bars.scss | 3 + .../static/horizon/components/_radiobuttons.scss | 30 + .../static/horizon/components/_selects.scss | 74 + .../material/static/horizon/components/_trees.scss | 8 + .../material/templates/horizon/_sidebar.html | 6 +- .../templates/horizon/client_side/_confirm.html | 22 + openstack_dashboard/urls.py | 24 +- openstack_dashboard/usage/base.py | 32 +- openstack_dashboard/usage/quotas.py | 62 +- openstack_dashboard/usage/views.py | 1 + openstack_dashboard/utils/identity.py | 25 - openstack_dashboard/utils/settings.py | 178 +- package.json | 24 +- .../notes/action-results-303c282165b60f47.yaml | 12 + .../admin-neutron-l3-agents-dd6274467572906b.yaml | 8 + .../notes/angular-direct-1b156f152590ab93.yaml | 17 + .../notes/angular-features-d677356f161322d6.yaml | 4 + .../bp-add-scheduler-hints-77600faec041e134.yaml | 10 + .../bp-admin-manage-fips-5aa409d3502b031a.yaml | 4 + ...-admin-views-filter-first-5b0d8a02b1271135.yaml | 7 + .../bp-angular-schema-form-bbe1aedf644b53db.yaml | 7 + ...p-angular-table-directive-1b593f2ad28c2845.yaml | 8 + ...ngular-template-overrides-9f05ffd61367245a.yaml | 11 + .../notes/bp-cache-templates-4ab00dcda195a03a.yaml | 2 +- ...cinder-consistency-groups-7cc98fda0ff3bb7a.yaml | 13 + ...configurable-boot-sources-4ba89f3b2a927801.yaml | 8 + releasenotes/notes/bp-dj110-438f26c21f283c46.yaml | 10 + ...glance-large-image-upload-c987dc86bab38761.yaml | 16 + .../bp-horizon-vendor-split-4451bc1988485957.yaml | 6 + .../notes/bp-next-steps-4c7064e52d5abcf5.yaml | 6 + ...d-address-pairs-extension-a05c3a864f494b0c.yaml | 6 + ...ict-private-network-input-5e5bd5978b273c62.yaml | 3 + ...prop-for-project-and-user-e8a4578c395a8ade.yaml | 7 + ...pdate-dependencies-newton-3bd257faa37d3dda.yaml | 18 + .../navigation-improvements-ab101299eb1a8d54.yaml | 10 + .../notes/bug-123741-4be1aa90b9d44e40.yaml | 6 + ...4-cached-template-loaders-3536f35e11099eba.yaml | 5 + .../notes/bug-1585682-abd815f290e494d3.yaml | 11 + .../notes/bug-1588663-6fab83e9d89b20d2.yaml | 4 + ...recate-lbaas-v1-dashboard-1f9c48d7c6997b1f.yaml | 9 + .../notes/generic-details-4f78452b14005e5b.yaml | 26 + releasenotes/notes/glance-v2-ba86ba34611f95ce.yaml | 16 + ...bal-class-name-convention-71ff68913c39b800.yaml | 9 + .../horizon-without-nova-3cd0a84109ed2187.yaml | 9 + .../notes/hz-select-fixes-c9bfe6a53e0daa20.yaml | 2 +- .../notes/image-panel-switch-38e9d3716451f9e3.yaml | 13 + .../notes/ip-availability-be217ba59cc02b40.yaml | 8 + .../network-type-geneve-71eed4104699754e.yaml | 3 + .../network-type-midonet-6c78bdfe1e3186a0.yaml | 5 + .../operation-history-log-64354f66614cb1dd.yaml | 5 + .../provider-net-config-713f0672c8e49888.yaml | 6 + ...subnet-pool-label-options-9aeaa816ad6cc2f8.yaml | 8 + .../remove-default-styles-1d8ba7ad46a51381.yaml | 13 + ...scaffolds-from-production-6e52eb1da2a4bc9e.yaml | 8 + .../notes/remove-inline-edit-63f92054238378d3.yaml | 7 + .../resource-directives-44629f1116545141.yaml | 14 + ...tting-OVERVIEW_DAYS_RANGE-9b87e8b077952a32.yaml | 11 + .../table-row-warning-class-2fdb3434440d0c22.yaml | 4 + .../notes/theme-modal-sizes-924e5835efe9bb79.yaml | 13 + .../token-delete-disabled-bb50c3cddd315ee6.yaml | 4 + .../xstatic-settings-cleanup-8de0e2ba00fd43ec.yaml | 11 + releasenotes/source/index.rst | 3 +- releasenotes/source/mitaka.rst | 6 + requirements.txt | 41 +- setup.cfg | 21 +- test-requirements.txt | 9 +- tools/gate/integration/devstack_exports.sh | 6 - tools/gate/integration/devstack_gate_rc | 4 + tools/gate/integration/post_test_hook.sh | 22 +- tools/gate/integration/pre_test_hook.sh | 20 +- tox.ini | 167 +- 1234 files changed, 88538 insertions(+), 58662 deletions(-) Requirements updates -------------------- diff --git a/requirements.txt b/requirements.txt index a0fa350..2d5a929 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12 +12 @@ pbr>=1.6 # Apache-2.0 -Babel>=1.3 # BSD +Babel>=2.3.4 # BSD @@ -15 +15 @@ Pint>=0.5 # BSD -django-babel>=0.4.0 # BSD +django-babel>=0.5.1 # BSD @@ -17 +17 @@ django-compressor>=2.0 # MIT -django-openstack-auth>=2.0.0 # Apache-2.0 +django-openstack-auth>=2.4.0 # Apache-2.0 @@ -19,5 +19,4 @@ django-pyscss>=2.0.2 # BSD License (2 clause) -httplib2>=0.7.5 # MIT -iso8601>=0.1.9 # MIT -netaddr!=0.7.16,>=0.7.12 # BSD -oslo.concurrency>=3.5.0 # Apache-2.0 -oslo.config>=3.7.0 # Apache-2.0 +iso8601>=0.1.11 # MIT +netaddr!=0.7.16,>=0.7.13 # BSD +oslo.concurrency>=3.8.0 # Apache-2.0 +oslo.config>=3.14.0 # Apache-2.0 @@ -25 +24 @@ oslo.i18n>=2.1.0 # Apache-2.0 -oslo.policy>=0.5.0 # Apache-2.0 +oslo.policy>=1.9.0 # Apache-2.0 @@ -27,8 +26,8 @@ oslo.serialization>=1.10.0 # Apache-2.0 -oslo.utils>=3.5.0 # Apache-2.0 -pyScss>=1.3.4 # MIT License -python-ceilometerclient>=2.2.1 # Apache-2.0 -python-cinderclient>=1.3.1 # Apache-2.0 -python-glanceclient>=2.0.0 # Apache-2.0 -python-heatclient>=0.6.0 # Apache-2.0 -python-keystoneclient!=1.8.0,!=2.1.0,>=1.6.0 # Apache-2.0 -python-neutronclient!=4.1.0,>=2.6.0 # Apache-2.0 +oslo.utils>=3.16.0 # Apache-2.0 +pyScss!=1.3.5,>=1.3.4 # MIT License +python-ceilometerclient>=2.5.0 # Apache-2.0 +python-cinderclient!=1.7.0,!=1.7.1,>=1.6.0 # Apache-2.0 +python-glanceclient!=2.4.0,>=2.3.0 # Apache-2.0 +python-heatclient>=1.4.0 # Apache-2.0 +python-keystoneclient!=2.1.0,>=2.0.0 # Apache-2.0 +python-neutronclient>=5.1.0 # Apache-2.0 @@ -42,0 +42 @@ XStatic-Angular-Bootstrap>=0.11.0.2 # MIT License +XStatic-Angular-FileUpload>=12.0.4.0 # MIT License @@ -44,0 +45 @@ XStatic-Angular-lrdragndrop>=1.0.2.2 # MIT License +XStatic-Angular-Schema-Form>=0.8.13.0 # MIT @@ -58 +59,2 @@ XStatic-JSEncrypt>=2.0.0.2 # MIT License -XStatic-mdi==1.1.70.1 # SIL OPEN FONT LICENSE Version 1.1 +XStatic-mdi>=1.4.57.0 # SIL OPEN FONT LICENSE Version 1.1 +XStatic-objectpath>=1.2.1.0 # MIT @@ -61 +63 @@ XStatic-roboto-fontface>=0.4.3.2 # Apache 2.0 License -XStatic-smart-table>=1.4.5.3 # MIT License +XStatic-smart-table!=1.4.13.0,>=1.4.5.3 # MIT License @@ -63,0 +66 @@ XStatic-term.js>=0.0.4 # MIT License +XStatic-tv4>=1.2.7.0 # MIT diff --git a/test-requirements.txt b/test-requirements.txt index d89482b..2096135 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -13,2 +13,2 @@ coverage>=3.6 # Apache-2.0 -django-nose>=1.2 # BSD -mock>=1.2 # BSD +django-nose>=1.4.4 # BSD +mock>=2.0 # BSD @@ -23 +23,2 @@ oslosphinx!=3.4.0,>=2.5.0 # Apache-2.0 -reno>=0.1.1 # Apache2 +reno>=1.8.0 # Apache2 +requests>=2.10.0 # Apache-2.0 @@ -25 +26 @@ selenium>=2.50.1 # Apache-2.0 -sphinx!=1.2.0,!=1.3b1,<1.3,>=1.1.2 # BSD +sphinx!=1.3b1,<1.3,>=1.2.1 # BSD
participants (1)
-
no-reply@openstack.org