Merge lp:~zulcss/ubuntu/precise/horizon/trunk into lp:~ubuntu-cloud-archive/ubuntu/precise/horizon/trunk

Proposed by Chuck Short
Status: Merged
Approved by: James Page
Approved revision: 40
Merged at revision: 40
Proposed branch: lp:~zulcss/ubuntu/precise/horizon/trunk
Merge into: lp:~ubuntu-cloud-archive/ubuntu/precise/horizon/trunk
Diff against target: 165281 lines (+81252/-75650)
870 files modified
.bzrignore (+0/-12)
.pc/.quilt_patches (+0/-1)
.pc/.quilt_series (+0/-1)
.pc/.version (+0/-1)
.pc/add_juju_settings_panel.patch/horizon/dashboards/settings/dashboard.py (+0/-31)
.pc/applied-patches (+0/-5)
.pc/fix-dashboard-django-wsgi.patch/openstack_dashboard/wsgi/django.wsgi (+0/-15)
.pc/fix-dashboard-manage.patch/manage.py (+0/-11)
.pc/fix-ubuntu-tests.patch/horizon/tests/testsettings.py (+0/-197)
.pc/fix-ubuntu-tests.patch/run_tests.sh (+0/-427)
.pc/ubuntu_local_settings.patch/openstack_dashboard/local/local_settings.py.example (+0/-147)
AUTHORS (+8/-0)
ChangeLog (+2476/-31)
MANIFEST.in (+1/-1)
PKG-INFO (+2/-1)
debian/changelog (+18/-0)
debian/patches/fix-dashboard-manage.patch (+4/-5)
debian/patches/fix-ubuntu-tests.patch (+15/-29)
debian/patches/series (+4/-1)
debian/patches/ubuntu_local_settings.patch (+13/-26)
doc/source/ref/run_tests.rst (+19/-0)
doc/source/ref/test.rst (+12/-4)
doc/source/testing.rst (+2/-0)
doc/source/topics/testing.rst (+15/-15)
horizon.egg-info/PKG-INFO (+2/-1)
horizon.egg-info/SOURCES.txt (+441/-415)
horizon.egg-info/requires.txt (+2/-1)
horizon/__init__.py (+1/-1)
horizon/api/__init__.py (+0/-39)
horizon/api/base.py (+0/-118)
horizon/api/glance.py (+0/-98)
horizon/api/keystone.py (+0/-290)
horizon/api/nova.py (+0/-585)
horizon/api/quantum.py (+0/-261)
horizon/api/swift.py (+0/-264)
horizon/base.py (+8/-24)
horizon/conf/__init__.py (+35/-0)
horizon/conf/default.py (+30/-0)
horizon/conf/panel_template/tests.py.tmpl (+1/-1)
horizon/conf/panel_template/urls.py (+1/-0)
horizon/context_processors.py (+5/-35)
horizon/dashboards/nova/access_and_security/floating_ips/forms.py (+0/-46)
horizon/dashboards/nova/access_and_security/floating_ips/tables.py (+0/-129)
horizon/dashboards/nova/access_and_security/floating_ips/tests.py (+0/-176)
horizon/dashboards/nova/access_and_security/floating_ips/urls.py (+0/-29)
horizon/dashboards/nova/access_and_security/floating_ips/views.py (+0/-68)
horizon/dashboards/nova/access_and_security/floating_ips/workflows.py (+0/-114)
horizon/dashboards/nova/access_and_security/keypairs/forms.py (+0/-66)
horizon/dashboards/nova/access_and_security/keypairs/tables.py (+0/-61)
horizon/dashboards/nova/access_and_security/keypairs/tests.py (+0/-162)
horizon/dashboards/nova/access_and_security/keypairs/urls.py (+0/-33)
horizon/dashboards/nova/access_and_security/keypairs/views.py (+0/-81)
horizon/dashboards/nova/access_and_security/panel.py (+0/-29)
horizon/dashboards/nova/access_and_security/security_groups/forms.py (+0/-173)
horizon/dashboards/nova/access_and_security/security_groups/tables.py (+0/-108)
horizon/dashboards/nova/access_and_security/security_groups/tests.py (+0/-374)
horizon/dashboards/nova/access_and_security/security_groups/urls.py (+0/-30)
horizon/dashboards/nova/access_and_security/security_groups/views.py (+0/-119)
horizon/dashboards/nova/access_and_security/templates/access_and_security/floating_ips/_allocate.html (+0/-33)
horizon/dashboards/nova/access_and_security/templates/access_and_security/floating_ips/allocate.html (+0/-7)
horizon/dashboards/nova/access_and_security/templates/access_and_security/floating_ips/associate.html (+0/-11)
horizon/dashboards/nova/access_and_security/templates/access_and_security/index.html (+0/-21)
horizon/dashboards/nova/access_and_security/templates/access_and_security/keypairs/_create.html (+0/-25)
horizon/dashboards/nova/access_and_security/templates/access_and_security/keypairs/_import.html (+0/-25)
horizon/dashboards/nova/access_and_security/templates/access_and_security/keypairs/create.html (+0/-12)
horizon/dashboards/nova/access_and_security/templates/access_and_security/keypairs/download.html (+0/-21)
horizon/dashboards/nova/access_and_security/templates/access_and_security/keypairs/import.html (+0/-12)
horizon/dashboards/nova/access_and_security/templates/access_and_security/security_groups/_create.html (+0/-25)
horizon/dashboards/nova/access_and_security/templates/access_and_security/security_groups/_edit_rules.html (+0/-21)
horizon/dashboards/nova/access_and_security/templates/access_and_security/security_groups/create.html (+0/-11)
horizon/dashboards/nova/access_and_security/templates/access_and_security/security_groups/edit_rules.html (+0/-11)
horizon/dashboards/nova/access_and_security/tests.py (+0/-86)
horizon/dashboards/nova/access_and_security/urls.py (+0/-34)
horizon/dashboards/nova/access_and_security/views.py (+0/-83)
horizon/dashboards/nova/containers/browsers.py (+0/-37)
horizon/dashboards/nova/containers/forms.py (+0/-164)
horizon/dashboards/nova/containers/panel.py (+0/-32)
horizon/dashboards/nova/containers/tables.py (+0/-269)
horizon/dashboards/nova/containers/templates/containers/_copy.html (+0/-24)
horizon/dashboards/nova/containers/templates/containers/_create.html (+0/-24)
horizon/dashboards/nova/containers/templates/containers/_upload.html (+0/-25)
horizon/dashboards/nova/containers/templates/containers/copy.html (+0/-13)
horizon/dashboards/nova/containers/templates/containers/create.html (+0/-11)
horizon/dashboards/nova/containers/templates/containers/index.html (+0/-13)
horizon/dashboards/nova/containers/templates/containers/upload.html (+0/-15)
horizon/dashboards/nova/containers/tests.py (+0/-237)
horizon/dashboards/nova/containers/urls.py (+0/-48)
horizon/dashboards/nova/containers/views.py (+0/-217)
horizon/dashboards/nova/dashboard.py (+0/-47)
horizon/dashboards/nova/images_and_snapshots/images/forms.py (+0/-164)
horizon/dashboards/nova/images_and_snapshots/images/panel.py (+0/-30)
horizon/dashboards/nova/images_and_snapshots/images/tables.py (+0/-134)
horizon/dashboards/nova/images_and_snapshots/images/tabs.py (+0/-44)
horizon/dashboards/nova/images_and_snapshots/images/tests.py (+0/-96)
horizon/dashboards/nova/images_and_snapshots/images/urls.py (+0/-32)
horizon/dashboards/nova/images_and_snapshots/images/views.py (+0/-83)
horizon/dashboards/nova/images_and_snapshots/panel.py (+0/-29)
horizon/dashboards/nova/images_and_snapshots/snapshots/forms.py (+0/-56)
horizon/dashboards/nova/images_and_snapshots/snapshots/panel.py (+0/-30)
horizon/dashboards/nova/images_and_snapshots/snapshots/tables.py (+0/-59)
horizon/dashboards/nova/images_and_snapshots/snapshots/tests.py (+0/-97)
horizon/dashboards/nova/images_and_snapshots/snapshots/urls.py (+0/-30)
horizon/dashboards/nova/images_and_snapshots/snapshots/views.py (+0/-62)
horizon/dashboards/nova/images_and_snapshots/templates/images_and_snapshots/images/_create.html (+0/-33)
horizon/dashboards/nova/images_and_snapshots/templates/images_and_snapshots/images/_detail_overview.html (+0/-68)
horizon/dashboards/nova/images_and_snapshots/templates/images_and_snapshots/images/_update.html (+0/-24)
horizon/dashboards/nova/images_and_snapshots/templates/images_and_snapshots/images/create.html (+0/-11)
horizon/dashboards/nova/images_and_snapshots/templates/images_and_snapshots/images/detail.html (+0/-16)
horizon/dashboards/nova/images_and_snapshots/templates/images_and_snapshots/images/update.html (+0/-11)
horizon/dashboards/nova/images_and_snapshots/templates/images_and_snapshots/index.html (+0/-19)
horizon/dashboards/nova/images_and_snapshots/templates/images_and_snapshots/snapshots/_create.html (+0/-25)
horizon/dashboards/nova/images_and_snapshots/templates/images_and_snapshots/snapshots/_detail_overview.html (+0/-42)
horizon/dashboards/nova/images_and_snapshots/templates/images_and_snapshots/snapshots/create.html (+0/-11)
horizon/dashboards/nova/images_and_snapshots/templates/images_and_snapshots/snapshots/detail.html (+0/-15)
horizon/dashboards/nova/images_and_snapshots/tests.py (+0/-169)
horizon/dashboards/nova/images_and_snapshots/urls.py (+0/-35)
horizon/dashboards/nova/images_and_snapshots/views.py (+0/-88)
horizon/dashboards/nova/images_and_snapshots/volume_snapshots/panel.py (+0/-26)
horizon/dashboards/nova/images_and_snapshots/volume_snapshots/tables.py (+0/-88)
horizon/dashboards/nova/images_and_snapshots/volume_snapshots/tabs.py (+0/-48)
horizon/dashboards/nova/images_and_snapshots/volume_snapshots/tests.py (+0/-59)
horizon/dashboards/nova/instances/forms.py (+0/-50)
horizon/dashboards/nova/instances/panel.py (+0/-28)
horizon/dashboards/nova/instances/tables.py (+0/-319)
horizon/dashboards/nova/instances/tabs.py (+0/-77)
horizon/dashboards/nova/instances/templates/instances/_detail_log.html (+0/-17)
horizon/dashboards/nova/instances/templates/instances/_detail_overview.html (+0/-98)
horizon/dashboards/nova/instances/templates/instances/_detail_vnc.html (+0/-10)
horizon/dashboards/nova/instances/templates/instances/_instance_ips.html (+0/-10)
horizon/dashboards/nova/instances/templates/instances/_launch_customize_help.html (+0/-3)
horizon/dashboards/nova/instances/templates/instances/_launch_details_help.html (+0/-53)
horizon/dashboards/nova/instances/templates/instances/_launch_volumes_help.html (+0/-3)
horizon/dashboards/nova/instances/templates/instances/_update.html (+0/-24)
horizon/dashboards/nova/instances/templates/instances/detail.html (+0/-15)
horizon/dashboards/nova/instances/templates/instances/index.html (+0/-11)
horizon/dashboards/nova/instances/templates/instances/launch.html (+0/-11)
horizon/dashboards/nova/instances/templates/instances/update.html (+0/-11)
horizon/dashboards/nova/instances/tests.py (+0/-982)
horizon/dashboards/nova/instances/urls.py (+0/-36)
horizon/dashboards/nova/instances/views.py (+0/-186)
horizon/dashboards/nova/instances/workflows.py (+0/-510)
horizon/dashboards/nova/models.py (+0/-23)
horizon/dashboards/nova/networks/forms.py (+0/-55)
horizon/dashboards/nova/networks/panel.py (+0/-28)
horizon/dashboards/nova/networks/ports/tables.py (+0/-53)
horizon/dashboards/nova/networks/ports/tabs.py (+0/-46)
horizon/dashboards/nova/networks/ports/urls.py (+0/-24)
horizon/dashboards/nova/networks/ports/views.py (+0/-28)
horizon/dashboards/nova/networks/subnets/forms.py (+0/-138)
horizon/dashboards/nova/networks/subnets/tables.py (+0/-105)
horizon/dashboards/nova/networks/subnets/tabs.py (+0/-48)
horizon/dashboards/nova/networks/subnets/urls.py (+0/-24)
horizon/dashboards/nova/networks/subnets/views.py (+0/-109)
horizon/dashboards/nova/networks/tables.py (+0/-107)
horizon/dashboards/nova/networks/templates/networks/_create.html (+0/-24)
horizon/dashboards/nova/networks/templates/networks/_detail_overview.html (+0/-20)
horizon/dashboards/nova/networks/templates/networks/_network_ips.html (+0/-10)
horizon/dashboards/nova/networks/templates/networks/_update.html (+0/-24)
horizon/dashboards/nova/networks/templates/networks/create.html (+0/-11)
horizon/dashboards/nova/networks/templates/networks/detail.html (+0/-18)
horizon/dashboards/nova/networks/templates/networks/index.html (+0/-11)
horizon/dashboards/nova/networks/templates/networks/ports/_detail_overview.html (+0/-41)
horizon/dashboards/nova/networks/templates/networks/ports/_port_ips.html (+0/-7)
horizon/dashboards/nova/networks/templates/networks/ports/detail.html (+0/-15)
horizon/dashboards/nova/networks/templates/networks/subnets/_create.html (+0/-25)
horizon/dashboards/nova/networks/templates/networks/subnets/_detail_overview.html (+0/-29)
horizon/dashboards/nova/networks/templates/networks/subnets/_update.html (+0/-33)
horizon/dashboards/nova/networks/templates/networks/subnets/create.html (+0/-11)
horizon/dashboards/nova/networks/templates/networks/subnets/detail.html (+0/-15)
horizon/dashboards/nova/networks/templates/networks/subnets/index.html (+0/-11)
horizon/dashboards/nova/networks/templates/networks/subnets/update.html (+0/-11)
horizon/dashboards/nova/networks/templates/networks/update.html (+0/-11)
horizon/dashboards/nova/networks/tests.py (+0/-783)
horizon/dashboards/nova/networks/urls.py (+0/-37)
horizon/dashboards/nova/networks/views.py (+0/-143)
horizon/dashboards/nova/networks/workflows.py (+0/-161)
horizon/dashboards/nova/overview/panel.py (+0/-32)
horizon/dashboards/nova/overview/templates/overview/usage.csv (+0/-11)
horizon/dashboards/nova/overview/templates/overview/usage.html (+0/-13)
horizon/dashboards/nova/overview/tests.py (+0/-143)
horizon/dashboards/nova/overview/urls.py (+0/-29)
horizon/dashboards/nova/overview/views.py (+0/-37)
horizon/dashboards/nova/templates/nova/_warning.html (+0/-32)
horizon/dashboards/nova/volumes/forms.py (+0/-219)
horizon/dashboards/nova/volumes/panel.py (+0/-29)
horizon/dashboards/nova/volumes/tables.py (+0/-226)
horizon/dashboards/nova/volumes/tabs.py (+0/-48)
horizon/dashboards/nova/volumes/templates/volumes/_attach.html (+0/-25)
horizon/dashboards/nova/volumes/templates/volumes/_create.html (+0/-57)
horizon/dashboards/nova/volumes/templates/volumes/_create_snapshot.html (+0/-25)
horizon/dashboards/nova/volumes/templates/volumes/_detail_overview.html (+0/-49)
horizon/dashboards/nova/volumes/templates/volumes/attach.html (+0/-11)
horizon/dashboards/nova/volumes/templates/volumes/create.html (+0/-11)
horizon/dashboards/nova/volumes/templates/volumes/create_snapshot.html (+0/-11)
horizon/dashboards/nova/volumes/templates/volumes/detail.html (+0/-15)
horizon/dashboards/nova/volumes/templates/volumes/index.html (+0/-11)
horizon/dashboards/nova/volumes/tests.py (+0/-328)
horizon/dashboards/nova/volumes/urls.py (+0/-35)
horizon/dashboards/nova/volumes/views.py (+0/-184)
horizon/dashboards/settings/dashboard.py (+0/-40)
horizon/dashboards/settings/ec2/forms.py (+0/-109)
horizon/dashboards/settings/ec2/panel.py (+0/-28)
horizon/dashboards/settings/ec2/templates/ec2/download_form.html (+0/-25)
horizon/dashboards/settings/ec2/templates/ec2/ec2rc.sh.template (+0/-15)
horizon/dashboards/settings/ec2/templates/ec2/index.html (+0/-11)
horizon/dashboards/settings/ec2/tests.py (+0/-69)
horizon/dashboards/settings/ec2/urls.py (+0/-23)
horizon/dashboards/settings/ec2/views.py (+0/-31)
horizon/dashboards/settings/juju/__init__.py (+0/-1)
horizon/dashboards/settings/juju/forms.py (+0/-100)
horizon/dashboards/settings/juju/panel.py (+0/-28)
horizon/dashboards/settings/juju/urls.py (+0/-24)
horizon/dashboards/settings/juju/views.py (+0/-35)
horizon/dashboards/settings/models.py (+0/-23)
horizon/dashboards/settings/project/forms.py (+0/-71)
horizon/dashboards/settings/project/panel.py (+0/-28)
horizon/dashboards/settings/project/tables.py (+0/-33)
horizon/dashboards/settings/project/templates/project/_openrc.html (+0/-32)
horizon/dashboards/settings/project/templates/project/openrc.sh.template (+0/-24)
horizon/dashboards/settings/project/templates/project/settings.html (+0/-11)
horizon/dashboards/settings/project/urls.py (+0/-23)
horizon/dashboards/settings/project/views.py (+0/-44)
horizon/dashboards/settings/templates/settings/juju/download_form.html (+0/-20)
horizon/dashboards/settings/templates/settings/juju/environments.yaml.template (+0/-21)
horizon/dashboards/settings/templates/settings/juju/index.html (+0/-11)
horizon/dashboards/settings/user/forms.py (+0/-59)
horizon/dashboards/settings/user/panel.py (+0/-28)
horizon/dashboards/settings/user/templates/user/_settings.html (+0/-26)
horizon/dashboards/settings/user/templates/user/settings.html (+0/-11)
horizon/dashboards/settings/user/urls.py (+0/-23)
horizon/dashboards/settings/user/views.py (+0/-31)
horizon/dashboards/syspanel/dashboard.py (+0/-37)
horizon/dashboards/syspanel/flavors/forms.py (+0/-95)
horizon/dashboards/syspanel/flavors/panel.py (+0/-32)
horizon/dashboards/syspanel/flavors/tables.py (+0/-53)
horizon/dashboards/syspanel/flavors/templates/flavors/_create.html (+0/-25)
horizon/dashboards/syspanel/flavors/templates/flavors/_edit.html (+0/-26)
horizon/dashboards/syspanel/flavors/templates/flavors/create.html (+0/-11)
horizon/dashboards/syspanel/flavors/templates/flavors/edit.html (+0/-11)
horizon/dashboards/syspanel/flavors/templates/flavors/index.html (+0/-11)
horizon/dashboards/syspanel/flavors/tests.py (+0/-81)
horizon/dashboards/syspanel/flavors/urls.py (+0/-28)
horizon/dashboards/syspanel/flavors/views.py (+0/-81)
horizon/dashboards/syspanel/images/forms.py (+0/-25)
horizon/dashboards/syspanel/images/panel.py (+0/-32)
horizon/dashboards/syspanel/images/tables.py (+0/-45)
horizon/dashboards/syspanel/images/templates/images/_update.html (+0/-25)
horizon/dashboards/syspanel/images/templates/images/index.html (+0/-11)
horizon/dashboards/syspanel/images/templates/images/update.html (+0/-12)
horizon/dashboards/syspanel/images/tests.py (+0/-97)
horizon/dashboards/syspanel/images/urls.py (+0/-30)
horizon/dashboards/syspanel/images/views.py (+0/-66)
horizon/dashboards/syspanel/instances/panel.py (+0/-33)
horizon/dashboards/syspanel/instances/tables.py (+0/-99)
horizon/dashboards/syspanel/instances/templates/instances/index.html (+0/-11)
horizon/dashboards/syspanel/instances/tests.py (+0/-142)
horizon/dashboards/syspanel/instances/urls.py (+0/-34)
horizon/dashboards/syspanel/instances/views.py (+0/-81)
horizon/dashboards/syspanel/models.py (+0/-23)
horizon/dashboards/syspanel/networks/forms.py (+0/-89)
horizon/dashboards/syspanel/networks/panel.py (+0/-28)
horizon/dashboards/syspanel/networks/ports/forms.py (+0/-92)
horizon/dashboards/syspanel/networks/ports/tables.py (+0/-85)
horizon/dashboards/syspanel/networks/ports/tabs.py (+0/-46)
horizon/dashboards/syspanel/networks/ports/urls.py (+0/-24)
horizon/dashboards/syspanel/networks/ports/views.py (+0/-98)
horizon/dashboards/syspanel/networks/subnets/forms.py (+0/-52)
horizon/dashboards/syspanel/networks/subnets/tables.py (+0/-82)
horizon/dashboards/syspanel/networks/subnets/urls.py (+0/-24)
horizon/dashboards/syspanel/networks/subnets/views.py (+0/-101)
horizon/dashboards/syspanel/networks/tables.py (+0/-82)
horizon/dashboards/syspanel/networks/templates/networks/_create.html (+0/-25)
horizon/dashboards/syspanel/networks/templates/networks/_update.html (+0/-24)
horizon/dashboards/syspanel/networks/templates/networks/create.html (+0/-11)
horizon/dashboards/syspanel/networks/templates/networks/index.html (+0/-21)
horizon/dashboards/syspanel/networks/templates/networks/ports/_create.html (+0/-25)
horizon/dashboards/syspanel/networks/templates/networks/ports/_update.html (+0/-29)
horizon/dashboards/syspanel/networks/templates/networks/ports/create.html (+0/-11)
horizon/dashboards/syspanel/networks/templates/networks/ports/update.html (+0/-11)
horizon/dashboards/syspanel/networks/templates/networks/subnets/_create.html (+0/-25)
horizon/dashboards/syspanel/networks/templates/networks/subnets/_update.html (+0/-33)
horizon/dashboards/syspanel/networks/templates/networks/subnets/create.html (+0/-11)
horizon/dashboards/syspanel/networks/templates/networks/subnets/index.html (+0/-11)
horizon/dashboards/syspanel/networks/templates/networks/subnets/update.html (+0/-11)
horizon/dashboards/syspanel/networks/templates/networks/update.html (+0/-11)
horizon/dashboards/syspanel/networks/tests.py (+0/-805)
horizon/dashboards/syspanel/networks/urls.py (+0/-45)
horizon/dashboards/syspanel/networks/views.py (+0/-140)
horizon/dashboards/syspanel/overview/panel.py (+0/-33)
horizon/dashboards/syspanel/overview/templates/overview/usage.csv (+0/-9)
horizon/dashboards/syspanel/overview/templates/overview/usage.html (+0/-22)
horizon/dashboards/syspanel/overview/tests.py (+0/-95)
horizon/dashboards/syspanel/overview/urls.py (+0/-28)
horizon/dashboards/syspanel/overview/views.py (+0/-48)
horizon/dashboards/syspanel/projects/forms.py (+0/-33)
horizon/dashboards/syspanel/projects/panel.py (+0/-32)
horizon/dashboards/syspanel/projects/tables.py (+0/-157)
horizon/dashboards/syspanel/projects/templates/projects/_add_user.html (+0/-25)
horizon/dashboards/syspanel/projects/templates/projects/_create.html (+0/-25)
horizon/dashboards/syspanel/projects/templates/projects/_create_user.html (+0/-25)
horizon/dashboards/syspanel/projects/templates/projects/_quotas.html (+0/-24)
horizon/dashboards/syspanel/projects/templates/projects/_update.html (+0/-25)
horizon/dashboards/syspanel/projects/templates/projects/_update_members.html (+0/-39)
horizon/dashboards/syspanel/projects/templates/projects/add_user.html (+0/-11)
horizon/dashboards/syspanel/projects/templates/projects/create.html (+0/-12)
horizon/dashboards/syspanel/projects/templates/projects/create_user.html (+0/-12)
horizon/dashboards/syspanel/projects/templates/projects/index.html (+0/-13)
horizon/dashboards/syspanel/projects/templates/projects/quotas.html (+0/-11)
horizon/dashboards/syspanel/projects/templates/projects/update.html (+0/-12)
horizon/dashboards/syspanel/projects/templates/projects/usage.csv (+0/-11)
horizon/dashboards/syspanel/projects/templates/projects/usage.html (+0/-14)
horizon/dashboards/syspanel/projects/templates/projects/users.html (+0/-18)
horizon/dashboards/syspanel/projects/tests.py (+0/-842)
horizon/dashboards/syspanel/projects/urls.py (+0/-37)
horizon/dashboards/syspanel/projects/views.py (+0/-203)
horizon/dashboards/syspanel/projects/workflows.py (+0/-364)
horizon/dashboards/syspanel/quotas/panel.py (+0/-32)
horizon/dashboards/syspanel/quotas/tables.py (+0/-38)
horizon/dashboards/syspanel/quotas/templates/quotas/index.html (+0/-13)
horizon/dashboards/syspanel/quotas/urls.py (+0/-27)
horizon/dashboards/syspanel/quotas/views.py (+0/-46)
horizon/dashboards/syspanel/services/panel.py (+0/-32)
horizon/dashboards/syspanel/services/tables.py (+0/-50)
horizon/dashboards/syspanel/services/templates/services/index.html (+0/-14)
horizon/dashboards/syspanel/services/tests.py (+0/-36)
horizon/dashboards/syspanel/services/urls.py (+0/-27)
horizon/dashboards/syspanel/services/views.py (+0/-40)
horizon/dashboards/syspanel/users/forms.py (+0/-195)
horizon/dashboards/syspanel/users/panel.py (+0/-32)
horizon/dashboards/syspanel/users/tables.py (+0/-123)
horizon/dashboards/syspanel/users/templates/users/_create.html (+0/-24)
horizon/dashboards/syspanel/users/templates/users/_update.html (+0/-24)
horizon/dashboards/syspanel/users/templates/users/create.html (+0/-12)
horizon/dashboards/syspanel/users/templates/users/index.html (+0/-13)
horizon/dashboards/syspanel/users/templates/users/update.html (+0/-12)
horizon/dashboards/syspanel/users/tests.py (+0/-356)
horizon/dashboards/syspanel/users/urls.py (+0/-28)
horizon/dashboards/syspanel/users/views.py (+0/-111)
horizon/dashboards/syspanel/volumes/panel.py (+0/-14)
horizon/dashboards/syspanel/volumes/tables.py (+0/-19)
horizon/dashboards/syspanel/volumes/templates/volumes/detail.html (+0/-15)
horizon/dashboards/syspanel/volumes/templates/volumes/index.html (+0/-13)
horizon/dashboards/syspanel/volumes/tests.py (+0/-39)
horizon/dashboards/syspanel/volumes/urls.py (+0/-8)
horizon/dashboards/syspanel/volumes/views.py (+0/-39)
horizon/decorators.py (+2/-2)
horizon/exceptions.py (+4/-6)
horizon/forms/__init__.py (+1/-2)
horizon/forms/views.py (+2/-2)
horizon/locale/bg_BG/LC_MESSAGES/django.po (+89/-3359)
horizon/locale/bg_BG/LC_MESSAGES/djangojs.po (+1/-1)
horizon/locale/en/LC_MESSAGES/django.po (+89/-3421)
horizon/locale/en/LC_MESSAGES/djangojs.po (+1/-1)
horizon/locale/es/LC_MESSAGES/django.po (+89/-3469)
horizon/locale/es/LC_MESSAGES/djangojs.po (+1/-1)
horizon/locale/fr/LC_MESSAGES/django.po (+89/-3332)
horizon/locale/fr/LC_MESSAGES/djangojs.po (+1/-1)
horizon/locale/it/LC_MESSAGES/django.po (+89/-3382)
horizon/locale/it/LC_MESSAGES/djangojs.po (+1/-1)
horizon/locale/ja/LC_MESSAGES/django.po (+89/-3456)
horizon/locale/ja/LC_MESSAGES/djangojs.po (+1/-1)
horizon/locale/ko_KR/LC_MESSAGES/django.po (+87/-3331)
horizon/locale/ko_KR/LC_MESSAGES/djangojs.po (+1/-1)
horizon/locale/nl_NL/LC_MESSAGES/django.po (+89/-3335)
horizon/locale/nl_NL/LC_MESSAGES/djangojs.po (+1/-1)
horizon/locale/pl/LC_MESSAGES/django.po (+92/-3573)
horizon/locale/pl/LC_MESSAGES/djangojs.po (+1/-1)
horizon/locale/pt/LC_MESSAGES/django.po (+89/-3395)
horizon/locale/pt/LC_MESSAGES/djangojs.po (+1/-1)
horizon/locale/pt_BR/LC_MESSAGES/django.po (+89/-3383)
horizon/locale/pt_BR/LC_MESSAGES/djangojs.po (+1/-1)
horizon/locale/ru/LC_MESSAGES/django.po (+89/-3332)
horizon/locale/ru/LC_MESSAGES/djangojs.po (+1/-1)
horizon/locale/zh_CN/LC_MESSAGES/django.po (+87/-3339)
horizon/locale/zh_CN/LC_MESSAGES/djangojs.po (+1/-1)
horizon/locale/zh_TW/LC_MESSAGES/django.po (+91/-3368)
horizon/locale/zh_TW/LC_MESSAGES/djangojs.po (+1/-1)
horizon/management/commands/startpanel.py (+1/-2)
horizon/middleware.py (+13/-8)
horizon/openstack/common/jsonutils.py (+0/-144)
horizon/openstack/common/setup.py (+0/-200)
horizon/site_urls.py (+1/-0)
horizon/static/horizon/js/horizon.communication.js (+1/-1)
horizon/static/horizon/js/horizon.quota.js (+1/-1)
horizon/static/horizon/js/horizon.tables.js (+2/-2)
horizon/static/horizon/js/horizon.users.js (+31/-0)
horizon/tables/base.py (+3/-2)
horizon/templates/_header.html (+0/-2)
horizon/templates/_stylesheets.html (+1/-0)
horizon/templates/auth/_login.html (+9/-0)
horizon/templates/base.html (+0/-12)
horizon/templates/horizon/_scripts.html (+1/-0)
horizon/templates/horizon/common/_modal.html (+10/-0)
horizon/templates/horizon/common/_quota_summary.html (+16/-8)
horizon/templatetags/horizon.py (+6/-0)
horizon/test.py (+0/-363)
horizon/test/helpers.py (+170/-0)
horizon/test/settings.py (+177/-0)
horizon/test/templates/_tab.html (+1/-0)
horizon/test/templates/tab_group.html (+1/-0)
horizon/test/templates/workflow.html (+1/-0)
horizon/test/test_dashboards/cats/dashboard.py (+25/-0)
horizon/test/test_dashboards/cats/kittens/models.py (+3/-0)
horizon/test/test_dashboards/cats/kittens/panel.py (+14/-0)
horizon/test/test_dashboards/cats/kittens/templates/kittens/index.html (+12/-0)
horizon/test/test_dashboards/cats/kittens/urls.py (+7/-0)
horizon/test/test_dashboards/cats/kittens/views.py (+10/-0)
horizon/test/test_dashboards/cats/models.py (+3/-0)
horizon/test/test_dashboards/cats/static/cats/css/cats.css (+1/-0)
horizon/test/test_dashboards/cats/static/cats/js/cats.js (+1/-0)
horizon/test/test_dashboards/cats/templates/cats/base.html (+11/-0)
horizon/test/test_dashboards/cats/tigers/models.py (+3/-0)
horizon/test/test_dashboards/cats/tigers/panel.py (+14/-0)
horizon/test/test_dashboards/cats/tigers/templates/tigers/index.html (+12/-0)
horizon/test/test_dashboards/cats/tigers/urls.py (+7/-0)
horizon/test/test_dashboards/cats/tigers/views.py (+10/-0)
horizon/test/test_dashboards/dogs/dashboard.py (+13/-0)
horizon/test/test_dashboards/dogs/models.py (+3/-0)
horizon/test/test_dashboards/dogs/puppies/models.py (+3/-0)
horizon/test/test_dashboards/dogs/puppies/panel.py (+13/-0)
horizon/test/test_dashboards/dogs/puppies/templates/puppies/index.html (+12/-0)
horizon/test/test_dashboards/dogs/puppies/urls.py (+7/-0)
horizon/test/test_dashboards/dogs/puppies/views.py (+10/-0)
horizon/test/test_dashboards/dogs/static/dogs/css/dogs.css (+1/-0)
horizon/test/test_dashboards/dogs/static/dogs/js/dogs.js (+1/-0)
horizon/test/test_dashboards/dogs/templates/dogs/base.html (+11/-0)
horizon/test/tests/base.py (+294/-0)
horizon/test/tests/messages.py (+41/-0)
horizon/test/tests/middleware.py (+34/-0)
horizon/test/tests/selenium.py (+31/-0)
horizon/test/tests/tables.py (+675/-0)
horizon/test/tests/tabs.py (+306/-0)
horizon/test/tests/templatetags.py (+49/-0)
horizon/test/tests/utils.py (+196/-0)
horizon/test/tests/workflows.py (+266/-0)
horizon/test/urls.py (+43/-0)
horizon/tests/__init__.py (+0/-21)
horizon/tests/api_tests/base_tests.py (+0/-148)
horizon/tests/api_tests/glance_tests.py (+0/-67)
horizon/tests/api_tests/keystone_tests.py (+0/-98)
horizon/tests/api_tests/nova_tests.py (+0/-206)
horizon/tests/api_tests/quantum_tests.py (+0/-205)
horizon/tests/api_tests/swift_tests.py (+0/-120)
horizon/tests/base_tests.py (+0/-341)
horizon/tests/message_tests.py (+0/-40)
horizon/tests/selenium_tests.py (+0/-38)
horizon/tests/table_tests.py (+0/-675)
horizon/tests/tabs_tests.py (+0/-306)
horizon/tests/templates/_tab.html (+0/-1)
horizon/tests/templates/tab_group.html (+0/-1)
horizon/tests/templates/workflow.html (+0/-1)
horizon/tests/templatetag_tests.py (+0/-50)
horizon/tests/test_dashboards/cats/dashboard.py (+0/-25)
horizon/tests/test_dashboards/cats/kittens/models.py (+0/-3)
horizon/tests/test_dashboards/cats/kittens/panel.py (+0/-14)
horizon/tests/test_dashboards/cats/kittens/templates/kittens/index.html (+0/-12)
horizon/tests/test_dashboards/cats/kittens/tests.py (+0/-7)
horizon/tests/test_dashboards/cats/kittens/urls.py (+0/-7)
horizon/tests/test_dashboards/cats/kittens/views.py (+0/-10)
horizon/tests/test_dashboards/cats/models.py (+0/-3)
horizon/tests/test_dashboards/cats/static/cats/css/cats.css (+0/-1)
horizon/tests/test_dashboards/cats/static/cats/js/cats.js (+0/-1)
horizon/tests/test_dashboards/cats/templates/cats/base.html (+0/-11)
horizon/tests/test_dashboards/cats/tigers/models.py (+0/-3)
horizon/tests/test_dashboards/cats/tigers/panel.py (+0/-14)
horizon/tests/test_dashboards/cats/tigers/templates/tigers/index.html (+0/-12)
horizon/tests/test_dashboards/cats/tigers/tests.py (+0/-7)
horizon/tests/test_dashboards/cats/tigers/urls.py (+0/-7)
horizon/tests/test_dashboards/cats/tigers/views.py (+0/-10)
horizon/tests/test_dashboards/dogs/dashboard.py (+0/-13)
horizon/tests/test_dashboards/dogs/models.py (+0/-3)
horizon/tests/test_dashboards/dogs/puppies/models.py (+0/-3)
horizon/tests/test_dashboards/dogs/puppies/panel.py (+0/-13)
horizon/tests/test_dashboards/dogs/puppies/templates/puppies/index.html (+0/-12)
horizon/tests/test_dashboards/dogs/puppies/tests.py (+0/-7)
horizon/tests/test_dashboards/dogs/puppies/urls.py (+0/-7)
horizon/tests/test_dashboards/dogs/puppies/views.py (+0/-10)
horizon/tests/test_dashboards/dogs/static/dogs/css/dogs.css (+0/-1)
horizon/tests/test_dashboards/dogs/static/dogs/js/dogs.js (+0/-1)
horizon/tests/test_dashboards/dogs/templates/dogs/base.html (+0/-11)
horizon/tests/test_data/exceptions.py (+0/-67)
horizon/tests/test_data/glance_data.py (+0/-89)
horizon/tests/test_data/keystone_data.py (+0/-160)
horizon/tests/test_data/nova_data.py (+0/-343)
horizon/tests/test_data/quantum_data.py (+0/-111)
horizon/tests/test_data/swift_data.py (+0/-39)
horizon/tests/test_data/utils.py (+0/-126)
horizon/tests/testsettings.py (+0/-196)
horizon/tests/testurls.py (+0/-41)
horizon/tests/utils_tests.py (+0/-195)
horizon/tests/workflows_tests.py (+0/-261)
horizon/usage/__init__.py (+0/-19)
horizon/usage/base.py (+0/-155)
horizon/usage/tables.py (+0/-71)
horizon/usage/views.py (+0/-54)
horizon/utils/memoized.py (+3/-0)
horizon/utils/validators.py (+3/-6)
horizon/version.py (+2/-2)
horizon/views.py (+53/-0)
horizon/views/__init__.py (+0/-17)
horizon/views/base.py (+0/-72)
horizon/workflows/views.py (+2/-2)
manage.py (+0/-2)
openstack-common.conf (+2/-2)
openstack_dashboard/api/__init__.py (+40/-0)
openstack_dashboard/api/base.py (+175/-0)
openstack_dashboard/api/cinder.py (+129/-0)
openstack_dashboard/api/glance.py (+98/-0)
openstack_dashboard/api/keystone.py (+291/-0)
openstack_dashboard/api/nova.py (+478/-0)
openstack_dashboard/api/quantum.py (+261/-0)
openstack_dashboard/api/swift.py (+265/-0)
openstack_dashboard/context_processors.py (+63/-0)
openstack_dashboard/dashboards/admin/dashboard.py (+37/-0)
openstack_dashboard/dashboards/admin/flavors/extras/forms.py (+66/-0)
openstack_dashboard/dashboards/admin/flavors/extras/tables.py (+75/-0)
openstack_dashboard/dashboards/admin/flavors/extras/tests.py (+65/-0)
openstack_dashboard/dashboards/admin/flavors/extras/urls.py (+29/-0)
openstack_dashboard/dashboards/admin/flavors/extras/views.py (+93/-0)
openstack_dashboard/dashboards/admin/flavors/forms.py (+109/-0)
openstack_dashboard/dashboards/admin/flavors/panel.py (+33/-0)
openstack_dashboard/dashboards/admin/flavors/tables.py (+61/-0)
openstack_dashboard/dashboards/admin/flavors/templates/flavors/_create.html (+25/-0)
openstack_dashboard/dashboards/admin/flavors/templates/flavors/_edit.html (+26/-0)
openstack_dashboard/dashboards/admin/flavors/templates/flavors/create.html (+11/-0)
openstack_dashboard/dashboards/admin/flavors/templates/flavors/edit.html (+11/-0)
openstack_dashboard/dashboards/admin/flavors/templates/flavors/extras/_create.html (+27/-0)
openstack_dashboard/dashboards/admin/flavors/templates/flavors/extras/_edit.html (+27/-0)
openstack_dashboard/dashboards/admin/flavors/templates/flavors/extras/_index.html (+14/-0)
openstack_dashboard/dashboards/admin/flavors/templates/flavors/extras/create.html (+12/-0)
openstack_dashboard/dashboards/admin/flavors/templates/flavors/extras/edit.html (+12/-0)
openstack_dashboard/dashboards/admin/flavors/templates/flavors/extras/index.html (+12/-0)
openstack_dashboard/dashboards/admin/flavors/templates/flavors/index.html (+11/-0)
openstack_dashboard/dashboards/admin/flavors/tests.py (+85/-0)
openstack_dashboard/dashboards/admin/flavors/urls.py (+30/-0)
openstack_dashboard/dashboards/admin/flavors/views.py (+82/-0)
openstack_dashboard/dashboards/admin/images/forms.py (+26/-0)
openstack_dashboard/dashboards/admin/images/panel.py (+33/-0)
openstack_dashboard/dashboards/admin/images/tables.py (+46/-0)
openstack_dashboard/dashboards/admin/images/templates/images/_update.html (+25/-0)
openstack_dashboard/dashboards/admin/images/templates/images/index.html (+11/-0)
openstack_dashboard/dashboards/admin/images/templates/images/update.html (+12/-0)
openstack_dashboard/dashboards/admin/images/tests.py (+97/-0)
openstack_dashboard/dashboards/admin/images/urls.py (+30/-0)
openstack_dashboard/dashboards/admin/images/views.py (+68/-0)
openstack_dashboard/dashboards/admin/info/panel.py (+33/-0)
openstack_dashboard/dashboards/admin/info/tables.py (+79/-0)
openstack_dashboard/dashboards/admin/info/tabs.py (+62/-0)
openstack_dashboard/dashboards/admin/info/templates/info/index.html (+15/-0)
openstack_dashboard/dashboards/admin/info/tests.py (+71/-0)
openstack_dashboard/dashboards/admin/info/urls.py (+27/-0)
openstack_dashboard/dashboards/admin/info/views.py (+33/-0)
openstack_dashboard/dashboards/admin/instances/panel.py (+34/-0)
openstack_dashboard/dashboards/admin/instances/tables.py (+100/-0)
openstack_dashboard/dashboards/admin/instances/templates/instances/index.html (+11/-0)
openstack_dashboard/dashboards/admin/instances/tests.py (+140/-0)
openstack_dashboard/dashboards/admin/instances/urls.py (+34/-0)
openstack_dashboard/dashboards/admin/instances/views.py (+84/-0)
openstack_dashboard/dashboards/admin/models.py (+23/-0)
openstack_dashboard/dashboards/admin/networks/forms.py (+90/-0)
openstack_dashboard/dashboards/admin/networks/panel.py (+29/-0)
openstack_dashboard/dashboards/admin/networks/ports/forms.py (+93/-0)
openstack_dashboard/dashboards/admin/networks/ports/tables.py (+85/-0)
openstack_dashboard/dashboards/admin/networks/ports/tabs.py (+49/-0)
openstack_dashboard/dashboards/admin/networks/ports/urls.py (+28/-0)
openstack_dashboard/dashboards/admin/networks/ports/views.py (+99/-0)
openstack_dashboard/dashboards/admin/networks/subnets/forms.py (+53/-0)
openstack_dashboard/dashboards/admin/networks/subnets/tables.py (+83/-0)
openstack_dashboard/dashboards/admin/networks/subnets/urls.py (+29/-0)
openstack_dashboard/dashboards/admin/networks/subnets/views.py (+103/-0)
openstack_dashboard/dashboards/admin/networks/tables.py (+82/-0)
openstack_dashboard/dashboards/admin/networks/templates/networks/_create.html (+25/-0)
openstack_dashboard/dashboards/admin/networks/templates/networks/_update.html (+24/-0)
openstack_dashboard/dashboards/admin/networks/templates/networks/create.html (+11/-0)
openstack_dashboard/dashboards/admin/networks/templates/networks/index.html (+21/-0)
openstack_dashboard/dashboards/admin/networks/templates/networks/ports/_create.html (+25/-0)
openstack_dashboard/dashboards/admin/networks/templates/networks/ports/_update.html (+29/-0)
openstack_dashboard/dashboards/admin/networks/templates/networks/ports/create.html (+11/-0)
openstack_dashboard/dashboards/admin/networks/templates/networks/ports/update.html (+11/-0)
openstack_dashboard/dashboards/admin/networks/templates/networks/subnets/_create.html (+25/-0)
openstack_dashboard/dashboards/admin/networks/templates/networks/subnets/_update.html (+33/-0)
openstack_dashboard/dashboards/admin/networks/templates/networks/subnets/create.html (+11/-0)
openstack_dashboard/dashboards/admin/networks/templates/networks/subnets/index.html (+11/-0)
openstack_dashboard/dashboards/admin/networks/templates/networks/subnets/update.html (+11/-0)
openstack_dashboard/dashboards/admin/networks/templates/networks/update.html (+11/-0)
openstack_dashboard/dashboards/admin/networks/tests.py (+805/-0)
openstack_dashboard/dashboards/admin/networks/urls.py (+47/-0)
openstack_dashboard/dashboards/admin/networks/views.py (+140/-0)
openstack_dashboard/dashboards/admin/overview/panel.py (+34/-0)
openstack_dashboard/dashboards/admin/overview/templates/overview/usage.csv (+10/-0)
openstack_dashboard/dashboards/admin/overview/templates/overview/usage.html (+22/-0)
openstack_dashboard/dashboards/admin/overview/tests.py (+98/-0)
openstack_dashboard/dashboards/admin/overview/urls.py (+29/-0)
openstack_dashboard/dashboards/admin/overview/views.py (+48/-0)
openstack_dashboard/dashboards/admin/projects/forms.py (+33/-0)
openstack_dashboard/dashboards/admin/projects/panel.py (+33/-0)
openstack_dashboard/dashboards/admin/projects/tables.py (+157/-0)
openstack_dashboard/dashboards/admin/projects/templates/projects/_add_user.html (+25/-0)
openstack_dashboard/dashboards/admin/projects/templates/projects/_create.html (+25/-0)
openstack_dashboard/dashboards/admin/projects/templates/projects/_create_user.html (+25/-0)
openstack_dashboard/dashboards/admin/projects/templates/projects/_quotas.html (+24/-0)
openstack_dashboard/dashboards/admin/projects/templates/projects/_update.html (+25/-0)
openstack_dashboard/dashboards/admin/projects/templates/projects/_update_members.html (+39/-0)
openstack_dashboard/dashboards/admin/projects/templates/projects/add_user.html (+11/-0)
openstack_dashboard/dashboards/admin/projects/templates/projects/create.html (+12/-0)
openstack_dashboard/dashboards/admin/projects/templates/projects/create_user.html (+12/-0)
openstack_dashboard/dashboards/admin/projects/templates/projects/index.html (+13/-0)
openstack_dashboard/dashboards/admin/projects/templates/projects/quotas.html (+11/-0)
openstack_dashboard/dashboards/admin/projects/templates/projects/update.html (+12/-0)
openstack_dashboard/dashboards/admin/projects/templates/projects/usage.html (+14/-0)
openstack_dashboard/dashboards/admin/projects/templates/projects/users.html (+18/-0)
openstack_dashboard/dashboards/admin/projects/tests.py (+818/-0)
openstack_dashboard/dashboards/admin/projects/urls.py (+37/-0)
openstack_dashboard/dashboards/admin/projects/views.py (+203/-0)
openstack_dashboard/dashboards/admin/projects/workflows.py (+390/-0)
openstack_dashboard/dashboards/admin/users/forms.py (+196/-0)
openstack_dashboard/dashboards/admin/users/panel.py (+33/-0)
openstack_dashboard/dashboards/admin/users/tables.py (+124/-0)
openstack_dashboard/dashboards/admin/users/templates/users/_create.html (+34/-0)
openstack_dashboard/dashboards/admin/users/templates/users/_update.html (+34/-0)
openstack_dashboard/dashboards/admin/users/templates/users/create.html (+12/-0)
openstack_dashboard/dashboards/admin/users/templates/users/index.html (+13/-0)
openstack_dashboard/dashboards/admin/users/templates/users/update.html (+12/-0)
openstack_dashboard/dashboards/admin/users/tests.py (+408/-0)
openstack_dashboard/dashboards/admin/users/urls.py (+28/-0)
openstack_dashboard/dashboards/admin/users/views.py (+112/-0)
openstack_dashboard/dashboards/admin/volumes/forms.py (+44/-0)
openstack_dashboard/dashboards/admin/volumes/panel.py (+14/-0)
openstack_dashboard/dashboards/admin/volumes/tables.py (+56/-0)
openstack_dashboard/dashboards/admin/volumes/templates/volumes/_create_volume_type.html (+29/-0)
openstack_dashboard/dashboards/admin/volumes/templates/volumes/create_volume_type.html (+11/-0)
openstack_dashboard/dashboards/admin/volumes/templates/volumes/detail.html (+15/-0)
openstack_dashboard/dashboards/admin/volumes/templates/volumes/index.html (+17/-0)
openstack_dashboard/dashboards/admin/volumes/tests.py (+92/-0)
openstack_dashboard/dashboards/admin/volumes/urls.py (+9/-0)
openstack_dashboard/dashboards/admin/volumes/views.py (+82/-0)
openstack_dashboard/dashboards/project/access_and_security/floating_ips/forms.py (+47/-0)
openstack_dashboard/dashboards/project/access_and_security/floating_ips/tables.py (+130/-0)
openstack_dashboard/dashboards/project/access_and_security/floating_ips/tests.py (+177/-0)
openstack_dashboard/dashboards/project/access_and_security/floating_ips/urls.py (+29/-0)
openstack_dashboard/dashboards/project/access_and_security/floating_ips/views.py (+70/-0)
openstack_dashboard/dashboards/project/access_and_security/floating_ips/workflows.py (+115/-0)
openstack_dashboard/dashboards/project/access_and_security/keypairs/forms.py (+66/-0)
openstack_dashboard/dashboards/project/access_and_security/keypairs/tables.py (+62/-0)
openstack_dashboard/dashboards/project/access_and_security/keypairs/tests.py (+163/-0)
openstack_dashboard/dashboards/project/access_and_security/keypairs/urls.py (+33/-0)
openstack_dashboard/dashboards/project/access_and_security/keypairs/views.py (+82/-0)
openstack_dashboard/dashboards/project/access_and_security/panel.py (+30/-0)
openstack_dashboard/dashboards/project/access_and_security/security_groups/forms.py (+174/-0)
openstack_dashboard/dashboards/project/access_and_security/security_groups/tables.py (+109/-0)
openstack_dashboard/dashboards/project/access_and_security/security_groups/tests.py (+375/-0)
openstack_dashboard/dashboards/project/access_and_security/security_groups/urls.py (+30/-0)
openstack_dashboard/dashboards/project/access_and_security/security_groups/views.py (+121/-0)
openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/floating_ips/_allocate.html (+33/-0)
openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/floating_ips/allocate.html (+7/-0)
openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/floating_ips/associate.html (+11/-0)
openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/index.html (+21/-0)
openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/keypairs/_create.html (+25/-0)
openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/keypairs/_import.html (+25/-0)
openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/keypairs/create.html (+12/-0)
openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/keypairs/download.html (+21/-0)
openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/keypairs/import.html (+12/-0)
openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/security_groups/_create.html (+25/-0)
openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/security_groups/_edit_rules.html (+21/-0)
openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/security_groups/create.html (+11/-0)
openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/security_groups/edit_rules.html (+11/-0)
openstack_dashboard/dashboards/project/access_and_security/tests.py (+88/-0)
openstack_dashboard/dashboards/project/access_and_security/urls.py (+35/-0)
openstack_dashboard/dashboards/project/access_and_security/views.py (+84/-0)
openstack_dashboard/dashboards/project/containers/browsers.py (+33/-0)
openstack_dashboard/dashboards/project/containers/forms.py (+164/-0)
openstack_dashboard/dashboards/project/containers/panel.py (+33/-0)
openstack_dashboard/dashboards/project/containers/tables.py (+270/-0)
openstack_dashboard/dashboards/project/containers/templates/containers/_copy.html (+24/-0)
openstack_dashboard/dashboards/project/containers/templates/containers/_create.html (+24/-0)
openstack_dashboard/dashboards/project/containers/templates/containers/_upload.html (+25/-0)
openstack_dashboard/dashboards/project/containers/templates/containers/copy.html (+13/-0)
openstack_dashboard/dashboards/project/containers/templates/containers/create.html (+11/-0)
openstack_dashboard/dashboards/project/containers/templates/containers/index.html (+13/-0)
openstack_dashboard/dashboards/project/containers/templates/containers/upload.html (+15/-0)
openstack_dashboard/dashboards/project/containers/tests.py (+238/-0)
openstack_dashboard/dashboards/project/containers/urls.py (+50/-0)
openstack_dashboard/dashboards/project/containers/views.py (+218/-0)
openstack_dashboard/dashboards/project/dashboard.py (+47/-0)
openstack_dashboard/dashboards/project/images_and_snapshots/images/forms.py (+165/-0)
openstack_dashboard/dashboards/project/images_and_snapshots/images/tables.py (+135/-0)
openstack_dashboard/dashboards/project/images_and_snapshots/images/tabs.py (+45/-0)
openstack_dashboard/dashboards/project/images_and_snapshots/images/tests.py (+118/-0)
openstack_dashboard/dashboards/project/images_and_snapshots/images/urls.py (+34/-0)
openstack_dashboard/dashboards/project/images_and_snapshots/images/views.py (+84/-0)
openstack_dashboard/dashboards/project/images_and_snapshots/panel.py (+30/-0)
openstack_dashboard/dashboards/project/images_and_snapshots/snapshots/forms.py (+57/-0)
openstack_dashboard/dashboards/project/images_and_snapshots/snapshots/tables.py (+60/-0)
openstack_dashboard/dashboards/project/images_and_snapshots/snapshots/tests.py (+98/-0)
openstack_dashboard/dashboards/project/images_and_snapshots/snapshots/urls.py (+30/-0)
openstack_dashboard/dashboards/project/images_and_snapshots/snapshots/views.py (+63/-0)
openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/images/_create.html (+33/-0)
openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/images/_detail_overview.html (+68/-0)
openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/images/_update.html (+24/-0)
openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/images/create.html (+11/-0)
openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/images/detail.html (+16/-0)
openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/images/update.html (+11/-0)
openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/index.html (+19/-0)
openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/snapshots/_create.html (+25/-0)
openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/snapshots/_detail_overview.html (+42/-0)
openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/snapshots/create.html (+11/-0)
openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/snapshots/detail.html (+15/-0)
openstack_dashboard/dashboards/project/images_and_snapshots/tests.py (+170/-0)
openstack_dashboard/dashboards/project/images_and_snapshots/urls.py (+35/-0)
openstack_dashboard/dashboards/project/images_and_snapshots/views.py (+89/-0)
openstack_dashboard/dashboards/project/images_and_snapshots/volume_snapshots/tables.py (+91/-0)
openstack_dashboard/dashboards/project/images_and_snapshots/volume_snapshots/tabs.py (+49/-0)
openstack_dashboard/dashboards/project/images_and_snapshots/volume_snapshots/tests.py (+92/-0)
openstack_dashboard/dashboards/project/instances/forms.py (+51/-0)
openstack_dashboard/dashboards/project/instances/panel.py (+29/-0)
openstack_dashboard/dashboards/project/instances/tables.py (+319/-0)
openstack_dashboard/dashboards/project/instances/tabs.py (+78/-0)
openstack_dashboard/dashboards/project/instances/templates/instances/_detail_log.html (+17/-0)
openstack_dashboard/dashboards/project/instances/templates/instances/_detail_overview.html (+102/-0)
openstack_dashboard/dashboards/project/instances/templates/instances/_detail_vnc.html (+17/-0)
openstack_dashboard/dashboards/project/instances/templates/instances/_instance_ips.html (+10/-0)
openstack_dashboard/dashboards/project/instances/templates/instances/_launch_customize_help.html (+3/-0)
openstack_dashboard/dashboards/project/instances/templates/instances/_launch_details_help.html (+53/-0)
openstack_dashboard/dashboards/project/instances/templates/instances/_launch_volumes_help.html (+3/-0)
openstack_dashboard/dashboards/project/instances/templates/instances/_update.html (+24/-0)
openstack_dashboard/dashboards/project/instances/templates/instances/detail.html (+15/-0)
openstack_dashboard/dashboards/project/instances/templates/instances/index.html (+11/-0)
openstack_dashboard/dashboards/project/instances/templates/instances/launch.html (+11/-0)
openstack_dashboard/dashboards/project/instances/templates/instances/update.html (+11/-0)
openstack_dashboard/dashboards/project/instances/tests.py (+982/-0)
openstack_dashboard/dashboards/project/instances/urls.py (+37/-0)
openstack_dashboard/dashboards/project/instances/views.py (+187/-0)
openstack_dashboard/dashboards/project/instances/workflows.py (+513/-0)
openstack_dashboard/dashboards/project/models.py (+23/-0)
openstack_dashboard/dashboards/project/networks/forms.py (+56/-0)
openstack_dashboard/dashboards/project/networks/panel.py (+29/-0)
openstack_dashboard/dashboards/project/networks/ports/tables.py (+53/-0)
openstack_dashboard/dashboards/project/networks/ports/tabs.py (+49/-0)
openstack_dashboard/dashboards/project/networks/ports/urls.py (+28/-0)
openstack_dashboard/dashboards/project/networks/ports/views.py (+24/-0)
openstack_dashboard/dashboards/project/networks/subnets/forms.py (+139/-0)
openstack_dashboard/dashboards/project/networks/subnets/tables.py (+106/-0)
openstack_dashboard/dashboards/project/networks/subnets/tabs.py (+49/-0)
openstack_dashboard/dashboards/project/networks/subnets/urls.py (+28/-0)
openstack_dashboard/dashboards/project/networks/subnets/views.py (+111/-0)
openstack_dashboard/dashboards/project/networks/tables.py (+108/-0)
openstack_dashboard/dashboards/project/networks/templates/networks/_create.html (+24/-0)
openstack_dashboard/dashboards/project/networks/templates/networks/_detail_overview.html (+20/-0)
openstack_dashboard/dashboards/project/networks/templates/networks/_network_ips.html (+10/-0)
openstack_dashboard/dashboards/project/networks/templates/networks/_update.html (+24/-0)
openstack_dashboard/dashboards/project/networks/templates/networks/create.html (+11/-0)
openstack_dashboard/dashboards/project/networks/templates/networks/detail.html (+18/-0)
openstack_dashboard/dashboards/project/networks/templates/networks/index.html (+11/-0)
openstack_dashboard/dashboards/project/networks/templates/networks/ports/_detail_overview.html (+41/-0)
openstack_dashboard/dashboards/project/networks/templates/networks/ports/_port_ips.html (+7/-0)
openstack_dashboard/dashboards/project/networks/templates/networks/ports/detail.html (+15/-0)
openstack_dashboard/dashboards/project/networks/templates/networks/subnets/_create.html (+25/-0)
openstack_dashboard/dashboards/project/networks/templates/networks/subnets/_detail_overview.html (+29/-0)
openstack_dashboard/dashboards/project/networks/templates/networks/subnets/_update.html (+33/-0)
openstack_dashboard/dashboards/project/networks/templates/networks/subnets/create.html (+11/-0)
openstack_dashboard/dashboards/project/networks/templates/networks/subnets/detail.html (+15/-0)
openstack_dashboard/dashboards/project/networks/templates/networks/subnets/index.html (+11/-0)
openstack_dashboard/dashboards/project/networks/templates/networks/subnets/update.html (+11/-0)
openstack_dashboard/dashboards/project/networks/templates/networks/update.html (+11/-0)
openstack_dashboard/dashboards/project/networks/tests.py (+782/-0)
openstack_dashboard/dashboards/project/networks/urls.py (+39/-0)
openstack_dashboard/dashboards/project/networks/views.py (+143/-0)
openstack_dashboard/dashboards/project/networks/workflows.py (+162/-0)
openstack_dashboard/dashboards/project/overview/panel.py (+33/-0)
openstack_dashboard/dashboards/project/overview/templates/overview/usage.csv (+11/-0)
openstack_dashboard/dashboards/project/overview/templates/overview/usage.html (+13/-0)
openstack_dashboard/dashboards/project/overview/tests.py (+145/-0)
openstack_dashboard/dashboards/project/overview/urls.py (+30/-0)
openstack_dashboard/dashboards/project/overview/views.py (+37/-0)
openstack_dashboard/dashboards/project/volumes/forms.py (+238/-0)
openstack_dashboard/dashboards/project/volumes/panel.py (+30/-0)
openstack_dashboard/dashboards/project/volumes/tables.py (+238/-0)
openstack_dashboard/dashboards/project/volumes/tabs.py (+48/-0)
openstack_dashboard/dashboards/project/volumes/templates/volumes/_attach.html (+25/-0)
openstack_dashboard/dashboards/project/volumes/templates/volumes/_create.html (+57/-0)
openstack_dashboard/dashboards/project/volumes/templates/volumes/_create_snapshot.html (+25/-0)
openstack_dashboard/dashboards/project/volumes/templates/volumes/_detail_overview.html (+49/-0)
openstack_dashboard/dashboards/project/volumes/templates/volumes/attach.html (+11/-0)
openstack_dashboard/dashboards/project/volumes/templates/volumes/create.html (+11/-0)
openstack_dashboard/dashboards/project/volumes/templates/volumes/create_snapshot.html (+11/-0)
openstack_dashboard/dashboards/project/volumes/templates/volumes/detail.html (+15/-0)
openstack_dashboard/dashboards/project/volumes/templates/volumes/index.html (+11/-0)
openstack_dashboard/dashboards/project/volumes/tests.py (+370/-0)
openstack_dashboard/dashboards/project/volumes/urls.py (+35/-0)
openstack_dashboard/dashboards/project/volumes/views.py (+187/-0)
openstack_dashboard/dashboards/settings/dashboard.py (+31/-0)
openstack_dashboard/dashboards/settings/ec2/forms.py (+110/-0)
openstack_dashboard/dashboards/settings/ec2/panel.py (+29/-0)
openstack_dashboard/dashboards/settings/ec2/templates/ec2/download_form.html (+25/-0)
openstack_dashboard/dashboards/settings/ec2/templates/ec2/ec2rc.sh.template (+15/-0)
openstack_dashboard/dashboards/settings/ec2/templates/ec2/index.html (+11/-0)
openstack_dashboard/dashboards/settings/ec2/tests.py (+70/-0)
openstack_dashboard/dashboards/settings/ec2/urls.py (+23/-0)
openstack_dashboard/dashboards/settings/ec2/views.py (+32/-0)
openstack_dashboard/dashboards/settings/models.py (+23/-0)
openstack_dashboard/dashboards/settings/project/forms.py (+78/-0)
openstack_dashboard/dashboards/settings/project/panel.py (+29/-0)
openstack_dashboard/dashboards/settings/project/tables.py (+33/-0)
openstack_dashboard/dashboards/settings/project/templates/project/_openrc.html (+32/-0)
openstack_dashboard/dashboards/settings/project/templates/project/openrc.sh.template (+24/-0)
openstack_dashboard/dashboards/settings/project/templates/project/settings.html (+11/-0)
openstack_dashboard/dashboards/settings/project/urls.py (+23/-0)
openstack_dashboard/dashboards/settings/project/views.py (+44/-0)
openstack_dashboard/dashboards/settings/user/forms.py (+59/-0)
openstack_dashboard/dashboards/settings/user/panel.py (+29/-0)
openstack_dashboard/dashboards/settings/user/templates/user/_settings.html (+26/-0)
openstack_dashboard/dashboards/settings/user/templates/user/settings.html (+11/-0)
openstack_dashboard/dashboards/settings/user/urls.py (+23/-0)
openstack_dashboard/dashboards/settings/user/views.py (+31/-0)
openstack_dashboard/local/local_settings.py.example (+20/-25)
openstack_dashboard/locale/bg_BG/LC_MESSAGES/django.po (+3233/-19)
openstack_dashboard/locale/cs/LC_MESSAGES/django.po (+3223/-19)
openstack_dashboard/locale/en/LC_MESSAGES/django.po (+3271/-19)
openstack_dashboard/locale/es/LC_MESSAGES/django.po (+3316/-19)
openstack_dashboard/locale/fr/LC_MESSAGES/django.po (+3206/-19)
openstack_dashboard/locale/it/LC_MESSAGES/django.po (+3347/-0)
openstack_dashboard/locale/ja/LC_MESSAGES/django.po (+3304/-19)
openstack_dashboard/locale/ko_KR/LC_MESSAGES/django.po (+3207/-19)
openstack_dashboard/locale/nl_NL/LC_MESSAGES/django.po (+3209/-19)
openstack_dashboard/locale/pl/LC_MESSAGES/django.po (+3444/-19)
openstack_dashboard/locale/pt/LC_MESSAGES/django.po (+3269/-19)
openstack_dashboard/locale/pt_BR/LC_MESSAGES/django.po (+3257/-19)
openstack_dashboard/locale/ru/LC_MESSAGES/django.po (+3297/-0)
openstack_dashboard/locale/zh_CN/LC_MESSAGES/django.po (+3215/-19)
openstack_dashboard/locale/zh_TW/LC_MESSAGES/django.po (+3238/-19)
openstack_dashboard/openstack/common/setup.py (+360/-0)
openstack_dashboard/settings.py (+41/-8)
openstack_dashboard/templates/500.html (+81/-26)
openstack_dashboard/templates/_header.html (+10/-0)
openstack_dashboard/test/api_tests/base_tests.py (+149/-0)
openstack_dashboard/test/api_tests/glance_tests.py (+67/-0)
openstack_dashboard/test/api_tests/keystone_tests.py (+98/-0)
openstack_dashboard/test/api_tests/nova_tests.py (+158/-0)
openstack_dashboard/test/api_tests/quantum_tests.py (+205/-0)
openstack_dashboard/test/api_tests/swift_tests.py (+120/-0)
openstack_dashboard/test/error_pages_urls.py (+7/-0)
openstack_dashboard/test/helpers.py (+350/-0)
openstack_dashboard/test/settings.py (+74/-4)
openstack_dashboard/test/templates/404.html (+1/-0)
openstack_dashboard/test/templates/500.html (+1/-0)
openstack_dashboard/test/templates/_tab.html (+1/-0)
openstack_dashboard/test/templates/tab_group.html (+1/-0)
openstack_dashboard/test/templates/workflow.html (+1/-0)
openstack_dashboard/test/test_data/exceptions.py (+67/-0)
openstack_dashboard/test/test_data/glance_data.py (+89/-0)
openstack_dashboard/test/test_data/keystone_data.py (+170/-0)
openstack_dashboard/test/test_data/nova_data.py (+361/-0)
openstack_dashboard/test/test_data/quantum_data.py (+111/-0)
openstack_dashboard/test/test_data/swift_data.py (+39/-0)
openstack_dashboard/test/test_data/utils.py (+126/-0)
openstack_dashboard/test/tests/error_pages.py (+34/-0)
openstack_dashboard/test/tests/quotas.py (+105/-0)
openstack_dashboard/test/tests/selenium.py (+24/-0)
openstack_dashboard/urls.py (+8/-2)
openstack_dashboard/usage/__init__.py (+19/-0)
openstack_dashboard/usage/base.py (+157/-0)
openstack_dashboard/usage/quotas.py (+115/-0)
openstack_dashboard/usage/tables.py (+71/-0)
openstack_dashboard/usage/views.py (+54/-0)
openstack_dashboard/views.py (+38/-0)
openstack_dashboard/wsgi/django.wsgi (+0/-2)
run_tests.sh (+32/-17)
setup.py (+3/-2)
tools/pip-requires (+2/-1)
tools/test-requires (+0/-1)
To merge this branch: bzr merge lp:~zulcss/ubuntu/precise/horizon/trunk
Reviewer Review Type Date Requested Status
James Page Approve
Review via email: mp+136254@code.launchpad.net

Description of the change

horizon g1

To post a comment you must log in.
Revision history for this message
James Page (james-page) wrote :

LGTM; uploaded to grizzly staging.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== removed file '.bzrignore'
2--- .bzrignore 2012-07-06 11:38:55 +0000
3+++ .bzrignore 1970-01-01 00:00:00 +0000
4@@ -1,12 +0,0 @@
5-horizon/.installed.cfg
6-horizon/bin
7-horizon/develop-eggs/
8-horizon/downloads/
9-horizon/eggs/
10-horizon/parts/
11-horizon/src/django_nova.egg-info
12-horizon/src/django_openstack.egg-info
13-django-nova-syspanel/src/django_nova_syspanel.egg-info
14-openstack-dashboard/.dashboard-venv
15-openstack-dashboard/local/dashboard_openstack.sqlite3
16-openstack-dashboard/local/local_settings.py
17
18=== removed directory '.pc'
19=== removed file '.pc/.quilt_patches'
20--- .pc/.quilt_patches 2012-07-06 11:38:55 +0000
21+++ .pc/.quilt_patches 1970-01-01 00:00:00 +0000
22@@ -1,1 +0,0 @@
23-debian/patches
24
25=== removed file '.pc/.quilt_series'
26--- .pc/.quilt_series 2012-07-06 11:38:55 +0000
27+++ .pc/.quilt_series 1970-01-01 00:00:00 +0000
28@@ -1,1 +0,0 @@
29-series
30
31=== removed file '.pc/.version'
32--- .pc/.version 2011-12-02 16:21:52 +0000
33+++ .pc/.version 1970-01-01 00:00:00 +0000
34@@ -1,1 +0,0 @@
35-2
36
37=== removed directory '.pc/add_juju_settings_panel.patch'
38=== removed directory '.pc/add_juju_settings_panel.patch/horizon'
39=== removed directory '.pc/add_juju_settings_panel.patch/horizon/dashboards'
40=== removed directory '.pc/add_juju_settings_panel.patch/horizon/dashboards/settings'
41=== removed file '.pc/add_juju_settings_panel.patch/horizon/dashboards/settings/dashboard.py'
42--- .pc/add_juju_settings_panel.patch/horizon/dashboards/settings/dashboard.py 2012-10-09 09:59:55 +0000
43+++ .pc/add_juju_settings_panel.patch/horizon/dashboards/settings/dashboard.py 1970-01-01 00:00:00 +0000
44@@ -1,31 +0,0 @@
45-# vim: tabstop=4 shiftwidth=4 softtabstop=4
46-
47-# Copyright 2012 Openstack, LLC
48-# Copyright 2012 Nebula, Inc.
49-#
50-# Licensed under the Apache License, Version 2.0 (the "License"); you may
51-# not use this file except in compliance with the License. You may obtain
52-# a copy of the License at
53-#
54-# http://www.apache.org/licenses/LICENSE-2.0
55-#
56-# Unless required by applicable law or agreed to in writing, software
57-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
58-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
59-# License for the specific language governing permissions and limitations
60-# under the License.
61-
62-from django.utils.translation import ugettext_lazy as _
63-
64-import horizon
65-
66-
67-class Settings(horizon.Dashboard):
68- name = _("Settings")
69- slug = "settings"
70- panels = ('user', 'project', 'ec2')
71- default_panel = 'user'
72- nav = False
73-
74-
75-horizon.register(Settings)
76
77=== removed directory '.pc/add_juju_settings_panel.patch/horizon/dashboards/settings/juju'
78=== removed file '.pc/add_juju_settings_panel.patch/horizon/dashboards/settings/juju/__init__.py'
79=== removed file '.pc/add_juju_settings_panel.patch/horizon/dashboards/settings/juju/forms.py'
80=== removed file '.pc/add_juju_settings_panel.patch/horizon/dashboards/settings/juju/panel.py'
81=== removed file '.pc/add_juju_settings_panel.patch/horizon/dashboards/settings/juju/urls.py'
82=== removed file '.pc/add_juju_settings_panel.patch/horizon/dashboards/settings/juju/views.py'
83=== removed directory '.pc/add_juju_settings_panel.patch/horizon/dashboards/settings/templates'
84=== removed directory '.pc/add_juju_settings_panel.patch/horizon/dashboards/settings/templates/settings'
85=== removed directory '.pc/add_juju_settings_panel.patch/horizon/dashboards/settings/templates/settings/juju'
86=== removed file '.pc/add_juju_settings_panel.patch/horizon/dashboards/settings/templates/settings/juju/download_form.html'
87=== removed file '.pc/add_juju_settings_panel.patch/horizon/dashboards/settings/templates/settings/juju/environments.yaml.template'
88=== removed file '.pc/add_juju_settings_panel.patch/horizon/dashboards/settings/templates/settings/juju/index.html'
89=== removed file '.pc/applied-patches'
90--- .pc/applied-patches 2012-10-09 09:59:55 +0000
91+++ .pc/applied-patches 1970-01-01 00:00:00 +0000
92@@ -1,5 +0,0 @@
93-fix-dashboard-django-wsgi.patch
94-fix-dashboard-manage.patch
95-add_juju_settings_panel.patch
96-fix-ubuntu-tests.patch
97-ubuntu_local_settings.patch
98
99=== removed directory '.pc/fix-dashboard-django-wsgi.patch'
100=== removed directory '.pc/fix-dashboard-django-wsgi.patch/openstack_dashboard'
101=== removed directory '.pc/fix-dashboard-django-wsgi.patch/openstack_dashboard/wsgi'
102=== removed file '.pc/fix-dashboard-django-wsgi.patch/openstack_dashboard/wsgi/django.wsgi'
103--- .pc/fix-dashboard-django-wsgi.patch/openstack_dashboard/wsgi/django.wsgi 2012-03-02 12:11:59 +0000
104+++ .pc/fix-dashboard-django-wsgi.patch/openstack_dashboard/wsgi/django.wsgi 1970-01-01 00:00:00 +0000
105@@ -1,15 +0,0 @@
106-import logging
107-import os
108-import sys
109-import django.core.handlers.wsgi
110-from django.conf import settings
111-
112-# Add this file path to sys.path in order to import settings
113-sys.path.insert(0, os.path.join(os.path.dirname(os.path.realpath(__file__)), '../..'))
114-os.environ['DJANGO_SETTINGS_MODULE'] = 'openstack_dashboard.settings'
115-sys.stdout = sys.stderr
116-
117-DEBUG = False
118-
119-application = django.core.handlers.wsgi.WSGIHandler()
120-
121
122=== removed directory '.pc/fix-dashboard-manage.patch'
123=== removed file '.pc/fix-dashboard-manage.patch/manage.py'
124--- .pc/fix-dashboard-manage.patch/manage.py 2012-09-07 12:35:36 +0000
125+++ .pc/fix-dashboard-manage.patch/manage.py 1970-01-01 00:00:00 +0000
126@@ -1,11 +0,0 @@
127-#!/usr/bin/env python
128-
129-import os
130-import sys
131-
132-from django.core.management import execute_from_command_line
133-
134-if __name__ == "__main__":
135- os.environ.setdefault("DJANGO_SETTINGS_MODULE",
136- "openstack_dashboard.settings")
137- execute_from_command_line(sys.argv)
138
139=== removed directory '.pc/fix-ubuntu-tests.patch'
140=== removed directory '.pc/fix-ubuntu-tests.patch/horizon'
141=== removed directory '.pc/fix-ubuntu-tests.patch/horizon/tests'
142=== removed file '.pc/fix-ubuntu-tests.patch/horizon/tests/testsettings.py'
143--- .pc/fix-ubuntu-tests.patch/horizon/tests/testsettings.py 2012-08-16 14:01:33 +0000
144+++ .pc/fix-ubuntu-tests.patch/horizon/tests/testsettings.py 1970-01-01 00:00:00 +0000
145@@ -1,197 +0,0 @@
146-# vim: tabstop=4 shiftwidth=4 softtabstop=4
147-
148-# Copyright 2012 United States Government as represented by the
149-# Administrator of the National Aeronautics and Space Administration.
150-# All Rights Reserved.
151-#
152-# Copyright 2012 Nebula, Inc.
153-#
154-# Licensed under the Apache License, Version 2.0 (the "License"); you may
155-# not use this file except in compliance with the License. You may obtain
156-# a copy of the License at
157-#
158-# http://www.apache.org/licenses/LICENSE-2.0
159-#
160-# Unless required by applicable law or agreed to in writing, software
161-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
162-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
163-# License for the specific language governing permissions and limitations
164-# under the License.
165-
166-import os
167-import socket
168-
169-from django.utils.translation import ugettext_lazy as _
170-
171-from openstack_dashboard.exceptions import UNAUTHORIZED, RECOVERABLE, NOT_FOUND
172-
173-socket.setdefaulttimeout(1)
174-
175-LOGIN_URL = '/auth/login/'
176-LOGOUT_URL = '/auth/logout/'
177-LOGIN_REDIRECT_URL = '/'
178-
179-ROOT_PATH = os.path.dirname(os.path.abspath(__file__))
180-DEBUG = False
181-TEMPLATE_DEBUG = DEBUG
182-TESTSERVER = 'http://testserver'
183-
184-USE_I18N = True
185-USE_L10N = True
186-USE_TZ = True
187-
188-DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3'}}
189-
190-DEFAULT_EXCEPTION_REPORTER_FILTER = 'horizon.exceptions.HorizonReporterFilter'
191-
192-INSTALLED_APPS = (
193- 'django.contrib.sessions',
194- 'django.contrib.staticfiles',
195- 'django.contrib.messages',
196- 'django.contrib.humanize',
197- 'django_nose',
198- 'openstack_auth',
199- 'compressor',
200- 'horizon',
201- 'horizon.tests',
202- 'horizon.dashboards.nova',
203- 'horizon.dashboards.syspanel',
204- 'horizon.dashboards.settings',
205- 'horizon.tests.test_dashboards.cats',
206- 'horizon.tests.test_dashboards.dogs'
207-)
208-
209-MIDDLEWARE_CLASSES = (
210- 'django.middleware.common.CommonMiddleware',
211- 'django.middleware.csrf.CsrfViewMiddleware',
212- 'django.contrib.sessions.middleware.SessionMiddleware',
213- 'django.contrib.auth.middleware.AuthenticationMiddleware',
214- 'django.contrib.messages.middleware.MessageMiddleware',
215- 'django.middleware.doc.XViewMiddleware',
216- 'django.middleware.locale.LocaleMiddleware',
217- 'horizon.middleware.HorizonMiddleware')
218-
219-TEMPLATE_CONTEXT_PROCESSORS = (
220- 'django.core.context_processors.debug',
221- 'django.core.context_processors.i18n',
222- 'django.core.context_processors.request',
223- 'django.core.context_processors.media',
224- 'django.core.context_processors.static',
225- 'django.contrib.messages.context_processors.messages',
226- 'horizon.context_processors.horizon')
227-
228-TEMPLATE_LOADERS = (
229- 'django.template.loaders.filesystem.Loader',
230- 'django.template.loaders.app_directories.Loader',
231- 'horizon.loaders.TemplateLoader'
232-)
233-
234-STATIC_URL = '/static/'
235-
236-MESSAGE_STORAGE = 'django.contrib.messages.storage.cookie.CookieStorage'
237-
238-ROOT_URLCONF = 'horizon.tests.testurls'
239-TEMPLATE_DIRS = (os.path.join(ROOT_PATH, 'tests', 'templates'))
240-SITE_ID = 1
241-SITE_BRANDING = 'OpenStack'
242-
243-TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
244-NOSE_ARGS = ['--nocapture',
245- '--nologcapture',
246- '--exclude-dir=horizon/conf/',
247- '--cover-package=horizon',
248- '--cover-inclusive']
249-
250-EMAIL_BACKEND = 'django.core.mail.backends.locmem.EmailBackend'
251-SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies'
252-SESSION_COOKIE_HTTPONLY = True
253-SESSION_EXPIRE_AT_BROWSER_CLOSE = True
254-SESSION_COOKIE_SECURE = False
255-
256-AUTHENTICATION_BACKENDS = ('openstack_auth.backend.KeystoneBackend',)
257-
258-HORIZON_CONFIG = {
259- 'dashboards': ('nova', 'syspanel', 'settings'),
260- 'default_dashboard': 'nova',
261- "password_validator": {
262- "regex": '^.{8,18}$',
263- "help_text": _("Password must be between 8 and 18 characters.")
264- },
265- 'user_home': None,
266- 'help_url': "http://docs.openstack.org",
267- 'exceptions': {'recoverable': RECOVERABLE,
268- 'not_found': NOT_FOUND,
269- 'unauthorized': UNAUTHORIZED},
270-}
271-
272-COMPRESS_ENABLED = False
273-COMPRESS_OFFLINE = False
274-COMPRESS_ROOT = "/tmp/"
275-
276-STATICFILES_FINDERS = (
277- 'django.contrib.staticfiles.finders.FileSystemFinder',
278- 'django.contrib.staticfiles.finders.AppDirectoriesFinder',
279- 'compressor.finders.CompressorFinder',
280-)
281-
282-AVAILABLE_REGIONS = [
283- ('http://localhost:5000/v2.0', 'local'),
284- ('http://remote:5000/v2.0', 'remote'),
285-]
286-
287-OPENSTACK_KEYSTONE_URL = "http://localhost:5000/v2.0"
288-OPENSTACK_KEYSTONE_DEFAULT_ROLE = "Member"
289-
290-OPENSTACK_KEYSTONE_BACKEND = {
291- 'name': 'native',
292- 'can_edit_user': True
293-}
294-
295-OPENSTACK_HYPERVISOR_FEATURES = {
296- 'can_set_mount_point': True
297-}
298-
299-LOGGING = {
300- 'version': 1,
301- 'disable_existing_loggers': False,
302- 'handlers': {
303- 'null': {
304- 'level': 'DEBUG',
305- 'class': 'django.utils.log.NullHandler',
306- },
307- 'test': {
308- 'level': 'DEBUG',
309- 'class': 'logging.StreamHandler',
310- }
311- },
312- 'loggers': {
313- 'django.db.backends': {
314- 'handlers': ['null'],
315- 'propagate': False,
316- },
317- 'horizon': {
318- 'handlers': ['test'],
319- 'propagate': False,
320- },
321- 'novaclient': {
322- 'handlers': ['test'],
323- 'propagate': False,
324- },
325- 'keystoneclient': {
326- 'handlers': ['test'],
327- 'propagate': False,
328- },
329- 'glanceclient': {
330- 'handlers': ['test'],
331- 'propagate': False,
332- },
333- 'quantum': {
334- 'handlers': ['test'],
335- 'propagate': False,
336- },
337- 'nose.plugins.manager': {
338- 'handlers': ['null'],
339- 'propagate': False,
340- }
341- }
342-}
343
344=== removed file '.pc/fix-ubuntu-tests.patch/run_tests.sh'
345--- .pc/fix-ubuntu-tests.patch/run_tests.sh 2012-09-21 08:03:36 +0000
346+++ .pc/fix-ubuntu-tests.patch/run_tests.sh 1970-01-01 00:00:00 +0000
347@@ -1,427 +0,0 @@
348-#!/bin/bash
349-
350-set -o errexit
351-
352-# ---------------UPDATE ME-------------------------------#
353-# Increment me any time the environment should be rebuilt.
354-# This includes dependncy changes, directory renames, etc.
355-# Simple integer secuence: 1, 2, 3...
356-environment_version=27
357-#--------------------------------------------------------#
358-
359-function usage {
360- echo "Usage: $0 [OPTION]..."
361- echo "Run Horizon's test suite(s)"
362- echo ""
363- echo " -V, --virtual-env Always use virtualenv. Install automatically"
364- echo " if not present"
365- echo " -N, --no-virtual-env Don't use virtualenv. Run tests in local"
366- echo " environment"
367- echo " -c, --coverage Generate reports using Coverage"
368- echo " -f, --force Force a clean re-build of the virtual"
369- echo " environment. Useful when dependencies have"
370- echo " been added."
371- echo " -m, --manage Run a Django management command."
372- echo " --makemessages Update all translation files."
373- echo " --compilemessages Compile all translation files."
374- echo " -p, --pep8 Just run pep8"
375- echo " -t, --tabs Check for tab characters in files."
376- echo " -y, --pylint Just run pylint"
377- echo " -q, --quiet Run non-interactively. (Relatively) quiet."
378- echo " Implies -V if -N is not set."
379- echo " --only-selenium Run only the Selenium unit tests"
380- echo " --with-selenium Run unit tests including Selenium tests"
381- echo " --runserver Run the Django development server for"
382- echo " openstack_dashboard in the virtual"
383- echo " environment."
384- echo " --docs Just build the documentation"
385- echo " --backup-environment Make a backup of the environment on exit"
386- echo " --restore-environment Restore the environment before running"
387- echo " --destroy-environment DEstroy the environment and exit"
388- echo " -h, --help Print this usage message"
389- echo ""
390- echo "Note: with no options specified, the script will try to run the tests in"
391- echo " a virtual environment, If no virtualenv is found, the script will ask"
392- echo " if you would like to create one. If you prefer to run tests NOT in a"
393- echo " virtual environment, simply pass the -N option."
394- exit
395-}
396-
397-# DEFAULTS FOR RUN_TESTS.SH
398-#
399-root=`pwd`
400-venv=$root/.venv
401-with_venv=tools/with_venv.sh
402-included_dirs="openstack_dashboard horizon"
403-
404-always_venv=0
405-backup_env=0
406-command_wrapper=""
407-destroy=0
408-force=0
409-just_pep8=0
410-just_pylint=0
411-just_docs=0
412-just_tabs=0
413-never_venv=0
414-quiet=0
415-restore_env=0
416-runserver=0
417-only_selenium=0
418-with_selenium=0
419-testargs=""
420-with_coverage=0
421-makemessages=0
422-compilemessages=0
423-manage=0
424-
425-# Jenkins sets a "JOB_NAME" variable, if it's not set, we'll make it "default"
426-[ "$JOB_NAME" ] || JOB_NAME="default"
427-
428-function process_option {
429- case "$1" in
430- -h|--help) usage;;
431- -V|--virtual-env) always_venv=1; never_venv=0;;
432- -N|--no-virtual-env) always_venv=0; never_venv=1;;
433- -p|--pep8) just_pep8=1;;
434- -y|--pylint) just_pylint=1;;
435- -f|--force) force=1;;
436- -t|--tabs) just_tabs=1;;
437- -q|--quiet) quiet=1;;
438- -c|--coverage) with_coverage=1;;
439- -m|--manage) manage=1;;
440- --makemessages) makemessages=1;;
441- --compilemessages) compilemessages=1;;
442- --only-selenium) only_selenium=1;;
443- --with-selenium) with_selenium=1;;
444- --docs) just_docs=1;;
445- --runserver) runserver=1;;
446- --backup-environment) backup_env=1;;
447- --restore-environment) restore_env=1;;
448- --destroy-environment) destroy=1;;
449- *) testargs="$testargs $1"
450- esac
451-}
452-
453-function run_management_command {
454- ${command_wrapper} python $root/manage.py $testargs
455-}
456-
457-function run_server {
458- echo "Starting Django development server..."
459- ${command_wrapper} python $root/manage.py runserver $testargs
460- echo "Server stopped."
461-}
462-
463-function run_pylint {
464- echo "Running pylint ..."
465- PYTHONPATH=$root ${command_wrapper} pylint --rcfile=.pylintrc -f parseable $included_dirs > pylint.txt || true
466- CODE=$?
467- grep Global -A2 pylint.txt
468- if [ $CODE -lt 32 ]; then
469- echo "Completed successfully."
470- exit 0
471- else
472- echo "Completed with problems."
473- exit $CODE
474- fi
475-}
476-
477-function run_pep8 {
478- echo "Running pep8 ..."
479- ${command_wrapper} pep8 $included_dirs || true
480-}
481-
482-function run_sphinx {
483- echo "Building sphinx..."
484- export DJANGO_SETTINGS_MODULE=openstack_dashboard.settings
485- ${command_wrapper} sphinx-build -b html doc/source doc/build/html
486- echo "Build complete."
487-}
488-
489-function tab_check {
490- TAB_VIOLATIONS=`find $included_dirs -type f -regex ".*\.\(css\|js\|py\|html\)" -print0 | xargs -0 awk '/\t/' | wc -l`
491- if [ $TAB_VIOLATIONS -gt 0 ]; then
492- echo "TABS! $TAB_VIOLATIONS of them! Oh no!"
493- HORIZON_FILES=`find $included_dirs -type f -regex ".*\.\(css\|js\|py|\html\)"`
494- for TABBED_FILE in $HORIZON_FILES
495- do
496- TAB_COUNT=`awk '/\t/' $TABBED_FILE | wc -l`
497- if [ $TAB_COUNT -gt 0 ]; then
498- echo "$TABBED_FILE: $TAB_COUNT"
499- fi
500- done
501- fi
502- return $TAB_VIOLATIONS;
503-}
504-
505-function destroy_venv {
506- echo "Cleaning environment..."
507- echo "Removing virtualenv..."
508- rm -rf $venv
509- echo "Virtualenv removed."
510- rm -f .environment_version
511- echo "Environment cleaned."
512-}
513-
514-function environment_check {
515- echo "Checking environment."
516- if [ -f .environment_version ]; then
517- ENV_VERS=`cat .environment_version`
518- if [ $ENV_VERS -eq $environment_version ]; then
519- if [ -e ${venv} ]; then
520- # If the environment exists and is up-to-date then set our variables
521- command_wrapper="${root}/${with_venv}"
522- echo "Environment is up to date."
523- return 0
524- fi
525- fi
526- fi
527-
528- if [ $always_venv -eq 1 ]; then
529- install_venv
530- else
531- if [ ! -e ${venv} ]; then
532- echo -e "Environment not found. Install? (Y/n) \c"
533- else
534- echo -e "Your environment appears to be out of date. Update? (Y/n) \c"
535- fi
536- read update_env
537- if [ "x$update_env" = "xY" -o "x$update_env" = "x" -o "x$update_env" = "xy" ]; then
538- install_venv
539- else
540- # Set our command wrapper anyway.
541- command_wrapper="${root}/${with_venv}"
542- fi
543- fi
544-}
545-
546-function sanity_check {
547- # Anything that should be determined prior to running the tests, server, etc.
548- # Don't sanity-check anything environment-related in -N flag is set
549- if [ $never_venv -eq 0 ]; then
550- if [ ! -e ${venv} ]; then
551- echo "Virtualenv not found at $venv. Did install_venv.py succeed?"
552- exit 1
553- fi
554- fi
555- # Remove .pyc files. This is sanity checking because they can linger
556- # after old files are deleted.
557- find . -name "*.pyc" -exec rm -rf {} \;
558-}
559-
560-function backup_environment {
561- if [ $backup_env -eq 1 ]; then
562- echo "Backing up environment \"$JOB_NAME\"..."
563- if [ ! -e ${venv} ]; then
564- echo "Environment not installed. Cannot back up."
565- return 0
566- fi
567- if [ -d /tmp/.horizon_environment/$JOB_NAME ]; then
568- mv /tmp/.horizon_environment/$JOB_NAME /tmp/.horizon_environment/$JOB_NAME.old
569- rm -rf /tmp/.horizon_environment/$JOB_NAME
570- fi
571- mkdir -p /tmp/.horizon_environment/$JOB_NAME
572- cp -r $venv /tmp/.horizon_environment/$JOB_NAME/
573- cp .environment_version /tmp/.horizon_environment/$JOB_NAME/
574- # Remove the backup now that we've completed successfully
575- rm -rf /tmp/.horizon_environment/$JOB_NAME.old
576- echo "Backup completed"
577- fi
578-}
579-
580-function restore_environment {
581- if [ $restore_env -eq 1 ]; then
582- echo "Restoring environment from backup..."
583- if [ ! -d /tmp/.horizon_environment/$JOB_NAME ]; then
584- echo "No backup to restore from."
585- return 0
586- fi
587-
588- cp -r /tmp/.horizon_environment/$JOB_NAME/.venv ./ || true
589- cp -r /tmp/.horizon_environment/$JOB_NAME/.environment_version ./ || true
590-
591- echo "Environment restored successfully."
592- fi
593-}
594-
595-function install_venv {
596- # Install with install_venv.py
597- export PIP_DOWNLOAD_CACHE=${PIP_DOWNLOAD_CACHE-/tmp/.pip_download_cache}
598- export PIP_USE_MIRRORS=true
599- if [ $quiet -eq 1 ]; then
600- export PIP_NO_INPUT=true
601- fi
602- echo "Fetching new src packages..."
603- rm -rf $venv/src
604- python tools/install_venv.py
605- command_wrapper="$root/${with_venv}"
606- # Make sure it worked and record the environment version
607- sanity_check
608- chmod -R 754 $venv
609- echo $environment_version > .environment_version
610-}
611-
612-function run_tests {
613- sanity_check
614-
615- if [ $with_selenium -eq 1 ]; then
616- export WITH_SELENIUM=1
617- elif [ $only_selenium -eq 1 ]; then
618- export WITH_SELENIUM=1
619- export SKIP_UNITTESTS=1
620- fi
621-
622- echo "Running Horizon application tests"
623- export NOSE_XUNIT_FILE=horizon/nosetests.xml
624- if [ "$NOSE_WITH_HTML_OUTPUT" = '1' ]; then
625- export NOSE_HTML_OUT_FILE='horizon_nose_results.html'
626- fi
627- ${command_wrapper} coverage erase
628- ${command_wrapper} coverage run -p $root/manage.py test horizon --settings=horizon.tests.testsettings $testargs
629- # get results of the Horizon tests
630- HORIZON_RESULT=$?
631-
632- echo "Running openstack_dashboard tests"
633- export NOSE_XUNIT_FILE=openstack_dashboard/nosetests.xml
634- if [ "$NOSE_WITH_HTML_OUTPUT" = '1' ]; then
635- export NOSE_HTML_OUT_FILE='dashboard_nose_results.html'
636- fi
637- ${command_wrapper} coverage run -p $root/manage.py test openstack_dashboard --settings=openstack_dashboard.test.settings $testargs
638- # get results of the openstack_dashboard tests
639- DASHBOARD_RESULT=$?
640-
641- if [ $with_coverage -eq 1 ]; then
642- echo "Generating coverage reports"
643- ${command_wrapper} coverage combine
644- ${command_wrapper} coverage xml -i --omit='/usr*,setup.py,*egg*,.venv/*'
645- ${command_wrapper} coverage html -i --omit='/usr*,setup.py,*egg*,.venv/*' -d reports
646- fi
647- # Remove the leftover coverage files from the -p flag earlier.
648- rm -f .coverage.*
649-
650- if [ $(($HORIZON_RESULT || $DASHBOARD_RESULT)) -eq 0 ]; then
651- echo "Tests completed successfully."
652- else
653- echo "Tests failed."
654- fi
655- exit $(($HORIZON_RESULT || $DASHBOARD_RESULT))
656-}
657-
658-function run_makemessages {
659- cd horizon
660- ${command_wrapper} $root/manage.py makemessages --all --no-obsolete
661- HORIZON_PY_RESULT=$?
662- ${command_wrapper} $root/manage.py makemessages -d djangojs --all --no-obsolete
663- HORIZON_JS_RESULT=$?
664- cd ../openstack_dashboard
665- ${command_wrapper} $root/manage.py makemessages --all --no-obsolete
666- DASHBOARD_RESULT=$?
667- cd ..
668- exit $(($HORIZON_PY_RESULT || $HORIZON_JS_RESULT || $DASHBOARD_RESULT))
669-}
670-
671-function run_compilemessages {
672- cd horizon
673- ${command_wrapper} $root/manage.py compilemessages
674- HORIZON_PY_RESULT=$?
675- cd ../openstack_dashboard
676- ${command_wrapper} $root/manage.py compilemessages
677- DASHBOARD_RESULT=$?
678- cd ..
679- exit $(($HORIZON_PY_RESULT || $DASHBOARD_RESULT))
680-}
681-
682-
683-# ---------PREPARE THE ENVIRONMENT------------ #
684-
685-# PROCESS ARGUMENTS, OVERRIDE DEFAULTS
686-for arg in "$@"; do
687- process_option $arg
688-done
689-
690-if [ $quiet -eq 1 ] && [ $never_venv -eq 0 ] && [ $always_venv -eq 0 ]
691-then
692- always_venv=1
693-fi
694-
695-# If destroy is set, just blow it away and exit.
696-if [ $destroy -eq 1 ]; then
697- destroy_venv
698- exit 0
699-fi
700-
701-# Ignore all of this if the -N flag was set
702-if [ $never_venv -eq 0 ]; then
703-
704- # Restore previous environment if desired
705- if [ $restore_env -eq 1 ]; then
706- restore_environment
707- fi
708-
709- # Remove the virtual environment if --force used
710- if [ $force -eq 1 ]; then
711- destroy_venv
712- fi
713-
714- # Then check if it's up-to-date
715- environment_check
716-
717- # Create a backup of the up-to-date environment if desired
718- if [ $backup_env -eq 1 ]; then
719- backup_environment
720- fi
721-fi
722-
723-# ---------EXERCISE THE CODE------------ #
724-
725-# Run management commands
726-if [ $manage -eq 1 ]; then
727- run_management_command
728- exit $?
729-fi
730-
731-# Build the docs
732-if [ $just_docs -eq 1 ]; then
733- run_sphinx
734- exit $?
735-fi
736-
737-# Update translation files
738-if [ $makemessages -eq 1 ]; then
739- run_makemessages
740- exit $?
741-fi
742-
743-# Compile translation files
744-if [ $compilemessages -eq 1 ]; then
745- run_compilemessages
746- exit $?
747-fi
748-
749-# PEP8
750-if [ $just_pep8 -eq 1 ]; then
751- run_pep8
752- exit $?
753-fi
754-
755-# Pylint
756-if [ $just_pylint -eq 1 ]; then
757- run_pylint
758- exit $?
759-fi
760-
761-# Tab checker
762-if [ $just_tabs -eq 1 ]; then
763- tab_check
764- exit $?
765-fi
766-
767-# Django development server
768-if [ $runserver -eq 1 ]; then
769- run_server
770- exit $?
771-fi
772-
773-# Full test suite
774-run_tests || exit
775
776=== removed directory '.pc/ubuntu_local_settings.patch'
777=== removed directory '.pc/ubuntu_local_settings.patch/openstack_dashboard'
778=== removed directory '.pc/ubuntu_local_settings.patch/openstack_dashboard/local'
779=== removed file '.pc/ubuntu_local_settings.patch/openstack_dashboard/local/local_settings.py.example'
780--- .pc/ubuntu_local_settings.patch/openstack_dashboard/local/local_settings.py.example 2012-09-12 12:21:33 +0000
781+++ .pc/ubuntu_local_settings.patch/openstack_dashboard/local/local_settings.py.example 1970-01-01 00:00:00 +0000
782@@ -1,147 +0,0 @@
783-import os
784-
785-from django.utils.translation import ugettext_lazy as _
786-
787-DEBUG = True
788-TEMPLATE_DEBUG = DEBUG
789-
790-# Set SSL proxy settings:
791-# For Django 1.4+ pass this header from the proxy after terminating the SSL,
792-# and don't forget to strip it from the client's request.
793-# For more information see:
794-# https://docs.djangoproject.com/en/1.4/ref/settings/#secure-proxy-ssl-header
795-# SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTOCOL', 'https')
796-
797-# Specify a regular expression to validate user passwords.
798-# HORIZON_CONFIG = {
799-# "password_validator": {
800-# "regex": '.*',
801-# "help_text": _("Your password does not meet the requirements.")
802-# },
803-# 'help_url': "http://docs.openstack.org"
804-# }
805-
806-LOCAL_PATH = os.path.dirname(os.path.abspath(__file__))
807-
808-# Set custom secret key:
809-# You can either set it to a specific value or you can let horizion generate a
810-# default secret key that is unique on this machine, e.i. regardless of the
811-# amount of Python WSGI workers (if used behind Apache+mod_wsgi): However, there
812-# may be situations where you would want to set this explicitly, e.g. when
813-# multiple dashboard instances are distributed on different machines (usually
814-# behind a load-balancer). Either you have to make sure that a session gets all
815-# requests routed to the same dashboard instance or you set the same SECRET_KEY
816-# for all of them.
817-# from horizon.utils import secret_key
818-# SECRET_KEY = secret_key.generate_or_read_from_file(os.path.join(LOCAL_PATH, '.secret_key_store'))
819-
820-# We recommend you use memcached for development; otherwise after every reload
821-# of the django development server, you will have to login again. To use
822-# memcached set CACHE_BACKED to something like 'memcached://127.0.0.1:11211/'
823-CACHE_BACKEND = 'locmem://'
824-
825-# Send email to the console by default
826-EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
827-# Or send them to /dev/null
828-#EMAIL_BACKEND = 'django.core.mail.backends.dummy.EmailBackend'
829-
830-# Configure these for your outgoing email host
831-# EMAIL_HOST = 'smtp.my-company.com'
832-# EMAIL_PORT = 25
833-# EMAIL_HOST_USER = 'djangomail'
834-# EMAIL_HOST_PASSWORD = 'top-secret!'
835-
836-# For multiple regions uncomment this configuration, and add (endpoint, title).
837-# AVAILABLE_REGIONS = [
838-# ('http://cluster1.example.com:5000/v2.0', 'cluster1'),
839-# ('http://cluster2.example.com:5000/v2.0', 'cluster2'),
840-# ]
841-
842-OPENSTACK_HOST = "127.0.0.1"
843-OPENSTACK_KEYSTONE_URL = "http://%s:5000/v2.0" % OPENSTACK_HOST
844-OPENSTACK_KEYSTONE_DEFAULT_ROLE = "Member"
845-
846-# Disable SSL certificate checks (useful for self-signed certificates):
847-# OPENSTACK_SSL_NO_VERIFY = True
848-
849-# The OPENSTACK_KEYSTONE_BACKEND settings can be used to identify the
850-# capabilities of the auth backend for Keystone.
851-# If Keystone has been configured to use LDAP as the auth backend then set
852-# can_edit_user to False and name to 'ldap'.
853-#
854-# TODO(tres): Remove these once Keystone has an API to identify auth backend.
855-OPENSTACK_KEYSTONE_BACKEND = {
856- 'name': 'native',
857- 'can_edit_user': True
858-}
859-
860-OPENSTACK_HYPERVISOR_FEATURES = {
861- 'can_set_mount_point': True
862-}
863-
864-# OPENSTACK_ENDPOINT_TYPE specifies the endpoint type to use for the endpoints
865-# in the Keystone service catalog. Use this setting when Horizon is running
866-# external to the OpenStack environment. The default is 'internalURL'.
867-#OPENSTACK_ENDPOINT_TYPE = "publicURL"
868-
869-# The number of objects (Swift containers/objects or images) to display
870-# on a single page before providing a paging element (a "more" link)
871-# to paginate results.
872-API_RESULT_LIMIT = 1000
873-API_RESULT_PAGE_SIZE = 20
874-
875-# The timezone of the server. This should correspond with the timezone
876-# of your entire OpenStack installation, and hopefully be in UTC.
877-TIME_ZONE = "UTC"
878-
879-LOGGING = {
880- 'version': 1,
881- # When set to True this will disable all logging except
882- # for loggers specified in this configuration dictionary. Note that
883- # if nothing is specified here and disable_existing_loggers is True,
884- # django.db.backends will still log unless it is disabled explicitly.
885- 'disable_existing_loggers': False,
886- 'handlers': {
887- 'null': {
888- 'level': 'DEBUG',
889- 'class': 'django.utils.log.NullHandler',
890- },
891- 'console': {
892- # Set the level to "DEBUG" for verbose output logging.
893- 'level': 'INFO',
894- 'class': 'logging.StreamHandler',
895- },
896- },
897- 'loggers': {
898- # Logging from django.db.backends is VERY verbose, send to null
899- # by default.
900- 'django.db.backends': {
901- 'handlers': ['null'],
902- 'propagate': False,
903- },
904- 'horizon': {
905- 'handlers': ['console'],
906- 'propagate': False,
907- },
908- 'openstack_dashboard': {
909- 'handlers': ['console'],
910- 'propagate': False,
911- },
912- 'novaclient': {
913- 'handlers': ['console'],
914- 'propagate': False,
915- },
916- 'keystoneclient': {
917- 'handlers': ['console'],
918- 'propagate': False,
919- },
920- 'glanceclient': {
921- 'handlers': ['console'],
922- 'propagate': False,
923- },
924- 'nose.plugins.manager': {
925- 'handlers': ['console'],
926- 'propagate': False,
927- }
928- }
929-}
930
931=== modified file 'AUTHORS'
932--- AUTHORS 2012-09-12 12:21:33 +0000
933+++ AUTHORS 2012-11-26 19:56:34 +0000
934@@ -17,6 +17,7 @@
935 Dean Troyer <dtroyer@gmail.com>
936 Devin Carlen <devin.carlen@gmail.com>
937 Doug Doan <dougdoan@gmail.com>
938+Doug Hellmann <doug.hellmann@dreamhost.com>
939 Duncan McGreggor <duncan@dreamhost.com>
940 Emma Steimann <emmasteimann@gmail.com>
941 Erwan Gallen <dev@zinux.com>
942@@ -44,22 +45,29 @@
943 Joseph Heck <heckj@mac.com>
944 Joshua McKenty <joshua@pistoncloud.com>
945 Julien Danjou <julien.danjou@enovance.com>
946+Julie Pichon <jpichon@redhat.com>
947 Julie Pichon <julie.pichon@gmail.com>
948 Kelsey Tripp <kelsey.tripp@nebula.com>
949 Ken Pepple <ken.pepple@gmail.com>
950 Ke Wu <ke.wu@ibeca.me>
951 Ke WU <ke.wu@ibeca.me>
952+Kieran Spear <kispear@gmail.com>
953+Kylin CG <kylin7.sg@gmail.com>
954 Lin Hua Cheng <lin-hua.cheng@hp.com>
955 lrqrun <lrqrun@gmail.com>
956 lzyeval <lzyeval@gmail.com>
957+Malini Bhandaru <malini.k.bhandaru@intel.com>
958 Mark Gius <launchpad@markgius.com>
959 Mark McLoughlin <markmc@redhat.com>
960+Matthias Runge <mrunge@redhat.com>
961 Matt Joyce <matt.joyce@cloudscaling.com>
962+Michael Still <mikal@stillhq.com>
963 Michael Szilagyi <mszilagyi@gmail.com>
964 Mike Perez <thingee@gmail.com>
965 Mike Scherbakov <mihgen@gmail.com>
966 Monty Taylor <mordred@inaugust.com>
967 Neil Johnston <onewheeldrive.net@gmail.com>
968+Nicolas Simonds <nic@metacloud.com>
969 Paul McMillan <paul.mcmillan@nebula.com>
970 Rafi Khardalian <rafi@metacloud.com>
971 Ray Chen <oldsharp@163.com>
972
973=== modified file 'ChangeLog'
974--- ChangeLog 2012-09-21 08:03:36 +0000
975+++ ChangeLog 2012-11-26 19:56:34 +0000
976@@ -1,24 +1,2458 @@
977-commit cee6b626d372c8d420b439038a3fe0580d8fcc89
978-Merge: fcba390 d842573
979-Author: Jenkins <jenkins@review.openstack.org>
980-Date: Wed Sep 19 09:21:36 2012 +0000
981-
982- Merge "Final translations for Folsom." into milestone-proposed
983-
984-commit fcba390aa03b4373478e7138045e2d6050871ec7
985-Author: Gabriel Hurley <gabriel@strikeawe.com>
986-Date: Tue Sep 18 14:17:51 2012 -0700
987-
988- Fixes error when clicking OpenStack logo.
989-
990- Fixes bug 1052677.
991-
992- Change-Id: I796f23c4e9c5439b7263957cb4ec1b8fa864f398
993-
994- openstack_dashboard/settings.py | 2 +-
995- 1 file changed, 1 insertion(+), 1 deletion(-)
996-
997-commit d8425738e0023f20db08c3fc46f7322664be79d9
998+commit 8734ea4977b03a2862615f5e0289b57269fee24d
999+Merge: e6d3c23 dcda694
1000+Author: Jenkins <jenkins@review.openstack.org>
1001+Date: Wed Nov 21 20:07:43 2012 +0000
1002+
1003+ Merge "Return a friendly error at flavor creation"
1004+
1005+commit e6d3c23943a11357ffc755f8052894e15d8dfc1a
1006+Merge: 76ef256 86427b8
1007+Author: Jenkins <jenkins@review.openstack.org>
1008+Date: Wed Nov 21 20:07:26 2012 +0000
1009+
1010+ Merge "Adds transitional deprecation code for old dashboard names."
1011+
1012+commit dcda6940263a43344bf98aa1776cce34d25ff927
1013+Author: Matthias Runge <mrunge@redhat.com>
1014+Date: Mon Nov 19 13:14:02 2012 +0100
1015+
1016+ Return a friendly error at flavor creation
1017+
1018+ When trying to create a flavor with an Id/Name that is already in use, the
1019+ operation fails and no error message is being displayed
1020+
1021+ Change-Id: I92db8b52bc4e63e5e5ce4d90169944e484baeddd
1022+ Fixes: bug #1079155
1023+
1024+ .../dashboards/admin/flavors/forms.py | 21 ++++++++++++++++++++
1025+ .../dashboards/admin/flavors/tests.py | 1 +
1026+ 2 files changed, 22 insertions(+)
1027+
1028+commit 86427b83d668837b7b6ea4b9c3783e9049777dd4
1029+Author: Gabriel Hurley <gabriel@strikeawe.com>
1030+Date: Tue Nov 20 20:33:09 2012 -0800
1031+
1032+ Adds transitional deprecation code for old dashboard names.
1033+
1034+ This code allows users who upgrade from Folsom to Grizzly to
1035+ continue using their old settings file until H.
1036+
1037+ The code is in the settings file because it must be run prior
1038+ to the modules listed in INSTALLED_APPS being loaded into the
1039+ python path.
1040+
1041+ Fixes bug 1071444.
1042+
1043+ Change-Id: I7ac30b731be3cdc7513e3d6bc34d624963bbea9b
1044+
1045+ openstack_dashboard/settings.py | 36 ++++++++++++++++++++++++++++++++++--
1046+ 1 file changed, 34 insertions(+), 2 deletions(-)
1047+
1048+commit 76ef256dc47b590f205aa95c2d439282fb62c962
1049+Author: Kieran Spear <kispear@gmail.com>
1050+Date: Wed Nov 14 18:30:39 2012 +1100
1051+
1052+ Don't inherit from base.html in 500 error page
1053+
1054+ For server errors, the context passed to the template is empty,
1055+ so things like STATIC_URL and context processors don't work.
1056+
1057+ Fixes bug 1067206.
1058+
1059+ Change-Id: Ia1801afaecd6a23fbcc6054552d0fd313597d1c1
1060+
1061+ horizon/templatetags/horizon.py | 6 ++
1062+ openstack_dashboard/templates/500.html | 103 +++++++++++++++++++------
1063+ openstack_dashboard/test/error_pages_urls.py | 7 ++
1064+ openstack_dashboard/test/tests/error_pages.py | 34 ++++++++
1065+ openstack_dashboard/urls.py | 5 ++
1066+ 5 files changed, 131 insertions(+), 24 deletions(-)
1067+
1068+commit 699469827b3ad6372e046d608477898e093bb512
1069+Merge: f9c9e9b 0d305a6
1070+Author: Jenkins <jenkins@review.openstack.org>
1071+Date: Tue Nov 20 23:12:19 2012 +0000
1072+
1073+ Merge "Fixes for missing files in MANIFEST."
1074+
1075+commit f9c9e9b9546f82a1625fcfd8a9092a7ed5316280
1076+Merge: 5a23ee9 2f98bef
1077+Author: Jenkins <jenkins@review.openstack.org>
1078+Date: Tue Nov 20 23:12:01 2012 +0000
1079+
1080+ Merge "Reworks quotas and services panels into System Info panel."
1081+
1082+commit 5a23ee90975bc3c5f2a64d46df0404db8ccbeb50
1083+Merge: 73cf169 0065e66
1084+Author: Jenkins <jenkins@review.openstack.org>
1085+Date: Tue Nov 20 23:08:02 2012 +0000
1086+
1087+ Merge "Unifies Horizon conf."
1088+
1089+commit 73cf169eade2f6254d48eb52cfb72aec72295186
1090+Merge: ccb0b2c 3fbe68f
1091+Author: Jenkins <jenkins@review.openstack.org>
1092+Date: Tue Nov 20 22:45:27 2012 +0000
1093+
1094+ Merge "Honour LOGIN_URL when redirecting to login page"
1095+
1096+commit 0d305a62f169c1f52c125a65b92d5380547b7f55
1097+Author: Gabriel Hurley <gabriel@strikeawe.com>
1098+Date: Tue Nov 20 14:40:13 2012 -0800
1099+
1100+ Fixes for missing files in MANIFEST.
1101+
1102+ Fixes bug 1079621.
1103+
1104+ Change-Id: Ic7f16ff86033e3e53e6682bd494b907f396490ce
1105+
1106+ MANIFEST.in | 2 +-
1107+ 1 file changed, 1 insertion(+), 1 deletion(-)
1108+
1109+commit ccb0b2c0040fe0dae4bf6ea0f44d844914d14a7d
1110+Merge: aec9884 16fd3c9
1111+Author: Jenkins <jenkins@review.openstack.org>
1112+Date: Tue Nov 20 22:37:58 2012 +0000
1113+
1114+ Merge "Allow running tests individually"
1115+
1116+commit aec98844ca9892919e243dfe9216604e0ac4eb46
1117+Merge: ffb98f1 2205300
1118+Author: Jenkins <jenkins@review.openstack.org>
1119+Date: Tue Nov 20 22:35:30 2012 +0000
1120+
1121+ Merge "use addHorizonLoadEvent() method instead of $(document).ready()"
1122+
1123+commit 0065e6642dafe2a43480d1e6280bff1128b33775
1124+Author: Gabriel Hurley <gabriel@strikeawe.com>
1125+Date: Sat Nov 17 16:54:48 2012 -0800
1126+
1127+ Unifies Horizon conf.
1128+
1129+ Centralizes all of Horizon's configuration options so that
1130+ they're all uniformly accesible from a single place and always
1131+ guaranteed to exist.
1132+
1133+ Implements blueprint unify-config.
1134+
1135+ Change-Id: I3279b7ccd58302fcff4f0d273f89f282a285c442
1136+
1137+ horizon/base.py | 32 +++++-------------
1138+ horizon/conf/__init__.py | 35 ++++++++++++++++++++
1139+ horizon/conf/default.py | 30 +++++++++++++++++
1140+ horizon/context_processors.py | 4 +--
1141+ horizon/exceptions.py | 10 +++---
1142+ horizon/static/horizon/js/horizon.communication.js | 2 +-
1143+ horizon/tables/base.py | 5 +--
1144+ horizon/utils/validators.py | 9 ++---
1145+ openstack_dashboard/api/nova.py | 3 +-
1146+ .../local/local_settings.py.example | 25 ++++++++++----
1147+ openstack_dashboard/test/settings.py | 1 -
1148+ openstack_dashboard/test/test_data/exceptions.py | 2 +-
1149+ 12 files changed, 107 insertions(+), 51 deletions(-)
1150+
1151+commit ffb98f19e6f5e66f9d9b4036ded446f5e15eb32a
1152+Author: Julie Pichon <jpichon@redhat.com>
1153+Date: Fri Nov 16 21:12:09 2012 +0000
1154+
1155+ Client-side validation of password/confirmation match
1156+
1157+ Fixes bug 1055234
1158+
1159+ Change-Id: I25a3e8463894f0fb08e26e502f1baf0822d90437
1160+
1161+ horizon/static/horizon/js/horizon.users.js | 31 ++++++++++++
1162+ horizon/templates/horizon/_scripts.html | 1 +
1163+ .../admin/users/templates/users/_create.html | 10 ++++
1164+ .../admin/users/templates/users/_update.html | 10 ++++
1165+ .../dashboards/admin/users/tests.py | 51 +++++++++++++++++++
1166+ openstack_dashboard/test/helpers.py | 52 ++++++++++++++++++++
1167+ 6 files changed, 155 insertions(+)
1168+
1169+commit 241c63b94c7d66bfd8ce569380e85c6e9f60f8dc
1170+Merge: 0e32899 9c12d23
1171+Author: Jenkins <jenkins@review.openstack.org>
1172+Date: Tue Nov 20 00:48:22 2012 +0000
1173+
1174+ Merge "Move netaddr to pip-requires"
1175+
1176+commit 3fbe68f690f86a9e07d054daafedf980217827e9
1177+Author: Kieran Spear <kispear@gmail.com>
1178+Date: Fri Nov 16 17:20:51 2012 +1100
1179+
1180+ Honour LOGIN_URL when redirecting to login page
1181+
1182+ Currently the redirect is always made to the url of the 'login' view.
1183+ This change makes redirects go to LOGIN_URL, so the default login view
1184+ can be replaced with a view at another url/name.
1185+
1186+ Fixes bug 1079444.
1187+
1188+ Change-Id: Ib56200679668dd053d3c6ac24807d2a2affc0df8
1189+
1190+ horizon/middleware.py | 17 +++++++++++------
1191+ horizon/test/tests/base.py | 7 +++----
1192+ horizon/test/tests/middleware.py | 34 ++++++++++++++++++++++++++++++++++
1193+ 3 files changed, 48 insertions(+), 10 deletions(-)
1194+
1195+commit 2f98befe3ffc07922c02b4cb0d0c400e9c361922
1196+Author: Gabriel Hurley <gabriel@strikeawe.com>
1197+Date: Sat Nov 17 15:49:17 2012 -0800
1198+
1199+ Reworks quotas and services panels into System Info panel.
1200+
1201+ This is a step towards combining all the "read only" data about
1202+ an OpenStack cloud into one place for admin inspection.
1203+
1204+ Implements blueprint system-info-panel.
1205+
1206+ Change-Id: I2dc52a855c1c8a488fb9c66b82e0faca765b3812
1207+
1208+ openstack_dashboard/api/nova.py | 3 +-
1209+ openstack_dashboard/dashboards/admin/dashboard.py | 4 +-
1210+ openstack_dashboard/dashboards/admin/info/panel.py | 33 ++++++++
1211+ .../dashboards/admin/info/tables.py | 79 ++++++++++++++++++++
1212+ openstack_dashboard/dashboards/admin/info/tabs.py | 62 +++++++++++++++
1213+ .../admin/info/templates/info/index.html | 15 ++++
1214+ openstack_dashboard/dashboards/admin/info/tests.py | 71 ++++++++++++++++++
1215+ openstack_dashboard/dashboards/admin/info/urls.py | 27 +++++++
1216+ openstack_dashboard/dashboards/admin/info/views.py | 33 ++++++++
1217+ .../dashboards/admin/quotas/panel.py | 33 --------
1218+ .../dashboards/admin/quotas/tables.py | 38 ----------
1219+ .../admin/quotas/templates/quotas/index.html | 13 ----
1220+ .../dashboards/admin/quotas/tests.py | 1 -
1221+ .../dashboards/admin/quotas/urls.py | 27 -------
1222+ .../dashboards/admin/quotas/views.py | 47 ------------
1223+ .../dashboards/admin/services/panel.py | 33 --------
1224+ .../dashboards/admin/services/tables.py | 50 -------------
1225+ .../admin/services/templates/services/index.html | 14 ----
1226+ .../dashboards/admin/services/tests.py | 36 ---------
1227+ .../dashboards/admin/services/urls.py | 27 -------
1228+ .../dashboards/admin/services/views.py | 41 ----------
1229+ openstack_dashboard/test/test_data/nova_data.py | 1 +
1230+ 22 files changed, 325 insertions(+), 363 deletions(-)
1231+
1232+commit 22053000b18006339a0950af430d5bc66fc85b95
1233+Author: Nicolas Simonds <nic@metacloud.com>
1234+Date: Thu Nov 15 15:47:28 2012 -0800
1235+
1236+ use addHorizonLoadEvent() method instead of $(document).ready()
1237+
1238+ These pages load all the scripts at the end, which means jQuery
1239+ isn't loaded yet, which means there is no $ variable, which means
1240+ the page throws errors when attempting to resize the iframe. Oops.
1241+
1242+ There's a special method defined for doing what is being tried here,
1243+ called addHorizonLoadEvent(), so use it instead. Confirmed working
1244+ correctly in DevStack.
1245+
1246+ Fixes Bug 1050316
1247+
1248+ Change-Id: Ia6a90485acc2454ff0320abcd51860423282a659
1249+
1250+ .../instances/templates/instances/_detail_vnc.html | 2 +-
1251+ 1 file changed, 1 insertion(+), 1 deletion(-)
1252+
1253+commit 16fd3c9ebb2a267f7a13961a500628ee2db0f356
1254+Author: Kieran Spear <kispear@gmail.com>
1255+Date: Thu Nov 15 14:40:25 2012 +1100
1256+
1257+ Allow running tests individually
1258+
1259+ If there is a non-zero number of arguments, run_tests.sh now
1260+ passes through the arguments to `manage.py test`, skipping the
1261+ default horizon/openstack_dashboard suites.
1262+
1263+ The correct settings module is chosen based on the first module
1264+ given in the argument. E.g., horizon.test.tests.tables chooses
1265+ the horizon.test.settings module.
1266+
1267+ Change-Id: I5321e87bec6831fb7574e045a82de06086b1d0d0
1268+
1269+ doc/source/ref/run_tests.rst | 19 +++++++++++++++++++
1270+ doc/source/testing.rst | 2 ++
1271+ run_tests.sh | 23 +++++++++++++++++++----
1272+ 3 files changed, 40 insertions(+), 4 deletions(-)
1273+
1274+commit 0e328995ec3fa8a04af8b687d2a7462fd8029f1c
1275+Merge: 241ee81 4c88b9b
1276+Author: Jenkins <jenkins@review.openstack.org>
1277+Date: Tue Nov 13 21:29:14 2012 +0000
1278+
1279+ Merge "Added a check for volume service in quota functions"
1280+
1281+commit 241ee819f1a7094ea59ec3783706c15457c2f857
1282+Merge: 220f99e 9249a5d
1283+Author: Jenkins <jenkins@review.openstack.org>
1284+Date: Tue Nov 13 13:15:15 2012 +0000
1285+
1286+ Merge "Report correct return value from pep8 check"
1287+
1288+commit 9c12d2386831d0f4f4a5644c1e0947c9889f692a
1289+Author: Kieran Spear <kispear@gmail.com>
1290+Date: Tue Nov 13 18:37:34 2012 +1100
1291+
1292+ Move netaddr to pip-requires
1293+
1294+ Change-Id: I3620689e8407055234e9a2bcbab896f2394c4fc4
1295+
1296+ tools/pip-requires | 1 +
1297+ tools/test-requires | 1 -
1298+ 2 files changed, 1 insertion(+), 1 deletion(-)
1299+
1300+commit 4c88b9b5977c50525771876b2a8624fa586b8f6e
1301+Author: Tihomir Trifonov <t.trifonov@gmail.com>
1302+Date: Fri Nov 9 14:55:23 2012 +0200
1303+
1304+ Added a check for volume service in quota functions
1305+
1306+ When displaying the quotas, we have to check if
1307+ volume service is present in the service catalog.
1308+ If not - then to remove the volume quotas from
1309+ the result object.
1310+
1311+ Fixes bug 1075319
1312+
1313+ Change-Id: Icd049a5b147cac039add1570a166d775fd0d6ec4
1314+
1315+ .../templates/horizon/common/_quota_summary.html | 8 +++++
1316+ openstack_dashboard/test/tests/quotas.py | 36 ++++++++++++++++++++
1317+ openstack_dashboard/usage/quotas.py | 31 ++++++++++-------
1318+ 3 files changed, 63 insertions(+), 12 deletions(-)
1319+
1320+commit 220f99e3c72fb780935afc57e8db496c9d86b2df
1321+Merge: fc075fa e202400
1322+Author: Jenkins <jenkins@review.openstack.org>
1323+Date: Fri Nov 9 01:38:46 2012 +0000
1324+
1325+ Merge "When editing an image, correctly set the 'is_public' checkbox."
1326+
1327+commit fc075fa12fdd29dc7208e24d668aeb92a867a2de
1328+Merge: 89904e6 e837b10
1329+Author: Jenkins <jenkins@review.openstack.org>
1330+Date: Fri Nov 9 01:38:19 2012 +0000
1331+
1332+ Merge "Changed "Delete volume" success message text"
1333+
1334+commit 89904e6f6c1b147ced238276d65ced2ac70ede2b
1335+Author: Brian Waldon <bcwaldon@gmail.com>
1336+Date: Wed Oct 31 12:45:15 2012 -0700
1337+
1338+ Remove superfluous slash from admin usage.csv template
1339+
1340+ The forward-slash is unnecessary in the Admin usage.csv template
1341+ and it diverges from the corresponding Project template. This
1342+ patch removes it.
1343+
1344+ Change-Id: I8c1305c0d11bedc3635f41524e8ef62841b70f1a
1345+
1346+ .../admin/overview/templates/overview/usage.csv | 2 +-
1347+ 1 file changed, 1 insertion(+), 1 deletion(-)
1348+
1349+commit a7ad523d5a77447410192e1d92f5c0ba19e1d0bd
1350+Merge: 82c19ae 92510f1
1351+Author: Jenkins <jenkins@review.openstack.org>
1352+Date: Thu Nov 8 21:07:04 2012 +0000
1353+
1354+ Merge "Wrap a project list call with exception handler."
1355+
1356+commit e2024001c774deae8cb53bdb3a9bb86925bc1960
1357+Author: Julie Pichon <jpichon@redhat.com>
1358+Date: Thu Nov 8 16:48:42 2012 +0000
1359+
1360+ When editing an image, correctly set the 'is_public' checkbox.
1361+
1362+ Fixes bug 1076216.
1363+
1364+ Change-Id: Ie185f110a18593295ed0712cd848a3f14a13f2b0
1365+
1366+ .../project/images_and_snapshots/images/tests.py | 22 ++++++++++++++++++++
1367+ .../project/images_and_snapshots/images/views.py | 2 +-
1368+ 2 files changed, 23 insertions(+), 1 deletion(-)
1369+
1370+commit e837b105e8bcfa772d3b83c80411a9f897e74232
1371+Author: Tihomir Trifonov <t.trifonov@gmail.com>
1372+Date: Thu Nov 8 17:32:25 2012 +0200
1373+
1374+ Changed "Delete volume" success message text
1375+
1376+ As deletion of volume/snapshot is performed
1377+ asynchronous, the success label should not be
1378+ 'Deleted', but 'Scheduled for deletion', as it
1379+ is for Instances ('Scheduled for termination').
1380+
1381+ Fixes bug 1073718
1382+
1383+ Change-Id: Ia7884b5b82fea225cfc559309346e73683c4cb3e
1384+
1385+ .../volume_snapshots/tables.py | 1 +
1386+ .../images_and_snapshots/volume_snapshots/tests.py | 31 ++++++++++++++++++++
1387+ .../dashboards/project/volumes/tables.py | 1 +
1388+ .../dashboards/project/volumes/tests.py | 3 +-
1389+ openstack_dashboard/test/test_data/nova_data.py | 12 ++++----
1390+ 5 files changed, 41 insertions(+), 7 deletions(-)
1391+
1392+commit 82c19aee05211bed46a99ddeafab05599bc71ccf
1393+Author: Malini Bhandaru <malini.k.bhandaru@intel.com>
1394+Date: Sat Oct 13 05:18:13 2012 -0700
1395+
1396+ Flavor Extra Specs support.
1397+
1398+ Special thanks:
1399+
1400+ * Preserves extra specs on flavor edit (Tihomir Trifonov)
1401+ * Displays flavor name on extra specs pages (Vinay Bannai)
1402+ * Extras specs table close (Don Dugger & Gabriel).
1403+ * Final cleanup (Gabriel Hurley)
1404+
1405+ Change-Id: I6acb1176e5c0ca6987abc758fc45335870c55d57
1406+
1407+ horizon/templates/horizon/common/_modal.html | 10 +++
1408+ openstack_dashboard/api/nova.py | 30 +++++++
1409+ .../dashboards/admin/flavors/extras/forms.py | 66 ++++++++++++++
1410+ .../dashboards/admin/flavors/extras/tables.py | 75 ++++++++++++++++
1411+ .../dashboards/admin/flavors/extras/tests.py | 65 ++++++++++++++
1412+ .../dashboards/admin/flavors/extras/urls.py | 29 ++++++
1413+ .../dashboards/admin/flavors/extras/views.py | 93 ++++++++++++++++++++
1414+ .../dashboards/admin/flavors/forms.py | 9 +-
1415+ .../dashboards/admin/flavors/tables.py | 9 +-
1416+ .../flavors/templates/flavors/extras/_create.html | 27 ++++++
1417+ .../flavors/templates/flavors/extras/_edit.html | 27 ++++++
1418+ .../flavors/templates/flavors/extras/_index.html | 14 +++
1419+ .../flavors/templates/flavors/extras/create.html | 12 +++
1420+ .../flavors/templates/flavors/extras/edit.html | 12 +++
1421+ .../flavors/templates/flavors/extras/index.html | 12 +++
1422+ .../dashboards/admin/flavors/tests.py | 8 +-
1423+ .../dashboards/admin/flavors/urls.py | 7 +-
1424+ 17 files changed, 499 insertions(+), 6 deletions(-)
1425+
1426+commit 92510f1a380a24efda318d6d8594e7dde6744168
1427+Author: Gabriel Hurley <gabriel@strikeawe.com>
1428+Date: Mon Nov 5 11:10:03 2012 -0800
1429+
1430+ Wrap a project list call with exception handler.
1431+
1432+ Change-Id: I3bb531e54b517282121b08d49c5fe9775b52b990
1433+
1434+ .../dashboards/settings/project/forms.py | 8 +++++++-
1435+ 1 file changed, 7 insertions(+), 1 deletion(-)
1436+
1437+commit c61c5e28cc629c65166bcff2d974a622310f32b5
1438+Author: Gabriel Hurley <gabriel@strikeawe.com>
1439+Date: Fri Nov 2 15:10:43 2012 -0700
1440+
1441+ Enforce use of latest django_openstack_auth for PKI compat.
1442+
1443+ The latest django_openstack_auth supports PKI-signed tokens by
1444+ using Keystone's "is_ans1_token" function to determine if PKI
1445+ tokens are in use and react approriately if so.
1446+
1447+ Fixes bug 1071865
1448+
1449+ Change-Id: I62ba6370de829345d3214d80011a58e4ac6cd218
1450+
1451+ run_tests.sh | 2 +-
1452+ tools/pip-requires | 2 +-
1453+ 2 files changed, 2 insertions(+), 2 deletions(-)
1454+
1455+commit 4c05d9ff12ef6c9bb1e840fced1a695a33338760
1456+Merge: ec5d7fd 046f012
1457+Author: Jenkins <jenkins@review.openstack.org>
1458+Date: Fri Nov 2 18:38:04 2012 +0000
1459+
1460+ Merge "Remove unused usage.csv template"
1461+
1462+commit ec5d7fdd1a530aedd79cd08fedbdee9b87e9af1c
1463+Merge: 9eda3da 0c12faa
1464+Author: Jenkins <jenkins@review.openstack.org>
1465+Date: Fri Nov 2 18:37:48 2012 +0000
1466+
1467+ Merge "Update all usage.csv templates to use 2 decimal places"
1468+
1469+commit 9eda3da97894181cbbaf618a7a252b7b3649f132
1470+Merge: 7a7c89c 68db72b
1471+Author: Jenkins <jenkins@review.openstack.org>
1472+Date: Fri Nov 2 18:37:23 2012 +0000
1473+
1474+ Merge "Dynamically size the noVNC iframe, fix typos in copy"
1475+
1476+commit 68db72b95f71a9cfa9feacfda0018e32d5a673c0
1477+Author: Nicolas Simonds <nic@metacloud.com>
1478+Date: Mon Oct 29 13:48:19 2012 -0700
1479+
1480+ Dynamically size the noVNC iframe, fix typos in copy
1481+
1482+ The iframe for the noVNC console is too small for some users who
1483+ like to use GUI on the console. Leaving the sizes off completely
1484+ and letting the browser figure it out causes hilarity to ensue, so
1485+ explicitly set the height and width to quasi-sensible values.
1486+
1487+ Also, the "unavailable" error says "unavailabe" Fixed.
1488+
1489+ Fixes Bug 1050316 ?
1490+
1491+ Addendum:
1492+
1493+ add an identifier to the iframe rather than using the auto-generated selector
1494+
1495+ Change-Id: I17cfa97cdc69f4b58e18d02451da2197c663e0d3
1496+
1497+ .../instances/templates/instances/_detail_vnc.html | 13 ++++++++++---
1498+ 1 file changed, 10 insertions(+), 3 deletions(-)
1499+
1500+commit 7a7c89c293432242d4aa7a44f340e7dc78ab2ed0
1501+Merge: b21617a 70ac5bd
1502+Author: Jenkins <jenkins@review.openstack.org>
1503+Date: Fri Nov 2 09:21:26 2012 +0000
1504+
1505+ Merge "Add newline between rows of Admin usage.csv"
1506+
1507+commit 046f012e926b1ccfee31e8993237a5381083a571
1508+Author: Brian Waldon <bcwaldon@gmail.com>
1509+Date: Wed Oct 31 12:32:18 2012 -0700
1510+
1511+ Remove unused usage.csv template
1512+
1513+ Change-Id: I08f3c16e2da60bdaa8e04c60ed4a4d867c0947f4
1514+
1515+ .../admin/projects/templates/projects/usage.csv | 11 -----------
1516+ 1 file changed, 11 deletions(-)
1517+
1518+commit 0c12faa7dd7c35ae96e525abc7eeb8a0b917bdb4
1519+Author: Brian Waldon <bcwaldon@gmail.com>
1520+Date: Wed Oct 31 12:39:02 2012 -0700
1521+
1522+ Update all usage.csv templates to use 2 decimal places
1523+
1524+ Change-Id: I54694beb39fdee39d59e9032e72201a520a9fcd1
1525+
1526+ .../admin/overview/templates/overview/usage.csv | 4 ++--
1527+ .../project/overview/templates/overview/usage.csv | 6 +++---
1528+ 2 files changed, 5 insertions(+), 5 deletions(-)
1529+
1530+commit 70ac5bd4a7eb6d7271ce86fda5f29ba51ab1121d
1531+Author: Brian Waldon <bcwaldon@gmail.com>
1532+Date: Wed Oct 31 12:34:42 2012 -0700
1533+
1534+ Add newline between rows of Admin usage.csv
1535+
1536+ For some reason, we must also specify precision for vcpu hours
1537+ in this change. Adding the newline caused the default behavior
1538+ to change.
1539+
1540+ Fix bug 1073677
1541+
1542+ Change-Id: Id9a90e787de50f775ed17b15f185273cebba64e8
1543+
1544+ .../admin/overview/templates/overview/usage.csv | 3 ++-
1545+ .../dashboards/admin/overview/tests.py | 16 ++++++++--------
1546+ 2 files changed, 10 insertions(+), 9 deletions(-)
1547+
1548+commit b21617a5ba72a7d4645d33ff0a7ef9377884971b
1549+Author: Brian Waldon <bcwaldon@gmail.com>
1550+Date: Tue Oct 30 15:43:37 2012 -0700
1551+
1552+ Adding volume owner (project) to admin table.
1553+
1554+ Change-Id: I40174eefa191312e77da41d6f55fffec7a1d6d90
1555+
1556+ .../dashboards/admin/instances/tables.py | 4 ++--
1557+ .../dashboards/admin/volumes/tables.py | 3 +++
1558+ .../dashboards/admin/volumes/tests.py | 11 +++++++++--
1559+ .../dashboards/admin/volumes/views.py | 17 +++++++++++++++++
1560+ 4 files changed, 31 insertions(+), 4 deletions(-)
1561+
1562+commit 9249a5da2765fa03e5799f82c77bed15d9bccde1
1563+Author: Brian Waldon <bcwaldon@gmail.com>
1564+Date: Tue Oct 30 17:25:07 2012 -0700
1565+
1566+ Report correct return value from pep8 check
1567+
1568+ Remove the '|| true' appended to the pep8 command to allow
1569+ the non-zero status to be returned properly.
1570+
1571+ Fix bug 1073380.
1572+
1573+ Change-Id: I1e212a9d596eb448ee7f6ac40106a05650b70473
1574+
1575+ run_tests.sh | 2 +-
1576+ 1 file changed, 1 insertion(+), 1 deletion(-)
1577+
1578+commit 069c3f545ab497284a5fea034ef7d899f3902fa2
1579+Author: Gabriel Hurley <gabriel@strikeawe.com>
1580+Date: Mon Oct 29 15:26:05 2012 -0700
1581+
1582+ Adding volume host to admin table.
1583+
1584+ Change-Id: Id01a7e884113f67839ba3e8086df55dc8b1c5df3
1585+
1586+ .../dashboards/admin/volumes/tables.py | 1 +
1587+ 1 file changed, 1 insertion(+)
1588+
1589+commit 057d891f31f3901f7f933d12401aebc53759aff0
1590+Author: Tihomir Trifonov <t.trifonov@gmail.com>
1591+Date: Thu Oct 25 14:48:27 2012 +0300
1592+
1593+ Added support for volume types
1594+
1595+ As cinder already supports volume types, it's time
1596+ to be added in Horizon. The types are added in admin panel.
1597+ A volume can either have a *valid* type, or None.
1598+
1599+ There are two minor issues:
1600+ 1. When a type is deleted, if there is a volume with
1601+ this type, the type is returned as the id,
1602+ instead of the name. Which is good as consistency,
1603+ but maybe a type should not be deleted if used by a volume?
1604+ 2. If no vol type is passed(None) value, the type is being
1605+ assigned as 'None', and returned as a string('None')
1606+ 3. In the create volume type form, the 'Description' is
1607+ empty at the moment, I couldn't find any help info
1608+ to add for volume types...
1609+
1610+ Implements blueprint volume-types
1611+
1612+ Tested with n-cinder and n-vol services. Since Folsom both
1613+ support volume-types. I'm not sure if it is possible a grizzly
1614+ Dashboard to work with essex nova, which could be a problem.
1615+ Dashboard doesn't seem to provide permissions based on tables,
1616+ so if it needs to check if a service is available to show/hide
1617+ volume types, this will need some more effors to implement
1618+ permissions on table/action level. Or maybe this needs to be
1619+ added as a standalone panel?
1620+
1621+ Patch set 2: implemented suggestions, added one more thing:
1622+ When creating a volume from a snapshot, set the volume type
1623+ initial as the type of the original volume from which
1624+ the snapshot is being created.
1625+
1626+ Patch Set 3: Updated the description of volume types,
1627+ based on the notes from:
1628+ https://etherpad.openstack.org/grizzly-cinder-volumetypes
1629+ https://etherpad.openstack.org/cinder-usecases
1630+ Any feedback on the description is welcome.
1631+
1632+ Change-Id: Ib0c136c5c8cd9fbd34ce1dd346260f404c96f667
1633+
1634+ openstack_dashboard/api/cinder.py | 18 ++-
1635+ .../dashboards/admin/volumes/forms.py | 44 ++++++
1636+ .../dashboards/admin/volumes/tables.py | 33 ++++
1637+ .../templates/volumes/_create_volume_type.html | 29 ++++
1638+ .../templates/volumes/create_volume_type.html | 11 ++
1639+ .../admin/volumes/templates/volumes/index.html | 10 +-
1640+ .../dashboards/admin/volumes/tests.py | 54 ++++++-
1641+ .../dashboards/admin/volumes/urls.py | 3 +-
1642+ .../dashboards/admin/volumes/views.py | 36 ++++-
1643+ .../images_and_snapshots/volume_snapshots/tests.py | 14 +-
1644+ .../dashboards/project/volumes/forms.py | 43 ++++--
1645+ .../dashboards/project/volumes/tables.py | 12 +-
1646+ .../dashboards/project/volumes/tests.py | 157 ++++++++++++--------
1647+ .../dashboards/project/volumes/views.py | 18 ++-
1648+ openstack_dashboard/test/test_data/nova_data.py | 15 +-
1649+ 15 files changed, 389 insertions(+), 108 deletions(-)
1650+
1651+commit cd70bc92841dc69eb9fe22ef7d776c5469635912
1652+Merge: 7e132e3 ef4e931
1653+Author: Jenkins <jenkins@review.openstack.org>
1654+Date: Wed Oct 24 22:35:59 2012 +0000
1655+
1656+ Merge "Use UUIDs for flavor create/edit."
1657+
1658+commit 7e132e385acb633398630813136de05b945d8ae5
1659+Merge: f48600e cdcd8e3
1660+Author: Jenkins <jenkins@review.openstack.org>
1661+Date: Wed Oct 24 21:51:38 2012 +0000
1662+
1663+ Merge "Enable quota data from multiple sources."
1664+
1665+commit ef4e9314eb880238642e3122ae699f553b98db0e
1666+Author: Gabriel Hurley <gabriel@strikeawe.com>
1667+Date: Wed Oct 24 14:03:17 2012 -0700
1668+
1669+ Use UUIDs for flavor create/edit.
1670+
1671+ Now that Nova accepts strings as flavor IDs we can just use UUIDs
1672+ on our end and get rid of the horrors of trying to guess the next
1673+ integer ID. This fixes all the instability in flavor editing.
1674+
1675+ Fixes bug 1057799.
1676+
1677+ Change-Id: I55eb1d7408655fd27e81cc1196f15ceb3659a7b4
1678+
1679+ .../dashboards/admin/flavors/forms.py | 21 +++-----------------
1680+ .../dashboards/admin/flavors/tests.py | 11 ++++------
1681+ 2 files changed, 7 insertions(+), 25 deletions(-)
1682+
1683+commit f48600e9476d03c91d8dc9f827f70f790aa4c41e
1684+Merge: 1aa63dc acef935
1685+Author: Jenkins <jenkins@review.openstack.org>
1686+Date: Wed Oct 24 20:45:36 2012 +0000
1687+
1688+ Merge "Update common."
1689+
1690+commit 1aa63dc1eaee88055b8153cc1e8d65c8cf64f784
1691+Merge: 6258553 811ee7b
1692+Author: Jenkins <jenkins@review.openstack.org>
1693+Date: Wed Oct 24 20:43:44 2012 +0000
1694+
1695+ Merge "Fixed url pattern for project:instances:detail page"
1696+
1697+commit 62585536140bcb3ba6a316256ba72f6c81f4f930
1698+Merge: a0ad0d4 3e0f69d
1699+Author: Jenkins <jenkins@review.openstack.org>
1700+Date: Wed Oct 24 20:43:04 2012 +0000
1701+
1702+ Merge "Show message when user has no permissions"
1703+
1704+commit cdcd8e3df6ee143cc96b5e2a2d849e9ae8e86148
1705+Author: Gabriel Hurley <gabriel@strikeawe.com>
1706+Date: Tue Oct 23 22:25:18 2012 -0700
1707+
1708+ Enable quota data from multiple sources.
1709+
1710+ Now that there are multiple projects with quota data (cinder, quantum)
1711+ we need to accommodate that data being aggregated in a centralized
1712+ fashion. This commit takes care of that for nova + cinder, and paves
1713+ the way for quantum later.
1714+
1715+ Fixes bug 1070022.
1716+
1717+ Change-Id: Ifc68c2dc681b2a7b4e7787e0b1a7dca1a970fc36
1718+
1719+ horizon/static/horizon/js/horizon.quota.js | 2 +-
1720+ horizon/utils/memoized.py | 3 +
1721+ openstack_dashboard/api/__init__.py | 1 +
1722+ openstack_dashboard/api/base.py | 57 ++++++
1723+ openstack_dashboard/api/cinder.py | 115 ++++++++++++
1724+ openstack_dashboard/api/nova.py | 186 +++-----------------
1725+ .../dashboards/admin/overview/tests.py | 19 +-
1726+ .../dashboards/admin/projects/tests.py | 104 ++++++-----
1727+ .../dashboards/admin/projects/views.py | 10 +-
1728+ .../dashboards/admin/projects/workflows.py | 32 ++--
1729+ .../dashboards/admin/quotas/views.py | 2 +-
1730+ .../access_and_security/floating_ips/views.py | 3 +-
1731+ .../volume_snapshots/tables.py | 3 +-
1732+ .../images_and_snapshots/volume_snapshots/tabs.py | 6 +-
1733+ .../dashboards/project/instances/tests.py | 114 ++++++------
1734+ .../dashboards/project/instances/views.py | 4 +-
1735+ .../dashboards/project/instances/workflows.py | 8 +-
1736+ .../dashboards/project/overview/tests.py | 39 ++--
1737+ .../dashboards/project/volumes/forms.py | 14 +-
1738+ .../dashboards/project/volumes/tables.py | 4 +-
1739+ .../dashboards/project/volumes/tabs.py | 7 +-
1740+ .../dashboards/project/volumes/tests.py | 57 +++---
1741+ .../dashboards/project/volumes/views.py | 3 +-
1742+ openstack_dashboard/test/api_tests/nova_tests.py | 52 +-----
1743+ openstack_dashboard/test/test_data/nova_data.py | 30 ++--
1744+ openstack_dashboard/test/tests/quotas.py | 69 ++++++++
1745+ openstack_dashboard/usage/base.py | 3 +-
1746+ openstack_dashboard/usage/quotas.py | 108 ++++++++++++
1747+ 28 files changed, 625 insertions(+), 430 deletions(-)
1748+
1749+commit 811ee7b58aec6186d88b10a2e6184381f4b3ec5c
1750+Author: Tihomir Trifonov <t.trifonov@gmail.com>
1751+Date: Tue Oct 23 11:33:32 2012 +0300
1752+
1753+ Fixed url pattern for project:instances:detail page
1754+
1755+ Removed obsolete :nova: namespace
1756+
1757+ Fixes bug 1070230
1758+
1759+ Change-Id: Ia56ef9ebf1a9bfe90b02491125821742ee840baa
1760+
1761+ openstack_dashboard/usage/tables.py | 2 +-
1762+ 1 file changed, 1 insertion(+), 1 deletion(-)
1763+
1764+commit a0ad0d49a97da8a0fcee1636dce00c1ae940d6f9
1765+Merge: baf8b68 0c85d72
1766+Author: Jenkins <jenkins@review.openstack.org>
1767+Date: Tue Oct 23 08:32:36 2012 +0000
1768+
1769+ Merge "Fixes JavaScript count bug in tables."
1770+
1771+commit baf8b685dc5f5b2d0c780a26ed227217496a8f29
1772+Author: Doug Hellmann <doug.hellmann@dreamhost.com>
1773+Date: Mon Oct 22 18:30:34 2012 -0400
1774+
1775+ Add OpenStack trove classifier for PyPI
1776+
1777+ Add trove classifier to have horizon listed among the
1778+ other OpenStack-related projets on PyPI.
1779+
1780+ Change-Id: I70a2b3dedf437fbfd03d4c2d605af6d6c2ef98c6
1781+ Signed-off-by: Doug Hellmann <doug.hellmann@dreamhost.com>
1782+
1783+ setup.py | 3 ++-
1784+ 1 file changed, 2 insertions(+), 1 deletion(-)
1785+
1786+commit acef935c12bca0f544940f54dea4086ac25a0ea4
1787+Author: Michael Still <mikal@stillhq.com>
1788+Date: Thu Oct 18 11:43:17 2012 -0700
1789+
1790+ Update common.
1791+
1792+ policy.py is not updated as it causes test failures. I will investigate
1793+ that separately.
1794+
1795+ Change-Id: I0970cbc67835a18c0114457c1bb07c700e0dfe88
1796+
1797+ openstack_dashboard/openstack/common/setup.py | 258 ++++++++++++++++++++-----
1798+ 1 file changed, 209 insertions(+), 49 deletions(-)
1799+
1800+commit 0c85d7214e992fe83cad1f00dbeebc2f3a58d1eb
1801+Author: Matthias Runge <mrunge@redhat.com>
1802+Date: Mon Oct 15 09:52:32 2012 +0200
1803+
1804+ Fixes JavaScript count bug in tables.
1805+
1806+ When showing tables, and you had the summary, "No items to display",
1807+ the counter at table footer says "Displaying 1 items". This commit fixes
1808+ the inclusion of the empty line into line count.
1809+ Affected sub-pages: Instances, Volumes, Images & Snapshots, etc.
1810+
1811+ Change-Id: I24da50d506be477dffdbb0f497d88b1bd3ceacdc
1812+
1813+ horizon/static/horizon/js/horizon.tables.js | 4 ++--
1814+ 1 file changed, 2 insertions(+), 2 deletions(-)
1815+
1816+commit 3e0f69da7544c4ce92056db27191984bdffb75c8
1817+Author: Tihomir Trifonov <t.trifonov@gmail.com>
1818+Date: Sun Oct 14 12:08:11 2012 +0300
1819+
1820+ Show message when user has no permissions
1821+
1822+ Shows a warning messages to users who try to access
1823+ restricted page.
1824+
1825+ This bug can be simply fixed in middleware.py:
1826+
1827+ if isinstance(exception, (exceptions.NotAuthorized,
1828+ exceptions.NotAuthenticated)):
1829+ if request.user.is_authenticated() and 'next' in request.GET:
1830+ # a logged-in users gets NotAuthorized exception,
1831+ # then just redirect to user_home instead of '?next='
1832+
1833+ But in the case when an user uses different logins(e.g for
1834+ different projects), and wants to switch fast between them,
1835+ trying to load an admin-only(or other restricted) page,
1836+ then Dashboard will redirect them to their home page,
1837+ and the user will have to sign-out first, then login again
1838+ and load the desired page.
1839+
1840+ With this fix however, the user will see a message, giving them a choice
1841+ to login as different user, or to go to their 'home page' if
1842+ they landed on the restricted page by error, allowing fast-switching
1843+ between multiple accounts.
1844+ Also, this will work fine with bookmarked pages.
1845+
1846+ P.S. The html repr of the error message will
1847+ probably need some improvements...
1848+
1849+ Fixes bug 1053698
1850+
1851+ Change-Id: Id458af6c7bd90081fc95d339b32a3654878a927d
1852+
1853+ horizon/templates/auth/_login.html | 9 +++++++++
1854+ horizon/test/tests/base.py | 6 ++++++
1855+ horizon/test/urls.py | 3 +++
1856+ 3 files changed, 18 insertions(+)
1857+
1858+commit 28f9edb2c3aeb8761634a3d96d083351c31afeed
1859+Merge: 76e6740 35a6708
1860+Author: Jenkins <jenkins@review.openstack.org>
1861+Date: Sat Oct 13 18:47:32 2012 +0000
1862+
1863+ Merge "User shouldn't remove their own roles on project"
1864+
1865+commit 76e67407b9dcbbe5d8253067dbe44dc35dba5f38
1866+Merge: 5422c93 c681c93
1867+Author: Jenkins <jenkins@review.openstack.org>
1868+Date: Sat Oct 13 08:52:59 2012 +0000
1869+
1870+ Merge "Adding ephemeral disk to instance details"
1871+
1872+commit 5422c93525976b547bcfd61dda4ce57a1e06080b
1873+Merge: 6f990c9 5eac426
1874+Author: Jenkins <jenkins@review.openstack.org>
1875+Date: Sat Oct 13 08:52:25 2012 +0000
1876+
1877+ Merge "Fix bug 1055929 - Can not display usage data for Quota Summary."
1878+
1879+commit 35a6708dccdc71d69a147daf0b0c2fde17489d4b
1880+Author: Tihomir Trifonov <t.trifonov@gmail.com>
1881+Date: Wed Oct 10 17:29:20 2012 +0300
1882+
1883+ User shouldn't remove their own roles on project
1884+
1885+ Added a check if the user is trying to delete their
1886+ own 'admin' role on the current project. This is added
1887+ to prevent the users from locking their own
1888+ access to Dashboard. Also, if the 'admin' role on the
1889+ current project is removed, Dashboard automatically
1890+ switches to another project for which the user has 'admin'
1891+ role, but the previous project still is displayed as current.
1892+
1893+ Fixes bug 1046538
1894+
1895+ Also improved the unit test scenarios a bit.
1896+
1897+ Change-Id: I1e60a11d628d6490ad24a8149b43ac307afb4780
1898+
1899+ .../dashboards/admin/projects/tests.py | 186 +++++++++-----------
1900+ .../dashboards/admin/projects/workflows.py | 38 ++--
1901+ .../test/test_data/keystone_data.py | 20 ++-
1902+ 3 files changed, 124 insertions(+), 120 deletions(-)
1903+
1904+commit 6f990c9ce4fe716b2ca9d136c65de9fad46bc7bb
1905+Author: Gabriel Hurley <gabriel@strikeawe.com>
1906+Date: Fri Oct 12 15:35:19 2012 -0700
1907+
1908+ Readding bin dir which was mistakenly deleted.
1909+
1910+ Change-Id: Ia8989da47a55f7c932115a976b6d799714b8dc56
1911+
1912+ bin/less/lessc | 139 ++++
1913+ bin/lib/less/browser.js | 380 +++++++++++
1914+ bin/lib/less/colors.js | 152 +++++
1915+ bin/lib/less/cssmin.js | 355 +++++++++++
1916+ bin/lib/less/functions.js | 228 +++++++
1917+ bin/lib/less/index.js | 148 +++++
1918+ bin/lib/less/parser.js | 1334 +++++++++++++++++++++++++++++++++++++++
1919+ bin/lib/less/rhino.js | 62 ++
1920+ bin/lib/less/tree.js | 17 +
1921+ bin/lib/less/tree/alpha.js | 17 +
1922+ bin/lib/less/tree/anonymous.js | 13 +
1923+ bin/lib/less/tree/assignment.js | 17 +
1924+ bin/lib/less/tree/call.js | 48 ++
1925+ bin/lib/less/tree/color.js | 101 +++
1926+ bin/lib/less/tree/comment.js | 14 +
1927+ bin/lib/less/tree/condition.js | 42 ++
1928+ bin/lib/less/tree/dimension.js | 49 ++
1929+ bin/lib/less/tree/directive.js | 35 +
1930+ bin/lib/less/tree/element.js | 52 ++
1931+ bin/lib/less/tree/expression.js | 23 +
1932+ bin/lib/less/tree/import.js | 83 +++
1933+ bin/lib/less/tree/javascript.js | 51 ++
1934+ bin/lib/less/tree/keyword.js | 19 +
1935+ bin/lib/less/tree/media.js | 114 ++++
1936+ bin/lib/less/tree/mixin.js | 146 +++++
1937+ bin/lib/less/tree/operation.js | 32 +
1938+ bin/lib/less/tree/paren.js | 16 +
1939+ bin/lib/less/tree/quoted.js | 29 +
1940+ bin/lib/less/tree/rule.js | 42 ++
1941+ bin/lib/less/tree/ruleset.js | 225 +++++++
1942+ bin/lib/less/tree/selector.js | 42 ++
1943+ bin/lib/less/tree/url.js | 25 +
1944+ bin/lib/less/tree/value.js | 24 +
1945+ bin/lib/less/tree/variable.js | 26 +
1946+ 34 files changed, 4100 insertions(+)
1947+
1948+commit 5eac426a2a1304b166f85cd68086a1b1abeafd23
1949+Author: Kylin CG <kylin7.sg@gmail.com>
1950+Date: Fri Oct 12 17:04:40 2012 +0800
1951+
1952+ Fix bug 1055929 - Can not display usage data for Quota Summary.
1953+
1954+ Change-Id: I051e97f14375714d22303ad44a9f0b16aa7d6c51
1955+
1956+ .../templates/horizon/common/_quota_summary.html | 12 ++++++------
1957+ 1 file changed, 6 insertions(+), 6 deletions(-)
1958+
1959+commit c681c936cfd3ef3926025ba4530a0f342cef3cd8
1960+Author: Tihomir Trifonov <t.trifonov@gmail.com>
1961+Date: Tue Jul 24 16:20:40 2012 +0300
1962+
1963+ Adding ephemeral disk to instance details
1964+
1965+ If the flavor allows ephemeral disk, it is now
1966+ displayed in the instance details page.
1967+
1968+ Fixes bug 1007395
1969+
1970+ Rebased
1971+
1972+ Change-Id: I84eb0231c57ad839025cca8370b34dd9b899ca5a
1973+
1974+ .../templates/instances/_detail_overview.html | 4 ++++
1975+ 1 file changed, 4 insertions(+)
1976+
1977+commit cb8e7c1f8f0b238b88253cd6d82092cbe530ba9e
1978+Author: Gabriel Hurley <gabriel@strikeawe.com>
1979+Date: Thu Oct 4 15:43:40 2012 -0700
1980+
1981+ Splits OpenStack Dashboard bits from framework app code.
1982+
1983+ Moves everything OpenStack-specific (dashboards, apis, etc.)
1984+ into the openstack_dashboard project, achieving a much
1985+ cleaner separation between the project-specific code and
1986+ the generic Horizon framework code.
1987+
1988+ Change-Id: I7235b41d449b26c980668fc3eb4360b24508717b
1989+
1990+ .bzrignore | 12 -
1991+ bin/less/lessc | 139 -
1992+ bin/lib/less/browser.js | 380 --
1993+ bin/lib/less/colors.js | 152 -
1994+ bin/lib/less/cssmin.js | 355 --
1995+ bin/lib/less/functions.js | 228 --
1996+ bin/lib/less/index.js | 148 -
1997+ bin/lib/less/parser.js | 1334 -------
1998+ bin/lib/less/rhino.js | 62 -
1999+ bin/lib/less/tree.js | 17 -
2000+ bin/lib/less/tree/alpha.js | 17 -
2001+ bin/lib/less/tree/anonymous.js | 13 -
2002+ bin/lib/less/tree/assignment.js | 17 -
2003+ bin/lib/less/tree/call.js | 48 -
2004+ bin/lib/less/tree/color.js | 101 -
2005+ bin/lib/less/tree/comment.js | 14 -
2006+ bin/lib/less/tree/condition.js | 42 -
2007+ bin/lib/less/tree/dimension.js | 49 -
2008+ bin/lib/less/tree/directive.js | 35 -
2009+ bin/lib/less/tree/element.js | 52 -
2010+ bin/lib/less/tree/expression.js | 23 -
2011+ bin/lib/less/tree/import.js | 83 -
2012+ bin/lib/less/tree/javascript.js | 51 -
2013+ bin/lib/less/tree/keyword.js | 19 -
2014+ bin/lib/less/tree/media.js | 114 -
2015+ bin/lib/less/tree/mixin.js | 146 -
2016+ bin/lib/less/tree/operation.js | 32 -
2017+ bin/lib/less/tree/paren.js | 16 -
2018+ bin/lib/less/tree/quoted.js | 29 -
2019+ bin/lib/less/tree/rule.js | 42 -
2020+ bin/lib/less/tree/ruleset.js | 225 --
2021+ bin/lib/less/tree/selector.js | 42 -
2022+ bin/lib/less/tree/url.js | 25 -
2023+ bin/lib/less/tree/value.js | 24 -
2024+ bin/lib/less/tree/variable.js | 26 -
2025+ doc/source/ref/test.rst | 14 +-
2026+ doc/source/topics/testing.rst | 30 +-
2027+ horizon/__init__.py | 2 +-
2028+ horizon/api/__init__.py | 39 -
2029+ horizon/api/base.py | 118 -
2030+ horizon/api/glance.py | 98 -
2031+ horizon/api/keystone.py | 290 --
2032+ horizon/api/nova.py | 585 ----
2033+ horizon/api/quantum.py | 261 --
2034+ horizon/api/swift.py | 264 --
2035+ horizon/conf/panel_template/tests.py.tmpl | 2 +-
2036+ horizon/conf/panel_template/urls.py | 1 +
2037+ horizon/context_processors.py | 36 +-
2038+ horizon/dashboards/admin/dashboard.py | 37 -
2039+ horizon/dashboards/admin/flavors/forms.py | 95 -
2040+ horizon/dashboards/admin/flavors/panel.py | 32 -
2041+ horizon/dashboards/admin/flavors/tables.py | 53 -
2042+ .../admin/flavors/templates/flavors/_create.html | 25 -
2043+ .../admin/flavors/templates/flavors/_edit.html | 26 -
2044+ .../admin/flavors/templates/flavors/create.html | 11 -
2045+ .../admin/flavors/templates/flavors/edit.html | 11 -
2046+ .../admin/flavors/templates/flavors/index.html | 11 -
2047+ horizon/dashboards/admin/flavors/tests.py | 81 -
2048+ horizon/dashboards/admin/flavors/urls.py | 28 -
2049+ horizon/dashboards/admin/flavors/views.py | 81 -
2050+ horizon/dashboards/admin/images/forms.py | 25 -
2051+ horizon/dashboards/admin/images/panel.py | 32 -
2052+ horizon/dashboards/admin/images/tables.py | 45 -
2053+ .../admin/images/templates/images/_update.html | 25 -
2054+ .../admin/images/templates/images/index.html | 11 -
2055+ .../admin/images/templates/images/update.html | 12 -
2056+ horizon/dashboards/admin/images/tests.py | 97 -
2057+ horizon/dashboards/admin/images/urls.py | 30 -
2058+ horizon/dashboards/admin/images/views.py | 66 -
2059+ horizon/dashboards/admin/instances/panel.py | 33 -
2060+ horizon/dashboards/admin/instances/tables.py | 99 -
2061+ .../admin/instances/templates/instances/index.html | 11 -
2062+ horizon/dashboards/admin/instances/tests.py | 142 -
2063+ horizon/dashboards/admin/instances/urls.py | 34 -
2064+ horizon/dashboards/admin/instances/views.py | 81 -
2065+ horizon/dashboards/admin/models.py | 23 -
2066+ horizon/dashboards/admin/networks/forms.py | 89 -
2067+ horizon/dashboards/admin/networks/panel.py | 28 -
2068+ horizon/dashboards/admin/networks/ports/forms.py | 92 -
2069+ horizon/dashboards/admin/networks/ports/tables.py | 85 -
2070+ horizon/dashboards/admin/networks/ports/tabs.py | 46 -
2071+ horizon/dashboards/admin/networks/ports/urls.py | 24 -
2072+ horizon/dashboards/admin/networks/ports/views.py | 98 -
2073+ horizon/dashboards/admin/networks/subnets/forms.py | 52 -
2074+ .../dashboards/admin/networks/subnets/tables.py | 82 -
2075+ horizon/dashboards/admin/networks/subnets/urls.py | 24 -
2076+ horizon/dashboards/admin/networks/subnets/views.py | 101 -
2077+ horizon/dashboards/admin/networks/tables.py | 82 -
2078+ .../admin/networks/templates/networks/_create.html | 25 -
2079+ .../admin/networks/templates/networks/_update.html | 24 -
2080+ .../admin/networks/templates/networks/create.html | 11 -
2081+ .../admin/networks/templates/networks/index.html | 21 -
2082+ .../networks/templates/networks/ports/_create.html | 25 -
2083+ .../networks/templates/networks/ports/_update.html | 29 -
2084+ .../networks/templates/networks/ports/create.html | 11 -
2085+ .../networks/templates/networks/ports/update.html | 11 -
2086+ .../templates/networks/subnets/_create.html | 25 -
2087+ .../templates/networks/subnets/_update.html | 33 -
2088+ .../templates/networks/subnets/create.html | 11 -
2089+ .../networks/templates/networks/subnets/index.html | 11 -
2090+ .../templates/networks/subnets/update.html | 11 -
2091+ .../admin/networks/templates/networks/update.html | 11 -
2092+ horizon/dashboards/admin/networks/tests.py | 805 -----
2093+ horizon/dashboards/admin/networks/urls.py | 45 -
2094+ horizon/dashboards/admin/networks/views.py | 140 -
2095+ horizon/dashboards/admin/overview/panel.py | 33 -
2096+ .../admin/overview/templates/overview/usage.csv | 9 -
2097+ .../admin/overview/templates/overview/usage.html | 22 -
2098+ horizon/dashboards/admin/overview/tests.py | 95 -
2099+ horizon/dashboards/admin/overview/urls.py | 28 -
2100+ horizon/dashboards/admin/overview/views.py | 48 -
2101+ horizon/dashboards/admin/projects/forms.py | 33 -
2102+ horizon/dashboards/admin/projects/panel.py | 32 -
2103+ horizon/dashboards/admin/projects/tables.py | 157 -
2104+ .../projects/templates/projects/_add_user.html | 25 -
2105+ .../admin/projects/templates/projects/_create.html | 25 -
2106+ .../projects/templates/projects/_create_user.html | 25 -
2107+ .../admin/projects/templates/projects/_quotas.html | 24 -
2108+ .../admin/projects/templates/projects/_update.html | 25 -
2109+ .../templates/projects/_update_members.html | 39 -
2110+ .../projects/templates/projects/add_user.html | 11 -
2111+ .../admin/projects/templates/projects/create.html | 12 -
2112+ .../projects/templates/projects/create_user.html | 12 -
2113+ .../admin/projects/templates/projects/index.html | 13 -
2114+ .../admin/projects/templates/projects/quotas.html | 11 -
2115+ .../admin/projects/templates/projects/update.html | 12 -
2116+ .../admin/projects/templates/projects/usage.csv | 11 -
2117+ .../admin/projects/templates/projects/usage.html | 14 -
2118+ .../admin/projects/templates/projects/users.html | 18 -
2119+ horizon/dashboards/admin/projects/tests.py | 842 -----
2120+ horizon/dashboards/admin/projects/urls.py | 37 -
2121+ horizon/dashboards/admin/projects/views.py | 203 --
2122+ horizon/dashboards/admin/projects/workflows.py | 364 --
2123+ horizon/dashboards/admin/quotas/panel.py | 32 -
2124+ horizon/dashboards/admin/quotas/tables.py | 38 -
2125+ .../admin/quotas/templates/quotas/index.html | 13 -
2126+ horizon/dashboards/admin/quotas/urls.py | 27 -
2127+ horizon/dashboards/admin/quotas/views.py | 46 -
2128+ horizon/dashboards/admin/services/panel.py | 32 -
2129+ horizon/dashboards/admin/services/tables.py | 50 -
2130+ .../admin/services/templates/services/index.html | 14 -
2131+ horizon/dashboards/admin/services/tests.py | 36 -
2132+ horizon/dashboards/admin/services/urls.py | 27 -
2133+ horizon/dashboards/admin/services/views.py | 40 -
2134+ horizon/dashboards/admin/users/forms.py | 195 --
2135+ horizon/dashboards/admin/users/panel.py | 32 -
2136+ horizon/dashboards/admin/users/tables.py | 123 -
2137+ .../admin/users/templates/users/_create.html | 24 -
2138+ .../admin/users/templates/users/_update.html | 24 -
2139+ .../admin/users/templates/users/create.html | 12 -
2140+ .../admin/users/templates/users/index.html | 13 -
2141+ .../admin/users/templates/users/update.html | 12 -
2142+ horizon/dashboards/admin/users/tests.py | 356 --
2143+ horizon/dashboards/admin/users/urls.py | 28 -
2144+ horizon/dashboards/admin/users/views.py | 111 -
2145+ horizon/dashboards/admin/volumes/panel.py | 14 -
2146+ horizon/dashboards/admin/volumes/tables.py | 19 -
2147+ .../admin/volumes/templates/volumes/detail.html | 15 -
2148+ .../admin/volumes/templates/volumes/index.html | 13 -
2149+ horizon/dashboards/admin/volumes/tests.py | 39 -
2150+ horizon/dashboards/admin/volumes/urls.py | 8 -
2151+ horizon/dashboards/admin/volumes/views.py | 39 -
2152+ .../access_and_security/floating_ips/forms.py | 46 -
2153+ .../access_and_security/floating_ips/tables.py | 129 -
2154+ .../access_and_security/floating_ips/tests.py | 176 -
2155+ .../access_and_security/floating_ips/urls.py | 29 -
2156+ .../access_and_security/floating_ips/views.py | 68 -
2157+ .../access_and_security/floating_ips/workflows.py | 114 -
2158+ .../project/access_and_security/keypairs/forms.py | 65 -
2159+ .../project/access_and_security/keypairs/tables.py | 61 -
2160+ .../project/access_and_security/keypairs/tests.py | 162 -
2161+ .../project/access_and_security/keypairs/urls.py | 33 -
2162+ .../project/access_and_security/keypairs/views.py | 81 -
2163+ .../project/access_and_security/panel.py | 29 -
2164+ .../access_and_security/security_groups/forms.py | 173 -
2165+ .../access_and_security/security_groups/tables.py | 108 -
2166+ .../access_and_security/security_groups/tests.py | 374 --
2167+ .../access_and_security/security_groups/urls.py | 30 -
2168+ .../access_and_security/security_groups/views.py | 120 -
2169+ .../floating_ips/_allocate.html | 33 -
2170+ .../access_and_security/floating_ips/allocate.html | 7 -
2171+ .../floating_ips/associate.html | 11 -
2172+ .../templates/access_and_security/index.html | 21 -
2173+ .../access_and_security/keypairs/_create.html | 25 -
2174+ .../access_and_security/keypairs/_import.html | 25 -
2175+ .../access_and_security/keypairs/create.html | 12 -
2176+ .../access_and_security/keypairs/download.html | 21 -
2177+ .../access_and_security/keypairs/import.html | 12 -
2178+ .../security_groups/_create.html | 25 -
2179+ .../security_groups/_edit_rules.html | 21 -
2180+ .../security_groups/create.html | 11 -
2181+ .../security_groups/edit_rules.html | 11 -
2182+ .../project/access_and_security/tests.py | 86 -
2183+ .../dashboards/project/access_and_security/urls.py | 34 -
2184+ .../project/access_and_security/views.py | 83 -
2185+ horizon/dashboards/project/containers/browsers.py | 37 -
2186+ horizon/dashboards/project/containers/forms.py | 164 -
2187+ horizon/dashboards/project/containers/panel.py | 32 -
2188+ horizon/dashboards/project/containers/tables.py | 269 --
2189+ .../containers/templates/containers/_copy.html | 24 -
2190+ .../containers/templates/containers/_create.html | 24 -
2191+ .../containers/templates/containers/_upload.html | 25 -
2192+ .../containers/templates/containers/copy.html | 13 -
2193+ .../containers/templates/containers/create.html | 11 -
2194+ .../containers/templates/containers/index.html | 13 -
2195+ .../containers/templates/containers/upload.html | 15 -
2196+ horizon/dashboards/project/containers/tests.py | 237 --
2197+ horizon/dashboards/project/containers/urls.py | 48 -
2198+ horizon/dashboards/project/containers/views.py | 217 --
2199+ horizon/dashboards/project/dashboard.py | 47 -
2200+ .../project/images_and_snapshots/images/forms.py | 164 -
2201+ .../project/images_and_snapshots/images/panel.py | 30 -
2202+ .../project/images_and_snapshots/images/tables.py | 134 -
2203+ .../project/images_and_snapshots/images/tabs.py | 44 -
2204+ .../project/images_and_snapshots/images/tests.py | 96 -
2205+ .../project/images_and_snapshots/images/urls.py | 32 -
2206+ .../project/images_and_snapshots/images/views.py | 83 -
2207+ .../project/images_and_snapshots/panel.py | 29 -
2208+ .../images_and_snapshots/snapshots/forms.py | 56 -
2209+ .../images_and_snapshots/snapshots/panel.py | 30 -
2210+ .../images_and_snapshots/snapshots/tables.py | 59 -
2211+ .../images_and_snapshots/snapshots/tests.py | 97 -
2212+ .../project/images_and_snapshots/snapshots/urls.py | 30 -
2213+ .../images_and_snapshots/snapshots/views.py | 62 -
2214+ .../images_and_snapshots/images/_create.html | 33 -
2215+ .../images/_detail_overview.html | 68 -
2216+ .../images_and_snapshots/images/_update.html | 24 -
2217+ .../images_and_snapshots/images/create.html | 11 -
2218+ .../images_and_snapshots/images/detail.html | 16 -
2219+ .../images_and_snapshots/images/update.html | 11 -
2220+ .../templates/images_and_snapshots/index.html | 19 -
2221+ .../images_and_snapshots/snapshots/_create.html | 25 -
2222+ .../snapshots/_detail_overview.html | 42 -
2223+ .../images_and_snapshots/snapshots/create.html | 11 -
2224+ .../images_and_snapshots/snapshots/detail.html | 15 -
2225+ .../project/images_and_snapshots/tests.py | 169 -
2226+ .../project/images_and_snapshots/urls.py | 35 -
2227+ .../project/images_and_snapshots/views.py | 88 -
2228+ .../images_and_snapshots/volume_snapshots/panel.py | 26 -
2229+ .../volume_snapshots/tables.py | 88 -
2230+ .../images_and_snapshots/volume_snapshots/tabs.py | 48 -
2231+ .../images_and_snapshots/volume_snapshots/tests.py | 61 -
2232+ horizon/dashboards/project/instances/forms.py | 50 -
2233+ horizon/dashboards/project/instances/panel.py | 28 -
2234+ horizon/dashboards/project/instances/tables.py | 319 --
2235+ horizon/dashboards/project/instances/tabs.py | 77 -
2236+ .../instances/templates/instances/_detail_log.html | 17 -
2237+ .../templates/instances/_detail_overview.html | 98 -
2238+ .../instances/templates/instances/_detail_vnc.html | 10 -
2239+ .../templates/instances/_instance_ips.html | 10 -
2240+ .../instances/_launch_customize_help.html | 3 -
2241+ .../templates/instances/_launch_details_help.html | 53 -
2242+ .../templates/instances/_launch_volumes_help.html | 3 -
2243+ .../instances/templates/instances/_update.html | 24 -
2244+ .../instances/templates/instances/detail.html | 15 -
2245+ .../instances/templates/instances/index.html | 11 -
2246+ .../instances/templates/instances/launch.html | 11 -
2247+ .../instances/templates/instances/update.html | 11 -
2248+ horizon/dashboards/project/instances/tests.py | 980 ------
2249+ horizon/dashboards/project/instances/urls.py | 36 -
2250+ horizon/dashboards/project/instances/views.py | 186 -
2251+ horizon/dashboards/project/instances/workflows.py | 510 ---
2252+ horizon/dashboards/project/models.py | 23 -
2253+ horizon/dashboards/project/networks/forms.py | 55 -
2254+ horizon/dashboards/project/networks/panel.py | 28 -
2255+ .../dashboards/project/networks/ports/tables.py | 53 -
2256+ horizon/dashboards/project/networks/ports/tabs.py | 46 -
2257+ horizon/dashboards/project/networks/ports/urls.py | 24 -
2258+ horizon/dashboards/project/networks/ports/views.py | 28 -
2259+ .../dashboards/project/networks/subnets/forms.py | 138 -
2260+ .../dashboards/project/networks/subnets/tables.py | 105 -
2261+ .../dashboards/project/networks/subnets/tabs.py | 48 -
2262+ .../dashboards/project/networks/subnets/urls.py | 24 -
2263+ .../dashboards/project/networks/subnets/views.py | 109 -
2264+ horizon/dashboards/project/networks/tables.py | 107 -
2265+ .../networks/templates/networks/_create.html | 24 -
2266+ .../templates/networks/_detail_overview.html | 20 -
2267+ .../networks/templates/networks/_network_ips.html | 10 -
2268+ .../networks/templates/networks/_update.html | 24 -
2269+ .../networks/templates/networks/create.html | 11 -
2270+ .../networks/templates/networks/detail.html | 18 -
2271+ .../project/networks/templates/networks/index.html | 11 -
2272+ .../templates/networks/ports/_detail_overview.html | 41 -
2273+ .../templates/networks/ports/_port_ips.html | 7 -
2274+ .../networks/templates/networks/ports/detail.html | 15 -
2275+ .../templates/networks/subnets/_create.html | 25 -
2276+ .../networks/subnets/_detail_overview.html | 29 -
2277+ .../templates/networks/subnets/_update.html | 33 -
2278+ .../templates/networks/subnets/create.html | 11 -
2279+ .../templates/networks/subnets/detail.html | 15 -
2280+ .../networks/templates/networks/subnets/index.html | 11 -
2281+ .../templates/networks/subnets/update.html | 11 -
2282+ .../networks/templates/networks/update.html | 11 -
2283+ horizon/dashboards/project/networks/tests.py | 782 -----
2284+ horizon/dashboards/project/networks/urls.py | 37 -
2285+ horizon/dashboards/project/networks/views.py | 143 -
2286+ horizon/dashboards/project/networks/workflows.py | 161 -
2287+ horizon/dashboards/project/overview/panel.py | 32 -
2288+ .../project/overview/templates/overview/usage.csv | 11 -
2289+ .../project/overview/templates/overview/usage.html | 13 -
2290+ horizon/dashboards/project/overview/tests.py | 143 -
2291+ horizon/dashboards/project/overview/urls.py | 29 -
2292+ horizon/dashboards/project/overview/views.py | 37 -
2293+ horizon/dashboards/project/volumes/forms.py | 219 --
2294+ horizon/dashboards/project/volumes/panel.py | 29 -
2295+ horizon/dashboards/project/volumes/tables.py | 226 --
2296+ horizon/dashboards/project/volumes/tabs.py | 48 -
2297+ .../project/volumes/templates/volumes/_attach.html | 25 -
2298+ .../project/volumes/templates/volumes/_create.html | 57 -
2299+ .../templates/volumes/_create_snapshot.html | 25 -
2300+ .../templates/volumes/_detail_overview.html | 49 -
2301+ .../project/volumes/templates/volumes/attach.html | 11 -
2302+ .../project/volumes/templates/volumes/create.html | 11 -
2303+ .../volumes/templates/volumes/create_snapshot.html | 11 -
2304+ .../project/volumes/templates/volumes/detail.html | 15 -
2305+ .../project/volumes/templates/volumes/index.html | 11 -
2306+ horizon/dashboards/project/volumes/tests.py | 328 --
2307+ horizon/dashboards/project/volumes/urls.py | 35 -
2308+ horizon/dashboards/project/volumes/views.py | 184 -
2309+ horizon/dashboards/settings/dashboard.py | 31 -
2310+ horizon/dashboards/settings/ec2/forms.py | 109 -
2311+ horizon/dashboards/settings/ec2/panel.py | 28 -
2312+ .../settings/ec2/templates/ec2/download_form.html | 25 -
2313+ .../settings/ec2/templates/ec2/ec2rc.sh.template | 15 -
2314+ .../settings/ec2/templates/ec2/index.html | 11 -
2315+ horizon/dashboards/settings/ec2/tests.py | 69 -
2316+ horizon/dashboards/settings/ec2/urls.py | 23 -
2317+ horizon/dashboards/settings/ec2/views.py | 31 -
2318+ horizon/dashboards/settings/models.py | 23 -
2319+ horizon/dashboards/settings/project/forms.py | 71 -
2320+ horizon/dashboards/settings/project/panel.py | 28 -
2321+ horizon/dashboards/settings/project/tables.py | 33 -
2322+ .../project/templates/project/_openrc.html | 32 -
2323+ .../project/templates/project/openrc.sh.template | 24 -
2324+ .../project/templates/project/settings.html | 11 -
2325+ horizon/dashboards/settings/project/urls.py | 23 -
2326+ horizon/dashboards/settings/project/views.py | 44 -
2327+ horizon/dashboards/settings/user/forms.py | 59 -
2328+ horizon/dashboards/settings/user/panel.py | 28 -
2329+ .../settings/user/templates/user/_settings.html | 26 -
2330+ .../settings/user/templates/user/settings.html | 11 -
2331+ horizon/dashboards/settings/user/urls.py | 23 -
2332+ horizon/dashboards/settings/user/views.py | 31 -
2333+ horizon/decorators.py | 4 +-
2334+ horizon/forms/__init__.py | 3 +-
2335+ horizon/forms/views.py | 4 +-
2336+ horizon/locale/bg_BG/LC_MESSAGES/django.mo | Bin 25231 -> 2950 bytes
2337+ horizon/locale/bg_BG/LC_MESSAGES/django.po | 3454 +-----------------
2338+ horizon/locale/bg_BG/LC_MESSAGES/djangojs.mo | Bin 378 -> 378 bytes
2339+ horizon/locale/bg_BG/LC_MESSAGES/djangojs.po | 2 +-
2340+ horizon/locale/en/LC_MESSAGES/django.mo | Bin 42492 -> 4746 bytes
2341+ horizon/locale/en/LC_MESSAGES/django.po | 3516 +------------------
2342+ horizon/locale/en/LC_MESSAGES/djangojs.mo | Bin 378 -> 378 bytes
2343+ horizon/locale/en/LC_MESSAGES/djangojs.po | 2 +-
2344+ horizon/locale/es/LC_MESSAGES/django.mo | Bin 60209 -> 5039 bytes
2345+ horizon/locale/es/LC_MESSAGES/django.po | 3568 +------------------
2346+ horizon/locale/es/LC_MESSAGES/djangojs.mo | Bin 420 -> 420 bytes
2347+ horizon/locale/es/LC_MESSAGES/djangojs.po | 2 +-
2348+ horizon/locale/fr/LC_MESSAGES/django.mo | Bin 414 -> 414 bytes
2349+ horizon/locale/fr/LC_MESSAGES/django.po | 3421 +-----------------
2350+ horizon/locale/fr/LC_MESSAGES/djangojs.mo | Bin 419 -> 419 bytes
2351+ horizon/locale/fr/LC_MESSAGES/djangojs.po | 2 +-
2352+ horizon/locale/it/LC_MESSAGES/django.mo | Bin 28544 -> 2838 bytes
2353+ horizon/locale/it/LC_MESSAGES/django.po | 3477 +-----------------
2354+ horizon/locale/it/LC_MESSAGES/djangojs.mo | Bin 420 -> 420 bytes
2355+ horizon/locale/it/LC_MESSAGES/djangojs.po | 2 +-
2356+ horizon/locale/ja/LC_MESSAGES/django.mo | Bin 69010 -> 6233 bytes
2357+ horizon/locale/ja/LC_MESSAGES/django.po | 3555 +------------------
2358+ horizon/locale/ja/LC_MESSAGES/djangojs.mo | Bin 413 -> 413 bytes
2359+ horizon/locale/ja/LC_MESSAGES/djangojs.po | 2 +-
2360+ horizon/locale/ko_KR/LC_MESSAGES/django.mo | Bin 1765 -> 731 bytes
2361+ horizon/locale/ko_KR/LC_MESSAGES/django.po | 3424 +-----------------
2362+ horizon/locale/ko_KR/LC_MESSAGES/djangojs.mo | Bin 378 -> 378 bytes
2363+ horizon/locale/ko_KR/LC_MESSAGES/djangojs.po | 2 +-
2364+ horizon/locale/nl_NL/LC_MESSAGES/django.mo | Bin 10792 -> 2887 bytes
2365+ horizon/locale/nl_NL/LC_MESSAGES/django.po | 3430 +-----------------
2366+ horizon/locale/nl_NL/LC_MESSAGES/djangojs.mo | Bin 378 -> 378 bytes
2367+ horizon/locale/nl_NL/LC_MESSAGES/djangojs.po | 2 +-
2368+ horizon/locale/pl/LC_MESSAGES/django.mo | Bin 904 -> 572 bytes
2369+ horizon/locale/pl/LC_MESSAGES/django.po | 3673 +-------------------
2370+ horizon/locale/pl/LC_MESSAGES/djangojs.mo | Bin 478 -> 478 bytes
2371+ horizon/locale/pl/LC_MESSAGES/djangojs.po | 2 +-
2372+ horizon/locale/pt/LC_MESSAGES/django.mo | Bin 33028 -> 4355 bytes
2373+ horizon/locale/pt/LC_MESSAGES/django.po | 3490 +------------------
2374+ horizon/locale/pt/LC_MESSAGES/djangojs.mo | Bin 420 -> 420 bytes
2375+ horizon/locale/pt/LC_MESSAGES/djangojs.po | 2 +-
2376+ horizon/locale/pt_BR/LC_MESSAGES/django.mo | Bin 39484 -> 4507 bytes
2377+ horizon/locale/pt_BR/LC_MESSAGES/django.po | 3480 +------------------
2378+ horizon/locale/pt_BR/LC_MESSAGES/djangojs.mo | Bin 419 -> 419 bytes
2379+ horizon/locale/pt_BR/LC_MESSAGES/djangojs.po | 2 +-
2380+ horizon/locale/ru/LC_MESSAGES/django.mo | Bin 585 -> 585 bytes
2381+ horizon/locale/ru/LC_MESSAGES/django.po | 3421 +-----------------
2382+ horizon/locale/ru/LC_MESSAGES/djangojs.mo | Bin 494 -> 494 bytes
2383+ horizon/locale/ru/LC_MESSAGES/djangojs.po | 2 +-
2384+ horizon/locale/zh_CN/LC_MESSAGES/django.mo | Bin 13474 -> 875 bytes
2385+ horizon/locale/zh_CN/LC_MESSAGES/django.po | 3434 +-----------------
2386+ horizon/locale/zh_CN/LC_MESSAGES/djangojs.mo | Bin 413 -> 413 bytes
2387+ horizon/locale/zh_CN/LC_MESSAGES/djangojs.po | 2 +-
2388+ horizon/locale/zh_TW/LC_MESSAGES/django.mo | Bin 50037 -> 5020 bytes
2389+ horizon/locale/zh_TW/LC_MESSAGES/django.po | 3469 +-----------------
2390+ horizon/locale/zh_TW/LC_MESSAGES/djangojs.mo | Bin 413 -> 413 bytes
2391+ horizon/locale/zh_TW/LC_MESSAGES/djangojs.po | 2 +-
2392+ horizon/management/commands/startpanel.py | 3 +-
2393+ horizon/middleware.py | 4 +-
2394+ horizon/openstack/common/jsonutils.py | 144 -
2395+ horizon/openstack/common/setup.py | 200 --
2396+ horizon/site_urls.py | 1 +
2397+ horizon/templates/_header.html | 2 -
2398+ horizon/templates/_stylesheets.html | 1 +
2399+ horizon/test.py | 363 --
2400+ horizon/test/helpers.py | 170 +
2401+ horizon/test/settings.py | 177 +
2402+ horizon/test/templates/_tab.html | 1 +
2403+ horizon/test/templates/tab_group.html | 1 +
2404+ horizon/test/templates/workflow.html | 1 +
2405+ horizon/test/test_dashboards/cats/dashboard.py | 25 +
2406+ .../test/test_dashboards/cats/kittens/models.py | 3 +
2407+ horizon/test/test_dashboards/cats/kittens/panel.py | 14 +
2408+ .../cats/kittens/templates/kittens/index.html | 12 +
2409+ horizon/test/test_dashboards/cats/kittens/urls.py | 7 +
2410+ horizon/test/test_dashboards/cats/kittens/views.py | 10 +
2411+ horizon/test/test_dashboards/cats/models.py | 3 +
2412+ .../test_dashboards/cats/static/cats/css/cats.css | 1 +
2413+ .../test_dashboards/cats/static/cats/js/cats.js | 1 +
2414+ .../test_dashboards/cats/templates/cats/base.html | 11 +
2415+ horizon/test/test_dashboards/cats/tigers/models.py | 3 +
2416+ horizon/test/test_dashboards/cats/tigers/panel.py | 14 +
2417+ .../cats/tigers/templates/tigers/index.html | 12 +
2418+ horizon/test/test_dashboards/cats/tigers/urls.py | 7 +
2419+ horizon/test/test_dashboards/cats/tigers/views.py | 10 +
2420+ horizon/test/test_dashboards/dogs/dashboard.py | 13 +
2421+ horizon/test/test_dashboards/dogs/models.py | 3 +
2422+ .../test/test_dashboards/dogs/puppies/models.py | 3 +
2423+ horizon/test/test_dashboards/dogs/puppies/panel.py | 13 +
2424+ .../dogs/puppies/templates/puppies/index.html | 12 +
2425+ horizon/test/test_dashboards/dogs/puppies/urls.py | 7 +
2426+ horizon/test/test_dashboards/dogs/puppies/views.py | 10 +
2427+ .../test_dashboards/dogs/static/dogs/css/dogs.css | 1 +
2428+ .../test_dashboards/dogs/static/dogs/js/dogs.js | 1 +
2429+ .../test_dashboards/dogs/templates/dogs/base.html | 11 +
2430+ horizon/test/tests/base.py | 289 ++
2431+ horizon/test/tests/messages.py | 41 +
2432+ horizon/test/tests/selenium.py | 31 +
2433+ horizon/test/tests/tables.py | 675 ++++
2434+ horizon/test/tests/tabs.py | 306 ++
2435+ horizon/test/tests/templatetags.py | 49 +
2436+ horizon/test/tests/utils.py | 196 ++
2437+ horizon/test/tests/workflows.py | 266 ++
2438+ horizon/test/urls.py | 40 +
2439+ horizon/tests/__init__.py | 21 -
2440+ horizon/tests/api_tests/base_tests.py | 148 -
2441+ horizon/tests/api_tests/glance_tests.py | 67 -
2442+ horizon/tests/api_tests/keystone_tests.py | 98 -
2443+ horizon/tests/api_tests/nova_tests.py | 206 --
2444+ horizon/tests/api_tests/quantum_tests.py | 205 --
2445+ horizon/tests/api_tests/swift_tests.py | 120 -
2446+ horizon/tests/base_tests.py | 341 --
2447+ horizon/tests/message_tests.py | 40 -
2448+ horizon/tests/selenium_tests.py | 38 -
2449+ horizon/tests/table_tests.py | 675 ----
2450+ horizon/tests/tabs_tests.py | 306 --
2451+ horizon/tests/templates/_tab.html | 1 -
2452+ horizon/tests/templates/tab_group.html | 1 -
2453+ horizon/tests/templates/workflow.html | 1 -
2454+ horizon/tests/templatetag_tests.py | 50 -
2455+ horizon/tests/test_dashboards/cats/dashboard.py | 25 -
2456+ .../tests/test_dashboards/cats/kittens/models.py | 3 -
2457+ .../tests/test_dashboards/cats/kittens/panel.py | 14 -
2458+ .../cats/kittens/templates/kittens/index.html | 12 -
2459+ .../tests/test_dashboards/cats/kittens/tests.py | 7 -
2460+ horizon/tests/test_dashboards/cats/kittens/urls.py | 7 -
2461+ .../tests/test_dashboards/cats/kittens/views.py | 10 -
2462+ horizon/tests/test_dashboards/cats/models.py | 3 -
2463+ .../test_dashboards/cats/static/cats/css/cats.css | 1 -
2464+ .../test_dashboards/cats/static/cats/js/cats.js | 1 -
2465+ .../test_dashboards/cats/templates/cats/base.html | 11 -
2466+ .../tests/test_dashboards/cats/tigers/models.py | 3 -
2467+ horizon/tests/test_dashboards/cats/tigers/panel.py | 14 -
2468+ .../cats/tigers/templates/tigers/index.html | 12 -
2469+ horizon/tests/test_dashboards/cats/tigers/tests.py | 7 -
2470+ horizon/tests/test_dashboards/cats/tigers/urls.py | 7 -
2471+ horizon/tests/test_dashboards/cats/tigers/views.py | 10 -
2472+ horizon/tests/test_dashboards/dogs/dashboard.py | 13 -
2473+ horizon/tests/test_dashboards/dogs/models.py | 3 -
2474+ .../tests/test_dashboards/dogs/puppies/models.py | 3 -
2475+ .../tests/test_dashboards/dogs/puppies/panel.py | 13 -
2476+ .../dogs/puppies/templates/puppies/index.html | 12 -
2477+ .../tests/test_dashboards/dogs/puppies/tests.py | 7 -
2478+ horizon/tests/test_dashboards/dogs/puppies/urls.py | 7 -
2479+ .../tests/test_dashboards/dogs/puppies/views.py | 10 -
2480+ .../test_dashboards/dogs/static/dogs/css/dogs.css | 1 -
2481+ .../test_dashboards/dogs/static/dogs/js/dogs.js | 1 -
2482+ .../test_dashboards/dogs/templates/dogs/base.html | 11 -
2483+ horizon/tests/test_data/exceptions.py | 67 -
2484+ horizon/tests/test_data/glance_data.py | 89 -
2485+ horizon/tests/test_data/keystone_data.py | 160 -
2486+ horizon/tests/test_data/nova_data.py | 343 --
2487+ horizon/tests/test_data/quantum_data.py | 111 -
2488+ horizon/tests/test_data/swift_data.py | 39 -
2489+ horizon/tests/test_data/utils.py | 126 -
2490+ horizon/tests/testsettings.py | 197 --
2491+ horizon/tests/testurls.py | 41 -
2492+ horizon/tests/utils_tests.py | 195 --
2493+ horizon/tests/workflows_tests.py | 261 --
2494+ horizon/usage/__init__.py | 19 -
2495+ horizon/usage/base.py | 155 -
2496+ horizon/usage/tables.py | 71 -
2497+ horizon/usage/views.py | 54 -
2498+ horizon/views.py | 53 +
2499+ horizon/views/__init__.py | 17 -
2500+ horizon/views/base.py | 72 -
2501+ horizon/workflows/views.py | 4 +-
2502+ openstack-common.conf | 4 +-
2503+ openstack_dashboard/api/__init__.py | 39 +
2504+ openstack_dashboard/api/base.py | 118 +
2505+ openstack_dashboard/api/glance.py | 98 +
2506+ openstack_dashboard/api/keystone.py | 291 ++
2507+ openstack_dashboard/api/nova.py | 587 ++++
2508+ openstack_dashboard/api/quantum.py | 261 ++
2509+ openstack_dashboard/api/swift.py | 265 ++
2510+ openstack_dashboard/context_processors.py | 63 +
2511+ openstack_dashboard/dashboards/admin/dashboard.py | 37 +
2512+ .../dashboards/admin/flavors/forms.py | 96 +
2513+ .../dashboards/admin/flavors/panel.py | 33 +
2514+ .../dashboards/admin/flavors/tables.py | 54 +
2515+ .../admin/flavors/templates/flavors/_create.html | 25 +
2516+ .../admin/flavors/templates/flavors/_edit.html | 26 +
2517+ .../admin/flavors/templates/flavors/create.html | 11 +
2518+ .../admin/flavors/templates/flavors/edit.html | 11 +
2519+ .../admin/flavors/templates/flavors/index.html | 11 +
2520+ .../dashboards/admin/flavors/tests.py | 81 +
2521+ .../dashboards/admin/flavors/urls.py | 29 +
2522+ .../dashboards/admin/flavors/views.py | 82 +
2523+ .../dashboards/admin/images/forms.py | 26 +
2524+ .../dashboards/admin/images/panel.py | 33 +
2525+ .../dashboards/admin/images/tables.py | 46 +
2526+ .../admin/images/templates/images/_update.html | 25 +
2527+ .../admin/images/templates/images/index.html | 11 +
2528+ .../admin/images/templates/images/update.html | 12 +
2529+ .../dashboards/admin/images/tests.py | 97 +
2530+ .../dashboards/admin/images/urls.py | 30 +
2531+ .../dashboards/admin/images/views.py | 68 +
2532+ .../dashboards/admin/instances/panel.py | 34 +
2533+ .../dashboards/admin/instances/tables.py | 100 +
2534+ .../admin/instances/templates/instances/index.html | 11 +
2535+ .../dashboards/admin/instances/tests.py | 140 +
2536+ .../dashboards/admin/instances/urls.py | 34 +
2537+ .../dashboards/admin/instances/views.py | 84 +
2538+ openstack_dashboard/dashboards/admin/models.py | 23 +
2539+ .../dashboards/admin/networks/forms.py | 90 +
2540+ .../dashboards/admin/networks/panel.py | 29 +
2541+ .../dashboards/admin/networks/ports/forms.py | 93 +
2542+ .../dashboards/admin/networks/ports/tables.py | 85 +
2543+ .../dashboards/admin/networks/ports/tabs.py | 49 +
2544+ .../dashboards/admin/networks/ports/urls.py | 28 +
2545+ .../dashboards/admin/networks/ports/views.py | 99 +
2546+ .../dashboards/admin/networks/subnets/forms.py | 53 +
2547+ .../dashboards/admin/networks/subnets/tables.py | 83 +
2548+ .../dashboards/admin/networks/subnets/urls.py | 29 +
2549+ .../dashboards/admin/networks/subnets/views.py | 103 +
2550+ .../dashboards/admin/networks/tables.py | 82 +
2551+ .../admin/networks/templates/networks/_create.html | 25 +
2552+ .../admin/networks/templates/networks/_update.html | 24 +
2553+ .../admin/networks/templates/networks/create.html | 11 +
2554+ .../admin/networks/templates/networks/index.html | 21 +
2555+ .../networks/templates/networks/ports/_create.html | 25 +
2556+ .../networks/templates/networks/ports/_update.html | 29 +
2557+ .../networks/templates/networks/ports/create.html | 11 +
2558+ .../networks/templates/networks/ports/update.html | 11 +
2559+ .../templates/networks/subnets/_create.html | 25 +
2560+ .../templates/networks/subnets/_update.html | 33 +
2561+ .../templates/networks/subnets/create.html | 11 +
2562+ .../networks/templates/networks/subnets/index.html | 11 +
2563+ .../templates/networks/subnets/update.html | 11 +
2564+ .../admin/networks/templates/networks/update.html | 11 +
2565+ .../dashboards/admin/networks/tests.py | 805 +++++
2566+ .../dashboards/admin/networks/urls.py | 47 +
2567+ .../dashboards/admin/networks/views.py | 140 +
2568+ .../dashboards/admin/overview/panel.py | 34 +
2569+ .../admin/overview/templates/overview/usage.csv | 9 +
2570+ .../admin/overview/templates/overview/usage.html | 22 +
2571+ .../dashboards/admin/overview/tests.py | 97 +
2572+ .../dashboards/admin/overview/urls.py | 29 +
2573+ .../dashboards/admin/overview/views.py | 48 +
2574+ .../dashboards/admin/projects/forms.py | 33 +
2575+ .../dashboards/admin/projects/panel.py | 33 +
2576+ .../dashboards/admin/projects/tables.py | 157 +
2577+ .../projects/templates/projects/_add_user.html | 25 +
2578+ .../admin/projects/templates/projects/_create.html | 25 +
2579+ .../projects/templates/projects/_create_user.html | 25 +
2580+ .../admin/projects/templates/projects/_quotas.html | 24 +
2581+ .../admin/projects/templates/projects/_update.html | 25 +
2582+ .../templates/projects/_update_members.html | 39 +
2583+ .../projects/templates/projects/add_user.html | 11 +
2584+ .../admin/projects/templates/projects/create.html | 12 +
2585+ .../projects/templates/projects/create_user.html | 12 +
2586+ .../admin/projects/templates/projects/index.html | 13 +
2587+ .../admin/projects/templates/projects/quotas.html | 11 +
2588+ .../admin/projects/templates/projects/update.html | 12 +
2589+ .../admin/projects/templates/projects/usage.csv | 11 +
2590+ .../admin/projects/templates/projects/usage.html | 14 +
2591+ .../admin/projects/templates/projects/users.html | 18 +
2592+ .../dashboards/admin/projects/tests.py | 842 +++++
2593+ .../dashboards/admin/projects/urls.py | 37 +
2594+ .../dashboards/admin/projects/views.py | 203 ++
2595+ .../dashboards/admin/projects/workflows.py | 366 ++
2596+ .../dashboards/admin/quotas/panel.py | 33 +
2597+ .../dashboards/admin/quotas/tables.py | 38 +
2598+ .../admin/quotas/templates/quotas/index.html | 13 +
2599+ .../dashboards/admin/quotas/tests.py | 1 +
2600+ .../dashboards/admin/quotas/urls.py | 27 +
2601+ .../dashboards/admin/quotas/views.py | 47 +
2602+ .../dashboards/admin/services/panel.py | 33 +
2603+ .../dashboards/admin/services/tables.py | 50 +
2604+ .../admin/services/templates/services/index.html | 14 +
2605+ .../dashboards/admin/services/tests.py | 36 +
2606+ .../dashboards/admin/services/urls.py | 27 +
2607+ .../dashboards/admin/services/views.py | 41 +
2608+ .../dashboards/admin/users/forms.py | 196 ++
2609+ .../dashboards/admin/users/panel.py | 33 +
2610+ .../dashboards/admin/users/tables.py | 124 +
2611+ .../admin/users/templates/users/_create.html | 24 +
2612+ .../admin/users/templates/users/_update.html | 24 +
2613+ .../admin/users/templates/users/create.html | 12 +
2614+ .../admin/users/templates/users/index.html | 13 +
2615+ .../admin/users/templates/users/update.html | 12 +
2616+ .../dashboards/admin/users/tests.py | 357 ++
2617+ openstack_dashboard/dashboards/admin/users/urls.py | 28 +
2618+ .../dashboards/admin/users/views.py | 112 +
2619+ .../dashboards/admin/volumes/panel.py | 14 +
2620+ .../dashboards/admin/volumes/tables.py | 19 +
2621+ .../admin/volumes/templates/volumes/detail.html | 15 +
2622+ .../admin/volumes/templates/volumes/index.html | 13 +
2623+ .../dashboards/admin/volumes/tests.py | 39 +
2624+ .../dashboards/admin/volumes/urls.py | 8 +
2625+ .../dashboards/admin/volumes/views.py | 39 +
2626+ .../access_and_security/floating_ips/forms.py | 47 +
2627+ .../access_and_security/floating_ips/tables.py | 130 +
2628+ .../access_and_security/floating_ips/tests.py | 177 +
2629+ .../access_and_security/floating_ips/urls.py | 29 +
2630+ .../access_and_security/floating_ips/views.py | 69 +
2631+ .../access_and_security/floating_ips/workflows.py | 115 +
2632+ .../project/access_and_security/keypairs/forms.py | 66 +
2633+ .../project/access_and_security/keypairs/tables.py | 62 +
2634+ .../project/access_and_security/keypairs/tests.py | 163 +
2635+ .../project/access_and_security/keypairs/urls.py | 33 +
2636+ .../project/access_and_security/keypairs/views.py | 82 +
2637+ .../project/access_and_security/panel.py | 30 +
2638+ .../access_and_security/security_groups/forms.py | 174 +
2639+ .../access_and_security/security_groups/tables.py | 109 +
2640+ .../access_and_security/security_groups/tests.py | 375 ++
2641+ .../access_and_security/security_groups/urls.py | 30 +
2642+ .../access_and_security/security_groups/views.py | 121 +
2643+ .../floating_ips/_allocate.html | 33 +
2644+ .../access_and_security/floating_ips/allocate.html | 7 +
2645+ .../floating_ips/associate.html | 11 +
2646+ .../templates/access_and_security/index.html | 21 +
2647+ .../access_and_security/keypairs/_create.html | 25 +
2648+ .../access_and_security/keypairs/_import.html | 25 +
2649+ .../access_and_security/keypairs/create.html | 12 +
2650+ .../access_and_security/keypairs/download.html | 21 +
2651+ .../access_and_security/keypairs/import.html | 12 +
2652+ .../security_groups/_create.html | 25 +
2653+ .../security_groups/_edit_rules.html | 21 +
2654+ .../security_groups/create.html | 11 +
2655+ .../security_groups/edit_rules.html | 11 +
2656+ .../project/access_and_security/tests.py | 88 +
2657+ .../dashboards/project/access_and_security/urls.py | 35 +
2658+ .../project/access_and_security/views.py | 84 +
2659+ .../dashboards/project/containers/browsers.py | 33 +
2660+ .../dashboards/project/containers/forms.py | 164 +
2661+ .../dashboards/project/containers/panel.py | 33 +
2662+ .../dashboards/project/containers/tables.py | 270 ++
2663+ .../containers/templates/containers/_copy.html | 24 +
2664+ .../containers/templates/containers/_create.html | 24 +
2665+ .../containers/templates/containers/_upload.html | 25 +
2666+ .../containers/templates/containers/copy.html | 13 +
2667+ .../containers/templates/containers/create.html | 11 +
2668+ .../containers/templates/containers/index.html | 13 +
2669+ .../containers/templates/containers/upload.html | 15 +
2670+ .../dashboards/project/containers/tests.py | 238 ++
2671+ .../dashboards/project/containers/urls.py | 50 +
2672+ .../dashboards/project/containers/views.py | 218 ++
2673+ .../dashboards/project/dashboard.py | 47 +
2674+ .../project/images_and_snapshots/images/forms.py | 165 +
2675+ .../project/images_and_snapshots/images/tables.py | 135 +
2676+ .../project/images_and_snapshots/images/tabs.py | 45 +
2677+ .../project/images_and_snapshots/images/tests.py | 96 +
2678+ .../project/images_and_snapshots/images/urls.py | 34 +
2679+ .../project/images_and_snapshots/images/views.py | 84 +
2680+ .../project/images_and_snapshots/panel.py | 30 +
2681+ .../images_and_snapshots/snapshots/forms.py | 57 +
2682+ .../images_and_snapshots/snapshots/tables.py | 60 +
2683+ .../images_and_snapshots/snapshots/tests.py | 98 +
2684+ .../project/images_and_snapshots/snapshots/urls.py | 30 +
2685+ .../images_and_snapshots/snapshots/views.py | 63 +
2686+ .../images_and_snapshots/images/_create.html | 33 +
2687+ .../images/_detail_overview.html | 68 +
2688+ .../images_and_snapshots/images/_update.html | 24 +
2689+ .../images_and_snapshots/images/create.html | 11 +
2690+ .../images_and_snapshots/images/detail.html | 16 +
2691+ .../images_and_snapshots/images/update.html | 11 +
2692+ .../templates/images_and_snapshots/index.html | 19 +
2693+ .../images_and_snapshots/snapshots/_create.html | 25 +
2694+ .../snapshots/_detail_overview.html | 42 +
2695+ .../images_and_snapshots/snapshots/create.html | 11 +
2696+ .../images_and_snapshots/snapshots/detail.html | 15 +
2697+ .../project/images_and_snapshots/tests.py | 170 +
2698+ .../project/images_and_snapshots/urls.py | 35 +
2699+ .../project/images_and_snapshots/views.py | 89 +
2700+ .../volume_snapshots/tables.py | 89 +
2701+ .../images_and_snapshots/volume_snapshots/tabs.py | 49 +
2702+ .../images_and_snapshots/volume_snapshots/tests.py | 61 +
2703+ .../dashboards/project/instances/forms.py | 51 +
2704+ .../dashboards/project/instances/panel.py | 29 +
2705+ .../dashboards/project/instances/tables.py | 319 ++
2706+ .../dashboards/project/instances/tabs.py | 78 +
2707+ .../instances/templates/instances/_detail_log.html | 17 +
2708+ .../templates/instances/_detail_overview.html | 98 +
2709+ .../instances/templates/instances/_detail_vnc.html | 10 +
2710+ .../templates/instances/_instance_ips.html | 10 +
2711+ .../instances/_launch_customize_help.html | 3 +
2712+ .../templates/instances/_launch_details_help.html | 53 +
2713+ .../templates/instances/_launch_volumes_help.html | 3 +
2714+ .../instances/templates/instances/_update.html | 24 +
2715+ .../instances/templates/instances/detail.html | 15 +
2716+ .../instances/templates/instances/index.html | 11 +
2717+ .../instances/templates/instances/launch.html | 11 +
2718+ .../instances/templates/instances/update.html | 11 +
2719+ .../dashboards/project/instances/tests.py | 980 ++++++
2720+ .../dashboards/project/instances/urls.py | 37 +
2721+ .../dashboards/project/instances/views.py | 187 +
2722+ .../dashboards/project/instances/workflows.py | 511 +++
2723+ openstack_dashboard/dashboards/project/models.py | 23 +
2724+ .../dashboards/project/networks/forms.py | 56 +
2725+ .../dashboards/project/networks/panel.py | 29 +
2726+ .../dashboards/project/networks/ports/tables.py | 53 +
2727+ .../dashboards/project/networks/ports/tabs.py | 49 +
2728+ .../dashboards/project/networks/ports/urls.py | 28 +
2729+ .../dashboards/project/networks/ports/views.py | 24 +
2730+ .../dashboards/project/networks/subnets/forms.py | 139 +
2731+ .../dashboards/project/networks/subnets/tables.py | 106 +
2732+ .../dashboards/project/networks/subnets/tabs.py | 49 +
2733+ .../dashboards/project/networks/subnets/urls.py | 28 +
2734+ .../dashboards/project/networks/subnets/views.py | 111 +
2735+ .../dashboards/project/networks/tables.py | 108 +
2736+ .../networks/templates/networks/_create.html | 24 +
2737+ .../templates/networks/_detail_overview.html | 20 +
2738+ .../networks/templates/networks/_network_ips.html | 10 +
2739+ .../networks/templates/networks/_update.html | 24 +
2740+ .../networks/templates/networks/create.html | 11 +
2741+ .../networks/templates/networks/detail.html | 18 +
2742+ .../project/networks/templates/networks/index.html | 11 +
2743+ .../templates/networks/ports/_detail_overview.html | 41 +
2744+ .../templates/networks/ports/_port_ips.html | 7 +
2745+ .../networks/templates/networks/ports/detail.html | 15 +
2746+ .../templates/networks/subnets/_create.html | 25 +
2747+ .../networks/subnets/_detail_overview.html | 29 +
2748+ .../templates/networks/subnets/_update.html | 33 +
2749+ .../templates/networks/subnets/create.html | 11 +
2750+ .../templates/networks/subnets/detail.html | 15 +
2751+ .../networks/templates/networks/subnets/index.html | 11 +
2752+ .../templates/networks/subnets/update.html | 11 +
2753+ .../networks/templates/networks/update.html | 11 +
2754+ .../dashboards/project/networks/tests.py | 782 +++++
2755+ .../dashboards/project/networks/urls.py | 39 +
2756+ .../dashboards/project/networks/views.py | 143 +
2757+ .../dashboards/project/networks/workflows.py | 162 +
2758+ .../dashboards/project/overview/panel.py | 33 +
2759+ .../project/overview/templates/overview/usage.csv | 11 +
2760+ .../project/overview/templates/overview/usage.html | 13 +
2761+ .../dashboards/project/overview/tests.py | 144 +
2762+ .../dashboards/project/overview/urls.py | 30 +
2763+ .../dashboards/project/overview/views.py | 37 +
2764+ .../dashboards/project/volumes/forms.py | 219 ++
2765+ .../dashboards/project/volumes/panel.py | 30 +
2766+ .../dashboards/project/volumes/tables.py | 227 ++
2767+ .../dashboards/project/volumes/tabs.py | 49 +
2768+ .../project/volumes/templates/volumes/_attach.html | 25 +
2769+ .../project/volumes/templates/volumes/_create.html | 57 +
2770+ .../templates/volumes/_create_snapshot.html | 25 +
2771+ .../templates/volumes/_detail_overview.html | 49 +
2772+ .../project/volumes/templates/volumes/attach.html | 11 +
2773+ .../project/volumes/templates/volumes/create.html | 11 +
2774+ .../volumes/templates/volumes/create_snapshot.html | 11 +
2775+ .../project/volumes/templates/volumes/detail.html | 15 +
2776+ .../project/volumes/templates/volumes/index.html | 11 +
2777+ .../dashboards/project/volumes/tests.py | 329 ++
2778+ .../dashboards/project/volumes/urls.py | 35 +
2779+ .../dashboards/project/volumes/views.py | 184 +
2780+ .../dashboards/settings/dashboard.py | 31 +
2781+ .../dashboards/settings/ec2/forms.py | 110 +
2782+ .../dashboards/settings/ec2/panel.py | 29 +
2783+ .../settings/ec2/templates/ec2/download_form.html | 25 +
2784+ .../settings/ec2/templates/ec2/ec2rc.sh.template | 15 +
2785+ .../settings/ec2/templates/ec2/index.html | 11 +
2786+ .../dashboards/settings/ec2/tests.py | 70 +
2787+ .../dashboards/settings/ec2/urls.py | 23 +
2788+ .../dashboards/settings/ec2/views.py | 32 +
2789+ openstack_dashboard/dashboards/settings/models.py | 23 +
2790+ .../dashboards/settings/project/forms.py | 72 +
2791+ .../dashboards/settings/project/panel.py | 29 +
2792+ .../dashboards/settings/project/tables.py | 33 +
2793+ .../project/templates/project/_openrc.html | 32 +
2794+ .../project/templates/project/openrc.sh.template | 24 +
2795+ .../project/templates/project/settings.html | 11 +
2796+ .../dashboards/settings/project/urls.py | 23 +
2797+ .../dashboards/settings/project/views.py | 44 +
2798+ .../dashboards/settings/user/forms.py | 59 +
2799+ .../dashboards/settings/user/panel.py | 29 +
2800+ .../settings/user/templates/user/_settings.html | 26 +
2801+ .../settings/user/templates/user/settings.html | 11 +
2802+ .../dashboards/settings/user/urls.py | 23 +
2803+ .../dashboards/settings/user/views.py | 31 +
2804+ .../locale/bg_BG/LC_MESSAGES/django.mo | Bin 1821 -> 24445 bytes
2805+ .../locale/bg_BG/LC_MESSAGES/django.po | 3292 +++++++++++++++++-
2806+ .../locale/cs/LC_MESSAGES/django.mo | Bin 1588 -> 1588 bytes
2807+ .../locale/cs/LC_MESSAGES/django.po | 3284 ++++++++++++++++-
2808+ .../locale/en/LC_MESSAGES/django.mo | Bin 1566 -> 36006 bytes
2809+ .../locale/en/LC_MESSAGES/django.po | 3330 +++++++++++++++++-
2810+ .../locale/es/LC_MESSAGES/django.mo | Bin 1564 -> 53340 bytes
2811+ .../locale/es/LC_MESSAGES/django.po | 3373 +++++++++++++++++-
2812+ .../locale/fr/LC_MESSAGES/django.mo | Bin 1577 -> 1520 bytes
2813+ .../locale/fr/LC_MESSAGES/django.po | 3269 ++++++++++++++++-
2814+ .../locale/it/LC_MESSAGES/django.mo | Bin 0 -> 26275 bytes
2815+ .../locale/it/LC_MESSAGES/django.po | 3347 ++++++++++++++++++
2816+ .../locale/ja/LC_MESSAGES/django.mo | Bin 1724 -> 60197 bytes
2817+ .../locale/ja/LC_MESSAGES/django.po | 3361 +++++++++++++++++-
2818+ .../locale/ko_KR/LC_MESSAGES/django.mo | Bin 1634 -> 2705 bytes
2819+ .../locale/ko_KR/LC_MESSAGES/django.po | 3268 ++++++++++++++++-
2820+ .../locale/nl_NL/LC_MESSAGES/django.mo | Bin 1577 -> 9678 bytes
2821+ .../locale/nl_NL/LC_MESSAGES/django.po | 3264 ++++++++++++++++-
2822+ .../locale/pl/LC_MESSAGES/django.mo | Bin 478 -> 810 bytes
2823+ .../locale/pl/LC_MESSAGES/django.po | 3489 ++++++++++++++++++-
2824+ .../locale/pt/LC_MESSAGES/django.mo | Bin 1549 -> 30497 bytes
2825+ .../locale/pt/LC_MESSAGES/django.po | 3326 +++++++++++++++++-
2826+ .../locale/pt_BR/LC_MESSAGES/django.mo | Bin 1554 -> 36757 bytes
2827+ .../locale/pt_BR/LC_MESSAGES/django.po | 3314 +++++++++++++++++-
2828+ .../locale/ru/LC_MESSAGES/django.mo | Bin 0 -> 494 bytes
2829+ .../locale/ru/LC_MESSAGES/django.po | 3297 ++++++++++++++++++
2830+ .../locale/zh_CN/LC_MESSAGES/django.mo | Bin 1468 -> 14112 bytes
2831+ .../locale/zh_CN/LC_MESSAGES/django.po | 3276 ++++++++++++++++-
2832+ .../locale/zh_TW/LC_MESSAGES/django.mo | Bin 1516 -> 45327 bytes
2833+ .../locale/zh_TW/LC_MESSAGES/django.po | 3293 +++++++++++++++++-
2834+ openstack_dashboard/openstack/common/setup.py | 200 ++
2835+ openstack_dashboard/settings.py | 9 +-
2836+ openstack_dashboard/templates/_header.html | 10 +
2837+ openstack_dashboard/test/api_tests/base_tests.py | 149 +
2838+ openstack_dashboard/test/api_tests/glance_tests.py | 67 +
2839+ .../test/api_tests/keystone_tests.py | 98 +
2840+ openstack_dashboard/test/api_tests/nova_tests.py | 206 ++
2841+ .../test/api_tests/quantum_tests.py | 205 ++
2842+ openstack_dashboard/test/api_tests/swift_tests.py | 120 +
2843+ openstack_dashboard/test/helpers.py | 298 ++
2844+ openstack_dashboard/test/settings.py | 79 +-
2845+ openstack_dashboard/test/templates/404.html | 1 +
2846+ openstack_dashboard/test/templates/500.html | 1 +
2847+ openstack_dashboard/test/templates/_tab.html | 1 +
2848+ openstack_dashboard/test/templates/tab_group.html | 1 +
2849+ openstack_dashboard/test/templates/workflow.html | 1 +
2850+ openstack_dashboard/test/test_data/exceptions.py | 67 +
2851+ openstack_dashboard/test/test_data/glance_data.py | 89 +
2852+ .../test/test_data/keystone_data.py | 160 +
2853+ openstack_dashboard/test/test_data/nova_data.py | 343 ++
2854+ openstack_dashboard/test/test_data/quantum_data.py | 111 +
2855+ openstack_dashboard/test/test_data/swift_data.py | 39 +
2856+ openstack_dashboard/test/test_data/utils.py | 126 +
2857+ openstack_dashboard/test/tests/selenium.py | 24 +
2858+ openstack_dashboard/urls.py | 5 +-
2859+ openstack_dashboard/usage/__init__.py | 19 +
2860+ openstack_dashboard/usage/base.py | 156 +
2861+ openstack_dashboard/usage/tables.py | 71 +
2862+ openstack_dashboard/usage/views.py | 54 +
2863+ openstack_dashboard/views.py | 38 +
2864+ run_tests.sh | 2 +-
2865+ setup.py | 2 +-
2866+ 876 files changed, 76759 insertions(+), 78266 deletions(-)
2867+
2868+commit ef1e1d9b7a1fd4140518318ead8b7174a6a434ab
2869+Author: Gabriel Hurley <gabriel@strikeawe.com>
2870+Date: Fri Oct 5 12:05:08 2012 -0700
2871+
2872+ Corrects an error in the EC2 form choices.
2873+
2874+ Fixes bug 1062490.
2875+
2876+ Change-Id: I1b8bd0fa362c3ddb67a7d4127211adf969b8c48c
2877+
2878+ horizon/dashboards/settings/ec2/forms.py | 2 +-
2879+ 1 file changed, 1 insertion(+), 1 deletion(-)
2880+
2881+commit a058bfc1d61a033c8403524d95422a394b2a4d0d
2882+Author: Gabriel Hurley <gabriel@strikeawe.com>
2883+Date: Wed Oct 3 14:29:24 2012 -0700
2884+
2885+ Renames legacy dashboards.
2886+
2887+ The "Nova" dashboard is now "Project" and the "Syspanel" dashboard
2888+ is now "Admin" to match the current real names of the dashboards
2889+ which better match their purposes.
2890+
2891+ Implements blueprint fix-legacy-dashboard-names
2892+
2893+ Change-Id: I702aa0d54c4e3b0ac10db46e6d6ed32803919b7b
2894+
2895+ horizon/dashboards/admin/dashboard.py | 37 +
2896+ horizon/dashboards/admin/flavors/forms.py | 95 ++
2897+ horizon/dashboards/admin/flavors/panel.py | 32 +
2898+ horizon/dashboards/admin/flavors/tables.py | 53 ++
2899+ .../admin/flavors/templates/flavors/_create.html | 25 +
2900+ .../admin/flavors/templates/flavors/_edit.html | 26 +
2901+ .../admin/flavors/templates/flavors/create.html | 11 +
2902+ .../admin/flavors/templates/flavors/edit.html | 11 +
2903+ .../admin/flavors/templates/flavors/index.html | 11 +
2904+ horizon/dashboards/admin/flavors/tests.py | 81 ++
2905+ horizon/dashboards/admin/flavors/urls.py | 28 +
2906+ horizon/dashboards/admin/flavors/views.py | 81 ++
2907+ horizon/dashboards/admin/images/forms.py | 25 +
2908+ horizon/dashboards/admin/images/panel.py | 32 +
2909+ horizon/dashboards/admin/images/tables.py | 45 +
2910+ .../admin/images/templates/images/_update.html | 25 +
2911+ .../admin/images/templates/images/index.html | 11 +
2912+ .../admin/images/templates/images/update.html | 12 +
2913+ horizon/dashboards/admin/images/tests.py | 97 ++
2914+ horizon/dashboards/admin/images/urls.py | 30 +
2915+ horizon/dashboards/admin/images/views.py | 66 ++
2916+ horizon/dashboards/admin/instances/panel.py | 33 +
2917+ horizon/dashboards/admin/instances/tables.py | 99 ++
2918+ .../admin/instances/templates/instances/index.html | 11 +
2919+ horizon/dashboards/admin/instances/tests.py | 142 +++
2920+ horizon/dashboards/admin/instances/urls.py | 34 +
2921+ horizon/dashboards/admin/instances/views.py | 81 ++
2922+ horizon/dashboards/admin/models.py | 23 +
2923+ horizon/dashboards/admin/networks/forms.py | 89 ++
2924+ horizon/dashboards/admin/networks/panel.py | 28 +
2925+ horizon/dashboards/admin/networks/ports/forms.py | 92 ++
2926+ horizon/dashboards/admin/networks/ports/tables.py | 85 ++
2927+ horizon/dashboards/admin/networks/ports/tabs.py | 46 +
2928+ horizon/dashboards/admin/networks/ports/urls.py | 24 +
2929+ horizon/dashboards/admin/networks/ports/views.py | 98 ++
2930+ horizon/dashboards/admin/networks/subnets/forms.py | 52 ++
2931+ .../dashboards/admin/networks/subnets/tables.py | 82 ++
2932+ horizon/dashboards/admin/networks/subnets/urls.py | 24 +
2933+ horizon/dashboards/admin/networks/subnets/views.py | 101 ++
2934+ horizon/dashboards/admin/networks/tables.py | 82 ++
2935+ .../admin/networks/templates/networks/_create.html | 25 +
2936+ .../admin/networks/templates/networks/_update.html | 24 +
2937+ .../admin/networks/templates/networks/create.html | 11 +
2938+ .../admin/networks/templates/networks/index.html | 21 +
2939+ .../networks/templates/networks/ports/_create.html | 25 +
2940+ .../networks/templates/networks/ports/_update.html | 29 +
2941+ .../networks/templates/networks/ports/create.html | 11 +
2942+ .../networks/templates/networks/ports/update.html | 11 +
2943+ .../templates/networks/subnets/_create.html | 25 +
2944+ .../templates/networks/subnets/_update.html | 33 +
2945+ .../templates/networks/subnets/create.html | 11 +
2946+ .../networks/templates/networks/subnets/index.html | 11 +
2947+ .../templates/networks/subnets/update.html | 11 +
2948+ .../admin/networks/templates/networks/update.html | 11 +
2949+ horizon/dashboards/admin/networks/tests.py | 805 ++++++++++++++++
2950+ horizon/dashboards/admin/networks/urls.py | 45 +
2951+ horizon/dashboards/admin/networks/views.py | 140 +++
2952+ horizon/dashboards/admin/overview/panel.py | 33 +
2953+ .../admin/overview/templates/overview/usage.csv | 9 +
2954+ .../admin/overview/templates/overview/usage.html | 22 +
2955+ horizon/dashboards/admin/overview/tests.py | 95 ++
2956+ horizon/dashboards/admin/overview/urls.py | 28 +
2957+ horizon/dashboards/admin/overview/views.py | 48 +
2958+ horizon/dashboards/admin/projects/forms.py | 33 +
2959+ horizon/dashboards/admin/projects/panel.py | 32 +
2960+ horizon/dashboards/admin/projects/tables.py | 157 ++++
2961+ .../projects/templates/projects/_add_user.html | 25 +
2962+ .../admin/projects/templates/projects/_create.html | 25 +
2963+ .../projects/templates/projects/_create_user.html | 25 +
2964+ .../admin/projects/templates/projects/_quotas.html | 24 +
2965+ .../admin/projects/templates/projects/_update.html | 25 +
2966+ .../templates/projects/_update_members.html | 39 +
2967+ .../projects/templates/projects/add_user.html | 11 +
2968+ .../admin/projects/templates/projects/create.html | 12 +
2969+ .../projects/templates/projects/create_user.html | 12 +
2970+ .../admin/projects/templates/projects/index.html | 13 +
2971+ .../admin/projects/templates/projects/quotas.html | 11 +
2972+ .../admin/projects/templates/projects/update.html | 12 +
2973+ .../admin/projects/templates/projects/usage.csv | 11 +
2974+ .../admin/projects/templates/projects/usage.html | 14 +
2975+ .../admin/projects/templates/projects/users.html | 18 +
2976+ horizon/dashboards/admin/projects/tests.py | 842 +++++++++++++++++
2977+ horizon/dashboards/admin/projects/urls.py | 37 +
2978+ horizon/dashboards/admin/projects/views.py | 203 ++++
2979+ horizon/dashboards/admin/projects/workflows.py | 364 ++++++++
2980+ horizon/dashboards/admin/quotas/panel.py | 32 +
2981+ horizon/dashboards/admin/quotas/tables.py | 38 +
2982+ .../admin/quotas/templates/quotas/index.html | 13 +
2983+ horizon/dashboards/admin/quotas/urls.py | 27 +
2984+ horizon/dashboards/admin/quotas/views.py | 46 +
2985+ horizon/dashboards/admin/services/panel.py | 32 +
2986+ horizon/dashboards/admin/services/tables.py | 50 +
2987+ .../admin/services/templates/services/index.html | 14 +
2988+ horizon/dashboards/admin/services/tests.py | 36 +
2989+ horizon/dashboards/admin/services/urls.py | 27 +
2990+ horizon/dashboards/admin/services/views.py | 40 +
2991+ horizon/dashboards/admin/users/forms.py | 195 ++++
2992+ horizon/dashboards/admin/users/panel.py | 32 +
2993+ horizon/dashboards/admin/users/tables.py | 123 +++
2994+ .../admin/users/templates/users/_create.html | 24 +
2995+ .../admin/users/templates/users/_update.html | 24 +
2996+ .../admin/users/templates/users/create.html | 12 +
2997+ .../admin/users/templates/users/index.html | 13 +
2998+ .../admin/users/templates/users/update.html | 12 +
2999+ horizon/dashboards/admin/users/tests.py | 356 +++++++
3000+ horizon/dashboards/admin/users/urls.py | 28 +
3001+ horizon/dashboards/admin/users/views.py | 111 +++
3002+ horizon/dashboards/admin/volumes/panel.py | 14 +
3003+ horizon/dashboards/admin/volumes/tables.py | 19 +
3004+ .../admin/volumes/templates/volumes/detail.html | 15 +
3005+ .../admin/volumes/templates/volumes/index.html | 13 +
3006+ horizon/dashboards/admin/volumes/tests.py | 39 +
3007+ horizon/dashboards/admin/volumes/urls.py | 8 +
3008+ horizon/dashboards/admin/volumes/views.py | 39 +
3009+ .../nova/access_and_security/floating_ips/forms.py | 46 -
3010+ .../access_and_security/floating_ips/tables.py | 129 ---
3011+ .../nova/access_and_security/floating_ips/tests.py | 176 ----
3012+ .../nova/access_and_security/floating_ips/urls.py | 29 -
3013+ .../nova/access_and_security/floating_ips/views.py | 68 --
3014+ .../access_and_security/floating_ips/workflows.py | 114 ---
3015+ .../nova/access_and_security/keypairs/forms.py | 66 --
3016+ .../nova/access_and_security/keypairs/tables.py | 61 --
3017+ .../nova/access_and_security/keypairs/tests.py | 162 ----
3018+ .../nova/access_and_security/keypairs/urls.py | 33 -
3019+ .../nova/access_and_security/keypairs/views.py | 81 --
3020+ .../dashboards/nova/access_and_security/panel.py | 29 -
3021+ .../access_and_security/security_groups/forms.py | 173 ----
3022+ .../access_and_security/security_groups/tables.py | 108 ---
3023+ .../access_and_security/security_groups/tests.py | 374 --------
3024+ .../access_and_security/security_groups/urls.py | 30 -
3025+ .../access_and_security/security_groups/views.py | 119 ---
3026+ .../floating_ips/_allocate.html | 33 -
3027+ .../access_and_security/floating_ips/allocate.html | 7 -
3028+ .../floating_ips/associate.html | 11 -
3029+ .../templates/access_and_security/index.html | 21 -
3030+ .../access_and_security/keypairs/_create.html | 25 -
3031+ .../access_and_security/keypairs/_import.html | 25 -
3032+ .../access_and_security/keypairs/create.html | 12 -
3033+ .../access_and_security/keypairs/download.html | 21 -
3034+ .../access_and_security/keypairs/import.html | 12 -
3035+ .../security_groups/_create.html | 25 -
3036+ .../security_groups/_edit_rules.html | 21 -
3037+ .../security_groups/create.html | 11 -
3038+ .../security_groups/edit_rules.html | 11 -
3039+ .../dashboards/nova/access_and_security/tests.py | 86 --
3040+ .../dashboards/nova/access_and_security/urls.py | 34 -
3041+ .../dashboards/nova/access_and_security/views.py | 83 --
3042+ horizon/dashboards/nova/containers/browsers.py | 37 -
3043+ horizon/dashboards/nova/containers/forms.py | 164 ----
3044+ horizon/dashboards/nova/containers/panel.py | 32 -
3045+ horizon/dashboards/nova/containers/tables.py | 269 ------
3046+ .../containers/templates/containers/_copy.html | 24 -
3047+ .../containers/templates/containers/_create.html | 24 -
3048+ .../containers/templates/containers/_upload.html | 25 -
3049+ .../nova/containers/templates/containers/copy.html | 13 -
3050+ .../containers/templates/containers/create.html | 11 -
3051+ .../containers/templates/containers/index.html | 13 -
3052+ .../containers/templates/containers/upload.html | 15 -
3053+ horizon/dashboards/nova/containers/tests.py | 237 -----
3054+ horizon/dashboards/nova/containers/urls.py | 48 -
3055+ horizon/dashboards/nova/containers/views.py | 217 -----
3056+ horizon/dashboards/nova/dashboard.py | 47 -
3057+ .../nova/images_and_snapshots/images/forms.py | 164 ----
3058+ .../nova/images_and_snapshots/images/panel.py | 30 -
3059+ .../nova/images_and_snapshots/images/tables.py | 134 ---
3060+ .../nova/images_and_snapshots/images/tabs.py | 44 -
3061+ .../nova/images_and_snapshots/images/tests.py | 96 --
3062+ .../nova/images_and_snapshots/images/urls.py | 32 -
3063+ .../nova/images_and_snapshots/images/views.py | 83 --
3064+ .../dashboards/nova/images_and_snapshots/panel.py | 29 -
3065+ .../nova/images_and_snapshots/snapshots/forms.py | 56 --
3066+ .../nova/images_and_snapshots/snapshots/panel.py | 30 -
3067+ .../nova/images_and_snapshots/snapshots/tables.py | 59 --
3068+ .../nova/images_and_snapshots/snapshots/tests.py | 97 --
3069+ .../nova/images_and_snapshots/snapshots/urls.py | 30 -
3070+ .../nova/images_and_snapshots/snapshots/views.py | 62 --
3071+ .../images_and_snapshots/images/_create.html | 33 -
3072+ .../images/_detail_overview.html | 68 --
3073+ .../images_and_snapshots/images/_update.html | 24 -
3074+ .../images_and_snapshots/images/create.html | 11 -
3075+ .../images_and_snapshots/images/detail.html | 16 -
3076+ .../images_and_snapshots/images/update.html | 11 -
3077+ .../templates/images_and_snapshots/index.html | 19 -
3078+ .../images_and_snapshots/snapshots/_create.html | 25 -
3079+ .../snapshots/_detail_overview.html | 42 -
3080+ .../images_and_snapshots/snapshots/create.html | 11 -
3081+ .../images_and_snapshots/snapshots/detail.html | 15 -
3082+ .../dashboards/nova/images_and_snapshots/tests.py | 169 ----
3083+ .../dashboards/nova/images_and_snapshots/urls.py | 35 -
3084+ .../dashboards/nova/images_and_snapshots/views.py | 88 --
3085+ .../images_and_snapshots/volume_snapshots/panel.py | 26 -
3086+ .../volume_snapshots/tables.py | 88 --
3087+ .../images_and_snapshots/volume_snapshots/tabs.py | 48 -
3088+ .../images_and_snapshots/volume_snapshots/tests.py | 59 --
3089+ horizon/dashboards/nova/instances/forms.py | 50 -
3090+ horizon/dashboards/nova/instances/panel.py | 28 -
3091+ horizon/dashboards/nova/instances/tables.py | 319 -------
3092+ horizon/dashboards/nova/instances/tabs.py | 77 --
3093+ .../instances/templates/instances/_detail_log.html | 17 -
3094+ .../templates/instances/_detail_overview.html | 98 --
3095+ .../instances/templates/instances/_detail_vnc.html | 10 -
3096+ .../templates/instances/_instance_ips.html | 10 -
3097+ .../instances/_launch_customize_help.html | 3 -
3098+ .../templates/instances/_launch_details_help.html | 53 --
3099+ .../templates/instances/_launch_volumes_help.html | 3 -
3100+ .../instances/templates/instances/_update.html | 24 -
3101+ .../nova/instances/templates/instances/detail.html | 15 -
3102+ .../nova/instances/templates/instances/index.html | 11 -
3103+ .../nova/instances/templates/instances/launch.html | 11 -
3104+ .../nova/instances/templates/instances/update.html | 11 -
3105+ horizon/dashboards/nova/instances/tests.py | 982 --------------------
3106+ horizon/dashboards/nova/instances/urls.py | 36 -
3107+ horizon/dashboards/nova/instances/views.py | 186 ----
3108+ horizon/dashboards/nova/instances/workflows.py | 510 ----------
3109+ horizon/dashboards/nova/models.py | 23 -
3110+ horizon/dashboards/nova/networks/forms.py | 55 --
3111+ horizon/dashboards/nova/networks/panel.py | 28 -
3112+ horizon/dashboards/nova/networks/ports/tables.py | 53 --
3113+ horizon/dashboards/nova/networks/ports/tabs.py | 46 -
3114+ horizon/dashboards/nova/networks/ports/urls.py | 24 -
3115+ horizon/dashboards/nova/networks/ports/views.py | 28 -
3116+ horizon/dashboards/nova/networks/subnets/forms.py | 138 ---
3117+ horizon/dashboards/nova/networks/subnets/tables.py | 105 ---
3118+ horizon/dashboards/nova/networks/subnets/tabs.py | 48 -
3119+ horizon/dashboards/nova/networks/subnets/urls.py | 24 -
3120+ horizon/dashboards/nova/networks/subnets/views.py | 109 ---
3121+ horizon/dashboards/nova/networks/tables.py | 107 ---
3122+ .../nova/networks/templates/networks/_create.html | 24 -
3123+ .../templates/networks/_detail_overview.html | 20 -
3124+ .../networks/templates/networks/_network_ips.html | 10 -
3125+ .../nova/networks/templates/networks/_update.html | 24 -
3126+ .../nova/networks/templates/networks/create.html | 11 -
3127+ .../nova/networks/templates/networks/detail.html | 18 -
3128+ .../nova/networks/templates/networks/index.html | 11 -
3129+ .../templates/networks/ports/_detail_overview.html | 41 -
3130+ .../templates/networks/ports/_port_ips.html | 7 -
3131+ .../networks/templates/networks/ports/detail.html | 15 -
3132+ .../templates/networks/subnets/_create.html | 25 -
3133+ .../networks/subnets/_detail_overview.html | 29 -
3134+ .../templates/networks/subnets/_update.html | 33 -
3135+ .../templates/networks/subnets/create.html | 11 -
3136+ .../templates/networks/subnets/detail.html | 15 -
3137+ .../networks/templates/networks/subnets/index.html | 11 -
3138+ .../templates/networks/subnets/update.html | 11 -
3139+ .../nova/networks/templates/networks/update.html | 11 -
3140+ horizon/dashboards/nova/networks/tests.py | 783 ----------------
3141+ horizon/dashboards/nova/networks/urls.py | 37 -
3142+ horizon/dashboards/nova/networks/views.py | 143 ---
3143+ horizon/dashboards/nova/networks/workflows.py | 161 ----
3144+ horizon/dashboards/nova/overview/panel.py | 32 -
3145+ .../nova/overview/templates/overview/usage.csv | 11 -
3146+ .../nova/overview/templates/overview/usage.html | 13 -
3147+ horizon/dashboards/nova/overview/tests.py | 143 ---
3148+ horizon/dashboards/nova/overview/urls.py | 29 -
3149+ horizon/dashboards/nova/overview/views.py | 37 -
3150+ .../dashboards/nova/templates/nova/_warning.html | 32 -
3151+ horizon/dashboards/nova/volumes/forms.py | 219 -----
3152+ horizon/dashboards/nova/volumes/panel.py | 29 -
3153+ horizon/dashboards/nova/volumes/tables.py | 226 -----
3154+ horizon/dashboards/nova/volumes/tabs.py | 48 -
3155+ .../nova/volumes/templates/volumes/_attach.html | 25 -
3156+ .../nova/volumes/templates/volumes/_create.html | 57 --
3157+ .../templates/volumes/_create_snapshot.html | 25 -
3158+ .../templates/volumes/_detail_overview.html | 49 -
3159+ .../nova/volumes/templates/volumes/attach.html | 11 -
3160+ .../nova/volumes/templates/volumes/create.html | 11 -
3161+ .../volumes/templates/volumes/create_snapshot.html | 11 -
3162+ .../nova/volumes/templates/volumes/detail.html | 15 -
3163+ .../nova/volumes/templates/volumes/index.html | 11 -
3164+ horizon/dashboards/nova/volumes/tests.py | 328 -------
3165+ horizon/dashboards/nova/volumes/urls.py | 35 -
3166+ horizon/dashboards/nova/volumes/views.py | 184 ----
3167+ .../access_and_security/floating_ips/forms.py | 46 +
3168+ .../access_and_security/floating_ips/tables.py | 129 +++
3169+ .../access_and_security/floating_ips/tests.py | 176 ++++
3170+ .../access_and_security/floating_ips/urls.py | 29 +
3171+ .../access_and_security/floating_ips/views.py | 68 ++
3172+ .../access_and_security/floating_ips/workflows.py | 114 +++
3173+ .../project/access_and_security/keypairs/forms.py | 65 ++
3174+ .../project/access_and_security/keypairs/tables.py | 61 ++
3175+ .../project/access_and_security/keypairs/tests.py | 162 ++++
3176+ .../project/access_and_security/keypairs/urls.py | 33 +
3177+ .../project/access_and_security/keypairs/views.py | 81 ++
3178+ .../project/access_and_security/panel.py | 29 +
3179+ .../access_and_security/security_groups/forms.py | 173 ++++
3180+ .../access_and_security/security_groups/tables.py | 108 +++
3181+ .../access_and_security/security_groups/tests.py | 374 ++++++++
3182+ .../access_and_security/security_groups/urls.py | 30 +
3183+ .../access_and_security/security_groups/views.py | 120 +++
3184+ .../floating_ips/_allocate.html | 33 +
3185+ .../access_and_security/floating_ips/allocate.html | 7 +
3186+ .../floating_ips/associate.html | 11 +
3187+ .../templates/access_and_security/index.html | 21 +
3188+ .../access_and_security/keypairs/_create.html | 25 +
3189+ .../access_and_security/keypairs/_import.html | 25 +
3190+ .../access_and_security/keypairs/create.html | 12 +
3191+ .../access_and_security/keypairs/download.html | 21 +
3192+ .../access_and_security/keypairs/import.html | 12 +
3193+ .../security_groups/_create.html | 25 +
3194+ .../security_groups/_edit_rules.html | 21 +
3195+ .../security_groups/create.html | 11 +
3196+ .../security_groups/edit_rules.html | 11 +
3197+ .../project/access_and_security/tests.py | 86 ++
3198+ .../dashboards/project/access_and_security/urls.py | 34 +
3199+ .../project/access_and_security/views.py | 83 ++
3200+ horizon/dashboards/project/containers/browsers.py | 37 +
3201+ horizon/dashboards/project/containers/forms.py | 164 ++++
3202+ horizon/dashboards/project/containers/panel.py | 32 +
3203+ horizon/dashboards/project/containers/tables.py | 269 ++++++
3204+ .../containers/templates/containers/_copy.html | 24 +
3205+ .../containers/templates/containers/_create.html | 24 +
3206+ .../containers/templates/containers/_upload.html | 25 +
3207+ .../containers/templates/containers/copy.html | 13 +
3208+ .../containers/templates/containers/create.html | 11 +
3209+ .../containers/templates/containers/index.html | 13 +
3210+ .../containers/templates/containers/upload.html | 15 +
3211+ horizon/dashboards/project/containers/tests.py | 237 +++++
3212+ horizon/dashboards/project/containers/urls.py | 48 +
3213+ horizon/dashboards/project/containers/views.py | 217 +++++
3214+ horizon/dashboards/project/dashboard.py | 47 +
3215+ .../project/images_and_snapshots/images/forms.py | 164 ++++
3216+ .../project/images_and_snapshots/images/panel.py | 30 +
3217+ .../project/images_and_snapshots/images/tables.py | 134 +++
3218+ .../project/images_and_snapshots/images/tabs.py | 44 +
3219+ .../project/images_and_snapshots/images/tests.py | 96 ++
3220+ .../project/images_and_snapshots/images/urls.py | 32 +
3221+ .../project/images_and_snapshots/images/views.py | 83 ++
3222+ .../project/images_and_snapshots/panel.py | 29 +
3223+ .../images_and_snapshots/snapshots/forms.py | 56 ++
3224+ .../images_and_snapshots/snapshots/panel.py | 30 +
3225+ .../images_and_snapshots/snapshots/tables.py | 59 ++
3226+ .../images_and_snapshots/snapshots/tests.py | 97 ++
3227+ .../project/images_and_snapshots/snapshots/urls.py | 30 +
3228+ .../images_and_snapshots/snapshots/views.py | 62 ++
3229+ .../images_and_snapshots/images/_create.html | 33 +
3230+ .../images/_detail_overview.html | 68 ++
3231+ .../images_and_snapshots/images/_update.html | 24 +
3232+ .../images_and_snapshots/images/create.html | 11 +
3233+ .../images_and_snapshots/images/detail.html | 16 +
3234+ .../images_and_snapshots/images/update.html | 11 +
3235+ .../templates/images_and_snapshots/index.html | 19 +
3236+ .../images_and_snapshots/snapshots/_create.html | 25 +
3237+ .../snapshots/_detail_overview.html | 42 +
3238+ .../images_and_snapshots/snapshots/create.html | 11 +
3239+ .../images_and_snapshots/snapshots/detail.html | 15 +
3240+ .../project/images_and_snapshots/tests.py | 169 ++++
3241+ .../project/images_and_snapshots/urls.py | 35 +
3242+ .../project/images_and_snapshots/views.py | 88 ++
3243+ .../images_and_snapshots/volume_snapshots/panel.py | 26 +
3244+ .../volume_snapshots/tables.py | 88 ++
3245+ .../images_and_snapshots/volume_snapshots/tabs.py | 48 +
3246+ .../images_and_snapshots/volume_snapshots/tests.py | 61 ++
3247+ horizon/dashboards/project/instances/forms.py | 50 +
3248+ horizon/dashboards/project/instances/panel.py | 28 +
3249+ horizon/dashboards/project/instances/tables.py | 319 +++++++
3250+ horizon/dashboards/project/instances/tabs.py | 77 ++
3251+ .../instances/templates/instances/_detail_log.html | 17 +
3252+ .../templates/instances/_detail_overview.html | 98 ++
3253+ .../instances/templates/instances/_detail_vnc.html | 10 +
3254+ .../templates/instances/_instance_ips.html | 10 +
3255+ .../instances/_launch_customize_help.html | 3 +
3256+ .../templates/instances/_launch_details_help.html | 53 ++
3257+ .../templates/instances/_launch_volumes_help.html | 3 +
3258+ .../instances/templates/instances/_update.html | 24 +
3259+ .../instances/templates/instances/detail.html | 15 +
3260+ .../instances/templates/instances/index.html | 11 +
3261+ .../instances/templates/instances/launch.html | 11 +
3262+ .../instances/templates/instances/update.html | 11 +
3263+ horizon/dashboards/project/instances/tests.py | 980 +++++++++++++++++++
3264+ horizon/dashboards/project/instances/urls.py | 36 +
3265+ horizon/dashboards/project/instances/views.py | 186 ++++
3266+ horizon/dashboards/project/instances/workflows.py | 510 ++++++++++
3267+ horizon/dashboards/project/models.py | 23 +
3268+ horizon/dashboards/project/networks/forms.py | 55 ++
3269+ horizon/dashboards/project/networks/panel.py | 28 +
3270+ .../dashboards/project/networks/ports/tables.py | 53 ++
3271+ horizon/dashboards/project/networks/ports/tabs.py | 46 +
3272+ horizon/dashboards/project/networks/ports/urls.py | 24 +
3273+ horizon/dashboards/project/networks/ports/views.py | 28 +
3274+ .../dashboards/project/networks/subnets/forms.py | 138 +++
3275+ .../dashboards/project/networks/subnets/tables.py | 105 +++
3276+ .../dashboards/project/networks/subnets/tabs.py | 48 +
3277+ .../dashboards/project/networks/subnets/urls.py | 24 +
3278+ .../dashboards/project/networks/subnets/views.py | 109 +++
3279+ horizon/dashboards/project/networks/tables.py | 107 +++
3280+ .../networks/templates/networks/_create.html | 24 +
3281+ .../templates/networks/_detail_overview.html | 20 +
3282+ .../networks/templates/networks/_network_ips.html | 10 +
3283+ .../networks/templates/networks/_update.html | 24 +
3284+ .../networks/templates/networks/create.html | 11 +
3285+ .../networks/templates/networks/detail.html | 18 +
3286+ .../project/networks/templates/networks/index.html | 11 +
3287+ .../templates/networks/ports/_detail_overview.html | 41 +
3288+ .../templates/networks/ports/_port_ips.html | 7 +
3289+ .../networks/templates/networks/ports/detail.html | 15 +
3290+ .../templates/networks/subnets/_create.html | 25 +
3291+ .../networks/subnets/_detail_overview.html | 29 +
3292+ .../templates/networks/subnets/_update.html | 33 +
3293+ .../templates/networks/subnets/create.html | 11 +
3294+ .../templates/networks/subnets/detail.html | 15 +
3295+ .../networks/templates/networks/subnets/index.html | 11 +
3296+ .../templates/networks/subnets/update.html | 11 +
3297+ .../networks/templates/networks/update.html | 11 +
3298+ horizon/dashboards/project/networks/tests.py | 782 ++++++++++++++++
3299+ horizon/dashboards/project/networks/urls.py | 37 +
3300+ horizon/dashboards/project/networks/views.py | 143 +++
3301+ horizon/dashboards/project/networks/workflows.py | 161 ++++
3302+ horizon/dashboards/project/overview/panel.py | 32 +
3303+ .../project/overview/templates/overview/usage.csv | 11 +
3304+ .../project/overview/templates/overview/usage.html | 13 +
3305+ horizon/dashboards/project/overview/tests.py | 143 +++
3306+ horizon/dashboards/project/overview/urls.py | 29 +
3307+ horizon/dashboards/project/overview/views.py | 37 +
3308+ horizon/dashboards/project/volumes/forms.py | 219 +++++
3309+ horizon/dashboards/project/volumes/panel.py | 29 +
3310+ horizon/dashboards/project/volumes/tables.py | 226 +++++
3311+ horizon/dashboards/project/volumes/tabs.py | 48 +
3312+ .../project/volumes/templates/volumes/_attach.html | 25 +
3313+ .../project/volumes/templates/volumes/_create.html | 57 ++
3314+ .../templates/volumes/_create_snapshot.html | 25 +
3315+ .../templates/volumes/_detail_overview.html | 49 +
3316+ .../project/volumes/templates/volumes/attach.html | 11 +
3317+ .../project/volumes/templates/volumes/create.html | 11 +
3318+ .../volumes/templates/volumes/create_snapshot.html | 11 +
3319+ .../project/volumes/templates/volumes/detail.html | 15 +
3320+ .../project/volumes/templates/volumes/index.html | 11 +
3321+ horizon/dashboards/project/volumes/tests.py | 328 +++++++
3322+ horizon/dashboards/project/volumes/urls.py | 35 +
3323+ horizon/dashboards/project/volumes/views.py | 184 ++++
3324+ horizon/dashboards/syspanel/dashboard.py | 37 -
3325+ horizon/dashboards/syspanel/flavors/forms.py | 95 --
3326+ horizon/dashboards/syspanel/flavors/panel.py | 32 -
3327+ horizon/dashboards/syspanel/flavors/tables.py | 53 --
3328+ .../flavors/templates/flavors/_create.html | 25 -
3329+ .../syspanel/flavors/templates/flavors/_edit.html | 26 -
3330+ .../syspanel/flavors/templates/flavors/create.html | 11 -
3331+ .../syspanel/flavors/templates/flavors/edit.html | 11 -
3332+ .../syspanel/flavors/templates/flavors/index.html | 11 -
3333+ horizon/dashboards/syspanel/flavors/tests.py | 81 --
3334+ horizon/dashboards/syspanel/flavors/urls.py | 28 -
3335+ horizon/dashboards/syspanel/flavors/views.py | 81 --
3336+ horizon/dashboards/syspanel/images/forms.py | 25 -
3337+ horizon/dashboards/syspanel/images/panel.py | 32 -
3338+ horizon/dashboards/syspanel/images/tables.py | 45 -
3339+ .../syspanel/images/templates/images/_update.html | 25 -
3340+ .../syspanel/images/templates/images/index.html | 11 -
3341+ .../syspanel/images/templates/images/update.html | 12 -
3342+ horizon/dashboards/syspanel/images/tests.py | 97 --
3343+ horizon/dashboards/syspanel/images/urls.py | 30 -
3344+ horizon/dashboards/syspanel/images/views.py | 66 --
3345+ horizon/dashboards/syspanel/instances/panel.py | 33 -
3346+ horizon/dashboards/syspanel/instances/tables.py | 99 --
3347+ .../instances/templates/instances/index.html | 11 -
3348+ horizon/dashboards/syspanel/instances/tests.py | 142 ---
3349+ horizon/dashboards/syspanel/instances/urls.py | 34 -
3350+ horizon/dashboards/syspanel/instances/views.py | 81 --
3351+ horizon/dashboards/syspanel/models.py | 23 -
3352+ horizon/dashboards/syspanel/networks/forms.py | 89 --
3353+ horizon/dashboards/syspanel/networks/panel.py | 28 -
3354+ .../dashboards/syspanel/networks/ports/forms.py | 92 --
3355+ .../dashboards/syspanel/networks/ports/tables.py | 85 --
3356+ horizon/dashboards/syspanel/networks/ports/tabs.py | 46 -
3357+ horizon/dashboards/syspanel/networks/ports/urls.py | 24 -
3358+ .../dashboards/syspanel/networks/ports/views.py | 98 --
3359+ .../dashboards/syspanel/networks/subnets/forms.py | 52 --
3360+ .../dashboards/syspanel/networks/subnets/tables.py | 82 --
3361+ .../dashboards/syspanel/networks/subnets/urls.py | 24 -
3362+ .../dashboards/syspanel/networks/subnets/views.py | 101 --
3363+ horizon/dashboards/syspanel/networks/tables.py | 82 --
3364+ .../networks/templates/networks/_create.html | 25 -
3365+ .../networks/templates/networks/_update.html | 24 -
3366+ .../networks/templates/networks/create.html | 11 -
3367+ .../networks/templates/networks/index.html | 21 -
3368+ .../networks/templates/networks/ports/_create.html | 25 -
3369+ .../networks/templates/networks/ports/_update.html | 29 -
3370+ .../networks/templates/networks/ports/create.html | 11 -
3371+ .../networks/templates/networks/ports/update.html | 11 -
3372+ .../templates/networks/subnets/_create.html | 25 -
3373+ .../templates/networks/subnets/_update.html | 33 -
3374+ .../templates/networks/subnets/create.html | 11 -
3375+ .../networks/templates/networks/subnets/index.html | 11 -
3376+ .../templates/networks/subnets/update.html | 11 -
3377+ .../networks/templates/networks/update.html | 11 -
3378+ horizon/dashboards/syspanel/networks/tests.py | 805 ----------------
3379+ horizon/dashboards/syspanel/networks/urls.py | 45 -
3380+ horizon/dashboards/syspanel/networks/views.py | 140 ---
3381+ horizon/dashboards/syspanel/overview/panel.py | 33 -
3382+ .../syspanel/overview/templates/overview/usage.csv | 9 -
3383+ .../overview/templates/overview/usage.html | 22 -
3384+ horizon/dashboards/syspanel/overview/tests.py | 95 --
3385+ horizon/dashboards/syspanel/overview/urls.py | 28 -
3386+ horizon/dashboards/syspanel/overview/views.py | 48 -
3387+ horizon/dashboards/syspanel/projects/forms.py | 33 -
3388+ horizon/dashboards/syspanel/projects/panel.py | 32 -
3389+ horizon/dashboards/syspanel/projects/tables.py | 157 ----
3390+ .../projects/templates/projects/_add_user.html | 25 -
3391+ .../projects/templates/projects/_create.html | 25 -
3392+ .../projects/templates/projects/_create_user.html | 25 -
3393+ .../projects/templates/projects/_quotas.html | 24 -
3394+ .../projects/templates/projects/_update.html | 25 -
3395+ .../templates/projects/_update_members.html | 39 -
3396+ .../projects/templates/projects/add_user.html | 11 -
3397+ .../projects/templates/projects/create.html | 12 -
3398+ .../projects/templates/projects/create_user.html | 12 -
3399+ .../projects/templates/projects/index.html | 13 -
3400+ .../projects/templates/projects/quotas.html | 11 -
3401+ .../projects/templates/projects/update.html | 12 -
3402+ .../syspanel/projects/templates/projects/usage.csv | 11 -
3403+ .../projects/templates/projects/usage.html | 14 -
3404+ .../projects/templates/projects/users.html | 18 -
3405+ horizon/dashboards/syspanel/projects/tests.py | 842 -----------------
3406+ horizon/dashboards/syspanel/projects/urls.py | 37 -
3407+ horizon/dashboards/syspanel/projects/views.py | 203 ----
3408+ horizon/dashboards/syspanel/projects/workflows.py | 364 --------
3409+ horizon/dashboards/syspanel/quotas/panel.py | 32 -
3410+ horizon/dashboards/syspanel/quotas/tables.py | 38 -
3411+ .../syspanel/quotas/templates/quotas/index.html | 13 -
3412+ horizon/dashboards/syspanel/quotas/urls.py | 27 -
3413+ horizon/dashboards/syspanel/quotas/views.py | 46 -
3414+ horizon/dashboards/syspanel/services/panel.py | 32 -
3415+ horizon/dashboards/syspanel/services/tables.py | 50 -
3416+ .../services/templates/services/index.html | 14 -
3417+ horizon/dashboards/syspanel/services/tests.py | 36 -
3418+ horizon/dashboards/syspanel/services/urls.py | 27 -
3419+ horizon/dashboards/syspanel/services/views.py | 40 -
3420+ horizon/dashboards/syspanel/users/forms.py | 195 ----
3421+ horizon/dashboards/syspanel/users/panel.py | 32 -
3422+ horizon/dashboards/syspanel/users/tables.py | 123 ---
3423+ .../syspanel/users/templates/users/_create.html | 24 -
3424+ .../syspanel/users/templates/users/_update.html | 24 -
3425+ .../syspanel/users/templates/users/create.html | 12 -
3426+ .../syspanel/users/templates/users/index.html | 13 -
3427+ .../syspanel/users/templates/users/update.html | 12 -
3428+ horizon/dashboards/syspanel/users/tests.py | 356 -------
3429+ horizon/dashboards/syspanel/users/urls.py | 28 -
3430+ horizon/dashboards/syspanel/users/views.py | 111 ---
3431+ horizon/dashboards/syspanel/volumes/panel.py | 14 -
3432+ horizon/dashboards/syspanel/volumes/tables.py | 19 -
3433+ .../syspanel/volumes/templates/volumes/detail.html | 15 -
3434+ .../syspanel/volumes/templates/volumes/index.html | 13 -
3435+ horizon/dashboards/syspanel/volumes/tests.py | 39 -
3436+ horizon/dashboards/syspanel/volumes/urls.py | 8 -
3437+ horizon/dashboards/syspanel/volumes/views.py | 39 -
3438+ horizon/templates/base.html | 12 -
3439+ horizon/tests/base_tests.py | 12 +-
3440+ horizon/tests/testsettings.py | 8 +-
3441+ horizon/views/base.py | 4 +-
3442+ openstack_dashboard/settings.py | 8 +-
3443+ 548 files changed, 18324 insertions(+), 18369 deletions(-)
3444+
3445+commit b8c2634f658cbfb67703fa9e78e794110a25ef4e
3446+Merge: afd29ac 175efb4
3447+Author: Jenkins <jenkins@review.openstack.org>
3448+Date: Wed Sep 19 08:28:16 2012 +0000
3449+
3450+ Merge "Final translations for Folsom."
3451+
3452+commit 175efb4f735a181b60d5ed18d72b5e37b139c14b
3453 Author: Gabriel Hurley <gabriel@strikeawe.com>
3454 Date: Tue Sep 18 15:26:19 2012 -0700
3455
3456@@ -119,28 +2553,39 @@
3457 run_tests.sh | 20 +
3458 85 files changed, 30425 insertions(+), 6818 deletions(-)
3459
3460-commit a925885d794594d218e0112f2d6c28d28ca41ef5
3461+commit afd29ac41c36d66b97f0809b699e51fe788947e0
3462+Author: Gabriel Hurley <gabriel@strikeawe.com>
3463+Date: Tue Sep 18 14:17:51 2012 -0700
3464+
3465+ Fixes error when clicking OpenStack logo.
3466+
3467+ Fixes bug 1052677.
3468+
3469+ Change-Id: I796f23c4e9c5439b7263957cb4ec1b8fa864f398
3470+
3471+ openstack_dashboard/settings.py | 2 +-
3472+ 1 file changed, 1 insertion(+), 1 deletion(-)
3473+
3474+commit 6a57296d652e90aff105fea4b0d224ee0b2d1dc1
3475 Author: Brian Waldon <bcwaldon@gmail.com>
3476 Date: Thu Sep 13 13:48:18 2012 -0700
3477
3478 Allow any python-swiftclient v1.1 through v1.X
3479
3480- Fixes bug 1050670
3481-
3482 Change-Id: I86c29764e43b204b4eea361c9b3b6519a2ab1d24
3483
3484 tools/pip-requires | 2 +-
3485 1 file changed, 1 insertion(+), 1 deletion(-)
3486
3487-commit 55002fddefc25ac3c075e96c450316997a45d456
3488+commit 0ba2753953f065ffed0cb254ac1d1dc473cefd97
3489 Author: Thierry Carrez <thierry@openstack.org>
3490-Date: Wed Sep 12 00:27:08 2012 +0200
3491+Date: Wed Sep 12 00:20:02 2012 +0200
3492
3493- Set FINAL versioning
3494-
3495- Set FINAL=True in preparation for RC1 publication
3496-
3497- Change-Id: Ib4301a63f94f0cfb8cc3556c70a0344434737128
3498+ Open Grizzly (2013.1)
3499+
3500+ Bump version number on master to open up Grizzly development.
3501+
3502+ Change-Id: I3a71a2aaa0519501ae64d9f00f1b45398502445a
3503
3504 horizon/version.py | 2 +-
3505 1 file changed, 1 insertion(+), 1 deletion(-)
3506
3507=== modified file 'MANIFEST.in'
3508--- MANIFEST.in 2012-08-16 14:01:33 +0000
3509+++ MANIFEST.in 2012-11-26 19:56:34 +0000
3510@@ -1,7 +1,7 @@
3511 recursive-include bin *.js
3512 recursive-include doc *.py *.rst *.css *.js *.html *.conf *.jpg *.gif *.png *.css_t
3513 recursive-include horizon *.html *.css *.js *.csv *.template *.tmpl *.mo *.po
3514-recursive-include openstack_dashboard *.html *.js *.less *.mo *.po *.example *.eot *.svg *.ttf *.woff *.png *.ico *.wsgi *.gif
3515+recursive-include openstack_dashboard *.html *.js *.less *.mo *.po *.example *.eot *.svg *.ttf *.woff *.png *.ico *.wsgi *.gif *.csv *.template
3516 recursive-include tools *.py *.sh
3517
3518 include AUTHORS
3519
3520=== modified file 'PKG-INFO'
3521--- PKG-INFO 2012-07-06 11:38:55 +0000
3522+++ PKG-INFO 2012-11-26 19:56:34 +0000
3523@@ -1,6 +1,6 @@
3524 Metadata-Version: 1.1
3525 Name: horizon
3526-Version: 2012.2
3527+Version: 2013.1
3528 Summary: The OpenStack Dashboard.
3529 Home-page: https://github.com/openstack/horizon/
3530 Author: OpenStack
3531@@ -140,3 +140,4 @@
3532 Classifier: Operating System :: OS Independent
3533 Classifier: Programming Language :: Python
3534 Classifier: Topic :: Internet :: WWW/HTTP
3535+Classifier: Environment :: OpenStack
3536
3537=== modified file 'debian/changelog'
3538--- debian/changelog 2012-10-09 12:42:12 +0000
3539+++ debian/changelog 2012-11-26 19:56:34 +0000
3540@@ -1,3 +1,21 @@
3541+horizon (2013.1~g1-0ubuntu1~cloud0) precise-grizzly; urgency=low
3542+
3543+ * New upstream release for the Ubuntu Cloud Archive.
3544+
3545+ -- Chuck Short <zulcss@ubuntu.com> Mon, 26 Nov 2012 13:34:27 -0600
3546+
3547+horizon (2013.1~g1-0ubuntu1) raring; urgency=low
3548+
3549+ [ Adam Gandelman ]
3550+ * debian/patches/add_juju_settings_pannel.patch: Disable during
3551+ Grizzly dev. cycle.
3552+
3553+ [ Chuck Short ]
3554+ * New upstream relase.
3555+ * Refreshed patches.
3556+
3557+ -- Chuck Short <zulcss@ubuntu.com> Fri, 23 Nov 2012 08:49:14 -0600
3558+
3559 horizon (2012.2-0ubuntu2~cloud0) precise-folsom; urgency=low
3560
3561 * New release candidate for the Ubuntu Cloud Archive.
3562
3563=== modified file 'debian/patches/fix-dashboard-manage.patch'
3564--- debian/patches/fix-dashboard-manage.patch 2012-09-07 12:35:36 +0000
3565+++ debian/patches/fix-dashboard-manage.patch 2012-11-26 19:56:34 +0000
3566@@ -1,8 +1,7 @@
3567-Index: horizon-2012.2/manage.py
3568-===================================================================
3569---- horizon-2012.2.orig/manage.py 2012-09-04 16:32:01.000000000 -0700
3570-+++ horizon-2012.2/manage.py 2012-09-04 16:32:52.250690667 -0700
3571-@@ -5,6 +5,8 @@
3572+diff -Naurp horizon-2013.1.orig/manage.py horizon-2013.1/manage.py
3573+--- horizon-2013.1.orig/manage.py 2012-11-20 22:59:38.000000000 -0600
3574++++ horizon-2013.1/manage.py 2012-11-21 12:28:58.773240222 -0600
3575+@@ -5,6 +5,8 @@ import sys
3576
3577 from django.core.management import execute_from_command_line
3578
3579
3580=== modified file 'debian/patches/fix-ubuntu-tests.patch'
3581--- debian/patches/fix-ubuntu-tests.patch 2012-09-07 12:35:36 +0000
3582+++ debian/patches/fix-ubuntu-tests.patch 2012-11-26 19:56:34 +0000
3583@@ -1,15 +1,14 @@
3584-Index: horizon-2012.2/run_tests.sh
3585-===================================================================
3586---- horizon-2012.2.orig/run_tests.sh 2012-08-23 18:52:34.891973319 -0700
3587-+++ horizon-2012.2/run_tests.sh 2012-08-23 18:53:15.879971813 -0700
3588-@@ -274,25 +274,25 @@
3589+diff -Naurp horizon-2013.1.orig/run_tests.sh horizon-2013.1/run_tests.sh
3590+--- horizon-2013.1.orig/run_tests.sh 2012-11-20 22:59:39.000000000 -0600
3591++++ horizon-2013.1/run_tests.sh 2012-11-21 12:25:55.197240133 -0600
3592+@@ -292,25 +292,25 @@ function run_tests_all {
3593 if [ "$NOSE_WITH_HTML_OUTPUT" = '1' ]; then
3594 export NOSE_HTML_OUT_FILE='horizon_nose_results.html'
3595 fi
3596 - ${command_wrapper} coverage erase
3597-- ${command_wrapper} coverage run -p $root/manage.py test horizon --settings=horizon.tests.testsettings $testargs
3598+- ${command_wrapper} coverage run -p $root/manage.py test horizon --settings=horizon.test.settings $testopts
3599 + ${command_wrapper} python-coverage erase
3600-+ ${command_wrapper} python-coverage run -p $root/manage.py test horizon --settings=horizon.tests.testsettings $testargs
3601++ ${command_wrapper} python-coverage run -p $root/manage.py test horizon --settings=horizon.test.settings $testopts
3602 # get results of the Horizon tests
3603 HORIZON_RESULT=$?
3604
3605@@ -18,17 +17,16 @@
3606 - if [ "$NOSE_WITH_HTML_OUTPUT" = '1' ]; then
3607 - export NOSE_HTML_OUT_FILE='dashboard_nose_results.html'
3608 - fi
3609-- ${command_wrapper} coverage run -p $root/manage.py test openstack_dashboard --settings=openstack_dashboard.test.settings $testargs
3610-- # get results of the openstack_dashboard tests
3611+- ${command_wrapper} coverage run -p $root/manage.py test openstack_dashboard --settings=openstack_dashboard.test.settings $testopts
3612++ #echo "Running openstack_dashboard tests"
3613++ #export NOSE_XUNIT_FILE=openstack_dashboard/nosetests.xml
3614++ #if [ "$NOSE_WITH_HTML_OUTPUT" = '1' ]; then
3615++ # export NOSE_HTML_OUT_FILE='dashboard_nose_results.html'
3616++ #fi
3617++ #${command_wrapper} coverage run -p $root/manage.py test openstack_dashboard --settings=openstack_dashboard.test.settings $testopts
3618+ # get results of the openstack_dashboard tests
3619 - DASHBOARD_RESULT=$?
3620-+# echo "Running openstack_dashboard tests"
3621-+# export NOSE_XUNIT_FILE=openstack_dashboard/nosetests.xml
3622-+# if [ "$NOSE_WITH_HTML_OUTPUT" = '1' ]; then
3623-+# export NOSE_HTML_OUT_FILE='dashboard_nose_results.html'
3624-+# fi
3625-+# ${command_wrapper} python-coverage run -p $root/manage.py test openstack_dashboard --settings=openstack_dashboard.test.settings $testargs
3626-+# # get results of the openstack_dashboard tests
3627-+# DASHBOARD_RESULT=$?
3628++ #DASHBOARD_RESULT=$?
3629
3630 if [ $with_coverage -eq 1 ]; then
3631 echo "Generating coverage reports"
3632@@ -41,15 +39,3 @@
3633 fi
3634 # Remove the leftover coverage files from the -p flag earlier.
3635 rm -f .coverage.*
3636-Index: horizon-2012.2/horizon/tests/testsettings.py
3637-===================================================================
3638---- horizon-2012.2.orig/horizon/tests/testsettings.py 2012-08-23 18:52:34.647973328 -0700
3639-+++ horizon-2012.2/horizon/tests/testsettings.py 2012-08-23 18:54:36.615968847 -0700
3640-@@ -98,7 +98,6 @@
3641- TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
3642- NOSE_ARGS = ['--nocapture',
3643- '--nologcapture',
3644-- '--exclude-dir=horizon/conf/',
3645- '--cover-package=horizon',
3646- '--cover-inclusive']
3647-
3648
3649=== modified file 'debian/patches/series'
3650--- debian/patches/series 2012-10-09 09:59:55 +0000
3651+++ debian/patches/series 2012-11-26 19:56:34 +0000
3652@@ -1,5 +1,8 @@
3653 fix-dashboard-django-wsgi.patch
3654 fix-dashboard-manage.patch
3655-add_juju_settings_panel.patch
3656+
3657+# Disabled during Grizzly dev. cycle
3658+#add_juju_settings_panel.patch
3659+
3660 fix-ubuntu-tests.patch
3661 ubuntu_local_settings.patch
3662
3663=== modified file 'debian/patches/ubuntu_local_settings.patch'
3664--- debian/patches/ubuntu_local_settings.patch 2012-09-21 08:03:36 +0000
3665+++ debian/patches/ubuntu_local_settings.patch 2012-11-26 19:56:34 +0000
3666@@ -1,31 +1,16 @@
3667-Author: Adam Gandelman <adamg@canonical.com>
3668-Date: Mon Sep 10 20:53:00 PDT 2012
3669-Subject: Squash all patches that update the default local_settings.py.example.
3670-
3671-This patch combines all previous patches that update local_settings.py.example.
3672-The example local_settings.py is what gets installed as the default installation
3673-in Ubuntu package.
3674-
3675-Previous patches were:
3676- * turn-off-debug.patch
3677- * use-memcache.patch (LP: #968850)
3678- * set_login_redirects.patch (LP: #1037349)
3679- * disable_online_compression.patch (LP: #1024326)
3680-
3681-Index: horizon-2013.1/openstack_dashboard/local/local_settings.py.example
3682-===================================================================
3683---- horizon-2013.1.orig/openstack_dashboard/local/local_settings.py.example 2012-09-11 21:09:15.000000000 -0700
3684-+++ horizon-2013.1/openstack_dashboard/local/local_settings.py.example 2012-09-11 21:11:53.957057760 -0700
3685-@@ -2,7 +2,7 @@
3686+diff -Naurp horizon-2013.1.orig/openstack_dashboard/local/local_settings.py.example horizon-2013.1/openstack_dashboard/local/local_settings.py.example
3687+--- horizon-2013.1.orig/openstack_dashboard/local/local_settings.py.example 2012-11-20 22:59:38.000000000 -0600
3688++++ horizon-2013.1/openstack_dashboard/local/local_settings.py.example 2012-11-21 12:35:19.701240407 -0600
3689+@@ -4,7 +4,7 @@ from django.utils.translation import uge
3690
3691- from django.utils.translation import ugettext_lazy as _
3692+ from openstack_dashboard import exceptions
3693
3694 -DEBUG = True
3695 +DEBUG = False
3696 TEMPLATE_DEBUG = DEBUG
3697
3698 # Set SSL proxy settings:
3699-@@ -38,7 +38,7 @@
3700+@@ -49,13 +49,29 @@ LOCAL_PATH = os.path.dirname(os.path.abs
3701 # We recommend you use memcached for development; otherwise after every reload
3702 # of the django development server, you will have to login again. To use
3703 # memcached set CACHE_BACKED to something like 'memcached://127.0.0.1:11211/'
3704@@ -34,11 +19,9 @@
3705
3706 # Send email to the console by default
3707 EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
3708-@@ -145,3 +145,19 @@
3709- }
3710- }
3711- }
3712-+
3713+ # Or send them to /dev/null
3714+ #EMAIL_BACKEND = 'django.core.mail.backends.dummy.EmailBackend'
3715+
3716 +# Enable the Ubuntu theme if it is present.
3717 +try:
3718 + from ubuntu_theme import *
3719@@ -54,3 +37,7 @@
3720 +# offline compression by default. To enable online compression, install
3721 +# the node-less package and enable the following option.
3722 +COMPRESS_OFFLINE = True
3723++
3724+ # Configure these for your outgoing email host
3725+ # EMAIL_HOST = 'smtp.my-company.com'
3726+ # EMAIL_PORT = 25
3727
3728=== modified file 'doc/source/ref/run_tests.rst'
3729--- doc/source/ref/run_tests.rst 2012-07-06 11:38:55 +0000
3730+++ doc/source/ref/run_tests.rst 2012-11-26 19:56:34 +0000
3731@@ -43,6 +43,25 @@
3732 This isn't recommended, but can be a timesaver when you only need to run
3733 the code tests and not the frontend tests during development.
3734
3735+Running a subset of tests
3736+-------------------------
3737+
3738+Instead of running all tests, you can specify an individual directory, file,
3739+class, or method that contains test code.
3740+
3741+To run the tests in the ``horizon/test/tests/tables.py`` file::
3742+
3743+ ./run_tests.sh horizon.test.tests.tables
3744+
3745+To run the tests in the `WorkflowsTests` class in
3746+``horizon/test/tests/workflows``::
3747+
3748+ ./run_tests.sh horizon.test.tests.workflows:WorkflowsTests
3749+
3750+To run just the `WorkflowsTests.test_workflow_view` test method::
3751+
3752+ ./run_tests.sh horizon.test.tests.workflows:WorkflowsTests.test_workflow_view
3753+
3754 Using Dashboard and Panel Templates
3755 ===================================
3756
3757
3758=== modified file 'doc/source/ref/test.rst'
3759--- doc/source/ref/test.rst 2012-07-06 11:38:55 +0000
3760+++ doc/source/ref/test.rst 2012-11-26 19:56:34 +0000
3761@@ -2,10 +2,18 @@
3762 Horizon TestCase Classes
3763 ========================
3764
3765-.. module:: horizon.test
3766-
3767-Horizon provides several useful base classes for testing both views and
3768-API functions.
3769+.. module:: horizon.test.helpers
3770+
3771+Horizon provides a base test case class which provides several useful
3772+pre-prepared attributes for testing Horizon components.
3773+
3774+.. autoclass:: TestCase
3775+ :members:
3776+
3777+.. module :: openstack_dashboard.test.helpers
3778+
3779+The OpenStack Dashboard also provides test case classes for greater
3780+ease-of-use when testing APIs and OpenStack-specific auth scenarios.
3781
3782 .. autoclass:: TestCase
3783 :members:
3784
3785=== modified file 'doc/source/testing.rst'
3786--- doc/source/testing.rst 2012-07-06 11:38:55 +0000
3787+++ doc/source/testing.rst 2012-11-26 19:56:34 +0000
3788@@ -19,6 +19,8 @@
3789 To run the tests::
3790
3791 $ ./run_tests.sh
3792+
3793+It's also possible to :doc:`run a subset of unit tests<ref/run_tests>`.
3794
3795 .. seealso::
3796
3797
3798=== modified file 'doc/source/topics/testing.rst'
3799--- doc/source/topics/testing.rst 2012-07-06 11:38:55 +0000
3800+++ doc/source/topics/testing.rst 2012-11-26 19:56:34 +0000
3801@@ -170,12 +170,12 @@
3802 necessary.
3803
3804 To that end, Horizon includes several custom assertions to make these tasks
3805-easier. :meth:`~horizon.test.TestCase.assertNoFormErrors`,
3806-:meth:`~horizon.test.TestCase.assertMessageCount`, and
3807-:meth:`~horizon.test.TestCase.asertNoMessages` all exist for exactly these
3808-purposes. Moreover, they provide useful output when things go wrong so you're
3809-not left scratching your head wondering why your view test didn't redirect
3810-as expected when you posted a form.
3811+easier. :meth:`~horizon.test.helpers.TestCase.assertNoFormErrors`,
3812+:meth:`~horizon.test.helpers.TestCase.assertMessageCount`, and
3813+:meth:`~horizon.test.helpers.TestCase.asertNoMessages` all exist for exactly
3814+these purposes. Moreover, they provide useful output when things go wrong so
3815+you're not left scratching your head wondering why your view test didn't
3816+redirect as expected when you posted a form.
3817
3818 .. _debugging_unit_tests:
3819
3820@@ -185,14 +185,14 @@
3821 Tips and tricks
3822 ---------------
3823
3824-#. Use :meth:`~horizon.test.TestCase.assertNoFormErrors` immediately after
3825- your ``client.post`` call for tests that handle form views. This will
3826+#. Use :meth:`~horizon.test.helpers.TestCase.assertNoFormErrors` immediately
3827+ after your ``client.post`` call for tests that handle form views. This will
3828 immediately fail if your form POST failed due to a validation error and
3829 tell you what the error was.
3830
3831-#. Use :meth:`~horizon.test.TestCase.assertMessageCount` and
3832- :meth:`~horizon.test.TestCase.asertNoMessages` when a piece of code is
3833- failing inexplicably. Since the core error handlers attach user-facing
3834+#. Use :meth:`~horizon.test.helpers.TestCase.assertMessageCount` and
3835+ :meth:`~horizon.test.helpers.TestCase.asertNoMessages` when a piece of code
3836+ is failing inexplicably. Since the core error handlers attach user-facing
3837 error messages (and since the core logging is silenced during test runs)
3838 these methods give you the dual benefit of verifying the output you expect
3839 while clearly showing you the problematic error message if they fail.
3840@@ -270,7 +270,7 @@
3841 This one is the opposite of the unexpected method call. This one means you
3842 tol mox to expect a call and it didn't happen. This is almost always the
3843 result of an error in the conditions of the test. Using the
3844-:meth:`~horizon.test.TestCase.assertNoFormErrors` and
3845-:meth:`~horizon.test.TestCase.assertMessageCount` will make it readily apparent
3846-what the problem is in the majority of cases. If not, then use ``pdb`` and
3847-start interrupting the code flow to see where things are getting off track.
3848+:meth:`~horizon.test.helpers.TestCase.assertNoFormErrors` and
3849+:meth:`~horizon.test.helpers.TestCase.assertMessageCount` will make it readily
3850+apparent what the problem is in the majority of cases. If not, then use ``pdb``
3851+and start interrupting the code flow to see where things are getting off track.
3852
3853=== modified file 'horizon.egg-info/PKG-INFO'
3854--- horizon.egg-info/PKG-INFO 2012-07-06 11:38:55 +0000
3855+++ horizon.egg-info/PKG-INFO 2012-11-26 19:56:34 +0000
3856@@ -1,6 +1,6 @@
3857 Metadata-Version: 1.1
3858 Name: horizon
3859-Version: 2012.2
3860+Version: 2013.1
3861 Summary: The OpenStack Dashboard.
3862 Home-page: https://github.com/openstack/horizon/
3863 Author: OpenStack
3864@@ -140,3 +140,4 @@
3865 Classifier: Operating System :: OS Independent
3866 Classifier: Programming Language :: Python
3867 Classifier: Topic :: Internet :: WWW/HTTP
3868+Classifier: Environment :: OpenStack
3869
3870=== modified file 'horizon.egg-info/SOURCES.txt'
3871--- horizon.egg-info/SOURCES.txt 2012-09-21 08:03:36 +0000
3872+++ horizon.egg-info/SOURCES.txt 2012-11-26 19:56:34 +0000
3873@@ -1,4 +1,3 @@
3874-.bzrignore
3875 .gitignore
3876 .gitreview
3877 .mailmap
3878@@ -100,26 +99,20 @@
3879 horizon/middleware.py
3880 horizon/models.py
3881 horizon/site_urls.py
3882-horizon/test.py
3883 horizon/version.py
3884+horizon/views.py
3885 horizon.egg-info/PKG-INFO
3886 horizon.egg-info/SOURCES.txt
3887 horizon.egg-info/dependency_links.txt
3888 horizon.egg-info/not-zip-safe
3889 horizon.egg-info/requires.txt
3890 horizon.egg-info/top_level.txt
3891-horizon/api/__init__.py
3892-horizon/api/base.py
3893-horizon/api/glance.py
3894-horizon/api/keystone.py
3895-horizon/api/nova.py
3896-horizon/api/quantum.py
3897-horizon/api/swift.py
3898 horizon/browsers/__init__.py
3899 horizon/browsers/base.py
3900 horizon/browsers/breadcrumb.py
3901 horizon/browsers/views.py
3902 horizon/conf/__init__.py
3903+horizon/conf/default.py
3904 horizon/conf/dash_template/__init__.py
3905 horizon/conf/dash_template/dashboard.py.tmpl
3906 horizon/conf/dash_template/models.py
3907@@ -133,337 +126,6 @@
3908 horizon/conf/panel_template/urls.py
3909 horizon/conf/panel_template/views.py
3910 horizon/conf/panel_template/templates/panel_name/index.html
3911-horizon/dashboards/__init__.py
3912-horizon/dashboards/nova/__init__.py
3913-horizon/dashboards/nova/dashboard.py
3914-horizon/dashboards/nova/models.py
3915-horizon/dashboards/nova/access_and_security/__init__.py
3916-horizon/dashboards/nova/access_and_security/panel.py
3917-horizon/dashboards/nova/access_and_security/tests.py
3918-horizon/dashboards/nova/access_and_security/urls.py
3919-horizon/dashboards/nova/access_and_security/views.py
3920-horizon/dashboards/nova/access_and_security/floating_ips/__init__.py
3921-horizon/dashboards/nova/access_and_security/floating_ips/forms.py
3922-horizon/dashboards/nova/access_and_security/floating_ips/tables.py
3923-horizon/dashboards/nova/access_and_security/floating_ips/tests.py
3924-horizon/dashboards/nova/access_and_security/floating_ips/urls.py
3925-horizon/dashboards/nova/access_and_security/floating_ips/views.py
3926-horizon/dashboards/nova/access_and_security/floating_ips/workflows.py
3927-horizon/dashboards/nova/access_and_security/keypairs/__init__.py
3928-horizon/dashboards/nova/access_and_security/keypairs/forms.py
3929-horizon/dashboards/nova/access_and_security/keypairs/tables.py
3930-horizon/dashboards/nova/access_and_security/keypairs/tests.py
3931-horizon/dashboards/nova/access_and_security/keypairs/urls.py
3932-horizon/dashboards/nova/access_and_security/keypairs/views.py
3933-horizon/dashboards/nova/access_and_security/security_groups/__init__.py
3934-horizon/dashboards/nova/access_and_security/security_groups/forms.py
3935-horizon/dashboards/nova/access_and_security/security_groups/tables.py
3936-horizon/dashboards/nova/access_and_security/security_groups/tests.py
3937-horizon/dashboards/nova/access_and_security/security_groups/urls.py
3938-horizon/dashboards/nova/access_and_security/security_groups/views.py
3939-horizon/dashboards/nova/access_and_security/templates/access_and_security/index.html
3940-horizon/dashboards/nova/access_and_security/templates/access_and_security/floating_ips/_allocate.html
3941-horizon/dashboards/nova/access_and_security/templates/access_and_security/floating_ips/allocate.html
3942-horizon/dashboards/nova/access_and_security/templates/access_and_security/floating_ips/associate.html
3943-horizon/dashboards/nova/access_and_security/templates/access_and_security/keypairs/_create.html
3944-horizon/dashboards/nova/access_and_security/templates/access_and_security/keypairs/_import.html
3945-horizon/dashboards/nova/access_and_security/templates/access_and_security/keypairs/create.html
3946-horizon/dashboards/nova/access_and_security/templates/access_and_security/keypairs/download.html
3947-horizon/dashboards/nova/access_and_security/templates/access_and_security/keypairs/import.html
3948-horizon/dashboards/nova/access_and_security/templates/access_and_security/security_groups/_create.html
3949-horizon/dashboards/nova/access_and_security/templates/access_and_security/security_groups/_edit_rules.html
3950-horizon/dashboards/nova/access_and_security/templates/access_and_security/security_groups/create.html
3951-horizon/dashboards/nova/access_and_security/templates/access_and_security/security_groups/edit_rules.html
3952-horizon/dashboards/nova/containers/__init__.py
3953-horizon/dashboards/nova/containers/browsers.py
3954-horizon/dashboards/nova/containers/forms.py
3955-horizon/dashboards/nova/containers/panel.py
3956-horizon/dashboards/nova/containers/tables.py
3957-horizon/dashboards/nova/containers/tests.py
3958-horizon/dashboards/nova/containers/urls.py
3959-horizon/dashboards/nova/containers/views.py
3960-horizon/dashboards/nova/containers/templates/containers/_copy.html
3961-horizon/dashboards/nova/containers/templates/containers/_create.html
3962-horizon/dashboards/nova/containers/templates/containers/_upload.html
3963-horizon/dashboards/nova/containers/templates/containers/copy.html
3964-horizon/dashboards/nova/containers/templates/containers/create.html
3965-horizon/dashboards/nova/containers/templates/containers/index.html
3966-horizon/dashboards/nova/containers/templates/containers/upload.html
3967-horizon/dashboards/nova/images_and_snapshots/__init__.py
3968-horizon/dashboards/nova/images_and_snapshots/panel.py
3969-horizon/dashboards/nova/images_and_snapshots/tests.py
3970-horizon/dashboards/nova/images_and_snapshots/urls.py
3971-horizon/dashboards/nova/images_and_snapshots/views.py
3972-horizon/dashboards/nova/images_and_snapshots/images/__init__.py
3973-horizon/dashboards/nova/images_and_snapshots/images/forms.py
3974-horizon/dashboards/nova/images_and_snapshots/images/panel.py
3975-horizon/dashboards/nova/images_and_snapshots/images/tables.py
3976-horizon/dashboards/nova/images_and_snapshots/images/tabs.py
3977-horizon/dashboards/nova/images_and_snapshots/images/tests.py
3978-horizon/dashboards/nova/images_and_snapshots/images/urls.py
3979-horizon/dashboards/nova/images_and_snapshots/images/views.py
3980-horizon/dashboards/nova/images_and_snapshots/snapshots/__init__.py
3981-horizon/dashboards/nova/images_and_snapshots/snapshots/forms.py
3982-horizon/dashboards/nova/images_and_snapshots/snapshots/panel.py
3983-horizon/dashboards/nova/images_and_snapshots/snapshots/tables.py
3984-horizon/dashboards/nova/images_and_snapshots/snapshots/tests.py
3985-horizon/dashboards/nova/images_and_snapshots/snapshots/urls.py
3986-horizon/dashboards/nova/images_and_snapshots/snapshots/views.py
3987-horizon/dashboards/nova/images_and_snapshots/templates/images_and_snapshots/index.html
3988-horizon/dashboards/nova/images_and_snapshots/templates/images_and_snapshots/images/_create.html
3989-horizon/dashboards/nova/images_and_snapshots/templates/images_and_snapshots/images/_detail_overview.html
3990-horizon/dashboards/nova/images_and_snapshots/templates/images_and_snapshots/images/_update.html
3991-horizon/dashboards/nova/images_and_snapshots/templates/images_and_snapshots/images/create.html
3992-horizon/dashboards/nova/images_and_snapshots/templates/images_and_snapshots/images/detail.html
3993-horizon/dashboards/nova/images_and_snapshots/templates/images_and_snapshots/images/update.html
3994-horizon/dashboards/nova/images_and_snapshots/templates/images_and_snapshots/snapshots/_create.html
3995-horizon/dashboards/nova/images_and_snapshots/templates/images_and_snapshots/snapshots/_detail_overview.html
3996-horizon/dashboards/nova/images_and_snapshots/templates/images_and_snapshots/snapshots/create.html
3997-horizon/dashboards/nova/images_and_snapshots/templates/images_and_snapshots/snapshots/detail.html
3998-horizon/dashboards/nova/images_and_snapshots/volume_snapshots/__init__.py
3999-horizon/dashboards/nova/images_and_snapshots/volume_snapshots/panel.py
4000-horizon/dashboards/nova/images_and_snapshots/volume_snapshots/tables.py
4001-horizon/dashboards/nova/images_and_snapshots/volume_snapshots/tabs.py
4002-horizon/dashboards/nova/images_and_snapshots/volume_snapshots/tests.py
4003-horizon/dashboards/nova/instances/__init__.py
4004-horizon/dashboards/nova/instances/forms.py
4005-horizon/dashboards/nova/instances/panel.py
4006-horizon/dashboards/nova/instances/tables.py
4007-horizon/dashboards/nova/instances/tabs.py
4008-horizon/dashboards/nova/instances/tests.py
4009-horizon/dashboards/nova/instances/urls.py
4010-horizon/dashboards/nova/instances/views.py
4011-horizon/dashboards/nova/instances/workflows.py
4012-horizon/dashboards/nova/instances/templates/instances/_detail_log.html
4013-horizon/dashboards/nova/instances/templates/instances/_detail_overview.html
4014-horizon/dashboards/nova/instances/templates/instances/_detail_vnc.html
4015-horizon/dashboards/nova/instances/templates/instances/_instance_ips.html
4016-horizon/dashboards/nova/instances/templates/instances/_launch_customize_help.html
4017-horizon/dashboards/nova/instances/templates/instances/_launch_details_help.html
4018-horizon/dashboards/nova/instances/templates/instances/_launch_volumes_help.html
4019-horizon/dashboards/nova/instances/templates/instances/_update.html
4020-horizon/dashboards/nova/instances/templates/instances/detail.html
4021-horizon/dashboards/nova/instances/templates/instances/index.html
4022-horizon/dashboards/nova/instances/templates/instances/launch.html
4023-horizon/dashboards/nova/instances/templates/instances/update.html
4024-horizon/dashboards/nova/networks/__init__.py
4025-horizon/dashboards/nova/networks/forms.py
4026-horizon/dashboards/nova/networks/panel.py
4027-horizon/dashboards/nova/networks/tables.py
4028-horizon/dashboards/nova/networks/tests.py
4029-horizon/dashboards/nova/networks/urls.py
4030-horizon/dashboards/nova/networks/views.py
4031-horizon/dashboards/nova/networks/workflows.py
4032-horizon/dashboards/nova/networks/ports/__init__.py
4033-horizon/dashboards/nova/networks/ports/tables.py
4034-horizon/dashboards/nova/networks/ports/tabs.py
4035-horizon/dashboards/nova/networks/ports/urls.py
4036-horizon/dashboards/nova/networks/ports/views.py
4037-horizon/dashboards/nova/networks/subnets/__init__.py
4038-horizon/dashboards/nova/networks/subnets/forms.py
4039-horizon/dashboards/nova/networks/subnets/tables.py
4040-horizon/dashboards/nova/networks/subnets/tabs.py
4041-horizon/dashboards/nova/networks/subnets/urls.py
4042-horizon/dashboards/nova/networks/subnets/views.py
4043-horizon/dashboards/nova/networks/templates/networks/_create.html
4044-horizon/dashboards/nova/networks/templates/networks/_detail_overview.html
4045-horizon/dashboards/nova/networks/templates/networks/_network_ips.html
4046-horizon/dashboards/nova/networks/templates/networks/_update.html
4047-horizon/dashboards/nova/networks/templates/networks/create.html
4048-horizon/dashboards/nova/networks/templates/networks/detail.html
4049-horizon/dashboards/nova/networks/templates/networks/index.html
4050-horizon/dashboards/nova/networks/templates/networks/update.html
4051-horizon/dashboards/nova/networks/templates/networks/ports/_detail_overview.html
4052-horizon/dashboards/nova/networks/templates/networks/ports/_port_ips.html
4053-horizon/dashboards/nova/networks/templates/networks/ports/detail.html
4054-horizon/dashboards/nova/networks/templates/networks/subnets/_create.html
4055-horizon/dashboards/nova/networks/templates/networks/subnets/_detail_overview.html
4056-horizon/dashboards/nova/networks/templates/networks/subnets/_update.html
4057-horizon/dashboards/nova/networks/templates/networks/subnets/create.html
4058-horizon/dashboards/nova/networks/templates/networks/subnets/detail.html
4059-horizon/dashboards/nova/networks/templates/networks/subnets/index.html
4060-horizon/dashboards/nova/networks/templates/networks/subnets/update.html
4061-horizon/dashboards/nova/overview/__init__.py
4062-horizon/dashboards/nova/overview/panel.py
4063-horizon/dashboards/nova/overview/tests.py
4064-horizon/dashboards/nova/overview/urls.py
4065-horizon/dashboards/nova/overview/views.py
4066-horizon/dashboards/nova/overview/templates/overview/usage.csv
4067-horizon/dashboards/nova/overview/templates/overview/usage.html
4068-horizon/dashboards/nova/templates/nova/_warning.html
4069-horizon/dashboards/nova/volumes/__init__.py
4070-horizon/dashboards/nova/volumes/forms.py
4071-horizon/dashboards/nova/volumes/panel.py
4072-horizon/dashboards/nova/volumes/tables.py
4073-horizon/dashboards/nova/volumes/tabs.py
4074-horizon/dashboards/nova/volumes/tests.py
4075-horizon/dashboards/nova/volumes/urls.py
4076-horizon/dashboards/nova/volumes/views.py
4077-horizon/dashboards/nova/volumes/templates/volumes/_attach.html
4078-horizon/dashboards/nova/volumes/templates/volumes/_create.html
4079-horizon/dashboards/nova/volumes/templates/volumes/_create_snapshot.html
4080-horizon/dashboards/nova/volumes/templates/volumes/_detail_overview.html
4081-horizon/dashboards/nova/volumes/templates/volumes/attach.html
4082-horizon/dashboards/nova/volumes/templates/volumes/create.html
4083-horizon/dashboards/nova/volumes/templates/volumes/create_snapshot.html
4084-horizon/dashboards/nova/volumes/templates/volumes/detail.html
4085-horizon/dashboards/nova/volumes/templates/volumes/index.html
4086-horizon/dashboards/settings/__init__.py
4087-horizon/dashboards/settings/dashboard.py
4088-horizon/dashboards/settings/models.py
4089-horizon/dashboards/settings/ec2/__init__.py
4090-horizon/dashboards/settings/ec2/forms.py
4091-horizon/dashboards/settings/ec2/panel.py
4092-horizon/dashboards/settings/ec2/tests.py
4093-horizon/dashboards/settings/ec2/urls.py
4094-horizon/dashboards/settings/ec2/views.py
4095-horizon/dashboards/settings/ec2/templates/ec2/download_form.html
4096-horizon/dashboards/settings/ec2/templates/ec2/ec2rc.sh.template
4097-horizon/dashboards/settings/ec2/templates/ec2/index.html
4098-horizon/dashboards/settings/project/__init__.py
4099-horizon/dashboards/settings/project/forms.py
4100-horizon/dashboards/settings/project/panel.py
4101-horizon/dashboards/settings/project/tables.py
4102-horizon/dashboards/settings/project/urls.py
4103-horizon/dashboards/settings/project/views.py
4104-horizon/dashboards/settings/project/templates/project/_openrc.html
4105-horizon/dashboards/settings/project/templates/project/openrc.sh.template
4106-horizon/dashboards/settings/project/templates/project/settings.html
4107-horizon/dashboards/settings/user/__init__.py
4108-horizon/dashboards/settings/user/forms.py
4109-horizon/dashboards/settings/user/panel.py
4110-horizon/dashboards/settings/user/urls.py
4111-horizon/dashboards/settings/user/views.py
4112-horizon/dashboards/settings/user/templates/user/_settings.html
4113-horizon/dashboards/settings/user/templates/user/settings.html
4114-horizon/dashboards/syspanel/__init__.py
4115-horizon/dashboards/syspanel/dashboard.py
4116-horizon/dashboards/syspanel/models.py
4117-horizon/dashboards/syspanel/flavors/__init__.py
4118-horizon/dashboards/syspanel/flavors/forms.py
4119-horizon/dashboards/syspanel/flavors/panel.py
4120-horizon/dashboards/syspanel/flavors/tables.py
4121-horizon/dashboards/syspanel/flavors/tests.py
4122-horizon/dashboards/syspanel/flavors/urls.py
4123-horizon/dashboards/syspanel/flavors/views.py
4124-horizon/dashboards/syspanel/flavors/templates/flavors/_create.html
4125-horizon/dashboards/syspanel/flavors/templates/flavors/_edit.html
4126-horizon/dashboards/syspanel/flavors/templates/flavors/create.html
4127-horizon/dashboards/syspanel/flavors/templates/flavors/edit.html
4128-horizon/dashboards/syspanel/flavors/templates/flavors/index.html
4129-horizon/dashboards/syspanel/images/__init__.py
4130-horizon/dashboards/syspanel/images/forms.py
4131-horizon/dashboards/syspanel/images/panel.py
4132-horizon/dashboards/syspanel/images/tables.py
4133-horizon/dashboards/syspanel/images/tests.py
4134-horizon/dashboards/syspanel/images/urls.py
4135-horizon/dashboards/syspanel/images/views.py
4136-horizon/dashboards/syspanel/images/templates/images/_update.html
4137-horizon/dashboards/syspanel/images/templates/images/index.html
4138-horizon/dashboards/syspanel/images/templates/images/update.html
4139-horizon/dashboards/syspanel/instances/__init__.py
4140-horizon/dashboards/syspanel/instances/panel.py
4141-horizon/dashboards/syspanel/instances/tables.py
4142-horizon/dashboards/syspanel/instances/tests.py
4143-horizon/dashboards/syspanel/instances/urls.py
4144-horizon/dashboards/syspanel/instances/views.py
4145-horizon/dashboards/syspanel/instances/templates/instances/index.html
4146-horizon/dashboards/syspanel/networks/__init__.py
4147-horizon/dashboards/syspanel/networks/forms.py
4148-horizon/dashboards/syspanel/networks/panel.py
4149-horizon/dashboards/syspanel/networks/tables.py
4150-horizon/dashboards/syspanel/networks/tests.py
4151-horizon/dashboards/syspanel/networks/urls.py
4152-horizon/dashboards/syspanel/networks/views.py
4153-horizon/dashboards/syspanel/networks/ports/__init__.py
4154-horizon/dashboards/syspanel/networks/ports/forms.py
4155-horizon/dashboards/syspanel/networks/ports/tables.py
4156-horizon/dashboards/syspanel/networks/ports/tabs.py
4157-horizon/dashboards/syspanel/networks/ports/urls.py
4158-horizon/dashboards/syspanel/networks/ports/views.py
4159-horizon/dashboards/syspanel/networks/subnets/__init__.py
4160-horizon/dashboards/syspanel/networks/subnets/forms.py
4161-horizon/dashboards/syspanel/networks/subnets/tables.py
4162-horizon/dashboards/syspanel/networks/subnets/urls.py
4163-horizon/dashboards/syspanel/networks/subnets/views.py
4164-horizon/dashboards/syspanel/networks/templates/networks/_create.html
4165-horizon/dashboards/syspanel/networks/templates/networks/_update.html
4166-horizon/dashboards/syspanel/networks/templates/networks/create.html
4167-horizon/dashboards/syspanel/networks/templates/networks/index.html
4168-horizon/dashboards/syspanel/networks/templates/networks/update.html
4169-horizon/dashboards/syspanel/networks/templates/networks/ports/_create.html
4170-horizon/dashboards/syspanel/networks/templates/networks/ports/_update.html
4171-horizon/dashboards/syspanel/networks/templates/networks/ports/create.html
4172-horizon/dashboards/syspanel/networks/templates/networks/ports/update.html
4173-horizon/dashboards/syspanel/networks/templates/networks/subnets/_create.html
4174-horizon/dashboards/syspanel/networks/templates/networks/subnets/_update.html
4175-horizon/dashboards/syspanel/networks/templates/networks/subnets/create.html
4176-horizon/dashboards/syspanel/networks/templates/networks/subnets/index.html
4177-horizon/dashboards/syspanel/networks/templates/networks/subnets/update.html
4178-horizon/dashboards/syspanel/overview/__init__.py
4179-horizon/dashboards/syspanel/overview/panel.py
4180-horizon/dashboards/syspanel/overview/tests.py
4181-horizon/dashboards/syspanel/overview/urls.py
4182-horizon/dashboards/syspanel/overview/views.py
4183-horizon/dashboards/syspanel/overview/templates/overview/usage.csv
4184-horizon/dashboards/syspanel/overview/templates/overview/usage.html
4185-horizon/dashboards/syspanel/projects/__init__.py
4186-horizon/dashboards/syspanel/projects/forms.py
4187-horizon/dashboards/syspanel/projects/panel.py
4188-horizon/dashboards/syspanel/projects/tables.py
4189-horizon/dashboards/syspanel/projects/tests.py
4190-horizon/dashboards/syspanel/projects/urls.py
4191-horizon/dashboards/syspanel/projects/views.py
4192-horizon/dashboards/syspanel/projects/workflows.py
4193-horizon/dashboards/syspanel/projects/templates/projects/_add_user.html
4194-horizon/dashboards/syspanel/projects/templates/projects/_create.html
4195-horizon/dashboards/syspanel/projects/templates/projects/_create_user.html
4196-horizon/dashboards/syspanel/projects/templates/projects/_quotas.html
4197-horizon/dashboards/syspanel/projects/templates/projects/_update.html
4198-horizon/dashboards/syspanel/projects/templates/projects/_update_members.html
4199-horizon/dashboards/syspanel/projects/templates/projects/add_user.html
4200-horizon/dashboards/syspanel/projects/templates/projects/create.html
4201-horizon/dashboards/syspanel/projects/templates/projects/create_user.html
4202-horizon/dashboards/syspanel/projects/templates/projects/index.html
4203-horizon/dashboards/syspanel/projects/templates/projects/quotas.html
4204-horizon/dashboards/syspanel/projects/templates/projects/update.html
4205-horizon/dashboards/syspanel/projects/templates/projects/usage.csv
4206-horizon/dashboards/syspanel/projects/templates/projects/usage.html
4207-horizon/dashboards/syspanel/projects/templates/projects/users.html
4208-horizon/dashboards/syspanel/quotas/__init__.py
4209-horizon/dashboards/syspanel/quotas/panel.py
4210-horizon/dashboards/syspanel/quotas/tables.py
4211-horizon/dashboards/syspanel/quotas/tests.py
4212-horizon/dashboards/syspanel/quotas/urls.py
4213-horizon/dashboards/syspanel/quotas/views.py
4214-horizon/dashboards/syspanel/quotas/templates/quotas/index.html
4215-horizon/dashboards/syspanel/services/__init__.py
4216-horizon/dashboards/syspanel/services/panel.py
4217-horizon/dashboards/syspanel/services/tables.py
4218-horizon/dashboards/syspanel/services/tests.py
4219-horizon/dashboards/syspanel/services/urls.py
4220-horizon/dashboards/syspanel/services/views.py
4221-horizon/dashboards/syspanel/services/templates/services/index.html
4222-horizon/dashboards/syspanel/users/__init__.py
4223-horizon/dashboards/syspanel/users/forms.py
4224-horizon/dashboards/syspanel/users/panel.py
4225-horizon/dashboards/syspanel/users/tables.py
4226-horizon/dashboards/syspanel/users/tests.py
4227-horizon/dashboards/syspanel/users/urls.py
4228-horizon/dashboards/syspanel/users/views.py
4229-horizon/dashboards/syspanel/users/templates/users/_create.html
4230-horizon/dashboards/syspanel/users/templates/users/_update.html
4231-horizon/dashboards/syspanel/users/templates/users/create.html
4232-horizon/dashboards/syspanel/users/templates/users/index.html
4233-horizon/dashboards/syspanel/users/templates/users/update.html
4234-horizon/dashboards/syspanel/volumes/__init__.py
4235-horizon/dashboards/syspanel/volumes/panel.py
4236-horizon/dashboards/syspanel/volumes/tables.py
4237-horizon/dashboards/syspanel/volumes/tests.py
4238-horizon/dashboards/syspanel/volumes/urls.py
4239-horizon/dashboards/syspanel/volumes/views.py
4240-horizon/dashboards/syspanel/volumes/templates/volumes/detail.html
4241-horizon/dashboards/syspanel/volumes/templates/volumes/index.html
4242 horizon/forms/__init__.py
4243 horizon/forms/base.py
4244 horizon/forms/fields.py
4245@@ -528,10 +190,6 @@
4246 horizon/management/commands/__init__.py
4247 horizon/management/commands/startdash.py
4248 horizon/management/commands/startpanel.py
4249-horizon/openstack/__init__.py
4250-horizon/openstack/common/__init__.py
4251-horizon/openstack/common/jsonutils.py
4252-horizon/openstack/common/setup.py
4253 horizon/static/bootstrap/js/bootstrap.js
4254 horizon/static/bootstrap/js/bootstrap.min.js
4255 horizon/static/horizon/js/horizon.communication.js
4256@@ -547,6 +205,7 @@
4257 horizon/static/horizon/js/horizon.tables.js
4258 horizon/static/horizon/js/horizon.tabs.js
4259 horizon/static/horizon/js/horizon.templates.js
4260+horizon/static/horizon/js/horizon.users.js
4261 horizon/static/horizon/js/horizon.utils.js
4262 horizon/static/horizon/lib/hogan-1.0.5.min.js
4263 horizon/static/horizon/lib/json2.js
4264@@ -597,6 +256,7 @@
4265 horizon/templates/horizon/common/_data_table_table_actions.html
4266 horizon/templates/horizon/common/_detail_table.html
4267 horizon/templates/horizon/common/_form_fields.html
4268+horizon/templates/horizon/common/_modal.html
4269 horizon/templates/horizon/common/_modal_form.html
4270 horizon/templates/horizon/common/_page_header.html
4271 horizon/templates/horizon/common/_progress_bar.html
4272@@ -615,75 +275,57 @@
4273 horizon/templatetags/parse_date.py
4274 horizon/templatetags/sizeformat.py
4275 horizon/templatetags/truncate_filter.py
4276-horizon/tests/__init__.py
4277-horizon/tests/base_tests.py
4278-horizon/tests/message_tests.py
4279-horizon/tests/selenium_tests.py
4280-horizon/tests/table_tests.py
4281-horizon/tests/tabs_tests.py
4282-horizon/tests/templatetag_tests.py
4283-horizon/tests/testsettings.py
4284-horizon/tests/testurls.py
4285-horizon/tests/utils_tests.py
4286-horizon/tests/workflows_tests.py
4287-horizon/tests/api_tests/__init__.py
4288-horizon/tests/api_tests/base_tests.py
4289-horizon/tests/api_tests/glance_tests.py
4290-horizon/tests/api_tests/keystone_tests.py
4291-horizon/tests/api_tests/nova_tests.py
4292-horizon/tests/api_tests/quantum_tests.py
4293-horizon/tests/api_tests/swift_tests.py
4294-horizon/tests/templates/404.html
4295-horizon/tests/templates/_tab.html
4296-horizon/tests/templates/base-sidebar.html
4297-horizon/tests/templates/tab_group.html
4298-horizon/tests/templates/workflow.html
4299-horizon/tests/test_dashboards/__init__.py
4300-horizon/tests/test_dashboards/cats/__init__.py
4301-horizon/tests/test_dashboards/cats/dashboard.py
4302-horizon/tests/test_dashboards/cats/models.py
4303-horizon/tests/test_dashboards/cats/kittens/__init__.py
4304-horizon/tests/test_dashboards/cats/kittens/models.py
4305-horizon/tests/test_dashboards/cats/kittens/panel.py
4306-horizon/tests/test_dashboards/cats/kittens/tests.py
4307-horizon/tests/test_dashboards/cats/kittens/urls.py
4308-horizon/tests/test_dashboards/cats/kittens/views.py
4309-horizon/tests/test_dashboards/cats/kittens/templates/kittens/index.html
4310-horizon/tests/test_dashboards/cats/static/cats/css/cats.css
4311-horizon/tests/test_dashboards/cats/static/cats/js/cats.js
4312-horizon/tests/test_dashboards/cats/templates/cats/base.html
4313-horizon/tests/test_dashboards/cats/tigers/__init__.py
4314-horizon/tests/test_dashboards/cats/tigers/models.py
4315-horizon/tests/test_dashboards/cats/tigers/panel.py
4316-horizon/tests/test_dashboards/cats/tigers/tests.py
4317-horizon/tests/test_dashboards/cats/tigers/urls.py
4318-horizon/tests/test_dashboards/cats/tigers/views.py
4319-horizon/tests/test_dashboards/cats/tigers/templates/tigers/index.html
4320-horizon/tests/test_dashboards/dogs/__init__.py
4321-horizon/tests/test_dashboards/dogs/dashboard.py
4322-horizon/tests/test_dashboards/dogs/models.py
4323-horizon/tests/test_dashboards/dogs/puppies/__init__.py
4324-horizon/tests/test_dashboards/dogs/puppies/models.py
4325-horizon/tests/test_dashboards/dogs/puppies/panel.py
4326-horizon/tests/test_dashboards/dogs/puppies/tests.py
4327-horizon/tests/test_dashboards/dogs/puppies/urls.py
4328-horizon/tests/test_dashboards/dogs/puppies/views.py
4329-horizon/tests/test_dashboards/dogs/puppies/templates/puppies/index.html
4330-horizon/tests/test_dashboards/dogs/static/dogs/css/dogs.css
4331-horizon/tests/test_dashboards/dogs/static/dogs/js/dogs.js
4332-horizon/tests/test_dashboards/dogs/templates/dogs/base.html
4333-horizon/tests/test_data/__init__.py
4334-horizon/tests/test_data/exceptions.py
4335-horizon/tests/test_data/glance_data.py
4336-horizon/tests/test_data/keystone_data.py
4337-horizon/tests/test_data/nova_data.py
4338-horizon/tests/test_data/quantum_data.py
4339-horizon/tests/test_data/swift_data.py
4340-horizon/tests/test_data/utils.py
4341-horizon/usage/__init__.py
4342-horizon/usage/base.py
4343-horizon/usage/tables.py
4344-horizon/usage/views.py
4345+horizon/test/__init__.py
4346+horizon/test/helpers.py
4347+horizon/test/settings.py
4348+horizon/test/urls.py
4349+horizon/test/templates/404.html
4350+horizon/test/templates/_tab.html
4351+horizon/test/templates/base-sidebar.html
4352+horizon/test/templates/tab_group.html
4353+horizon/test/templates/workflow.html
4354+horizon/test/templates/registration/login.html
4355+horizon/test/test_dashboards/__init__.py
4356+horizon/test/test_dashboards/cats/__init__.py
4357+horizon/test/test_dashboards/cats/dashboard.py
4358+horizon/test/test_dashboards/cats/models.py
4359+horizon/test/test_dashboards/cats/kittens/__init__.py
4360+horizon/test/test_dashboards/cats/kittens/models.py
4361+horizon/test/test_dashboards/cats/kittens/panel.py
4362+horizon/test/test_dashboards/cats/kittens/urls.py
4363+horizon/test/test_dashboards/cats/kittens/views.py
4364+horizon/test/test_dashboards/cats/kittens/templates/kittens/index.html
4365+horizon/test/test_dashboards/cats/static/cats/css/cats.css
4366+horizon/test/test_dashboards/cats/static/cats/js/cats.js
4367+horizon/test/test_dashboards/cats/templates/cats/base.html
4368+horizon/test/test_dashboards/cats/tigers/__init__.py
4369+horizon/test/test_dashboards/cats/tigers/models.py
4370+horizon/test/test_dashboards/cats/tigers/panel.py
4371+horizon/test/test_dashboards/cats/tigers/urls.py
4372+horizon/test/test_dashboards/cats/tigers/views.py
4373+horizon/test/test_dashboards/cats/tigers/templates/tigers/index.html
4374+horizon/test/test_dashboards/dogs/__init__.py
4375+horizon/test/test_dashboards/dogs/dashboard.py
4376+horizon/test/test_dashboards/dogs/models.py
4377+horizon/test/test_dashboards/dogs/puppies/__init__.py
4378+horizon/test/test_dashboards/dogs/puppies/models.py
4379+horizon/test/test_dashboards/dogs/puppies/panel.py
4380+horizon/test/test_dashboards/dogs/puppies/urls.py
4381+horizon/test/test_dashboards/dogs/puppies/views.py
4382+horizon/test/test_dashboards/dogs/puppies/templates/puppies/index.html
4383+horizon/test/test_dashboards/dogs/static/dogs/css/dogs.css
4384+horizon/test/test_dashboards/dogs/static/dogs/js/dogs.js
4385+horizon/test/test_dashboards/dogs/templates/dogs/base.html
4386+horizon/test/tests/__init__.py
4387+horizon/test/tests/base.py
4388+horizon/test/tests/messages.py
4389+horizon/test/tests/middleware.py
4390+horizon/test/tests/selenium.py
4391+horizon/test/tests/tables.py
4392+horizon/test/tests/tabs.py
4393+horizon/test/tests/templatetags.py
4394+horizon/test/tests/utils.py
4395+horizon/test/tests/workflows.py
4396 horizon/utils/__init__.py
4397 horizon/utils/fields.py
4398 horizon/utils/filters.py
4399@@ -692,15 +334,358 @@
4400 horizon/utils/memoized.py
4401 horizon/utils/secret_key.py
4402 horizon/utils/validators.py
4403-horizon/views/__init__.py
4404-horizon/views/base.py
4405 horizon/workflows/__init__.py
4406 horizon/workflows/base.py
4407 horizon/workflows/views.py
4408 openstack_dashboard/__init__.py
4409+openstack_dashboard/context_processors.py
4410 openstack_dashboard/exceptions.py
4411 openstack_dashboard/settings.py
4412 openstack_dashboard/urls.py
4413+openstack_dashboard/views.py
4414+openstack_dashboard/api/__init__.py
4415+openstack_dashboard/api/base.py
4416+openstack_dashboard/api/cinder.py
4417+openstack_dashboard/api/glance.py
4418+openstack_dashboard/api/keystone.py
4419+openstack_dashboard/api/nova.py
4420+openstack_dashboard/api/quantum.py
4421+openstack_dashboard/api/swift.py
4422+openstack_dashboard/dashboards/__init__.py
4423+openstack_dashboard/dashboards/admin/__init__.py
4424+openstack_dashboard/dashboards/admin/dashboard.py
4425+openstack_dashboard/dashboards/admin/models.py
4426+openstack_dashboard/dashboards/admin/flavors/__init__.py
4427+openstack_dashboard/dashboards/admin/flavors/forms.py
4428+openstack_dashboard/dashboards/admin/flavors/panel.py
4429+openstack_dashboard/dashboards/admin/flavors/tables.py
4430+openstack_dashboard/dashboards/admin/flavors/tests.py
4431+openstack_dashboard/dashboards/admin/flavors/urls.py
4432+openstack_dashboard/dashboards/admin/flavors/views.py
4433+openstack_dashboard/dashboards/admin/flavors/extras/__init__.py
4434+openstack_dashboard/dashboards/admin/flavors/extras/forms.py
4435+openstack_dashboard/dashboards/admin/flavors/extras/tables.py
4436+openstack_dashboard/dashboards/admin/flavors/extras/tests.py
4437+openstack_dashboard/dashboards/admin/flavors/extras/urls.py
4438+openstack_dashboard/dashboards/admin/flavors/extras/views.py
4439+openstack_dashboard/dashboards/admin/flavors/templates/flavors/_create.html
4440+openstack_dashboard/dashboards/admin/flavors/templates/flavors/_edit.html
4441+openstack_dashboard/dashboards/admin/flavors/templates/flavors/create.html
4442+openstack_dashboard/dashboards/admin/flavors/templates/flavors/edit.html
4443+openstack_dashboard/dashboards/admin/flavors/templates/flavors/index.html
4444+openstack_dashboard/dashboards/admin/flavors/templates/flavors/extras/_create.html
4445+openstack_dashboard/dashboards/admin/flavors/templates/flavors/extras/_edit.html
4446+openstack_dashboard/dashboards/admin/flavors/templates/flavors/extras/_index.html
4447+openstack_dashboard/dashboards/admin/flavors/templates/flavors/extras/create.html
4448+openstack_dashboard/dashboards/admin/flavors/templates/flavors/extras/edit.html
4449+openstack_dashboard/dashboards/admin/flavors/templates/flavors/extras/index.html
4450+openstack_dashboard/dashboards/admin/images/__init__.py
4451+openstack_dashboard/dashboards/admin/images/forms.py
4452+openstack_dashboard/dashboards/admin/images/panel.py
4453+openstack_dashboard/dashboards/admin/images/tables.py
4454+openstack_dashboard/dashboards/admin/images/tests.py
4455+openstack_dashboard/dashboards/admin/images/urls.py
4456+openstack_dashboard/dashboards/admin/images/views.py
4457+openstack_dashboard/dashboards/admin/images/templates/images/_update.html
4458+openstack_dashboard/dashboards/admin/images/templates/images/index.html
4459+openstack_dashboard/dashboards/admin/images/templates/images/update.html
4460+openstack_dashboard/dashboards/admin/info/__init__.py
4461+openstack_dashboard/dashboards/admin/info/panel.py
4462+openstack_dashboard/dashboards/admin/info/tables.py
4463+openstack_dashboard/dashboards/admin/info/tabs.py
4464+openstack_dashboard/dashboards/admin/info/tests.py
4465+openstack_dashboard/dashboards/admin/info/urls.py
4466+openstack_dashboard/dashboards/admin/info/views.py
4467+openstack_dashboard/dashboards/admin/info/templates/info/index.html
4468+openstack_dashboard/dashboards/admin/instances/__init__.py
4469+openstack_dashboard/dashboards/admin/instances/panel.py
4470+openstack_dashboard/dashboards/admin/instances/tables.py
4471+openstack_dashboard/dashboards/admin/instances/tests.py
4472+openstack_dashboard/dashboards/admin/instances/urls.py
4473+openstack_dashboard/dashboards/admin/instances/views.py
4474+openstack_dashboard/dashboards/admin/instances/templates/instances/index.html
4475+openstack_dashboard/dashboards/admin/networks/__init__.py
4476+openstack_dashboard/dashboards/admin/networks/forms.py
4477+openstack_dashboard/dashboards/admin/networks/panel.py
4478+openstack_dashboard/dashboards/admin/networks/tables.py
4479+openstack_dashboard/dashboards/admin/networks/tests.py
4480+openstack_dashboard/dashboards/admin/networks/urls.py
4481+openstack_dashboard/dashboards/admin/networks/views.py
4482+openstack_dashboard/dashboards/admin/networks/ports/__init__.py
4483+openstack_dashboard/dashboards/admin/networks/ports/forms.py
4484+openstack_dashboard/dashboards/admin/networks/ports/tables.py
4485+openstack_dashboard/dashboards/admin/networks/ports/tabs.py
4486+openstack_dashboard/dashboards/admin/networks/ports/urls.py
4487+openstack_dashboard/dashboards/admin/networks/ports/views.py
4488+openstack_dashboard/dashboards/admin/networks/subnets/__init__.py
4489+openstack_dashboard/dashboards/admin/networks/subnets/forms.py
4490+openstack_dashboard/dashboards/admin/networks/subnets/tables.py
4491+openstack_dashboard/dashboards/admin/networks/subnets/urls.py
4492+openstack_dashboard/dashboards/admin/networks/subnets/views.py
4493+openstack_dashboard/dashboards/admin/networks/templates/networks/_create.html
4494+openstack_dashboard/dashboards/admin/networks/templates/networks/_update.html
4495+openstack_dashboard/dashboards/admin/networks/templates/networks/create.html
4496+openstack_dashboard/dashboards/admin/networks/templates/networks/index.html
4497+openstack_dashboard/dashboards/admin/networks/templates/networks/update.html
4498+openstack_dashboard/dashboards/admin/networks/templates/networks/ports/_create.html
4499+openstack_dashboard/dashboards/admin/networks/templates/networks/ports/_update.html
4500+openstack_dashboard/dashboards/admin/networks/templates/networks/ports/create.html
4501+openstack_dashboard/dashboards/admin/networks/templates/networks/ports/update.html
4502+openstack_dashboard/dashboards/admin/networks/templates/networks/subnets/_create.html
4503+openstack_dashboard/dashboards/admin/networks/templates/networks/subnets/_update.html
4504+openstack_dashboard/dashboards/admin/networks/templates/networks/subnets/create.html
4505+openstack_dashboard/dashboards/admin/networks/templates/networks/subnets/index.html
4506+openstack_dashboard/dashboards/admin/networks/templates/networks/subnets/update.html
4507+openstack_dashboard/dashboards/admin/overview/__init__.py
4508+openstack_dashboard/dashboards/admin/overview/panel.py
4509+openstack_dashboard/dashboards/admin/overview/tests.py
4510+openstack_dashboard/dashboards/admin/overview/urls.py
4511+openstack_dashboard/dashboards/admin/overview/views.py
4512+openstack_dashboard/dashboards/admin/overview/templates/overview/usage.csv
4513+openstack_dashboard/dashboards/admin/overview/templates/overview/usage.html
4514+openstack_dashboard/dashboards/admin/projects/__init__.py
4515+openstack_dashboard/dashboards/admin/projects/forms.py
4516+openstack_dashboard/dashboards/admin/projects/panel.py
4517+openstack_dashboard/dashboards/admin/projects/tables.py
4518+openstack_dashboard/dashboards/admin/projects/tests.py
4519+openstack_dashboard/dashboards/admin/projects/urls.py
4520+openstack_dashboard/dashboards/admin/projects/views.py
4521+openstack_dashboard/dashboards/admin/projects/workflows.py
4522+openstack_dashboard/dashboards/admin/projects/templates/projects/_add_user.html
4523+openstack_dashboard/dashboards/admin/projects/templates/projects/_create.html
4524+openstack_dashboard/dashboards/admin/projects/templates/projects/_create_user.html
4525+openstack_dashboard/dashboards/admin/projects/templates/projects/_quotas.html
4526+openstack_dashboard/dashboards/admin/projects/templates/projects/_update.html
4527+openstack_dashboard/dashboards/admin/projects/templates/projects/_update_members.html
4528+openstack_dashboard/dashboards/admin/projects/templates/projects/add_user.html
4529+openstack_dashboard/dashboards/admin/projects/templates/projects/create.html
4530+openstack_dashboard/dashboards/admin/projects/templates/projects/create_user.html
4531+openstack_dashboard/dashboards/admin/projects/templates/projects/index.html
4532+openstack_dashboard/dashboards/admin/projects/templates/projects/quotas.html
4533+openstack_dashboard/dashboards/admin/projects/templates/projects/update.html
4534+openstack_dashboard/dashboards/admin/projects/templates/projects/usage.html
4535+openstack_dashboard/dashboards/admin/projects/templates/projects/users.html
4536+openstack_dashboard/dashboards/admin/users/__init__.py
4537+openstack_dashboard/dashboards/admin/users/forms.py
4538+openstack_dashboard/dashboards/admin/users/panel.py
4539+openstack_dashboard/dashboards/admin/users/tables.py
4540+openstack_dashboard/dashboards/admin/users/tests.py
4541+openstack_dashboard/dashboards/admin/users/urls.py
4542+openstack_dashboard/dashboards/admin/users/views.py
4543+openstack_dashboard/dashboards/admin/users/templates/users/_create.html
4544+openstack_dashboard/dashboards/admin/users/templates/users/_update.html
4545+openstack_dashboard/dashboards/admin/users/templates/users/create.html
4546+openstack_dashboard/dashboards/admin/users/templates/users/index.html
4547+openstack_dashboard/dashboards/admin/users/templates/users/update.html
4548+openstack_dashboard/dashboards/admin/volumes/__init__.py
4549+openstack_dashboard/dashboards/admin/volumes/forms.py
4550+openstack_dashboard/dashboards/admin/volumes/panel.py
4551+openstack_dashboard/dashboards/admin/volumes/tables.py
4552+openstack_dashboard/dashboards/admin/volumes/tests.py
4553+openstack_dashboard/dashboards/admin/volumes/urls.py
4554+openstack_dashboard/dashboards/admin/volumes/views.py
4555+openstack_dashboard/dashboards/admin/volumes/templates/volumes/_create_volume_type.html
4556+openstack_dashboard/dashboards/admin/volumes/templates/volumes/create_volume_type.html
4557+openstack_dashboard/dashboards/admin/volumes/templates/volumes/detail.html
4558+openstack_dashboard/dashboards/admin/volumes/templates/volumes/index.html
4559+openstack_dashboard/dashboards/project/__init__.py
4560+openstack_dashboard/dashboards/project/dashboard.py
4561+openstack_dashboard/dashboards/project/models.py
4562+openstack_dashboard/dashboards/project/access_and_security/__init__.py
4563+openstack_dashboard/dashboards/project/access_and_security/panel.py
4564+openstack_dashboard/dashboards/project/access_and_security/tests.py
4565+openstack_dashboard/dashboards/project/access_and_security/urls.py
4566+openstack_dashboard/dashboards/project/access_and_security/views.py
4567+openstack_dashboard/dashboards/project/access_and_security/floating_ips/__init__.py
4568+openstack_dashboard/dashboards/project/access_and_security/floating_ips/forms.py
4569+openstack_dashboard/dashboards/project/access_and_security/floating_ips/tables.py
4570+openstack_dashboard/dashboards/project/access_and_security/floating_ips/tests.py
4571+openstack_dashboard/dashboards/project/access_and_security/floating_ips/urls.py
4572+openstack_dashboard/dashboards/project/access_and_security/floating_ips/views.py
4573+openstack_dashboard/dashboards/project/access_and_security/floating_ips/workflows.py
4574+openstack_dashboard/dashboards/project/access_and_security/keypairs/__init__.py
4575+openstack_dashboard/dashboards/project/access_and_security/keypairs/forms.py
4576+openstack_dashboard/dashboards/project/access_and_security/keypairs/tables.py
4577+openstack_dashboard/dashboards/project/access_and_security/keypairs/tests.py
4578+openstack_dashboard/dashboards/project/access_and_security/keypairs/urls.py
4579+openstack_dashboard/dashboards/project/access_and_security/keypairs/views.py
4580+openstack_dashboard/dashboards/project/access_and_security/security_groups/__init__.py
4581+openstack_dashboard/dashboards/project/access_and_security/security_groups/forms.py
4582+openstack_dashboard/dashboards/project/access_and_security/security_groups/tables.py
4583+openstack_dashboard/dashboards/project/access_and_security/security_groups/tests.py
4584+openstack_dashboard/dashboards/project/access_and_security/security_groups/urls.py
4585+openstack_dashboard/dashboards/project/access_and_security/security_groups/views.py
4586+openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/index.html
4587+openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/floating_ips/_allocate.html
4588+openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/floating_ips/allocate.html
4589+openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/floating_ips/associate.html
4590+openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/keypairs/_create.html
4591+openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/keypairs/_import.html
4592+openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/keypairs/create.html
4593+openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/keypairs/download.html
4594+openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/keypairs/import.html
4595+openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/security_groups/_create.html
4596+openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/security_groups/_edit_rules.html
4597+openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/security_groups/create.html
4598+openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/security_groups/edit_rules.html
4599+openstack_dashboard/dashboards/project/containers/__init__.py
4600+openstack_dashboard/dashboards/project/containers/browsers.py
4601+openstack_dashboard/dashboards/project/containers/forms.py
4602+openstack_dashboard/dashboards/project/containers/panel.py
4603+openstack_dashboard/dashboards/project/containers/tables.py
4604+openstack_dashboard/dashboards/project/containers/tests.py
4605+openstack_dashboard/dashboards/project/containers/urls.py
4606+openstack_dashboard/dashboards/project/containers/views.py
4607+openstack_dashboard/dashboards/project/containers/templates/containers/_copy.html
4608+openstack_dashboard/dashboards/project/containers/templates/containers/_create.html
4609+openstack_dashboard/dashboards/project/containers/templates/containers/_upload.html
4610+openstack_dashboard/dashboards/project/containers/templates/containers/copy.html
4611+openstack_dashboard/dashboards/project/containers/templates/containers/create.html
4612+openstack_dashboard/dashboards/project/containers/templates/containers/index.html
4613+openstack_dashboard/dashboards/project/containers/templates/containers/upload.html
4614+openstack_dashboard/dashboards/project/images_and_snapshots/__init__.py
4615+openstack_dashboard/dashboards/project/images_and_snapshots/panel.py
4616+openstack_dashboard/dashboards/project/images_and_snapshots/tests.py
4617+openstack_dashboard/dashboards/project/images_and_snapshots/urls.py
4618+openstack_dashboard/dashboards/project/images_and_snapshots/views.py
4619+openstack_dashboard/dashboards/project/images_and_snapshots/images/__init__.py
4620+openstack_dashboard/dashboards/project/images_and_snapshots/images/forms.py
4621+openstack_dashboard/dashboards/project/images_and_snapshots/images/tables.py
4622+openstack_dashboard/dashboards/project/images_and_snapshots/images/tabs.py
4623+openstack_dashboard/dashboards/project/images_and_snapshots/images/tests.py
4624+openstack_dashboard/dashboards/project/images_and_snapshots/images/urls.py
4625+openstack_dashboard/dashboards/project/images_and_snapshots/images/views.py
4626+openstack_dashboard/dashboards/project/images_and_snapshots/snapshots/__init__.py
4627+openstack_dashboard/dashboards/project/images_and_snapshots/snapshots/forms.py
4628+openstack_dashboard/dashboards/project/images_and_snapshots/snapshots/tables.py
4629+openstack_dashboard/dashboards/project/images_and_snapshots/snapshots/tests.py
4630+openstack_dashboard/dashboards/project/images_and_snapshots/snapshots/urls.py
4631+openstack_dashboard/dashboards/project/images_and_snapshots/snapshots/views.py
4632+openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/index.html
4633+openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/images/_create.html
4634+openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/images/_detail_overview.html
4635+openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/images/_update.html
4636+openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/images/create.html
4637+openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/images/detail.html
4638+openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/images/update.html
4639+openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/snapshots/_create.html
4640+openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/snapshots/_detail_overview.html
4641+openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/snapshots/create.html
4642+openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/snapshots/detail.html
4643+openstack_dashboard/dashboards/project/images_and_snapshots/volume_snapshots/__init__.py
4644+openstack_dashboard/dashboards/project/images_and_snapshots/volume_snapshots/tables.py
4645+openstack_dashboard/dashboards/project/images_and_snapshots/volume_snapshots/tabs.py
4646+openstack_dashboard/dashboards/project/images_and_snapshots/volume_snapshots/tests.py
4647+openstack_dashboard/dashboards/project/instances/__init__.py
4648+openstack_dashboard/dashboards/project/instances/forms.py
4649+openstack_dashboard/dashboards/project/instances/panel.py
4650+openstack_dashboard/dashboards/project/instances/tables.py
4651+openstack_dashboard/dashboards/project/instances/tabs.py
4652+openstack_dashboard/dashboards/project/instances/tests.py
4653+openstack_dashboard/dashboards/project/instances/urls.py
4654+openstack_dashboard/dashboards/project/instances/views.py
4655+openstack_dashboard/dashboards/project/instances/workflows.py
4656+openstack_dashboard/dashboards/project/instances/templates/instances/_detail_log.html
4657+openstack_dashboard/dashboards/project/instances/templates/instances/_detail_overview.html
4658+openstack_dashboard/dashboards/project/instances/templates/instances/_detail_vnc.html
4659+openstack_dashboard/dashboards/project/instances/templates/instances/_instance_ips.html
4660+openstack_dashboard/dashboards/project/instances/templates/instances/_launch_customize_help.html
4661+openstack_dashboard/dashboards/project/instances/templates/instances/_launch_details_help.html
4662+openstack_dashboard/dashboards/project/instances/templates/instances/_launch_volumes_help.html
4663+openstack_dashboard/dashboards/project/instances/templates/instances/_update.html
4664+openstack_dashboard/dashboards/project/instances/templates/instances/detail.html
4665+openstack_dashboard/dashboards/project/instances/templates/instances/index.html
4666+openstack_dashboard/dashboards/project/instances/templates/instances/launch.html
4667+openstack_dashboard/dashboards/project/instances/templates/instances/update.html
4668+openstack_dashboard/dashboards/project/networks/__init__.py
4669+openstack_dashboard/dashboards/project/networks/forms.py
4670+openstack_dashboard/dashboards/project/networks/panel.py
4671+openstack_dashboard/dashboards/project/networks/tables.py
4672+openstack_dashboard/dashboards/project/networks/tests.py
4673+openstack_dashboard/dashboards/project/networks/urls.py
4674+openstack_dashboard/dashboards/project/networks/views.py
4675+openstack_dashboard/dashboards/project/networks/workflows.py
4676+openstack_dashboard/dashboards/project/networks/ports/__init__.py
4677+openstack_dashboard/dashboards/project/networks/ports/tables.py
4678+openstack_dashboard/dashboards/project/networks/ports/tabs.py
4679+openstack_dashboard/dashboards/project/networks/ports/urls.py
4680+openstack_dashboard/dashboards/project/networks/ports/views.py
4681+openstack_dashboard/dashboards/project/networks/subnets/__init__.py
4682+openstack_dashboard/dashboards/project/networks/subnets/forms.py
4683+openstack_dashboard/dashboards/project/networks/subnets/tables.py
4684+openstack_dashboard/dashboards/project/networks/subnets/tabs.py
4685+openstack_dashboard/dashboards/project/networks/subnets/urls.py
4686+openstack_dashboard/dashboards/project/networks/subnets/views.py
4687+openstack_dashboard/dashboards/project/networks/templates/networks/_create.html
4688+openstack_dashboard/dashboards/project/networks/templates/networks/_detail_overview.html
4689+openstack_dashboard/dashboards/project/networks/templates/networks/_network_ips.html
4690+openstack_dashboard/dashboards/project/networks/templates/networks/_update.html
4691+openstack_dashboard/dashboards/project/networks/templates/networks/create.html
4692+openstack_dashboard/dashboards/project/networks/templates/networks/detail.html
4693+openstack_dashboard/dashboards/project/networks/templates/networks/index.html
4694+openstack_dashboard/dashboards/project/networks/templates/networks/update.html
4695+openstack_dashboard/dashboards/project/networks/templates/networks/ports/_detail_overview.html
4696+openstack_dashboard/dashboards/project/networks/templates/networks/ports/_port_ips.html
4697+openstack_dashboard/dashboards/project/networks/templates/networks/ports/detail.html
4698+openstack_dashboard/dashboards/project/networks/templates/networks/subnets/_create.html
4699+openstack_dashboard/dashboards/project/networks/templates/networks/subnets/_detail_overview.html
4700+openstack_dashboard/dashboards/project/networks/templates/networks/subnets/_update.html
4701+openstack_dashboard/dashboards/project/networks/templates/networks/subnets/create.html
4702+openstack_dashboard/dashboards/project/networks/templates/networks/subnets/detail.html
4703+openstack_dashboard/dashboards/project/networks/templates/networks/subnets/index.html
4704+openstack_dashboard/dashboards/project/networks/templates/networks/subnets/update.html
4705+openstack_dashboard/dashboards/project/overview/__init__.py
4706+openstack_dashboard/dashboards/project/overview/panel.py
4707+openstack_dashboard/dashboards/project/overview/tests.py
4708+openstack_dashboard/dashboards/project/overview/urls.py
4709+openstack_dashboard/dashboards/project/overview/views.py
4710+openstack_dashboard/dashboards/project/overview/templates/overview/usage.csv
4711+openstack_dashboard/dashboards/project/overview/templates/overview/usage.html
4712+openstack_dashboard/dashboards/project/volumes/__init__.py
4713+openstack_dashboard/dashboards/project/volumes/forms.py
4714+openstack_dashboard/dashboards/project/volumes/panel.py
4715+openstack_dashboard/dashboards/project/volumes/tables.py
4716+openstack_dashboard/dashboards/project/volumes/tabs.py
4717+openstack_dashboard/dashboards/project/volumes/tests.py
4718+openstack_dashboard/dashboards/project/volumes/urls.py
4719+openstack_dashboard/dashboards/project/volumes/views.py
4720+openstack_dashboard/dashboards/project/volumes/templates/volumes/_attach.html
4721+openstack_dashboard/dashboards/project/volumes/templates/volumes/_create.html
4722+openstack_dashboard/dashboards/project/volumes/templates/volumes/_create_snapshot.html
4723+openstack_dashboard/dashboards/project/volumes/templates/volumes/_detail_overview.html
4724+openstack_dashboard/dashboards/project/volumes/templates/volumes/attach.html
4725+openstack_dashboard/dashboards/project/volumes/templates/volumes/create.html
4726+openstack_dashboard/dashboards/project/volumes/templates/volumes/create_snapshot.html
4727+openstack_dashboard/dashboards/project/volumes/templates/volumes/detail.html
4728+openstack_dashboard/dashboards/project/volumes/templates/volumes/index.html
4729+openstack_dashboard/dashboards/settings/__init__.py
4730+openstack_dashboard/dashboards/settings/dashboard.py
4731+openstack_dashboard/dashboards/settings/models.py
4732+openstack_dashboard/dashboards/settings/ec2/__init__.py
4733+openstack_dashboard/dashboards/settings/ec2/forms.py
4734+openstack_dashboard/dashboards/settings/ec2/panel.py
4735+openstack_dashboard/dashboards/settings/ec2/tests.py
4736+openstack_dashboard/dashboards/settings/ec2/urls.py
4737+openstack_dashboard/dashboards/settings/ec2/views.py
4738+openstack_dashboard/dashboards/settings/ec2/templates/ec2/download_form.html
4739+openstack_dashboard/dashboards/settings/ec2/templates/ec2/ec2rc.sh.template
4740+openstack_dashboard/dashboards/settings/ec2/templates/ec2/index.html
4741+openstack_dashboard/dashboards/settings/project/__init__.py
4742+openstack_dashboard/dashboards/settings/project/forms.py
4743+openstack_dashboard/dashboards/settings/project/panel.py
4744+openstack_dashboard/dashboards/settings/project/tables.py
4745+openstack_dashboard/dashboards/settings/project/urls.py
4746+openstack_dashboard/dashboards/settings/project/views.py
4747+openstack_dashboard/dashboards/settings/project/templates/project/_openrc.html
4748+openstack_dashboard/dashboards/settings/project/templates/project/openrc.sh.template
4749+openstack_dashboard/dashboards/settings/project/templates/project/settings.html
4750+openstack_dashboard/dashboards/settings/user/__init__.py
4751+openstack_dashboard/dashboards/settings/user/forms.py
4752+openstack_dashboard/dashboards/settings/user/panel.py
4753+openstack_dashboard/dashboards/settings/user/urls.py
4754+openstack_dashboard/dashboards/settings/user/views.py
4755+openstack_dashboard/dashboards/settings/user/templates/user/_settings.html
4756+openstack_dashboard/dashboards/settings/user/templates/user/settings.html
4757 openstack_dashboard/local/__init__.py
4758 openstack_dashboard/local/local_settings.py.example
4759 openstack_dashboard/locale/bg_BG/LC_MESSAGES/django.mo
4760@@ -713,6 +698,8 @@
4761 openstack_dashboard/locale/es/LC_MESSAGES/django.po
4762 openstack_dashboard/locale/fr/LC_MESSAGES/django.mo
4763 openstack_dashboard/locale/fr/LC_MESSAGES/django.po
4764+openstack_dashboard/locale/it/LC_MESSAGES/django.mo
4765+openstack_dashboard/locale/it/LC_MESSAGES/django.po
4766 openstack_dashboard/locale/ja/LC_MESSAGES/django.mo
4767 openstack_dashboard/locale/ja/LC_MESSAGES/django.po
4768 openstack_dashboard/locale/ko_KR/LC_MESSAGES/django.mo
4769@@ -725,10 +712,15 @@
4770 openstack_dashboard/locale/pt/LC_MESSAGES/django.po
4771 openstack_dashboard/locale/pt_BR/LC_MESSAGES/django.mo
4772 openstack_dashboard/locale/pt_BR/LC_MESSAGES/django.po
4773+openstack_dashboard/locale/ru/LC_MESSAGES/django.mo
4774+openstack_dashboard/locale/ru/LC_MESSAGES/django.po
4775 openstack_dashboard/locale/zh_CN/LC_MESSAGES/django.mo
4776 openstack_dashboard/locale/zh_CN/LC_MESSAGES/django.po
4777 openstack_dashboard/locale/zh_TW/LC_MESSAGES/django.mo
4778 openstack_dashboard/locale/zh_TW/LC_MESSAGES/django.po
4779+openstack_dashboard/openstack/__init__.py
4780+openstack_dashboard/openstack/common/__init__.py
4781+openstack_dashboard/openstack/common/setup.py
4782 openstack_dashboard/static/bootstrap/img/glyphicons-halflings-white.png
4783 openstack_dashboard/static/bootstrap/img/glyphicons-halflings.png
4784 openstack_dashboard/static/bootstrap/less/accordion.less
4785@@ -781,9 +773,43 @@
4786 openstack_dashboard/templates/403.html
4787 openstack_dashboard/templates/404.html
4788 openstack_dashboard/templates/500.html
4789+openstack_dashboard/templates/_header.html
4790 openstack_dashboard/templates/_stylesheets.html
4791 openstack_dashboard/test/__init__.py
4792+openstack_dashboard/test/error_pages_urls.py
4793+openstack_dashboard/test/helpers.py
4794 openstack_dashboard/test/settings.py
4795+openstack_dashboard/test/api_tests/__init__.py
4796+openstack_dashboard/test/api_tests/base_tests.py
4797+openstack_dashboard/test/api_tests/glance_tests.py
4798+openstack_dashboard/test/api_tests/keystone_tests.py
4799+openstack_dashboard/test/api_tests/nova_tests.py
4800+openstack_dashboard/test/api_tests/quantum_tests.py
4801+openstack_dashboard/test/api_tests/swift_tests.py
4802+openstack_dashboard/test/templates/404.html
4803+openstack_dashboard/test/templates/500.html
4804+openstack_dashboard/test/templates/_tab.html
4805+openstack_dashboard/test/templates/base-sidebar.html
4806+openstack_dashboard/test/templates/tab_group.html
4807+openstack_dashboard/test/templates/workflow.html
4808+openstack_dashboard/test/templates/registration/login.html
4809+openstack_dashboard/test/test_data/__init__.py
4810+openstack_dashboard/test/test_data/exceptions.py
4811+openstack_dashboard/test/test_data/glance_data.py
4812+openstack_dashboard/test/test_data/keystone_data.py
4813+openstack_dashboard/test/test_data/nova_data.py
4814+openstack_dashboard/test/test_data/quantum_data.py
4815+openstack_dashboard/test/test_data/swift_data.py
4816+openstack_dashboard/test/test_data/utils.py
4817+openstack_dashboard/test/tests/__init__.py
4818+openstack_dashboard/test/tests/error_pages.py
4819+openstack_dashboard/test/tests/quotas.py
4820+openstack_dashboard/test/tests/selenium.py
4821+openstack_dashboard/usage/__init__.py
4822+openstack_dashboard/usage/base.py
4823+openstack_dashboard/usage/quotas.py
4824+openstack_dashboard/usage/tables.py
4825+openstack_dashboard/usage/views.py
4826 openstack_dashboard/wsgi/django.wsgi
4827 tools/install_venv.py
4828 tools/pip-requires
4829
4830=== modified file 'horizon.egg-info/requires.txt'
4831--- horizon.egg-info/requires.txt 2012-09-21 08:03:36 +0000
4832+++ horizon.egg-info/requires.txt 2012-11-26 19:56:34 +0000
4833@@ -1,6 +1,7 @@
4834 Django>=1.4
4835 django_compressor
4836-django_openstack_auth
4837+django_openstack_auth>=1.0.3
4838+netaddr
4839 python-cinderclient
4840 python-glanceclient<2
4841 python-keystoneclient
4842
4843=== modified file 'horizon/__init__.py'
4844--- horizon/__init__.py 2012-07-06 11:38:55 +0000
4845+++ horizon/__init__.py 2012-11-26 19:56:34 +0000
4846@@ -14,7 +14,7 @@
4847 # License for the specific language governing permissions and limitations
4848 # under the License.
4849
4850-""" The Horizon OpenStack Dashboard interface.
4851+""" The Horizon interface.
4852
4853 Contains the core Horizon classes--:class:`~horizon.Dashboard` and
4854 :class:`horizon.Panel`--the dynamic URLconf for Horizon, and common interface
4855
4856=== removed directory 'horizon/api'
4857=== removed file 'horizon/api/__init__.py'
4858--- horizon/api/__init__.py 2012-08-16 14:01:33 +0000
4859+++ horizon/api/__init__.py 1970-01-01 00:00:00 +0000
4860@@ -1,39 +0,0 @@
4861-# vim: tabstop=4 shiftwidth=4 softtabstop=4
4862-
4863-# Copyright 2012 United States Government as represented by the
4864-# Administrator of the National Aeronautics and Space Administration.
4865-# All Rights Reserved.
4866-#
4867-# Copyright 2012 Nebula, Inc.
4868-#
4869-# Licensed under the Apache License, Version 2.0 (the "License"); you may
4870-# not use this file except in compliance with the License. You may obtain
4871-# a copy of the License at
4872-#
4873-# http://www.apache.org/licenses/LICENSE-2.0
4874-#
4875-# Unless required by applicable law or agreed to in writing, software
4876-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
4877-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
4878-# License for the specific language governing permissions and limitations
4879-# under the License.
4880-
4881-"""
4882-Methods and interface objects used to interact with external APIs.
4883-
4884-API method calls return objects that are in many cases objects with
4885-attributes that are direct maps to the data returned from the API http call.
4886-Unfortunately, these objects are also often constructed dynamically, making
4887-it difficult to know what data is available from the API object. Because of
4888-this, all API calls should wrap their returned object in one defined here,
4889-using only explicitly defined atributes and/or methods.
4890-
4891-In other words, Horizon developers not working on horizon.api
4892-shouldn't need to understand the finer details of APIs for
4893-Keystone/Nova/Glance/Swift et. al.
4894-"""
4895-from horizon.api.glance import *
4896-from horizon.api.keystone import *
4897-from horizon.api.nova import *
4898-from horizon.api.swift import *
4899-from horizon.api.quantum import *
4900
4901=== removed file 'horizon/api/base.py'
4902--- horizon/api/base.py 2012-07-06 11:38:55 +0000
4903+++ horizon/api/base.py 1970-01-01 00:00:00 +0000
4904@@ -1,118 +0,0 @@
4905-# vim: tabstop=4 shiftwidth=4 softtabstop=4
4906-
4907-# Copyright 2012 United States Government as represented by the
4908-# Administrator of the National Aeronautics and Space Administration.
4909-# All Rights Reserved.
4910-#
4911-# Copyright 2012 Nebula, Inc.
4912-#
4913-# Licensed under the Apache License, Version 2.0 (the "License"); you may
4914-# not use this file except in compliance with the License. You may obtain
4915-# a copy of the License at
4916-#
4917-# http://www.apache.org/licenses/LICENSE-2.0
4918-#
4919-# Unless required by applicable law or agreed to in writing, software
4920-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
4921-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
4922-# License for the specific language governing permissions and limitations
4923-# under the License.
4924-
4925-import logging
4926-
4927-from django.conf import settings
4928-
4929-from horizon import exceptions
4930-
4931-
4932-__all__ = ('APIResourceWrapper', 'APIDictWrapper',
4933- 'get_service_from_catalog', 'url_for',)
4934-
4935-
4936-LOG = logging.getLogger(__name__)
4937-
4938-
4939-class APIResourceWrapper(object):
4940- """ Simple wrapper for api objects
4941-
4942- Define _attrs on the child class and pass in the
4943- api object as the only argument to the constructor
4944- """
4945- _attrs = []
4946-
4947- def __init__(self, apiresource):
4948- self._apiresource = apiresource
4949-
4950- def __getattr__(self, attr):
4951- if attr in self._attrs:
4952- # __getattr__ won't find properties
4953- return self._apiresource.__getattribute__(attr)
4954- else:
4955- msg = ('Attempted to access unknown attribute "%s" on '
4956- 'APIResource object of type "%s" wrapping resource of '
4957- 'type "%s".') % (attr, self.__class__,
4958- self._apiresource.__class__)
4959- LOG.debug(exceptions.error_color(msg))
4960- raise AttributeError(attr)
4961-
4962-
4963-class APIDictWrapper(object):
4964- """ Simple wrapper for api dictionaries
4965-
4966- Some api calls return dictionaries. This class provides identical
4967- behavior as APIResourceWrapper, except that it will also behave as a
4968- dictionary, in addition to attribute accesses.
4969-
4970- Attribute access is the preferred method of access, to be
4971- consistent with api resource objects from novclient.
4972- """
4973- def __init__(self, apidict):
4974- self._apidict = apidict
4975-
4976- def __getattr__(self, attr):
4977- try:
4978- return self._apidict[attr]
4979- except KeyError:
4980- msg = 'Unknown attribute "%(attr)s" on APIResource object ' \
4981- 'of type "%(cls)s"' % {'attr': attr, 'cls': self.__class__}
4982- LOG.debug(exceptions.error_color(msg))
4983- raise AttributeError(msg)
4984-
4985- def __getitem__(self, item):
4986- try:
4987- return self.__getattr__(item)
4988- except AttributeError, e:
4989- # caller is expecting a KeyError
4990- raise KeyError(e)
4991-
4992- def get(self, item, default=None):
4993- try:
4994- return self.__getattr__(item)
4995- except AttributeError:
4996- return default
4997-
4998-
4999-def get_service_from_catalog(catalog, service_type):
5000- if catalog:
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches