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
=== removed file '.bzrignore'
--- .bzrignore 2012-07-06 11:38:55 +0000
+++ .bzrignore 1970-01-01 00:00:00 +0000
@@ -1,12 +0,0 @@
1horizon/.installed.cfg
2horizon/bin
3horizon/develop-eggs/
4horizon/downloads/
5horizon/eggs/
6horizon/parts/
7horizon/src/django_nova.egg-info
8horizon/src/django_openstack.egg-info
9django-nova-syspanel/src/django_nova_syspanel.egg-info
10openstack-dashboard/.dashboard-venv
11openstack-dashboard/local/dashboard_openstack.sqlite3
12openstack-dashboard/local/local_settings.py
130
=== removed directory '.pc'
=== removed file '.pc/.quilt_patches'
--- .pc/.quilt_patches 2012-07-06 11:38:55 +0000
+++ .pc/.quilt_patches 1970-01-01 00:00:00 +0000
@@ -1,1 +0,0 @@
1debian/patches
20
=== removed file '.pc/.quilt_series'
--- .pc/.quilt_series 2012-07-06 11:38:55 +0000
+++ .pc/.quilt_series 1970-01-01 00:00:00 +0000
@@ -1,1 +0,0 @@
1series
20
=== removed file '.pc/.version'
--- .pc/.version 2011-12-02 16:21:52 +0000
+++ .pc/.version 1970-01-01 00:00:00 +0000
@@ -1,1 +0,0 @@
12
20
=== removed directory '.pc/add_juju_settings_panel.patch'
=== removed directory '.pc/add_juju_settings_panel.patch/horizon'
=== removed directory '.pc/add_juju_settings_panel.patch/horizon/dashboards'
=== removed directory '.pc/add_juju_settings_panel.patch/horizon/dashboards/settings'
=== removed file '.pc/add_juju_settings_panel.patch/horizon/dashboards/settings/dashboard.py'
--- .pc/add_juju_settings_panel.patch/horizon/dashboards/settings/dashboard.py 2012-10-09 09:59:55 +0000
+++ .pc/add_juju_settings_panel.patch/horizon/dashboards/settings/dashboard.py 1970-01-01 00:00:00 +0000
@@ -1,31 +0,0 @@
1# vim: tabstop=4 shiftwidth=4 softtabstop=4
2
3# Copyright 2012 Openstack, LLC
4# Copyright 2012 Nebula, Inc.
5#
6# Licensed under the Apache License, Version 2.0 (the "License"); you may
7# not use this file except in compliance with the License. You may obtain
8# a copy of the License at
9#
10# http://www.apache.org/licenses/LICENSE-2.0
11#
12# Unless required by applicable law or agreed to in writing, software
13# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15# License for the specific language governing permissions and limitations
16# under the License.
17
18from django.utils.translation import ugettext_lazy as _
19
20import horizon
21
22
23class Settings(horizon.Dashboard):
24 name = _("Settings")
25 slug = "settings"
26 panels = ('user', 'project', 'ec2')
27 default_panel = 'user'
28 nav = False
29
30
31horizon.register(Settings)
320
=== removed directory '.pc/add_juju_settings_panel.patch/horizon/dashboards/settings/juju'
=== removed file '.pc/add_juju_settings_panel.patch/horizon/dashboards/settings/juju/__init__.py'
=== removed file '.pc/add_juju_settings_panel.patch/horizon/dashboards/settings/juju/forms.py'
=== removed file '.pc/add_juju_settings_panel.patch/horizon/dashboards/settings/juju/panel.py'
=== removed file '.pc/add_juju_settings_panel.patch/horizon/dashboards/settings/juju/urls.py'
=== removed file '.pc/add_juju_settings_panel.patch/horizon/dashboards/settings/juju/views.py'
=== removed directory '.pc/add_juju_settings_panel.patch/horizon/dashboards/settings/templates'
=== removed directory '.pc/add_juju_settings_panel.patch/horizon/dashboards/settings/templates/settings'
=== removed directory '.pc/add_juju_settings_panel.patch/horizon/dashboards/settings/templates/settings/juju'
=== removed file '.pc/add_juju_settings_panel.patch/horizon/dashboards/settings/templates/settings/juju/download_form.html'
=== removed file '.pc/add_juju_settings_panel.patch/horizon/dashboards/settings/templates/settings/juju/environments.yaml.template'
=== removed file '.pc/add_juju_settings_panel.patch/horizon/dashboards/settings/templates/settings/juju/index.html'
=== removed file '.pc/applied-patches'
--- .pc/applied-patches 2012-10-09 09:59:55 +0000
+++ .pc/applied-patches 1970-01-01 00:00:00 +0000
@@ -1,5 +0,0 @@
1fix-dashboard-django-wsgi.patch
2fix-dashboard-manage.patch
3add_juju_settings_panel.patch
4fix-ubuntu-tests.patch
5ubuntu_local_settings.patch
60
=== removed directory '.pc/fix-dashboard-django-wsgi.patch'
=== removed directory '.pc/fix-dashboard-django-wsgi.patch/openstack_dashboard'
=== removed directory '.pc/fix-dashboard-django-wsgi.patch/openstack_dashboard/wsgi'
=== removed file '.pc/fix-dashboard-django-wsgi.patch/openstack_dashboard/wsgi/django.wsgi'
--- .pc/fix-dashboard-django-wsgi.patch/openstack_dashboard/wsgi/django.wsgi 2012-03-02 12:11:59 +0000
+++ .pc/fix-dashboard-django-wsgi.patch/openstack_dashboard/wsgi/django.wsgi 1970-01-01 00:00:00 +0000
@@ -1,15 +0,0 @@
1import logging
2import os
3import sys
4import django.core.handlers.wsgi
5from django.conf import settings
6
7# Add this file path to sys.path in order to import settings
8sys.path.insert(0, os.path.join(os.path.dirname(os.path.realpath(__file__)), '../..'))
9os.environ['DJANGO_SETTINGS_MODULE'] = 'openstack_dashboard.settings'
10sys.stdout = sys.stderr
11
12DEBUG = False
13
14application = django.core.handlers.wsgi.WSGIHandler()
15
160
=== removed directory '.pc/fix-dashboard-manage.patch'
=== removed file '.pc/fix-dashboard-manage.patch/manage.py'
--- .pc/fix-dashboard-manage.patch/manage.py 2012-09-07 12:35:36 +0000
+++ .pc/fix-dashboard-manage.patch/manage.py 1970-01-01 00:00:00 +0000
@@ -1,11 +0,0 @@
1#!/usr/bin/env python
2
3import os
4import sys
5
6from django.core.management import execute_from_command_line
7
8if __name__ == "__main__":
9 os.environ.setdefault("DJANGO_SETTINGS_MODULE",
10 "openstack_dashboard.settings")
11 execute_from_command_line(sys.argv)
120
=== removed directory '.pc/fix-ubuntu-tests.patch'
=== removed directory '.pc/fix-ubuntu-tests.patch/horizon'
=== removed directory '.pc/fix-ubuntu-tests.patch/horizon/tests'
=== removed file '.pc/fix-ubuntu-tests.patch/horizon/tests/testsettings.py'
--- .pc/fix-ubuntu-tests.patch/horizon/tests/testsettings.py 2012-08-16 14:01:33 +0000
+++ .pc/fix-ubuntu-tests.patch/horizon/tests/testsettings.py 1970-01-01 00:00:00 +0000
@@ -1,197 +0,0 @@
1# vim: tabstop=4 shiftwidth=4 softtabstop=4
2
3# Copyright 2012 United States Government as represented by the
4# Administrator of the National Aeronautics and Space Administration.
5# All Rights Reserved.
6#
7# Copyright 2012 Nebula, Inc.
8#
9# Licensed under the Apache License, Version 2.0 (the "License"); you may
10# not use this file except in compliance with the License. You may obtain
11# a copy of the License at
12#
13# http://www.apache.org/licenses/LICENSE-2.0
14#
15# Unless required by applicable law or agreed to in writing, software
16# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
17# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
18# License for the specific language governing permissions and limitations
19# under the License.
20
21import os
22import socket
23
24from django.utils.translation import ugettext_lazy as _
25
26from openstack_dashboard.exceptions import UNAUTHORIZED, RECOVERABLE, NOT_FOUND
27
28socket.setdefaulttimeout(1)
29
30LOGIN_URL = '/auth/login/'
31LOGOUT_URL = '/auth/logout/'
32LOGIN_REDIRECT_URL = '/'
33
34ROOT_PATH = os.path.dirname(os.path.abspath(__file__))
35DEBUG = False
36TEMPLATE_DEBUG = DEBUG
37TESTSERVER = 'http://testserver'
38
39USE_I18N = True
40USE_L10N = True
41USE_TZ = True
42
43DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3'}}
44
45DEFAULT_EXCEPTION_REPORTER_FILTER = 'horizon.exceptions.HorizonReporterFilter'
46
47INSTALLED_APPS = (
48 'django.contrib.sessions',
49 'django.contrib.staticfiles',
50 'django.contrib.messages',
51 'django.contrib.humanize',
52 'django_nose',
53 'openstack_auth',
54 'compressor',
55 'horizon',
56 'horizon.tests',
57 'horizon.dashboards.nova',
58 'horizon.dashboards.syspanel',
59 'horizon.dashboards.settings',
60 'horizon.tests.test_dashboards.cats',
61 'horizon.tests.test_dashboards.dogs'
62)
63
64MIDDLEWARE_CLASSES = (
65 'django.middleware.common.CommonMiddleware',
66 'django.middleware.csrf.CsrfViewMiddleware',
67 'django.contrib.sessions.middleware.SessionMiddleware',
68 'django.contrib.auth.middleware.AuthenticationMiddleware',
69 'django.contrib.messages.middleware.MessageMiddleware',
70 'django.middleware.doc.XViewMiddleware',
71 'django.middleware.locale.LocaleMiddleware',
72 'horizon.middleware.HorizonMiddleware')
73
74TEMPLATE_CONTEXT_PROCESSORS = (
75 'django.core.context_processors.debug',
76 'django.core.context_processors.i18n',
77 'django.core.context_processors.request',
78 'django.core.context_processors.media',
79 'django.core.context_processors.static',
80 'django.contrib.messages.context_processors.messages',
81 'horizon.context_processors.horizon')
82
83TEMPLATE_LOADERS = (
84 'django.template.loaders.filesystem.Loader',
85 'django.template.loaders.app_directories.Loader',
86 'horizon.loaders.TemplateLoader'
87)
88
89STATIC_URL = '/static/'
90
91MESSAGE_STORAGE = 'django.contrib.messages.storage.cookie.CookieStorage'
92
93ROOT_URLCONF = 'horizon.tests.testurls'
94TEMPLATE_DIRS = (os.path.join(ROOT_PATH, 'tests', 'templates'))
95SITE_ID = 1
96SITE_BRANDING = 'OpenStack'
97
98TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
99NOSE_ARGS = ['--nocapture',
100 '--nologcapture',
101 '--exclude-dir=horizon/conf/',
102 '--cover-package=horizon',
103 '--cover-inclusive']
104
105EMAIL_BACKEND = 'django.core.mail.backends.locmem.EmailBackend'
106SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies'
107SESSION_COOKIE_HTTPONLY = True
108SESSION_EXPIRE_AT_BROWSER_CLOSE = True
109SESSION_COOKIE_SECURE = False
110
111AUTHENTICATION_BACKENDS = ('openstack_auth.backend.KeystoneBackend',)
112
113HORIZON_CONFIG = {
114 'dashboards': ('nova', 'syspanel', 'settings'),
115 'default_dashboard': 'nova',
116 "password_validator": {
117 "regex": '^.{8,18}$',
118 "help_text": _("Password must be between 8 and 18 characters.")
119 },
120 'user_home': None,
121 'help_url': "http://docs.openstack.org",
122 'exceptions': {'recoverable': RECOVERABLE,
123 'not_found': NOT_FOUND,
124 'unauthorized': UNAUTHORIZED},
125}
126
127COMPRESS_ENABLED = False
128COMPRESS_OFFLINE = False
129COMPRESS_ROOT = "/tmp/"
130
131STATICFILES_FINDERS = (
132 'django.contrib.staticfiles.finders.FileSystemFinder',
133 'django.contrib.staticfiles.finders.AppDirectoriesFinder',
134 'compressor.finders.CompressorFinder',
135)
136
137AVAILABLE_REGIONS = [
138 ('http://localhost:5000/v2.0', 'local'),
139 ('http://remote:5000/v2.0', 'remote'),
140]
141
142OPENSTACK_KEYSTONE_URL = "http://localhost:5000/v2.0"
143OPENSTACK_KEYSTONE_DEFAULT_ROLE = "Member"
144
145OPENSTACK_KEYSTONE_BACKEND = {
146 'name': 'native',
147 'can_edit_user': True
148}
149
150OPENSTACK_HYPERVISOR_FEATURES = {
151 'can_set_mount_point': True
152}
153
154LOGGING = {
155 'version': 1,
156 'disable_existing_loggers': False,
157 'handlers': {
158 'null': {
159 'level': 'DEBUG',
160 'class': 'django.utils.log.NullHandler',
161 },
162 'test': {
163 'level': 'DEBUG',
164 'class': 'logging.StreamHandler',
165 }
166 },
167 'loggers': {
168 'django.db.backends': {
169 'handlers': ['null'],
170 'propagate': False,
171 },
172 'horizon': {
173 'handlers': ['test'],
174 'propagate': False,
175 },
176 'novaclient': {
177 'handlers': ['test'],
178 'propagate': False,
179 },
180 'keystoneclient': {
181 'handlers': ['test'],
182 'propagate': False,
183 },
184 'glanceclient': {
185 'handlers': ['test'],
186 'propagate': False,
187 },
188 'quantum': {
189 'handlers': ['test'],
190 'propagate': False,
191 },
192 'nose.plugins.manager': {
193 'handlers': ['null'],
194 'propagate': False,
195 }
196 }
197}
1980
=== removed file '.pc/fix-ubuntu-tests.patch/run_tests.sh'
--- .pc/fix-ubuntu-tests.patch/run_tests.sh 2012-09-21 08:03:36 +0000
+++ .pc/fix-ubuntu-tests.patch/run_tests.sh 1970-01-01 00:00:00 +0000
@@ -1,427 +0,0 @@
1#!/bin/bash
2
3set -o errexit
4
5# ---------------UPDATE ME-------------------------------#
6# Increment me any time the environment should be rebuilt.
7# This includes dependncy changes, directory renames, etc.
8# Simple integer secuence: 1, 2, 3...
9environment_version=27
10#--------------------------------------------------------#
11
12function usage {
13 echo "Usage: $0 [OPTION]..."
14 echo "Run Horizon's test suite(s)"
15 echo ""
16 echo " -V, --virtual-env Always use virtualenv. Install automatically"
17 echo " if not present"
18 echo " -N, --no-virtual-env Don't use virtualenv. Run tests in local"
19 echo " environment"
20 echo " -c, --coverage Generate reports using Coverage"
21 echo " -f, --force Force a clean re-build of the virtual"
22 echo " environment. Useful when dependencies have"
23 echo " been added."
24 echo " -m, --manage Run a Django management command."
25 echo " --makemessages Update all translation files."
26 echo " --compilemessages Compile all translation files."
27 echo " -p, --pep8 Just run pep8"
28 echo " -t, --tabs Check for tab characters in files."
29 echo " -y, --pylint Just run pylint"
30 echo " -q, --quiet Run non-interactively. (Relatively) quiet."
31 echo " Implies -V if -N is not set."
32 echo " --only-selenium Run only the Selenium unit tests"
33 echo " --with-selenium Run unit tests including Selenium tests"
34 echo " --runserver Run the Django development server for"
35 echo " openstack_dashboard in the virtual"
36 echo " environment."
37 echo " --docs Just build the documentation"
38 echo " --backup-environment Make a backup of the environment on exit"
39 echo " --restore-environment Restore the environment before running"
40 echo " --destroy-environment DEstroy the environment and exit"
41 echo " -h, --help Print this usage message"
42 echo ""
43 echo "Note: with no options specified, the script will try to run the tests in"
44 echo " a virtual environment, If no virtualenv is found, the script will ask"
45 echo " if you would like to create one. If you prefer to run tests NOT in a"
46 echo " virtual environment, simply pass the -N option."
47 exit
48}
49
50# DEFAULTS FOR RUN_TESTS.SH
51#
52root=`pwd`
53venv=$root/.venv
54with_venv=tools/with_venv.sh
55included_dirs="openstack_dashboard horizon"
56
57always_venv=0
58backup_env=0
59command_wrapper=""
60destroy=0
61force=0
62just_pep8=0
63just_pylint=0
64just_docs=0
65just_tabs=0
66never_venv=0
67quiet=0
68restore_env=0
69runserver=0
70only_selenium=0
71with_selenium=0
72testargs=""
73with_coverage=0
74makemessages=0
75compilemessages=0
76manage=0
77
78# Jenkins sets a "JOB_NAME" variable, if it's not set, we'll make it "default"
79[ "$JOB_NAME" ] || JOB_NAME="default"
80
81function process_option {
82 case "$1" in
83 -h|--help) usage;;
84 -V|--virtual-env) always_venv=1; never_venv=0;;
85 -N|--no-virtual-env) always_venv=0; never_venv=1;;
86 -p|--pep8) just_pep8=1;;
87 -y|--pylint) just_pylint=1;;
88 -f|--force) force=1;;
89 -t|--tabs) just_tabs=1;;
90 -q|--quiet) quiet=1;;
91 -c|--coverage) with_coverage=1;;
92 -m|--manage) manage=1;;
93 --makemessages) makemessages=1;;
94 --compilemessages) compilemessages=1;;
95 --only-selenium) only_selenium=1;;
96 --with-selenium) with_selenium=1;;
97 --docs) just_docs=1;;
98 --runserver) runserver=1;;
99 --backup-environment) backup_env=1;;
100 --restore-environment) restore_env=1;;
101 --destroy-environment) destroy=1;;
102 *) testargs="$testargs $1"
103 esac
104}
105
106function run_management_command {
107 ${command_wrapper} python $root/manage.py $testargs
108}
109
110function run_server {
111 echo "Starting Django development server..."
112 ${command_wrapper} python $root/manage.py runserver $testargs
113 echo "Server stopped."
114}
115
116function run_pylint {
117 echo "Running pylint ..."
118 PYTHONPATH=$root ${command_wrapper} pylint --rcfile=.pylintrc -f parseable $included_dirs > pylint.txt || true
119 CODE=$?
120 grep Global -A2 pylint.txt
121 if [ $CODE -lt 32 ]; then
122 echo "Completed successfully."
123 exit 0
124 else
125 echo "Completed with problems."
126 exit $CODE
127 fi
128}
129
130function run_pep8 {
131 echo "Running pep8 ..."
132 ${command_wrapper} pep8 $included_dirs || true
133}
134
135function run_sphinx {
136 echo "Building sphinx..."
137 export DJANGO_SETTINGS_MODULE=openstack_dashboard.settings
138 ${command_wrapper} sphinx-build -b html doc/source doc/build/html
139 echo "Build complete."
140}
141
142function tab_check {
143 TAB_VIOLATIONS=`find $included_dirs -type f -regex ".*\.\(css\|js\|py\|html\)" -print0 | xargs -0 awk '/\t/' | wc -l`
144 if [ $TAB_VIOLATIONS -gt 0 ]; then
145 echo "TABS! $TAB_VIOLATIONS of them! Oh no!"
146 HORIZON_FILES=`find $included_dirs -type f -regex ".*\.\(css\|js\|py|\html\)"`
147 for TABBED_FILE in $HORIZON_FILES
148 do
149 TAB_COUNT=`awk '/\t/' $TABBED_FILE | wc -l`
150 if [ $TAB_COUNT -gt 0 ]; then
151 echo "$TABBED_FILE: $TAB_COUNT"
152 fi
153 done
154 fi
155 return $TAB_VIOLATIONS;
156}
157
158function destroy_venv {
159 echo "Cleaning environment..."
160 echo "Removing virtualenv..."
161 rm -rf $venv
162 echo "Virtualenv removed."
163 rm -f .environment_version
164 echo "Environment cleaned."
165}
166
167function environment_check {
168 echo "Checking environment."
169 if [ -f .environment_version ]; then
170 ENV_VERS=`cat .environment_version`
171 if [ $ENV_VERS -eq $environment_version ]; then
172 if [ -e ${venv} ]; then
173 # If the environment exists and is up-to-date then set our variables
174 command_wrapper="${root}/${with_venv}"
175 echo "Environment is up to date."
176 return 0
177 fi
178 fi
179 fi
180
181 if [ $always_venv -eq 1 ]; then
182 install_venv
183 else
184 if [ ! -e ${venv} ]; then
185 echo -e "Environment not found. Install? (Y/n) \c"
186 else
187 echo -e "Your environment appears to be out of date. Update? (Y/n) \c"
188 fi
189 read update_env
190 if [ "x$update_env" = "xY" -o "x$update_env" = "x" -o "x$update_env" = "xy" ]; then
191 install_venv
192 else
193 # Set our command wrapper anyway.
194 command_wrapper="${root}/${with_venv}"
195 fi
196 fi
197}
198
199function sanity_check {
200 # Anything that should be determined prior to running the tests, server, etc.
201 # Don't sanity-check anything environment-related in -N flag is set
202 if [ $never_venv -eq 0 ]; then
203 if [ ! -e ${venv} ]; then
204 echo "Virtualenv not found at $venv. Did install_venv.py succeed?"
205 exit 1
206 fi
207 fi
208 # Remove .pyc files. This is sanity checking because they can linger
209 # after old files are deleted.
210 find . -name "*.pyc" -exec rm -rf {} \;
211}
212
213function backup_environment {
214 if [ $backup_env -eq 1 ]; then
215 echo "Backing up environment \"$JOB_NAME\"..."
216 if [ ! -e ${venv} ]; then
217 echo "Environment not installed. Cannot back up."
218 return 0
219 fi
220 if [ -d /tmp/.horizon_environment/$JOB_NAME ]; then
221 mv /tmp/.horizon_environment/$JOB_NAME /tmp/.horizon_environment/$JOB_NAME.old
222 rm -rf /tmp/.horizon_environment/$JOB_NAME
223 fi
224 mkdir -p /tmp/.horizon_environment/$JOB_NAME
225 cp -r $venv /tmp/.horizon_environment/$JOB_NAME/
226 cp .environment_version /tmp/.horizon_environment/$JOB_NAME/
227 # Remove the backup now that we've completed successfully
228 rm -rf /tmp/.horizon_environment/$JOB_NAME.old
229 echo "Backup completed"
230 fi
231}
232
233function restore_environment {
234 if [ $restore_env -eq 1 ]; then
235 echo "Restoring environment from backup..."
236 if [ ! -d /tmp/.horizon_environment/$JOB_NAME ]; then
237 echo "No backup to restore from."
238 return 0
239 fi
240
241 cp -r /tmp/.horizon_environment/$JOB_NAME/.venv ./ || true
242 cp -r /tmp/.horizon_environment/$JOB_NAME/.environment_version ./ || true
243
244 echo "Environment restored successfully."
245 fi
246}
247
248function install_venv {
249 # Install with install_venv.py
250 export PIP_DOWNLOAD_CACHE=${PIP_DOWNLOAD_CACHE-/tmp/.pip_download_cache}
251 export PIP_USE_MIRRORS=true
252 if [ $quiet -eq 1 ]; then
253 export PIP_NO_INPUT=true
254 fi
255 echo "Fetching new src packages..."
256 rm -rf $venv/src
257 python tools/install_venv.py
258 command_wrapper="$root/${with_venv}"
259 # Make sure it worked and record the environment version
260 sanity_check
261 chmod -R 754 $venv
262 echo $environment_version > .environment_version
263}
264
265function run_tests {
266 sanity_check
267
268 if [ $with_selenium -eq 1 ]; then
269 export WITH_SELENIUM=1
270 elif [ $only_selenium -eq 1 ]; then
271 export WITH_SELENIUM=1
272 export SKIP_UNITTESTS=1
273 fi
274
275 echo "Running Horizon application tests"
276 export NOSE_XUNIT_FILE=horizon/nosetests.xml
277 if [ "$NOSE_WITH_HTML_OUTPUT" = '1' ]; then
278 export NOSE_HTML_OUT_FILE='horizon_nose_results.html'
279 fi
280 ${command_wrapper} coverage erase
281 ${command_wrapper} coverage run -p $root/manage.py test horizon --settings=horizon.tests.testsettings $testargs
282 # get results of the Horizon tests
283 HORIZON_RESULT=$?
284
285 echo "Running openstack_dashboard tests"
286 export NOSE_XUNIT_FILE=openstack_dashboard/nosetests.xml
287 if [ "$NOSE_WITH_HTML_OUTPUT" = '1' ]; then
288 export NOSE_HTML_OUT_FILE='dashboard_nose_results.html'
289 fi
290 ${command_wrapper} coverage run -p $root/manage.py test openstack_dashboard --settings=openstack_dashboard.test.settings $testargs
291 # get results of the openstack_dashboard tests
292 DASHBOARD_RESULT=$?
293
294 if [ $with_coverage -eq 1 ]; then
295 echo "Generating coverage reports"
296 ${command_wrapper} coverage combine
297 ${command_wrapper} coverage xml -i --omit='/usr*,setup.py,*egg*,.venv/*'
298 ${command_wrapper} coverage html -i --omit='/usr*,setup.py,*egg*,.venv/*' -d reports
299 fi
300 # Remove the leftover coverage files from the -p flag earlier.
301 rm -f .coverage.*
302
303 if [ $(($HORIZON_RESULT || $DASHBOARD_RESULT)) -eq 0 ]; then
304 echo "Tests completed successfully."
305 else
306 echo "Tests failed."
307 fi
308 exit $(($HORIZON_RESULT || $DASHBOARD_RESULT))
309}
310
311function run_makemessages {
312 cd horizon
313 ${command_wrapper} $root/manage.py makemessages --all --no-obsolete
314 HORIZON_PY_RESULT=$?
315 ${command_wrapper} $root/manage.py makemessages -d djangojs --all --no-obsolete
316 HORIZON_JS_RESULT=$?
317 cd ../openstack_dashboard
318 ${command_wrapper} $root/manage.py makemessages --all --no-obsolete
319 DASHBOARD_RESULT=$?
320 cd ..
321 exit $(($HORIZON_PY_RESULT || $HORIZON_JS_RESULT || $DASHBOARD_RESULT))
322}
323
324function run_compilemessages {
325 cd horizon
326 ${command_wrapper} $root/manage.py compilemessages
327 HORIZON_PY_RESULT=$?
328 cd ../openstack_dashboard
329 ${command_wrapper} $root/manage.py compilemessages
330 DASHBOARD_RESULT=$?
331 cd ..
332 exit $(($HORIZON_PY_RESULT || $DASHBOARD_RESULT))
333}
334
335
336# ---------PREPARE THE ENVIRONMENT------------ #
337
338# PROCESS ARGUMENTS, OVERRIDE DEFAULTS
339for arg in "$@"; do
340 process_option $arg
341done
342
343if [ $quiet -eq 1 ] && [ $never_venv -eq 0 ] && [ $always_venv -eq 0 ]
344then
345 always_venv=1
346fi
347
348# If destroy is set, just blow it away and exit.
349if [ $destroy -eq 1 ]; then
350 destroy_venv
351 exit 0
352fi
353
354# Ignore all of this if the -N flag was set
355if [ $never_venv -eq 0 ]; then
356
357 # Restore previous environment if desired
358 if [ $restore_env -eq 1 ]; then
359 restore_environment
360 fi
361
362 # Remove the virtual environment if --force used
363 if [ $force -eq 1 ]; then
364 destroy_venv
365 fi
366
367 # Then check if it's up-to-date
368 environment_check
369
370 # Create a backup of the up-to-date environment if desired
371 if [ $backup_env -eq 1 ]; then
372 backup_environment
373 fi
374fi
375
376# ---------EXERCISE THE CODE------------ #
377
378# Run management commands
379if [ $manage -eq 1 ]; then
380 run_management_command
381 exit $?
382fi
383
384# Build the docs
385if [ $just_docs -eq 1 ]; then
386 run_sphinx
387 exit $?
388fi
389
390# Update translation files
391if [ $makemessages -eq 1 ]; then
392 run_makemessages
393 exit $?
394fi
395
396# Compile translation files
397if [ $compilemessages -eq 1 ]; then
398 run_compilemessages
399 exit $?
400fi
401
402# PEP8
403if [ $just_pep8 -eq 1 ]; then
404 run_pep8
405 exit $?
406fi
407
408# Pylint
409if [ $just_pylint -eq 1 ]; then
410 run_pylint
411 exit $?
412fi
413
414# Tab checker
415if [ $just_tabs -eq 1 ]; then
416 tab_check
417 exit $?
418fi
419
420# Django development server
421if [ $runserver -eq 1 ]; then
422 run_server
423 exit $?
424fi
425
426# Full test suite
427run_tests || exit
4280
=== removed directory '.pc/ubuntu_local_settings.patch'
=== removed directory '.pc/ubuntu_local_settings.patch/openstack_dashboard'
=== removed directory '.pc/ubuntu_local_settings.patch/openstack_dashboard/local'
=== removed file '.pc/ubuntu_local_settings.patch/openstack_dashboard/local/local_settings.py.example'
--- .pc/ubuntu_local_settings.patch/openstack_dashboard/local/local_settings.py.example 2012-09-12 12:21:33 +0000
+++ .pc/ubuntu_local_settings.patch/openstack_dashboard/local/local_settings.py.example 1970-01-01 00:00:00 +0000
@@ -1,147 +0,0 @@
1import os
2
3from django.utils.translation import ugettext_lazy as _
4
5DEBUG = True
6TEMPLATE_DEBUG = DEBUG
7
8# Set SSL proxy settings:
9# For Django 1.4+ pass this header from the proxy after terminating the SSL,
10# and don't forget to strip it from the client's request.
11# For more information see:
12# https://docs.djangoproject.com/en/1.4/ref/settings/#secure-proxy-ssl-header
13# SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTOCOL', 'https')
14
15# Specify a regular expression to validate user passwords.
16# HORIZON_CONFIG = {
17# "password_validator": {
18# "regex": '.*',
19# "help_text": _("Your password does not meet the requirements.")
20# },
21# 'help_url': "http://docs.openstack.org"
22# }
23
24LOCAL_PATH = os.path.dirname(os.path.abspath(__file__))
25
26# Set custom secret key:
27# You can either set it to a specific value or you can let horizion generate a
28# default secret key that is unique on this machine, e.i. regardless of the
29# amount of Python WSGI workers (if used behind Apache+mod_wsgi): However, there
30# may be situations where you would want to set this explicitly, e.g. when
31# multiple dashboard instances are distributed on different machines (usually
32# behind a load-balancer). Either you have to make sure that a session gets all
33# requests routed to the same dashboard instance or you set the same SECRET_KEY
34# for all of them.
35# from horizon.utils import secret_key
36# SECRET_KEY = secret_key.generate_or_read_from_file(os.path.join(LOCAL_PATH, '.secret_key_store'))
37
38# We recommend you use memcached for development; otherwise after every reload
39# of the django development server, you will have to login again. To use
40# memcached set CACHE_BACKED to something like 'memcached://127.0.0.1:11211/'
41CACHE_BACKEND = 'locmem://'
42
43# Send email to the console by default
44EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
45# Or send them to /dev/null
46#EMAIL_BACKEND = 'django.core.mail.backends.dummy.EmailBackend'
47
48# Configure these for your outgoing email host
49# EMAIL_HOST = 'smtp.my-company.com'
50# EMAIL_PORT = 25
51# EMAIL_HOST_USER = 'djangomail'
52# EMAIL_HOST_PASSWORD = 'top-secret!'
53
54# For multiple regions uncomment this configuration, and add (endpoint, title).
55# AVAILABLE_REGIONS = [
56# ('http://cluster1.example.com:5000/v2.0', 'cluster1'),
57# ('http://cluster2.example.com:5000/v2.0', 'cluster2'),
58# ]
59
60OPENSTACK_HOST = "127.0.0.1"
61OPENSTACK_KEYSTONE_URL = "http://%s:5000/v2.0" % OPENSTACK_HOST
62OPENSTACK_KEYSTONE_DEFAULT_ROLE = "Member"
63
64# Disable SSL certificate checks (useful for self-signed certificates):
65# OPENSTACK_SSL_NO_VERIFY = True
66
67# The OPENSTACK_KEYSTONE_BACKEND settings can be used to identify the
68# capabilities of the auth backend for Keystone.
69# If Keystone has been configured to use LDAP as the auth backend then set
70# can_edit_user to False and name to 'ldap'.
71#
72# TODO(tres): Remove these once Keystone has an API to identify auth backend.
73OPENSTACK_KEYSTONE_BACKEND = {
74 'name': 'native',
75 'can_edit_user': True
76}
77
78OPENSTACK_HYPERVISOR_FEATURES = {
79 'can_set_mount_point': True
80}
81
82# OPENSTACK_ENDPOINT_TYPE specifies the endpoint type to use for the endpoints
83# in the Keystone service catalog. Use this setting when Horizon is running
84# external to the OpenStack environment. The default is 'internalURL'.
85#OPENSTACK_ENDPOINT_TYPE = "publicURL"
86
87# The number of objects (Swift containers/objects or images) to display
88# on a single page before providing a paging element (a "more" link)
89# to paginate results.
90API_RESULT_LIMIT = 1000
91API_RESULT_PAGE_SIZE = 20
92
93# The timezone of the server. This should correspond with the timezone
94# of your entire OpenStack installation, and hopefully be in UTC.
95TIME_ZONE = "UTC"
96
97LOGGING = {
98 'version': 1,
99 # When set to True this will disable all logging except
100 # for loggers specified in this configuration dictionary. Note that
101 # if nothing is specified here and disable_existing_loggers is True,
102 # django.db.backends will still log unless it is disabled explicitly.
103 'disable_existing_loggers': False,
104 'handlers': {
105 'null': {
106 'level': 'DEBUG',
107 'class': 'django.utils.log.NullHandler',
108 },
109 'console': {
110 # Set the level to "DEBUG" for verbose output logging.
111 'level': 'INFO',
112 'class': 'logging.StreamHandler',
113 },
114 },
115 'loggers': {
116 # Logging from django.db.backends is VERY verbose, send to null
117 # by default.
118 'django.db.backends': {
119 'handlers': ['null'],
120 'propagate': False,
121 },
122 'horizon': {
123 'handlers': ['console'],
124 'propagate': False,
125 },
126 'openstack_dashboard': {
127 'handlers': ['console'],
128 'propagate': False,
129 },
130 'novaclient': {
131 'handlers': ['console'],
132 'propagate': False,
133 },
134 'keystoneclient': {
135 'handlers': ['console'],
136 'propagate': False,
137 },
138 'glanceclient': {
139 'handlers': ['console'],
140 'propagate': False,
141 },
142 'nose.plugins.manager': {
143 'handlers': ['console'],
144 'propagate': False,
145 }
146 }
147}
1480
=== modified file 'AUTHORS'
--- AUTHORS 2012-09-12 12:21:33 +0000
+++ AUTHORS 2012-11-26 19:56:34 +0000
@@ -17,6 +17,7 @@
17Dean Troyer <dtroyer@gmail.com>17Dean Troyer <dtroyer@gmail.com>
18Devin Carlen <devin.carlen@gmail.com>18Devin Carlen <devin.carlen@gmail.com>
19Doug Doan <dougdoan@gmail.com>19Doug Doan <dougdoan@gmail.com>
20Doug Hellmann <doug.hellmann@dreamhost.com>
20Duncan McGreggor <duncan@dreamhost.com>21Duncan McGreggor <duncan@dreamhost.com>
21Emma Steimann <emmasteimann@gmail.com>22Emma Steimann <emmasteimann@gmail.com>
22Erwan Gallen <dev@zinux.com>23Erwan Gallen <dev@zinux.com>
@@ -44,22 +45,29 @@
44Joseph Heck <heckj@mac.com>45Joseph Heck <heckj@mac.com>
45Joshua McKenty <joshua@pistoncloud.com>46Joshua McKenty <joshua@pistoncloud.com>
46Julien Danjou <julien.danjou@enovance.com>47Julien Danjou <julien.danjou@enovance.com>
48Julie Pichon <jpichon@redhat.com>
47Julie Pichon <julie.pichon@gmail.com>49Julie Pichon <julie.pichon@gmail.com>
48Kelsey Tripp <kelsey.tripp@nebula.com>50Kelsey Tripp <kelsey.tripp@nebula.com>
49Ken Pepple <ken.pepple@gmail.com>51Ken Pepple <ken.pepple@gmail.com>
50Ke Wu <ke.wu@ibeca.me>52Ke Wu <ke.wu@ibeca.me>
51Ke WU <ke.wu@ibeca.me>53Ke WU <ke.wu@ibeca.me>
54Kieran Spear <kispear@gmail.com>
55Kylin CG <kylin7.sg@gmail.com>
52Lin Hua Cheng <lin-hua.cheng@hp.com>56Lin Hua Cheng <lin-hua.cheng@hp.com>
53lrqrun <lrqrun@gmail.com>57lrqrun <lrqrun@gmail.com>
54lzyeval <lzyeval@gmail.com>58lzyeval <lzyeval@gmail.com>
59Malini Bhandaru <malini.k.bhandaru@intel.com>
55Mark Gius <launchpad@markgius.com>60Mark Gius <launchpad@markgius.com>
56Mark McLoughlin <markmc@redhat.com>61Mark McLoughlin <markmc@redhat.com>
62Matthias Runge <mrunge@redhat.com>
57Matt Joyce <matt.joyce@cloudscaling.com>63Matt Joyce <matt.joyce@cloudscaling.com>
64Michael Still <mikal@stillhq.com>
58Michael Szilagyi <mszilagyi@gmail.com>65Michael Szilagyi <mszilagyi@gmail.com>
59Mike Perez <thingee@gmail.com>66Mike Perez <thingee@gmail.com>
60Mike Scherbakov <mihgen@gmail.com>67Mike Scherbakov <mihgen@gmail.com>
61Monty Taylor <mordred@inaugust.com>68Monty Taylor <mordred@inaugust.com>
62Neil Johnston <onewheeldrive.net@gmail.com>69Neil Johnston <onewheeldrive.net@gmail.com>
70Nicolas Simonds <nic@metacloud.com>
63Paul McMillan <paul.mcmillan@nebula.com>71Paul McMillan <paul.mcmillan@nebula.com>
64Rafi Khardalian <rafi@metacloud.com>72Rafi Khardalian <rafi@metacloud.com>
65Ray Chen <oldsharp@163.com>73Ray Chen <oldsharp@163.com>
6674
=== modified file 'ChangeLog'
--- ChangeLog 2012-09-21 08:03:36 +0000
+++ ChangeLog 2012-11-26 19:56:34 +0000
@@ -1,24 +1,2458 @@
1commit cee6b626d372c8d420b439038a3fe0580d8fcc891commit 8734ea4977b03a2862615f5e0289b57269fee24d
2Merge: fcba390 d8425732Merge: e6d3c23 dcda694
3Author: Jenkins <jenkins@review.openstack.org>3Author: Jenkins <jenkins@review.openstack.org>
4Date: Wed Sep 19 09:21:36 2012 +00004Date: Wed Nov 21 20:07:43 2012 +0000
55
6 Merge "Final translations for Folsom." into milestone-proposed6 Merge "Return a friendly error at flavor creation"
77
8commit fcba390aa03b4373478e7138045e2d6050871ec78commit e6d3c23943a11357ffc755f8052894e15d8dfc1a
9Author: Gabriel Hurley <gabriel@strikeawe.com>9Merge: 76ef256 86427b8
10Date: Tue Sep 18 14:17:51 2012 -070010Author: Jenkins <jenkins@review.openstack.org>
1111Date: Wed Nov 21 20:07:26 2012 +0000
12 Fixes error when clicking OpenStack logo.12
13 13 Merge "Adds transitional deprecation code for old dashboard names."
14 Fixes bug 1052677.14
15 15commit dcda6940263a43344bf98aa1776cce34d25ff927
16 Change-Id: I796f23c4e9c5439b7263957cb4ec1b8fa864f39816Author: Matthias Runge <mrunge@redhat.com>
1717Date: Mon Nov 19 13:14:02 2012 +0100
18 openstack_dashboard/settings.py | 2 +-18
19 1 file changed, 1 insertion(+), 1 deletion(-)19 Return a friendly error at flavor creation
2020
21commit d8425738e0023f20db08c3fc46f7322664be79d921 When trying to create a flavor with an Id/Name that is already in use, the
22 operation fails and no error message is being displayed
23
24 Change-Id: I92db8b52bc4e63e5e5ce4d90169944e484baeddd
25 Fixes: bug #1079155
26
27 .../dashboards/admin/flavors/forms.py | 21 ++++++++++++++++++++
28 .../dashboards/admin/flavors/tests.py | 1 +
29 2 files changed, 22 insertions(+)
30
31commit 86427b83d668837b7b6ea4b9c3783e9049777dd4
32Author: Gabriel Hurley <gabriel@strikeawe.com>
33Date: Tue Nov 20 20:33:09 2012 -0800
34
35 Adds transitional deprecation code for old dashboard names.
36
37 This code allows users who upgrade from Folsom to Grizzly to
38 continue using their old settings file until H.
39
40 The code is in the settings file because it must be run prior
41 to the modules listed in INSTALLED_APPS being loaded into the
42 python path.
43
44 Fixes bug 1071444.
45
46 Change-Id: I7ac30b731be3cdc7513e3d6bc34d624963bbea9b
47
48 openstack_dashboard/settings.py | 36 ++++++++++++++++++++++++++++++++++--
49 1 file changed, 34 insertions(+), 2 deletions(-)
50
51commit 76ef256dc47b590f205aa95c2d439282fb62c962
52Author: Kieran Spear <kispear@gmail.com>
53Date: Wed Nov 14 18:30:39 2012 +1100
54
55 Don't inherit from base.html in 500 error page
56
57 For server errors, the context passed to the template is empty,
58 so things like STATIC_URL and context processors don't work.
59
60 Fixes bug 1067206.
61
62 Change-Id: Ia1801afaecd6a23fbcc6054552d0fd313597d1c1
63
64 horizon/templatetags/horizon.py | 6 ++
65 openstack_dashboard/templates/500.html | 103 +++++++++++++++++++------
66 openstack_dashboard/test/error_pages_urls.py | 7 ++
67 openstack_dashboard/test/tests/error_pages.py | 34 ++++++++
68 openstack_dashboard/urls.py | 5 ++
69 5 files changed, 131 insertions(+), 24 deletions(-)
70
71commit 699469827b3ad6372e046d608477898e093bb512
72Merge: f9c9e9b 0d305a6
73Author: Jenkins <jenkins@review.openstack.org>
74Date: Tue Nov 20 23:12:19 2012 +0000
75
76 Merge "Fixes for missing files in MANIFEST."
77
78commit f9c9e9b9546f82a1625fcfd8a9092a7ed5316280
79Merge: 5a23ee9 2f98bef
80Author: Jenkins <jenkins@review.openstack.org>
81Date: Tue Nov 20 23:12:01 2012 +0000
82
83 Merge "Reworks quotas and services panels into System Info panel."
84
85commit 5a23ee90975bc3c5f2a64d46df0404db8ccbeb50
86Merge: 73cf169 0065e66
87Author: Jenkins <jenkins@review.openstack.org>
88Date: Tue Nov 20 23:08:02 2012 +0000
89
90 Merge "Unifies Horizon conf."
91
92commit 73cf169eade2f6254d48eb52cfb72aec72295186
93Merge: ccb0b2c 3fbe68f
94Author: Jenkins <jenkins@review.openstack.org>
95Date: Tue Nov 20 22:45:27 2012 +0000
96
97 Merge "Honour LOGIN_URL when redirecting to login page"
98
99commit 0d305a62f169c1f52c125a65b92d5380547b7f55
100Author: Gabriel Hurley <gabriel@strikeawe.com>
101Date: Tue Nov 20 14:40:13 2012 -0800
102
103 Fixes for missing files in MANIFEST.
104
105 Fixes bug 1079621.
106
107 Change-Id: Ic7f16ff86033e3e53e6682bd494b907f396490ce
108
109 MANIFEST.in | 2 +-
110 1 file changed, 1 insertion(+), 1 deletion(-)
111
112commit ccb0b2c0040fe0dae4bf6ea0f44d844914d14a7d
113Merge: aec9884 16fd3c9
114Author: Jenkins <jenkins@review.openstack.org>
115Date: Tue Nov 20 22:37:58 2012 +0000
116
117 Merge "Allow running tests individually"
118
119commit aec98844ca9892919e243dfe9216604e0ac4eb46
120Merge: ffb98f1 2205300
121Author: Jenkins <jenkins@review.openstack.org>
122Date: Tue Nov 20 22:35:30 2012 +0000
123
124 Merge "use addHorizonLoadEvent() method instead of $(document).ready()"
125
126commit 0065e6642dafe2a43480d1e6280bff1128b33775
127Author: Gabriel Hurley <gabriel@strikeawe.com>
128Date: Sat Nov 17 16:54:48 2012 -0800
129
130 Unifies Horizon conf.
131
132 Centralizes all of Horizon's configuration options so that
133 they're all uniformly accesible from a single place and always
134 guaranteed to exist.
135
136 Implements blueprint unify-config.
137
138 Change-Id: I3279b7ccd58302fcff4f0d273f89f282a285c442
139
140 horizon/base.py | 32 +++++-------------
141 horizon/conf/__init__.py | 35 ++++++++++++++++++++
142 horizon/conf/default.py | 30 +++++++++++++++++
143 horizon/context_processors.py | 4 +--
144 horizon/exceptions.py | 10 +++---
145 horizon/static/horizon/js/horizon.communication.js | 2 +-
146 horizon/tables/base.py | 5 +--
147 horizon/utils/validators.py | 9 ++---
148 openstack_dashboard/api/nova.py | 3 +-
149 .../local/local_settings.py.example | 25 ++++++++++----
150 openstack_dashboard/test/settings.py | 1 -
151 openstack_dashboard/test/test_data/exceptions.py | 2 +-
152 12 files changed, 107 insertions(+), 51 deletions(-)
153
154commit ffb98f19e6f5e66f9d9b4036ded446f5e15eb32a
155Author: Julie Pichon <jpichon@redhat.com>
156Date: Fri Nov 16 21:12:09 2012 +0000
157
158 Client-side validation of password/confirmation match
159
160 Fixes bug 1055234
161
162 Change-Id: I25a3e8463894f0fb08e26e502f1baf0822d90437
163
164 horizon/static/horizon/js/horizon.users.js | 31 ++++++++++++
165 horizon/templates/horizon/_scripts.html | 1 +
166 .../admin/users/templates/users/_create.html | 10 ++++
167 .../admin/users/templates/users/_update.html | 10 ++++
168 .../dashboards/admin/users/tests.py | 51 +++++++++++++++++++
169 openstack_dashboard/test/helpers.py | 52 ++++++++++++++++++++
170 6 files changed, 155 insertions(+)
171
172commit 241c63b94c7d66bfd8ce569380e85c6e9f60f8dc
173Merge: 0e32899 9c12d23
174Author: Jenkins <jenkins@review.openstack.org>
175Date: Tue Nov 20 00:48:22 2012 +0000
176
177 Merge "Move netaddr to pip-requires"
178
179commit 3fbe68f690f86a9e07d054daafedf980217827e9
180Author: Kieran Spear <kispear@gmail.com>
181Date: Fri Nov 16 17:20:51 2012 +1100
182
183 Honour LOGIN_URL when redirecting to login page
184
185 Currently the redirect is always made to the url of the 'login' view.
186 This change makes redirects go to LOGIN_URL, so the default login view
187 can be replaced with a view at another url/name.
188
189 Fixes bug 1079444.
190
191 Change-Id: Ib56200679668dd053d3c6ac24807d2a2affc0df8
192
193 horizon/middleware.py | 17 +++++++++++------
194 horizon/test/tests/base.py | 7 +++----
195 horizon/test/tests/middleware.py | 34 ++++++++++++++++++++++++++++++++++
196 3 files changed, 48 insertions(+), 10 deletions(-)
197
198commit 2f98befe3ffc07922c02b4cb0d0c400e9c361922
199Author: Gabriel Hurley <gabriel@strikeawe.com>
200Date: Sat Nov 17 15:49:17 2012 -0800
201
202 Reworks quotas and services panels into System Info panel.
203
204 This is a step towards combining all the "read only" data about
205 an OpenStack cloud into one place for admin inspection.
206
207 Implements blueprint system-info-panel.
208
209 Change-Id: I2dc52a855c1c8a488fb9c66b82e0faca765b3812
210
211 openstack_dashboard/api/nova.py | 3 +-
212 openstack_dashboard/dashboards/admin/dashboard.py | 4 +-
213 openstack_dashboard/dashboards/admin/info/panel.py | 33 ++++++++
214 .../dashboards/admin/info/tables.py | 79 ++++++++++++++++++++
215 openstack_dashboard/dashboards/admin/info/tabs.py | 62 +++++++++++++++
216 .../admin/info/templates/info/index.html | 15 ++++
217 openstack_dashboard/dashboards/admin/info/tests.py | 71 ++++++++++++++++++
218 openstack_dashboard/dashboards/admin/info/urls.py | 27 +++++++
219 openstack_dashboard/dashboards/admin/info/views.py | 33 ++++++++
220 .../dashboards/admin/quotas/panel.py | 33 --------
221 .../dashboards/admin/quotas/tables.py | 38 ----------
222 .../admin/quotas/templates/quotas/index.html | 13 ----
223 .../dashboards/admin/quotas/tests.py | 1 -
224 .../dashboards/admin/quotas/urls.py | 27 -------
225 .../dashboards/admin/quotas/views.py | 47 ------------
226 .../dashboards/admin/services/panel.py | 33 --------
227 .../dashboards/admin/services/tables.py | 50 -------------
228 .../admin/services/templates/services/index.html | 14 ----
229 .../dashboards/admin/services/tests.py | 36 ---------
230 .../dashboards/admin/services/urls.py | 27 -------
231 .../dashboards/admin/services/views.py | 41 ----------
232 openstack_dashboard/test/test_data/nova_data.py | 1 +
233 22 files changed, 325 insertions(+), 363 deletions(-)
234
235commit 22053000b18006339a0950af430d5bc66fc85b95
236Author: Nicolas Simonds <nic@metacloud.com>
237Date: Thu Nov 15 15:47:28 2012 -0800
238
239 use addHorizonLoadEvent() method instead of $(document).ready()
240
241 These pages load all the scripts at the end, which means jQuery
242 isn't loaded yet, which means there is no $ variable, which means
243 the page throws errors when attempting to resize the iframe. Oops.
244
245 There's a special method defined for doing what is being tried here,
246 called addHorizonLoadEvent(), so use it instead. Confirmed working
247 correctly in DevStack.
248
249 Fixes Bug 1050316
250
251 Change-Id: Ia6a90485acc2454ff0320abcd51860423282a659
252
253 .../instances/templates/instances/_detail_vnc.html | 2 +-
254 1 file changed, 1 insertion(+), 1 deletion(-)
255
256commit 16fd3c9ebb2a267f7a13961a500628ee2db0f356
257Author: Kieran Spear <kispear@gmail.com>
258Date: Thu Nov 15 14:40:25 2012 +1100
259
260 Allow running tests individually
261
262 If there is a non-zero number of arguments, run_tests.sh now
263 passes through the arguments to `manage.py test`, skipping the
264 default horizon/openstack_dashboard suites.
265
266 The correct settings module is chosen based on the first module
267 given in the argument. E.g., horizon.test.tests.tables chooses
268 the horizon.test.settings module.
269
270 Change-Id: I5321e87bec6831fb7574e045a82de06086b1d0d0
271
272 doc/source/ref/run_tests.rst | 19 +++++++++++++++++++
273 doc/source/testing.rst | 2 ++
274 run_tests.sh | 23 +++++++++++++++++++----
275 3 files changed, 40 insertions(+), 4 deletions(-)
276
277commit 0e328995ec3fa8a04af8b687d2a7462fd8029f1c
278Merge: 241ee81 4c88b9b
279Author: Jenkins <jenkins@review.openstack.org>
280Date: Tue Nov 13 21:29:14 2012 +0000
281
282 Merge "Added a check for volume service in quota functions"
283
284commit 241ee819f1a7094ea59ec3783706c15457c2f857
285Merge: 220f99e 9249a5d
286Author: Jenkins <jenkins@review.openstack.org>
287Date: Tue Nov 13 13:15:15 2012 +0000
288
289 Merge "Report correct return value from pep8 check"
290
291commit 9c12d2386831d0f4f4a5644c1e0947c9889f692a
292Author: Kieran Spear <kispear@gmail.com>
293Date: Tue Nov 13 18:37:34 2012 +1100
294
295 Move netaddr to pip-requires
296
297 Change-Id: I3620689e8407055234e9a2bcbab896f2394c4fc4
298
299 tools/pip-requires | 1 +
300 tools/test-requires | 1 -
301 2 files changed, 1 insertion(+), 1 deletion(-)
302
303commit 4c88b9b5977c50525771876b2a8624fa586b8f6e
304Author: Tihomir Trifonov <t.trifonov@gmail.com>
305Date: Fri Nov 9 14:55:23 2012 +0200
306
307 Added a check for volume service in quota functions
308
309 When displaying the quotas, we have to check if
310 volume service is present in the service catalog.
311 If not - then to remove the volume quotas from
312 the result object.
313
314 Fixes bug 1075319
315
316 Change-Id: Icd049a5b147cac039add1570a166d775fd0d6ec4
317
318 .../templates/horizon/common/_quota_summary.html | 8 +++++
319 openstack_dashboard/test/tests/quotas.py | 36 ++++++++++++++++++++
320 openstack_dashboard/usage/quotas.py | 31 ++++++++++-------
321 3 files changed, 63 insertions(+), 12 deletions(-)
322
323commit 220f99e3c72fb780935afc57e8db496c9d86b2df
324Merge: fc075fa e202400
325Author: Jenkins <jenkins@review.openstack.org>
326Date: Fri Nov 9 01:38:46 2012 +0000
327
328 Merge "When editing an image, correctly set the 'is_public' checkbox."
329
330commit fc075fa12fdd29dc7208e24d668aeb92a867a2de
331Merge: 89904e6 e837b10
332Author: Jenkins <jenkins@review.openstack.org>
333Date: Fri Nov 9 01:38:19 2012 +0000
334
335 Merge "Changed "Delete volume" success message text"
336
337commit 89904e6f6c1b147ced238276d65ced2ac70ede2b
338Author: Brian Waldon <bcwaldon@gmail.com>
339Date: Wed Oct 31 12:45:15 2012 -0700
340
341 Remove superfluous slash from admin usage.csv template
342
343 The forward-slash is unnecessary in the Admin usage.csv template
344 and it diverges from the corresponding Project template. This
345 patch removes it.
346
347 Change-Id: I8c1305c0d11bedc3635f41524e8ef62841b70f1a
348
349 .../admin/overview/templates/overview/usage.csv | 2 +-
350 1 file changed, 1 insertion(+), 1 deletion(-)
351
352commit a7ad523d5a77447410192e1d92f5c0ba19e1d0bd
353Merge: 82c19ae 92510f1
354Author: Jenkins <jenkins@review.openstack.org>
355Date: Thu Nov 8 21:07:04 2012 +0000
356
357 Merge "Wrap a project list call with exception handler."
358
359commit e2024001c774deae8cb53bdb3a9bb86925bc1960
360Author: Julie Pichon <jpichon@redhat.com>
361Date: Thu Nov 8 16:48:42 2012 +0000
362
363 When editing an image, correctly set the 'is_public' checkbox.
364
365 Fixes bug 1076216.
366
367 Change-Id: Ie185f110a18593295ed0712cd848a3f14a13f2b0
368
369 .../project/images_and_snapshots/images/tests.py | 22 ++++++++++++++++++++
370 .../project/images_and_snapshots/images/views.py | 2 +-
371 2 files changed, 23 insertions(+), 1 deletion(-)
372
373commit e837b105e8bcfa772d3b83c80411a9f897e74232
374Author: Tihomir Trifonov <t.trifonov@gmail.com>
375Date: Thu Nov 8 17:32:25 2012 +0200
376
377 Changed "Delete volume" success message text
378
379 As deletion of volume/snapshot is performed
380 asynchronous, the success label should not be
381 'Deleted', but 'Scheduled for deletion', as it
382 is for Instances ('Scheduled for termination').
383
384 Fixes bug 1073718
385
386 Change-Id: Ia7884b5b82fea225cfc559309346e73683c4cb3e
387
388 .../volume_snapshots/tables.py | 1 +
389 .../images_and_snapshots/volume_snapshots/tests.py | 31 ++++++++++++++++++++
390 .../dashboards/project/volumes/tables.py | 1 +
391 .../dashboards/project/volumes/tests.py | 3 +-
392 openstack_dashboard/test/test_data/nova_data.py | 12 ++++----
393 5 files changed, 41 insertions(+), 7 deletions(-)
394
395commit 82c19aee05211bed46a99ddeafab05599bc71ccf
396Author: Malini Bhandaru <malini.k.bhandaru@intel.com>
397Date: Sat Oct 13 05:18:13 2012 -0700
398
399 Flavor Extra Specs support.
400
401 Special thanks:
402
403 * Preserves extra specs on flavor edit (Tihomir Trifonov)
404 * Displays flavor name on extra specs pages (Vinay Bannai)
405 * Extras specs table close (Don Dugger & Gabriel).
406 * Final cleanup (Gabriel Hurley)
407
408 Change-Id: I6acb1176e5c0ca6987abc758fc45335870c55d57
409
410 horizon/templates/horizon/common/_modal.html | 10 +++
411 openstack_dashboard/api/nova.py | 30 +++++++
412 .../dashboards/admin/flavors/extras/forms.py | 66 ++++++++++++++
413 .../dashboards/admin/flavors/extras/tables.py | 75 ++++++++++++++++
414 .../dashboards/admin/flavors/extras/tests.py | 65 ++++++++++++++
415 .../dashboards/admin/flavors/extras/urls.py | 29 ++++++
416 .../dashboards/admin/flavors/extras/views.py | 93 ++++++++++++++++++++
417 .../dashboards/admin/flavors/forms.py | 9 +-
418 .../dashboards/admin/flavors/tables.py | 9 +-
419 .../flavors/templates/flavors/extras/_create.html | 27 ++++++
420 .../flavors/templates/flavors/extras/_edit.html | 27 ++++++
421 .../flavors/templates/flavors/extras/_index.html | 14 +++
422 .../flavors/templates/flavors/extras/create.html | 12 +++
423 .../flavors/templates/flavors/extras/edit.html | 12 +++
424 .../flavors/templates/flavors/extras/index.html | 12 +++
425 .../dashboards/admin/flavors/tests.py | 8 +-
426 .../dashboards/admin/flavors/urls.py | 7 +-
427 17 files changed, 499 insertions(+), 6 deletions(-)
428
429commit 92510f1a380a24efda318d6d8594e7dde6744168
430Author: Gabriel Hurley <gabriel@strikeawe.com>
431Date: Mon Nov 5 11:10:03 2012 -0800
432
433 Wrap a project list call with exception handler.
434
435 Change-Id: I3bb531e54b517282121b08d49c5fe9775b52b990
436
437 .../dashboards/settings/project/forms.py | 8 +++++++-
438 1 file changed, 7 insertions(+), 1 deletion(-)
439
440commit c61c5e28cc629c65166bcff2d974a622310f32b5
441Author: Gabriel Hurley <gabriel@strikeawe.com>
442Date: Fri Nov 2 15:10:43 2012 -0700
443
444 Enforce use of latest django_openstack_auth for PKI compat.
445
446 The latest django_openstack_auth supports PKI-signed tokens by
447 using Keystone's "is_ans1_token" function to determine if PKI
448 tokens are in use and react approriately if so.
449
450 Fixes bug 1071865
451
452 Change-Id: I62ba6370de829345d3214d80011a58e4ac6cd218
453
454 run_tests.sh | 2 +-
455 tools/pip-requires | 2 +-
456 2 files changed, 2 insertions(+), 2 deletions(-)
457
458commit 4c05d9ff12ef6c9bb1e840fced1a695a33338760
459Merge: ec5d7fd 046f012
460Author: Jenkins <jenkins@review.openstack.org>
461Date: Fri Nov 2 18:38:04 2012 +0000
462
463 Merge "Remove unused usage.csv template"
464
465commit ec5d7fdd1a530aedd79cd08fedbdee9b87e9af1c
466Merge: 9eda3da 0c12faa
467Author: Jenkins <jenkins@review.openstack.org>
468Date: Fri Nov 2 18:37:48 2012 +0000
469
470 Merge "Update all usage.csv templates to use 2 decimal places"
471
472commit 9eda3da97894181cbbaf618a7a252b7b3649f132
473Merge: 7a7c89c 68db72b
474Author: Jenkins <jenkins@review.openstack.org>
475Date: Fri Nov 2 18:37:23 2012 +0000
476
477 Merge "Dynamically size the noVNC iframe, fix typos in copy"
478
479commit 68db72b95f71a9cfa9feacfda0018e32d5a673c0
480Author: Nicolas Simonds <nic@metacloud.com>
481Date: Mon Oct 29 13:48:19 2012 -0700
482
483 Dynamically size the noVNC iframe, fix typos in copy
484
485 The iframe for the noVNC console is too small for some users who
486 like to use GUI on the console. Leaving the sizes off completely
487 and letting the browser figure it out causes hilarity to ensue, so
488 explicitly set the height and width to quasi-sensible values.
489
490 Also, the "unavailable" error says "unavailabe" Fixed.
491
492 Fixes Bug 1050316 ?
493
494 Addendum:
495
496 add an identifier to the iframe rather than using the auto-generated selector
497
498 Change-Id: I17cfa97cdc69f4b58e18d02451da2197c663e0d3
499
500 .../instances/templates/instances/_detail_vnc.html | 13 ++++++++++---
501 1 file changed, 10 insertions(+), 3 deletions(-)
502
503commit 7a7c89c293432242d4aa7a44f340e7dc78ab2ed0
504Merge: b21617a 70ac5bd
505Author: Jenkins <jenkins@review.openstack.org>
506Date: Fri Nov 2 09:21:26 2012 +0000
507
508 Merge "Add newline between rows of Admin usage.csv"
509
510commit 046f012e926b1ccfee31e8993237a5381083a571
511Author: Brian Waldon <bcwaldon@gmail.com>
512Date: Wed Oct 31 12:32:18 2012 -0700
513
514 Remove unused usage.csv template
515
516 Change-Id: I08f3c16e2da60bdaa8e04c60ed4a4d867c0947f4
517
518 .../admin/projects/templates/projects/usage.csv | 11 -----------
519 1 file changed, 11 deletions(-)
520
521commit 0c12faa7dd7c35ae96e525abc7eeb8a0b917bdb4
522Author: Brian Waldon <bcwaldon@gmail.com>
523Date: Wed Oct 31 12:39:02 2012 -0700
524
525 Update all usage.csv templates to use 2 decimal places
526
527 Change-Id: I54694beb39fdee39d59e9032e72201a520a9fcd1
528
529 .../admin/overview/templates/overview/usage.csv | 4 ++--
530 .../project/overview/templates/overview/usage.csv | 6 +++---
531 2 files changed, 5 insertions(+), 5 deletions(-)
532
533commit 70ac5bd4a7eb6d7271ce86fda5f29ba51ab1121d
534Author: Brian Waldon <bcwaldon@gmail.com>
535Date: Wed Oct 31 12:34:42 2012 -0700
536
537 Add newline between rows of Admin usage.csv
538
539 For some reason, we must also specify precision for vcpu hours
540 in this change. Adding the newline caused the default behavior
541 to change.
542
543 Fix bug 1073677
544
545 Change-Id: Id9a90e787de50f775ed17b15f185273cebba64e8
546
547 .../admin/overview/templates/overview/usage.csv | 3 ++-
548 .../dashboards/admin/overview/tests.py | 16 ++++++++--------
549 2 files changed, 10 insertions(+), 9 deletions(-)
550
551commit b21617a5ba72a7d4645d33ff0a7ef9377884971b
552Author: Brian Waldon <bcwaldon@gmail.com>
553Date: Tue Oct 30 15:43:37 2012 -0700
554
555 Adding volume owner (project) to admin table.
556
557 Change-Id: I40174eefa191312e77da41d6f55fffec7a1d6d90
558
559 .../dashboards/admin/instances/tables.py | 4 ++--
560 .../dashboards/admin/volumes/tables.py | 3 +++
561 .../dashboards/admin/volumes/tests.py | 11 +++++++++--
562 .../dashboards/admin/volumes/views.py | 17 +++++++++++++++++
563 4 files changed, 31 insertions(+), 4 deletions(-)
564
565commit 9249a5da2765fa03e5799f82c77bed15d9bccde1
566Author: Brian Waldon <bcwaldon@gmail.com>
567Date: Tue Oct 30 17:25:07 2012 -0700
568
569 Report correct return value from pep8 check
570
571 Remove the '|| true' appended to the pep8 command to allow
572 the non-zero status to be returned properly.
573
574 Fix bug 1073380.
575
576 Change-Id: I1e212a9d596eb448ee7f6ac40106a05650b70473
577
578 run_tests.sh | 2 +-
579 1 file changed, 1 insertion(+), 1 deletion(-)
580
581commit 069c3f545ab497284a5fea034ef7d899f3902fa2
582Author: Gabriel Hurley <gabriel@strikeawe.com>
583Date: Mon Oct 29 15:26:05 2012 -0700
584
585 Adding volume host to admin table.
586
587 Change-Id: Id01a7e884113f67839ba3e8086df55dc8b1c5df3
588
589 .../dashboards/admin/volumes/tables.py | 1 +
590 1 file changed, 1 insertion(+)
591
592commit 057d891f31f3901f7f933d12401aebc53759aff0
593Author: Tihomir Trifonov <t.trifonov@gmail.com>
594Date: Thu Oct 25 14:48:27 2012 +0300
595
596 Added support for volume types
597
598 As cinder already supports volume types, it's time
599 to be added in Horizon. The types are added in admin panel.
600 A volume can either have a *valid* type, or None.
601
602 There are two minor issues:
603 1. When a type is deleted, if there is a volume with
604 this type, the type is returned as the id,
605 instead of the name. Which is good as consistency,
606 but maybe a type should not be deleted if used by a volume?
607 2. If no vol type is passed(None) value, the type is being
608 assigned as 'None', and returned as a string('None')
609 3. In the create volume type form, the 'Description' is
610 empty at the moment, I couldn't find any help info
611 to add for volume types...
612
613 Implements blueprint volume-types
614
615 Tested with n-cinder and n-vol services. Since Folsom both
616 support volume-types. I'm not sure if it is possible a grizzly
617 Dashboard to work with essex nova, which could be a problem.
618 Dashboard doesn't seem to provide permissions based on tables,
619 so if it needs to check if a service is available to show/hide
620 volume types, this will need some more effors to implement
621 permissions on table/action level. Or maybe this needs to be
622 added as a standalone panel?
623
624 Patch set 2: implemented suggestions, added one more thing:
625 When creating a volume from a snapshot, set the volume type
626 initial as the type of the original volume from which
627 the snapshot is being created.
628
629 Patch Set 3: Updated the description of volume types,
630 based on the notes from:
631 https://etherpad.openstack.org/grizzly-cinder-volumetypes
632 https://etherpad.openstack.org/cinder-usecases
633 Any feedback on the description is welcome.
634
635 Change-Id: Ib0c136c5c8cd9fbd34ce1dd346260f404c96f667
636
637 openstack_dashboard/api/cinder.py | 18 ++-
638 .../dashboards/admin/volumes/forms.py | 44 ++++++
639 .../dashboards/admin/volumes/tables.py | 33 ++++
640 .../templates/volumes/_create_volume_type.html | 29 ++++
641 .../templates/volumes/create_volume_type.html | 11 ++
642 .../admin/volumes/templates/volumes/index.html | 10 +-
643 .../dashboards/admin/volumes/tests.py | 54 ++++++-
644 .../dashboards/admin/volumes/urls.py | 3 +-
645 .../dashboards/admin/volumes/views.py | 36 ++++-
646 .../images_and_snapshots/volume_snapshots/tests.py | 14 +-
647 .../dashboards/project/volumes/forms.py | 43 ++++--
648 .../dashboards/project/volumes/tables.py | 12 +-
649 .../dashboards/project/volumes/tests.py | 157 ++++++++++++--------
650 .../dashboards/project/volumes/views.py | 18 ++-
651 openstack_dashboard/test/test_data/nova_data.py | 15 +-
652 15 files changed, 389 insertions(+), 108 deletions(-)
653
654commit cd70bc92841dc69eb9fe22ef7d776c5469635912
655Merge: 7e132e3 ef4e931
656Author: Jenkins <jenkins@review.openstack.org>
657Date: Wed Oct 24 22:35:59 2012 +0000
658
659 Merge "Use UUIDs for flavor create/edit."
660
661commit 7e132e385acb633398630813136de05b945d8ae5
662Merge: f48600e cdcd8e3
663Author: Jenkins <jenkins@review.openstack.org>
664Date: Wed Oct 24 21:51:38 2012 +0000
665
666 Merge "Enable quota data from multiple sources."
667
668commit ef4e9314eb880238642e3122ae699f553b98db0e
669Author: Gabriel Hurley <gabriel@strikeawe.com>
670Date: Wed Oct 24 14:03:17 2012 -0700
671
672 Use UUIDs for flavor create/edit.
673
674 Now that Nova accepts strings as flavor IDs we can just use UUIDs
675 on our end and get rid of the horrors of trying to guess the next
676 integer ID. This fixes all the instability in flavor editing.
677
678 Fixes bug 1057799.
679
680 Change-Id: I55eb1d7408655fd27e81cc1196f15ceb3659a7b4
681
682 .../dashboards/admin/flavors/forms.py | 21 +++-----------------
683 .../dashboards/admin/flavors/tests.py | 11 ++++------
684 2 files changed, 7 insertions(+), 25 deletions(-)
685
686commit f48600e9476d03c91d8dc9f827f70f790aa4c41e
687Merge: 1aa63dc acef935
688Author: Jenkins <jenkins@review.openstack.org>
689Date: Wed Oct 24 20:45:36 2012 +0000
690
691 Merge "Update common."
692
693commit 1aa63dc1eaee88055b8153cc1e8d65c8cf64f784
694Merge: 6258553 811ee7b
695Author: Jenkins <jenkins@review.openstack.org>
696Date: Wed Oct 24 20:43:44 2012 +0000
697
698 Merge "Fixed url pattern for project:instances:detail page"
699
700commit 62585536140bcb3ba6a316256ba72f6c81f4f930
701Merge: a0ad0d4 3e0f69d
702Author: Jenkins <jenkins@review.openstack.org>
703Date: Wed Oct 24 20:43:04 2012 +0000
704
705 Merge "Show message when user has no permissions"
706
707commit cdcd8e3df6ee143cc96b5e2a2d849e9ae8e86148
708Author: Gabriel Hurley <gabriel@strikeawe.com>
709Date: Tue Oct 23 22:25:18 2012 -0700
710
711 Enable quota data from multiple sources.
712
713 Now that there are multiple projects with quota data (cinder, quantum)
714 we need to accommodate that data being aggregated in a centralized
715 fashion. This commit takes care of that for nova + cinder, and paves
716 the way for quantum later.
717
718 Fixes bug 1070022.
719
720 Change-Id: Ifc68c2dc681b2a7b4e7787e0b1a7dca1a970fc36
721
722 horizon/static/horizon/js/horizon.quota.js | 2 +-
723 horizon/utils/memoized.py | 3 +
724 openstack_dashboard/api/__init__.py | 1 +
725 openstack_dashboard/api/base.py | 57 ++++++
726 openstack_dashboard/api/cinder.py | 115 ++++++++++++
727 openstack_dashboard/api/nova.py | 186 +++-----------------
728 .../dashboards/admin/overview/tests.py | 19 +-
729 .../dashboards/admin/projects/tests.py | 104 ++++++-----
730 .../dashboards/admin/projects/views.py | 10 +-
731 .../dashboards/admin/projects/workflows.py | 32 ++--
732 .../dashboards/admin/quotas/views.py | 2 +-
733 .../access_and_security/floating_ips/views.py | 3 +-
734 .../volume_snapshots/tables.py | 3 +-
735 .../images_and_snapshots/volume_snapshots/tabs.py | 6 +-
736 .../dashboards/project/instances/tests.py | 114 ++++++------
737 .../dashboards/project/instances/views.py | 4 +-
738 .../dashboards/project/instances/workflows.py | 8 +-
739 .../dashboards/project/overview/tests.py | 39 ++--
740 .../dashboards/project/volumes/forms.py | 14 +-
741 .../dashboards/project/volumes/tables.py | 4 +-
742 .../dashboards/project/volumes/tabs.py | 7 +-
743 .../dashboards/project/volumes/tests.py | 57 +++---
744 .../dashboards/project/volumes/views.py | 3 +-
745 openstack_dashboard/test/api_tests/nova_tests.py | 52 +-----
746 openstack_dashboard/test/test_data/nova_data.py | 30 ++--
747 openstack_dashboard/test/tests/quotas.py | 69 ++++++++
748 openstack_dashboard/usage/base.py | 3 +-
749 openstack_dashboard/usage/quotas.py | 108 ++++++++++++
750 28 files changed, 625 insertions(+), 430 deletions(-)
751
752commit 811ee7b58aec6186d88b10a2e6184381f4b3ec5c
753Author: Tihomir Trifonov <t.trifonov@gmail.com>
754Date: Tue Oct 23 11:33:32 2012 +0300
755
756 Fixed url pattern for project:instances:detail page
757
758 Removed obsolete :nova: namespace
759
760 Fixes bug 1070230
761
762 Change-Id: Ia56ef9ebf1a9bfe90b02491125821742ee840baa
763
764 openstack_dashboard/usage/tables.py | 2 +-
765 1 file changed, 1 insertion(+), 1 deletion(-)
766
767commit a0ad0d49a97da8a0fcee1636dce00c1ae940d6f9
768Merge: baf8b68 0c85d72
769Author: Jenkins <jenkins@review.openstack.org>
770Date: Tue Oct 23 08:32:36 2012 +0000
771
772 Merge "Fixes JavaScript count bug in tables."
773
774commit baf8b685dc5f5b2d0c780a26ed227217496a8f29
775Author: Doug Hellmann <doug.hellmann@dreamhost.com>
776Date: Mon Oct 22 18:30:34 2012 -0400
777
778 Add OpenStack trove classifier for PyPI
779
780 Add trove classifier to have horizon listed among the
781 other OpenStack-related projets on PyPI.
782
783 Change-Id: I70a2b3dedf437fbfd03d4c2d605af6d6c2ef98c6
784 Signed-off-by: Doug Hellmann <doug.hellmann@dreamhost.com>
785
786 setup.py | 3 ++-
787 1 file changed, 2 insertions(+), 1 deletion(-)
788
789commit acef935c12bca0f544940f54dea4086ac25a0ea4
790Author: Michael Still <mikal@stillhq.com>
791Date: Thu Oct 18 11:43:17 2012 -0700
792
793 Update common.
794
795 policy.py is not updated as it causes test failures. I will investigate
796 that separately.
797
798 Change-Id: I0970cbc67835a18c0114457c1bb07c700e0dfe88
799
800 openstack_dashboard/openstack/common/setup.py | 258 ++++++++++++++++++++-----
801 1 file changed, 209 insertions(+), 49 deletions(-)
802
803commit 0c85d7214e992fe83cad1f00dbeebc2f3a58d1eb
804Author: Matthias Runge <mrunge@redhat.com>
805Date: Mon Oct 15 09:52:32 2012 +0200
806
807 Fixes JavaScript count bug in tables.
808
809 When showing tables, and you had the summary, "No items to display",
810 the counter at table footer says "Displaying 1 items". This commit fixes
811 the inclusion of the empty line into line count.
812 Affected sub-pages: Instances, Volumes, Images & Snapshots, etc.
813
814 Change-Id: I24da50d506be477dffdbb0f497d88b1bd3ceacdc
815
816 horizon/static/horizon/js/horizon.tables.js | 4 ++--
817 1 file changed, 2 insertions(+), 2 deletions(-)
818
819commit 3e0f69da7544c4ce92056db27191984bdffb75c8
820Author: Tihomir Trifonov <t.trifonov@gmail.com>
821Date: Sun Oct 14 12:08:11 2012 +0300
822
823 Show message when user has no permissions
824
825 Shows a warning messages to users who try to access
826 restricted page.
827
828 This bug can be simply fixed in middleware.py:
829
830 if isinstance(exception, (exceptions.NotAuthorized,
831 exceptions.NotAuthenticated)):
832 if request.user.is_authenticated() and 'next' in request.GET:
833 # a logged-in users gets NotAuthorized exception,
834 # then just redirect to user_home instead of '?next='
835
836 But in the case when an user uses different logins(e.g for
837 different projects), and wants to switch fast between them,
838 trying to load an admin-only(or other restricted) page,
839 then Dashboard will redirect them to their home page,
840 and the user will have to sign-out first, then login again
841 and load the desired page.
842
843 With this fix however, the user will see a message, giving them a choice
844 to login as different user, or to go to their 'home page' if
845 they landed on the restricted page by error, allowing fast-switching
846 between multiple accounts.
847 Also, this will work fine with bookmarked pages.
848
849 P.S. The html repr of the error message will
850 probably need some improvements...
851
852 Fixes bug 1053698
853
854 Change-Id: Id458af6c7bd90081fc95d339b32a3654878a927d
855
856 horizon/templates/auth/_login.html | 9 +++++++++
857 horizon/test/tests/base.py | 6 ++++++
858 horizon/test/urls.py | 3 +++
859 3 files changed, 18 insertions(+)
860
861commit 28f9edb2c3aeb8761634a3d96d083351c31afeed
862Merge: 76e6740 35a6708
863Author: Jenkins <jenkins@review.openstack.org>
864Date: Sat Oct 13 18:47:32 2012 +0000
865
866 Merge "User shouldn't remove their own roles on project"
867
868commit 76e67407b9dcbbe5d8253067dbe44dc35dba5f38
869Merge: 5422c93 c681c93
870Author: Jenkins <jenkins@review.openstack.org>
871Date: Sat Oct 13 08:52:59 2012 +0000
872
873 Merge "Adding ephemeral disk to instance details"
874
875commit 5422c93525976b547bcfd61dda4ce57a1e06080b
876Merge: 6f990c9 5eac426
877Author: Jenkins <jenkins@review.openstack.org>
878Date: Sat Oct 13 08:52:25 2012 +0000
879
880 Merge "Fix bug 1055929 - Can not display usage data for Quota Summary."
881
882commit 35a6708dccdc71d69a147daf0b0c2fde17489d4b
883Author: Tihomir Trifonov <t.trifonov@gmail.com>
884Date: Wed Oct 10 17:29:20 2012 +0300
885
886 User shouldn't remove their own roles on project
887
888 Added a check if the user is trying to delete their
889 own 'admin' role on the current project. This is added
890 to prevent the users from locking their own
891 access to Dashboard. Also, if the 'admin' role on the
892 current project is removed, Dashboard automatically
893 switches to another project for which the user has 'admin'
894 role, but the previous project still is displayed as current.
895
896 Fixes bug 1046538
897
898 Also improved the unit test scenarios a bit.
899
900 Change-Id: I1e60a11d628d6490ad24a8149b43ac307afb4780
901
902 .../dashboards/admin/projects/tests.py | 186 +++++++++-----------
903 .../dashboards/admin/projects/workflows.py | 38 ++--
904 .../test/test_data/keystone_data.py | 20 ++-
905 3 files changed, 124 insertions(+), 120 deletions(-)
906
907commit 6f990c9ce4fe716b2ca9d136c65de9fad46bc7bb
908Author: Gabriel Hurley <gabriel@strikeawe.com>
909Date: Fri Oct 12 15:35:19 2012 -0700
910
911 Readding bin dir which was mistakenly deleted.
912
913 Change-Id: Ia8989da47a55f7c932115a976b6d799714b8dc56
914
915 bin/less/lessc | 139 ++++
916 bin/lib/less/browser.js | 380 +++++++++++
917 bin/lib/less/colors.js | 152 +++++
918 bin/lib/less/cssmin.js | 355 +++++++++++
919 bin/lib/less/functions.js | 228 +++++++
920 bin/lib/less/index.js | 148 +++++
921 bin/lib/less/parser.js | 1334 +++++++++++++++++++++++++++++++++++++++
922 bin/lib/less/rhino.js | 62 ++
923 bin/lib/less/tree.js | 17 +
924 bin/lib/less/tree/alpha.js | 17 +
925 bin/lib/less/tree/anonymous.js | 13 +
926 bin/lib/less/tree/assignment.js | 17 +
927 bin/lib/less/tree/call.js | 48 ++
928 bin/lib/less/tree/color.js | 101 +++
929 bin/lib/less/tree/comment.js | 14 +
930 bin/lib/less/tree/condition.js | 42 ++
931 bin/lib/less/tree/dimension.js | 49 ++
932 bin/lib/less/tree/directive.js | 35 +
933 bin/lib/less/tree/element.js | 52 ++
934 bin/lib/less/tree/expression.js | 23 +
935 bin/lib/less/tree/import.js | 83 +++
936 bin/lib/less/tree/javascript.js | 51 ++
937 bin/lib/less/tree/keyword.js | 19 +
938 bin/lib/less/tree/media.js | 114 ++++
939 bin/lib/less/tree/mixin.js | 146 +++++
940 bin/lib/less/tree/operation.js | 32 +
941 bin/lib/less/tree/paren.js | 16 +
942 bin/lib/less/tree/quoted.js | 29 +
943 bin/lib/less/tree/rule.js | 42 ++
944 bin/lib/less/tree/ruleset.js | 225 +++++++
945 bin/lib/less/tree/selector.js | 42 ++
946 bin/lib/less/tree/url.js | 25 +
947 bin/lib/less/tree/value.js | 24 +
948 bin/lib/less/tree/variable.js | 26 +
949 34 files changed, 4100 insertions(+)
950
951commit 5eac426a2a1304b166f85cd68086a1b1abeafd23
952Author: Kylin CG <kylin7.sg@gmail.com>
953Date: Fri Oct 12 17:04:40 2012 +0800
954
955 Fix bug 1055929 - Can not display usage data for Quota Summary.
956
957 Change-Id: I051e97f14375714d22303ad44a9f0b16aa7d6c51
958
959 .../templates/horizon/common/_quota_summary.html | 12 ++++++------
960 1 file changed, 6 insertions(+), 6 deletions(-)
961
962commit c681c936cfd3ef3926025ba4530a0f342cef3cd8
963Author: Tihomir Trifonov <t.trifonov@gmail.com>
964Date: Tue Jul 24 16:20:40 2012 +0300
965
966 Adding ephemeral disk to instance details
967
968 If the flavor allows ephemeral disk, it is now
969 displayed in the instance details page.
970
971 Fixes bug 1007395
972
973 Rebased
974
975 Change-Id: I84eb0231c57ad839025cca8370b34dd9b899ca5a
976
977 .../templates/instances/_detail_overview.html | 4 ++++
978 1 file changed, 4 insertions(+)
979
980commit cb8e7c1f8f0b238b88253cd6d82092cbe530ba9e
981Author: Gabriel Hurley <gabriel@strikeawe.com>
982Date: Thu Oct 4 15:43:40 2012 -0700
983
984 Splits OpenStack Dashboard bits from framework app code.
985
986 Moves everything OpenStack-specific (dashboards, apis, etc.)
987 into the openstack_dashboard project, achieving a much
988 cleaner separation between the project-specific code and
989 the generic Horizon framework code.
990
991 Change-Id: I7235b41d449b26c980668fc3eb4360b24508717b
992
993 .bzrignore | 12 -
994 bin/less/lessc | 139 -
995 bin/lib/less/browser.js | 380 --
996 bin/lib/less/colors.js | 152 -
997 bin/lib/less/cssmin.js | 355 --
998 bin/lib/less/functions.js | 228 --
999 bin/lib/less/index.js | 148 -
1000 bin/lib/less/parser.js | 1334 -------
1001 bin/lib/less/rhino.js | 62 -
1002 bin/lib/less/tree.js | 17 -
1003 bin/lib/less/tree/alpha.js | 17 -
1004 bin/lib/less/tree/anonymous.js | 13 -
1005 bin/lib/less/tree/assignment.js | 17 -
1006 bin/lib/less/tree/call.js | 48 -
1007 bin/lib/less/tree/color.js | 101 -
1008 bin/lib/less/tree/comment.js | 14 -
1009 bin/lib/less/tree/condition.js | 42 -
1010 bin/lib/less/tree/dimension.js | 49 -
1011 bin/lib/less/tree/directive.js | 35 -
1012 bin/lib/less/tree/element.js | 52 -
1013 bin/lib/less/tree/expression.js | 23 -
1014 bin/lib/less/tree/import.js | 83 -
1015 bin/lib/less/tree/javascript.js | 51 -
1016 bin/lib/less/tree/keyword.js | 19 -
1017 bin/lib/less/tree/media.js | 114 -
1018 bin/lib/less/tree/mixin.js | 146 -
1019 bin/lib/less/tree/operation.js | 32 -
1020 bin/lib/less/tree/paren.js | 16 -
1021 bin/lib/less/tree/quoted.js | 29 -
1022 bin/lib/less/tree/rule.js | 42 -
1023 bin/lib/less/tree/ruleset.js | 225 --
1024 bin/lib/less/tree/selector.js | 42 -
1025 bin/lib/less/tree/url.js | 25 -
1026 bin/lib/less/tree/value.js | 24 -
1027 bin/lib/less/tree/variable.js | 26 -
1028 doc/source/ref/test.rst | 14 +-
1029 doc/source/topics/testing.rst | 30 +-
1030 horizon/__init__.py | 2 +-
1031 horizon/api/__init__.py | 39 -
1032 horizon/api/base.py | 118 -
1033 horizon/api/glance.py | 98 -
1034 horizon/api/keystone.py | 290 --
1035 horizon/api/nova.py | 585 ----
1036 horizon/api/quantum.py | 261 --
1037 horizon/api/swift.py | 264 --
1038 horizon/conf/panel_template/tests.py.tmpl | 2 +-
1039 horizon/conf/panel_template/urls.py | 1 +
1040 horizon/context_processors.py | 36 +-
1041 horizon/dashboards/admin/dashboard.py | 37 -
1042 horizon/dashboards/admin/flavors/forms.py | 95 -
1043 horizon/dashboards/admin/flavors/panel.py | 32 -
1044 horizon/dashboards/admin/flavors/tables.py | 53 -
1045 .../admin/flavors/templates/flavors/_create.html | 25 -
1046 .../admin/flavors/templates/flavors/_edit.html | 26 -
1047 .../admin/flavors/templates/flavors/create.html | 11 -
1048 .../admin/flavors/templates/flavors/edit.html | 11 -
1049 .../admin/flavors/templates/flavors/index.html | 11 -
1050 horizon/dashboards/admin/flavors/tests.py | 81 -
1051 horizon/dashboards/admin/flavors/urls.py | 28 -
1052 horizon/dashboards/admin/flavors/views.py | 81 -
1053 horizon/dashboards/admin/images/forms.py | 25 -
1054 horizon/dashboards/admin/images/panel.py | 32 -
1055 horizon/dashboards/admin/images/tables.py | 45 -
1056 .../admin/images/templates/images/_update.html | 25 -
1057 .../admin/images/templates/images/index.html | 11 -
1058 .../admin/images/templates/images/update.html | 12 -
1059 horizon/dashboards/admin/images/tests.py | 97 -
1060 horizon/dashboards/admin/images/urls.py | 30 -
1061 horizon/dashboards/admin/images/views.py | 66 -
1062 horizon/dashboards/admin/instances/panel.py | 33 -
1063 horizon/dashboards/admin/instances/tables.py | 99 -
1064 .../admin/instances/templates/instances/index.html | 11 -
1065 horizon/dashboards/admin/instances/tests.py | 142 -
1066 horizon/dashboards/admin/instances/urls.py | 34 -
1067 horizon/dashboards/admin/instances/views.py | 81 -
1068 horizon/dashboards/admin/models.py | 23 -
1069 horizon/dashboards/admin/networks/forms.py | 89 -
1070 horizon/dashboards/admin/networks/panel.py | 28 -
1071 horizon/dashboards/admin/networks/ports/forms.py | 92 -
1072 horizon/dashboards/admin/networks/ports/tables.py | 85 -
1073 horizon/dashboards/admin/networks/ports/tabs.py | 46 -
1074 horizon/dashboards/admin/networks/ports/urls.py | 24 -
1075 horizon/dashboards/admin/networks/ports/views.py | 98 -
1076 horizon/dashboards/admin/networks/subnets/forms.py | 52 -
1077 .../dashboards/admin/networks/subnets/tables.py | 82 -
1078 horizon/dashboards/admin/networks/subnets/urls.py | 24 -
1079 horizon/dashboards/admin/networks/subnets/views.py | 101 -
1080 horizon/dashboards/admin/networks/tables.py | 82 -
1081 .../admin/networks/templates/networks/_create.html | 25 -
1082 .../admin/networks/templates/networks/_update.html | 24 -
1083 .../admin/networks/templates/networks/create.html | 11 -
1084 .../admin/networks/templates/networks/index.html | 21 -
1085 .../networks/templates/networks/ports/_create.html | 25 -
1086 .../networks/templates/networks/ports/_update.html | 29 -
1087 .../networks/templates/networks/ports/create.html | 11 -
1088 .../networks/templates/networks/ports/update.html | 11 -
1089 .../templates/networks/subnets/_create.html | 25 -
1090 .../templates/networks/subnets/_update.html | 33 -
1091 .../templates/networks/subnets/create.html | 11 -
1092 .../networks/templates/networks/subnets/index.html | 11 -
1093 .../templates/networks/subnets/update.html | 11 -
1094 .../admin/networks/templates/networks/update.html | 11 -
1095 horizon/dashboards/admin/networks/tests.py | 805 -----
1096 horizon/dashboards/admin/networks/urls.py | 45 -
1097 horizon/dashboards/admin/networks/views.py | 140 -
1098 horizon/dashboards/admin/overview/panel.py | 33 -
1099 .../admin/overview/templates/overview/usage.csv | 9 -
1100 .../admin/overview/templates/overview/usage.html | 22 -
1101 horizon/dashboards/admin/overview/tests.py | 95 -
1102 horizon/dashboards/admin/overview/urls.py | 28 -
1103 horizon/dashboards/admin/overview/views.py | 48 -
1104 horizon/dashboards/admin/projects/forms.py | 33 -
1105 horizon/dashboards/admin/projects/panel.py | 32 -
1106 horizon/dashboards/admin/projects/tables.py | 157 -
1107 .../projects/templates/projects/_add_user.html | 25 -
1108 .../admin/projects/templates/projects/_create.html | 25 -
1109 .../projects/templates/projects/_create_user.html | 25 -
1110 .../admin/projects/templates/projects/_quotas.html | 24 -
1111 .../admin/projects/templates/projects/_update.html | 25 -
1112 .../templates/projects/_update_members.html | 39 -
1113 .../projects/templates/projects/add_user.html | 11 -
1114 .../admin/projects/templates/projects/create.html | 12 -
1115 .../projects/templates/projects/create_user.html | 12 -
1116 .../admin/projects/templates/projects/index.html | 13 -
1117 .../admin/projects/templates/projects/quotas.html | 11 -
1118 .../admin/projects/templates/projects/update.html | 12 -
1119 .../admin/projects/templates/projects/usage.csv | 11 -
1120 .../admin/projects/templates/projects/usage.html | 14 -
1121 .../admin/projects/templates/projects/users.html | 18 -
1122 horizon/dashboards/admin/projects/tests.py | 842 -----
1123 horizon/dashboards/admin/projects/urls.py | 37 -
1124 horizon/dashboards/admin/projects/views.py | 203 --
1125 horizon/dashboards/admin/projects/workflows.py | 364 --
1126 horizon/dashboards/admin/quotas/panel.py | 32 -
1127 horizon/dashboards/admin/quotas/tables.py | 38 -
1128 .../admin/quotas/templates/quotas/index.html | 13 -
1129 horizon/dashboards/admin/quotas/urls.py | 27 -
1130 horizon/dashboards/admin/quotas/views.py | 46 -
1131 horizon/dashboards/admin/services/panel.py | 32 -
1132 horizon/dashboards/admin/services/tables.py | 50 -
1133 .../admin/services/templates/services/index.html | 14 -
1134 horizon/dashboards/admin/services/tests.py | 36 -
1135 horizon/dashboards/admin/services/urls.py | 27 -
1136 horizon/dashboards/admin/services/views.py | 40 -
1137 horizon/dashboards/admin/users/forms.py | 195 --
1138 horizon/dashboards/admin/users/panel.py | 32 -
1139 horizon/dashboards/admin/users/tables.py | 123 -
1140 .../admin/users/templates/users/_create.html | 24 -
1141 .../admin/users/templates/users/_update.html | 24 -
1142 .../admin/users/templates/users/create.html | 12 -
1143 .../admin/users/templates/users/index.html | 13 -
1144 .../admin/users/templates/users/update.html | 12 -
1145 horizon/dashboards/admin/users/tests.py | 356 --
1146 horizon/dashboards/admin/users/urls.py | 28 -
1147 horizon/dashboards/admin/users/views.py | 111 -
1148 horizon/dashboards/admin/volumes/panel.py | 14 -
1149 horizon/dashboards/admin/volumes/tables.py | 19 -
1150 .../admin/volumes/templates/volumes/detail.html | 15 -
1151 .../admin/volumes/templates/volumes/index.html | 13 -
1152 horizon/dashboards/admin/volumes/tests.py | 39 -
1153 horizon/dashboards/admin/volumes/urls.py | 8 -
1154 horizon/dashboards/admin/volumes/views.py | 39 -
1155 .../access_and_security/floating_ips/forms.py | 46 -
1156 .../access_and_security/floating_ips/tables.py | 129 -
1157 .../access_and_security/floating_ips/tests.py | 176 -
1158 .../access_and_security/floating_ips/urls.py | 29 -
1159 .../access_and_security/floating_ips/views.py | 68 -
1160 .../access_and_security/floating_ips/workflows.py | 114 -
1161 .../project/access_and_security/keypairs/forms.py | 65 -
1162 .../project/access_and_security/keypairs/tables.py | 61 -
1163 .../project/access_and_security/keypairs/tests.py | 162 -
1164 .../project/access_and_security/keypairs/urls.py | 33 -
1165 .../project/access_and_security/keypairs/views.py | 81 -
1166 .../project/access_and_security/panel.py | 29 -
1167 .../access_and_security/security_groups/forms.py | 173 -
1168 .../access_and_security/security_groups/tables.py | 108 -
1169 .../access_and_security/security_groups/tests.py | 374 --
1170 .../access_and_security/security_groups/urls.py | 30 -
1171 .../access_and_security/security_groups/views.py | 120 -
1172 .../floating_ips/_allocate.html | 33 -
1173 .../access_and_security/floating_ips/allocate.html | 7 -
1174 .../floating_ips/associate.html | 11 -
1175 .../templates/access_and_security/index.html | 21 -
1176 .../access_and_security/keypairs/_create.html | 25 -
1177 .../access_and_security/keypairs/_import.html | 25 -
1178 .../access_and_security/keypairs/create.html | 12 -
1179 .../access_and_security/keypairs/download.html | 21 -
1180 .../access_and_security/keypairs/import.html | 12 -
1181 .../security_groups/_create.html | 25 -
1182 .../security_groups/_edit_rules.html | 21 -
1183 .../security_groups/create.html | 11 -
1184 .../security_groups/edit_rules.html | 11 -
1185 .../project/access_and_security/tests.py | 86 -
1186 .../dashboards/project/access_and_security/urls.py | 34 -
1187 .../project/access_and_security/views.py | 83 -
1188 horizon/dashboards/project/containers/browsers.py | 37 -
1189 horizon/dashboards/project/containers/forms.py | 164 -
1190 horizon/dashboards/project/containers/panel.py | 32 -
1191 horizon/dashboards/project/containers/tables.py | 269 --
1192 .../containers/templates/containers/_copy.html | 24 -
1193 .../containers/templates/containers/_create.html | 24 -
1194 .../containers/templates/containers/_upload.html | 25 -
1195 .../containers/templates/containers/copy.html | 13 -
1196 .../containers/templates/containers/create.html | 11 -
1197 .../containers/templates/containers/index.html | 13 -
1198 .../containers/templates/containers/upload.html | 15 -
1199 horizon/dashboards/project/containers/tests.py | 237 --
1200 horizon/dashboards/project/containers/urls.py | 48 -
1201 horizon/dashboards/project/containers/views.py | 217 --
1202 horizon/dashboards/project/dashboard.py | 47 -
1203 .../project/images_and_snapshots/images/forms.py | 164 -
1204 .../project/images_and_snapshots/images/panel.py | 30 -
1205 .../project/images_and_snapshots/images/tables.py | 134 -
1206 .../project/images_and_snapshots/images/tabs.py | 44 -
1207 .../project/images_and_snapshots/images/tests.py | 96 -
1208 .../project/images_and_snapshots/images/urls.py | 32 -
1209 .../project/images_and_snapshots/images/views.py | 83 -
1210 .../project/images_and_snapshots/panel.py | 29 -
1211 .../images_and_snapshots/snapshots/forms.py | 56 -
1212 .../images_and_snapshots/snapshots/panel.py | 30 -
1213 .../images_and_snapshots/snapshots/tables.py | 59 -
1214 .../images_and_snapshots/snapshots/tests.py | 97 -
1215 .../project/images_and_snapshots/snapshots/urls.py | 30 -
1216 .../images_and_snapshots/snapshots/views.py | 62 -
1217 .../images_and_snapshots/images/_create.html | 33 -
1218 .../images/_detail_overview.html | 68 -
1219 .../images_and_snapshots/images/_update.html | 24 -
1220 .../images_and_snapshots/images/create.html | 11 -
1221 .../images_and_snapshots/images/detail.html | 16 -
1222 .../images_and_snapshots/images/update.html | 11 -
1223 .../templates/images_and_snapshots/index.html | 19 -
1224 .../images_and_snapshots/snapshots/_create.html | 25 -
1225 .../snapshots/_detail_overview.html | 42 -
1226 .../images_and_snapshots/snapshots/create.html | 11 -
1227 .../images_and_snapshots/snapshots/detail.html | 15 -
1228 .../project/images_and_snapshots/tests.py | 169 -
1229 .../project/images_and_snapshots/urls.py | 35 -
1230 .../project/images_and_snapshots/views.py | 88 -
1231 .../images_and_snapshots/volume_snapshots/panel.py | 26 -
1232 .../volume_snapshots/tables.py | 88 -
1233 .../images_and_snapshots/volume_snapshots/tabs.py | 48 -
1234 .../images_and_snapshots/volume_snapshots/tests.py | 61 -
1235 horizon/dashboards/project/instances/forms.py | 50 -
1236 horizon/dashboards/project/instances/panel.py | 28 -
1237 horizon/dashboards/project/instances/tables.py | 319 --
1238 horizon/dashboards/project/instances/tabs.py | 77 -
1239 .../instances/templates/instances/_detail_log.html | 17 -
1240 .../templates/instances/_detail_overview.html | 98 -
1241 .../instances/templates/instances/_detail_vnc.html | 10 -
1242 .../templates/instances/_instance_ips.html | 10 -
1243 .../instances/_launch_customize_help.html | 3 -
1244 .../templates/instances/_launch_details_help.html | 53 -
1245 .../templates/instances/_launch_volumes_help.html | 3 -
1246 .../instances/templates/instances/_update.html | 24 -
1247 .../instances/templates/instances/detail.html | 15 -
1248 .../instances/templates/instances/index.html | 11 -
1249 .../instances/templates/instances/launch.html | 11 -
1250 .../instances/templates/instances/update.html | 11 -
1251 horizon/dashboards/project/instances/tests.py | 980 ------
1252 horizon/dashboards/project/instances/urls.py | 36 -
1253 horizon/dashboards/project/instances/views.py | 186 -
1254 horizon/dashboards/project/instances/workflows.py | 510 ---
1255 horizon/dashboards/project/models.py | 23 -
1256 horizon/dashboards/project/networks/forms.py | 55 -
1257 horizon/dashboards/project/networks/panel.py | 28 -
1258 .../dashboards/project/networks/ports/tables.py | 53 -
1259 horizon/dashboards/project/networks/ports/tabs.py | 46 -
1260 horizon/dashboards/project/networks/ports/urls.py | 24 -
1261 horizon/dashboards/project/networks/ports/views.py | 28 -
1262 .../dashboards/project/networks/subnets/forms.py | 138 -
1263 .../dashboards/project/networks/subnets/tables.py | 105 -
1264 .../dashboards/project/networks/subnets/tabs.py | 48 -
1265 .../dashboards/project/networks/subnets/urls.py | 24 -
1266 .../dashboards/project/networks/subnets/views.py | 109 -
1267 horizon/dashboards/project/networks/tables.py | 107 -
1268 .../networks/templates/networks/_create.html | 24 -
1269 .../templates/networks/_detail_overview.html | 20 -
1270 .../networks/templates/networks/_network_ips.html | 10 -
1271 .../networks/templates/networks/_update.html | 24 -
1272 .../networks/templates/networks/create.html | 11 -
1273 .../networks/templates/networks/detail.html | 18 -
1274 .../project/networks/templates/networks/index.html | 11 -
1275 .../templates/networks/ports/_detail_overview.html | 41 -
1276 .../templates/networks/ports/_port_ips.html | 7 -
1277 .../networks/templates/networks/ports/detail.html | 15 -
1278 .../templates/networks/subnets/_create.html | 25 -
1279 .../networks/subnets/_detail_overview.html | 29 -
1280 .../templates/networks/subnets/_update.html | 33 -
1281 .../templates/networks/subnets/create.html | 11 -
1282 .../templates/networks/subnets/detail.html | 15 -
1283 .../networks/templates/networks/subnets/index.html | 11 -
1284 .../templates/networks/subnets/update.html | 11 -
1285 .../networks/templates/networks/update.html | 11 -
1286 horizon/dashboards/project/networks/tests.py | 782 -----
1287 horizon/dashboards/project/networks/urls.py | 37 -
1288 horizon/dashboards/project/networks/views.py | 143 -
1289 horizon/dashboards/project/networks/workflows.py | 161 -
1290 horizon/dashboards/project/overview/panel.py | 32 -
1291 .../project/overview/templates/overview/usage.csv | 11 -
1292 .../project/overview/templates/overview/usage.html | 13 -
1293 horizon/dashboards/project/overview/tests.py | 143 -
1294 horizon/dashboards/project/overview/urls.py | 29 -
1295 horizon/dashboards/project/overview/views.py | 37 -
1296 horizon/dashboards/project/volumes/forms.py | 219 --
1297 horizon/dashboards/project/volumes/panel.py | 29 -
1298 horizon/dashboards/project/volumes/tables.py | 226 --
1299 horizon/dashboards/project/volumes/tabs.py | 48 -
1300 .../project/volumes/templates/volumes/_attach.html | 25 -
1301 .../project/volumes/templates/volumes/_create.html | 57 -
1302 .../templates/volumes/_create_snapshot.html | 25 -
1303 .../templates/volumes/_detail_overview.html | 49 -
1304 .../project/volumes/templates/volumes/attach.html | 11 -
1305 .../project/volumes/templates/volumes/create.html | 11 -
1306 .../volumes/templates/volumes/create_snapshot.html | 11 -
1307 .../project/volumes/templates/volumes/detail.html | 15 -
1308 .../project/volumes/templates/volumes/index.html | 11 -
1309 horizon/dashboards/project/volumes/tests.py | 328 --
1310 horizon/dashboards/project/volumes/urls.py | 35 -
1311 horizon/dashboards/project/volumes/views.py | 184 -
1312 horizon/dashboards/settings/dashboard.py | 31 -
1313 horizon/dashboards/settings/ec2/forms.py | 109 -
1314 horizon/dashboards/settings/ec2/panel.py | 28 -
1315 .../settings/ec2/templates/ec2/download_form.html | 25 -
1316 .../settings/ec2/templates/ec2/ec2rc.sh.template | 15 -
1317 .../settings/ec2/templates/ec2/index.html | 11 -
1318 horizon/dashboards/settings/ec2/tests.py | 69 -
1319 horizon/dashboards/settings/ec2/urls.py | 23 -
1320 horizon/dashboards/settings/ec2/views.py | 31 -
1321 horizon/dashboards/settings/models.py | 23 -
1322 horizon/dashboards/settings/project/forms.py | 71 -
1323 horizon/dashboards/settings/project/panel.py | 28 -
1324 horizon/dashboards/settings/project/tables.py | 33 -
1325 .../project/templates/project/_openrc.html | 32 -
1326 .../project/templates/project/openrc.sh.template | 24 -
1327 .../project/templates/project/settings.html | 11 -
1328 horizon/dashboards/settings/project/urls.py | 23 -
1329 horizon/dashboards/settings/project/views.py | 44 -
1330 horizon/dashboards/settings/user/forms.py | 59 -
1331 horizon/dashboards/settings/user/panel.py | 28 -
1332 .../settings/user/templates/user/_settings.html | 26 -
1333 .../settings/user/templates/user/settings.html | 11 -
1334 horizon/dashboards/settings/user/urls.py | 23 -
1335 horizon/dashboards/settings/user/views.py | 31 -
1336 horizon/decorators.py | 4 +-
1337 horizon/forms/__init__.py | 3 +-
1338 horizon/forms/views.py | 4 +-
1339 horizon/locale/bg_BG/LC_MESSAGES/django.mo | Bin 25231 -> 2950 bytes
1340 horizon/locale/bg_BG/LC_MESSAGES/django.po | 3454 +-----------------
1341 horizon/locale/bg_BG/LC_MESSAGES/djangojs.mo | Bin 378 -> 378 bytes
1342 horizon/locale/bg_BG/LC_MESSAGES/djangojs.po | 2 +-
1343 horizon/locale/en/LC_MESSAGES/django.mo | Bin 42492 -> 4746 bytes
1344 horizon/locale/en/LC_MESSAGES/django.po | 3516 +------------------
1345 horizon/locale/en/LC_MESSAGES/djangojs.mo | Bin 378 -> 378 bytes
1346 horizon/locale/en/LC_MESSAGES/djangojs.po | 2 +-
1347 horizon/locale/es/LC_MESSAGES/django.mo | Bin 60209 -> 5039 bytes
1348 horizon/locale/es/LC_MESSAGES/django.po | 3568 +------------------
1349 horizon/locale/es/LC_MESSAGES/djangojs.mo | Bin 420 -> 420 bytes
1350 horizon/locale/es/LC_MESSAGES/djangojs.po | 2 +-
1351 horizon/locale/fr/LC_MESSAGES/django.mo | Bin 414 -> 414 bytes
1352 horizon/locale/fr/LC_MESSAGES/django.po | 3421 +-----------------
1353 horizon/locale/fr/LC_MESSAGES/djangojs.mo | Bin 419 -> 419 bytes
1354 horizon/locale/fr/LC_MESSAGES/djangojs.po | 2 +-
1355 horizon/locale/it/LC_MESSAGES/django.mo | Bin 28544 -> 2838 bytes
1356 horizon/locale/it/LC_MESSAGES/django.po | 3477 +-----------------
1357 horizon/locale/it/LC_MESSAGES/djangojs.mo | Bin 420 -> 420 bytes
1358 horizon/locale/it/LC_MESSAGES/djangojs.po | 2 +-
1359 horizon/locale/ja/LC_MESSAGES/django.mo | Bin 69010 -> 6233 bytes
1360 horizon/locale/ja/LC_MESSAGES/django.po | 3555 +------------------
1361 horizon/locale/ja/LC_MESSAGES/djangojs.mo | Bin 413 -> 413 bytes
1362 horizon/locale/ja/LC_MESSAGES/djangojs.po | 2 +-
1363 horizon/locale/ko_KR/LC_MESSAGES/django.mo | Bin 1765 -> 731 bytes
1364 horizon/locale/ko_KR/LC_MESSAGES/django.po | 3424 +-----------------
1365 horizon/locale/ko_KR/LC_MESSAGES/djangojs.mo | Bin 378 -> 378 bytes
1366 horizon/locale/ko_KR/LC_MESSAGES/djangojs.po | 2 +-
1367 horizon/locale/nl_NL/LC_MESSAGES/django.mo | Bin 10792 -> 2887 bytes
1368 horizon/locale/nl_NL/LC_MESSAGES/django.po | 3430 +-----------------
1369 horizon/locale/nl_NL/LC_MESSAGES/djangojs.mo | Bin 378 -> 378 bytes
1370 horizon/locale/nl_NL/LC_MESSAGES/djangojs.po | 2 +-
1371 horizon/locale/pl/LC_MESSAGES/django.mo | Bin 904 -> 572 bytes
1372 horizon/locale/pl/LC_MESSAGES/django.po | 3673 +-------------------
1373 horizon/locale/pl/LC_MESSAGES/djangojs.mo | Bin 478 -> 478 bytes
1374 horizon/locale/pl/LC_MESSAGES/djangojs.po | 2 +-
1375 horizon/locale/pt/LC_MESSAGES/django.mo | Bin 33028 -> 4355 bytes
1376 horizon/locale/pt/LC_MESSAGES/django.po | 3490 +------------------
1377 horizon/locale/pt/LC_MESSAGES/djangojs.mo | Bin 420 -> 420 bytes
1378 horizon/locale/pt/LC_MESSAGES/djangojs.po | 2 +-
1379 horizon/locale/pt_BR/LC_MESSAGES/django.mo | Bin 39484 -> 4507 bytes
1380 horizon/locale/pt_BR/LC_MESSAGES/django.po | 3480 +------------------
1381 horizon/locale/pt_BR/LC_MESSAGES/djangojs.mo | Bin 419 -> 419 bytes
1382 horizon/locale/pt_BR/LC_MESSAGES/djangojs.po | 2 +-
1383 horizon/locale/ru/LC_MESSAGES/django.mo | Bin 585 -> 585 bytes
1384 horizon/locale/ru/LC_MESSAGES/django.po | 3421 +-----------------
1385 horizon/locale/ru/LC_MESSAGES/djangojs.mo | Bin 494 -> 494 bytes
1386 horizon/locale/ru/LC_MESSAGES/djangojs.po | 2 +-
1387 horizon/locale/zh_CN/LC_MESSAGES/django.mo | Bin 13474 -> 875 bytes
1388 horizon/locale/zh_CN/LC_MESSAGES/django.po | 3434 +-----------------
1389 horizon/locale/zh_CN/LC_MESSAGES/djangojs.mo | Bin 413 -> 413 bytes
1390 horizon/locale/zh_CN/LC_MESSAGES/djangojs.po | 2 +-
1391 horizon/locale/zh_TW/LC_MESSAGES/django.mo | Bin 50037 -> 5020 bytes
1392 horizon/locale/zh_TW/LC_MESSAGES/django.po | 3469 +-----------------
1393 horizon/locale/zh_TW/LC_MESSAGES/djangojs.mo | Bin 413 -> 413 bytes
1394 horizon/locale/zh_TW/LC_MESSAGES/djangojs.po | 2 +-
1395 horizon/management/commands/startpanel.py | 3 +-
1396 horizon/middleware.py | 4 +-
1397 horizon/openstack/common/jsonutils.py | 144 -
1398 horizon/openstack/common/setup.py | 200 --
1399 horizon/site_urls.py | 1 +
1400 horizon/templates/_header.html | 2 -
1401 horizon/templates/_stylesheets.html | 1 +
1402 horizon/test.py | 363 --
1403 horizon/test/helpers.py | 170 +
1404 horizon/test/settings.py | 177 +
1405 horizon/test/templates/_tab.html | 1 +
1406 horizon/test/templates/tab_group.html | 1 +
1407 horizon/test/templates/workflow.html | 1 +
1408 horizon/test/test_dashboards/cats/dashboard.py | 25 +
1409 .../test/test_dashboards/cats/kittens/models.py | 3 +
1410 horizon/test/test_dashboards/cats/kittens/panel.py | 14 +
1411 .../cats/kittens/templates/kittens/index.html | 12 +
1412 horizon/test/test_dashboards/cats/kittens/urls.py | 7 +
1413 horizon/test/test_dashboards/cats/kittens/views.py | 10 +
1414 horizon/test/test_dashboards/cats/models.py | 3 +
1415 .../test_dashboards/cats/static/cats/css/cats.css | 1 +
1416 .../test_dashboards/cats/static/cats/js/cats.js | 1 +
1417 .../test_dashboards/cats/templates/cats/base.html | 11 +
1418 horizon/test/test_dashboards/cats/tigers/models.py | 3 +
1419 horizon/test/test_dashboards/cats/tigers/panel.py | 14 +
1420 .../cats/tigers/templates/tigers/index.html | 12 +
1421 horizon/test/test_dashboards/cats/tigers/urls.py | 7 +
1422 horizon/test/test_dashboards/cats/tigers/views.py | 10 +
1423 horizon/test/test_dashboards/dogs/dashboard.py | 13 +
1424 horizon/test/test_dashboards/dogs/models.py | 3 +
1425 .../test/test_dashboards/dogs/puppies/models.py | 3 +
1426 horizon/test/test_dashboards/dogs/puppies/panel.py | 13 +
1427 .../dogs/puppies/templates/puppies/index.html | 12 +
1428 horizon/test/test_dashboards/dogs/puppies/urls.py | 7 +
1429 horizon/test/test_dashboards/dogs/puppies/views.py | 10 +
1430 .../test_dashboards/dogs/static/dogs/css/dogs.css | 1 +
1431 .../test_dashboards/dogs/static/dogs/js/dogs.js | 1 +
1432 .../test_dashboards/dogs/templates/dogs/base.html | 11 +
1433 horizon/test/tests/base.py | 289 ++
1434 horizon/test/tests/messages.py | 41 +
1435 horizon/test/tests/selenium.py | 31 +
1436 horizon/test/tests/tables.py | 675 ++++
1437 horizon/test/tests/tabs.py | 306 ++
1438 horizon/test/tests/templatetags.py | 49 +
1439 horizon/test/tests/utils.py | 196 ++
1440 horizon/test/tests/workflows.py | 266 ++
1441 horizon/test/urls.py | 40 +
1442 horizon/tests/__init__.py | 21 -
1443 horizon/tests/api_tests/base_tests.py | 148 -
1444 horizon/tests/api_tests/glance_tests.py | 67 -
1445 horizon/tests/api_tests/keystone_tests.py | 98 -
1446 horizon/tests/api_tests/nova_tests.py | 206 --
1447 horizon/tests/api_tests/quantum_tests.py | 205 --
1448 horizon/tests/api_tests/swift_tests.py | 120 -
1449 horizon/tests/base_tests.py | 341 --
1450 horizon/tests/message_tests.py | 40 -
1451 horizon/tests/selenium_tests.py | 38 -
1452 horizon/tests/table_tests.py | 675 ----
1453 horizon/tests/tabs_tests.py | 306 --
1454 horizon/tests/templates/_tab.html | 1 -
1455 horizon/tests/templates/tab_group.html | 1 -
1456 horizon/tests/templates/workflow.html | 1 -
1457 horizon/tests/templatetag_tests.py | 50 -
1458 horizon/tests/test_dashboards/cats/dashboard.py | 25 -
1459 .../tests/test_dashboards/cats/kittens/models.py | 3 -
1460 .../tests/test_dashboards/cats/kittens/panel.py | 14 -
1461 .../cats/kittens/templates/kittens/index.html | 12 -
1462 .../tests/test_dashboards/cats/kittens/tests.py | 7 -
1463 horizon/tests/test_dashboards/cats/kittens/urls.py | 7 -
1464 .../tests/test_dashboards/cats/kittens/views.py | 10 -
1465 horizon/tests/test_dashboards/cats/models.py | 3 -
1466 .../test_dashboards/cats/static/cats/css/cats.css | 1 -
1467 .../test_dashboards/cats/static/cats/js/cats.js | 1 -
1468 .../test_dashboards/cats/templates/cats/base.html | 11 -
1469 .../tests/test_dashboards/cats/tigers/models.py | 3 -
1470 horizon/tests/test_dashboards/cats/tigers/panel.py | 14 -
1471 .../cats/tigers/templates/tigers/index.html | 12 -
1472 horizon/tests/test_dashboards/cats/tigers/tests.py | 7 -
1473 horizon/tests/test_dashboards/cats/tigers/urls.py | 7 -
1474 horizon/tests/test_dashboards/cats/tigers/views.py | 10 -
1475 horizon/tests/test_dashboards/dogs/dashboard.py | 13 -
1476 horizon/tests/test_dashboards/dogs/models.py | 3 -
1477 .../tests/test_dashboards/dogs/puppies/models.py | 3 -
1478 .../tests/test_dashboards/dogs/puppies/panel.py | 13 -
1479 .../dogs/puppies/templates/puppies/index.html | 12 -
1480 .../tests/test_dashboards/dogs/puppies/tests.py | 7 -
1481 horizon/tests/test_dashboards/dogs/puppies/urls.py | 7 -
1482 .../tests/test_dashboards/dogs/puppies/views.py | 10 -
1483 .../test_dashboards/dogs/static/dogs/css/dogs.css | 1 -
1484 .../test_dashboards/dogs/static/dogs/js/dogs.js | 1 -
1485 .../test_dashboards/dogs/templates/dogs/base.html | 11 -
1486 horizon/tests/test_data/exceptions.py | 67 -
1487 horizon/tests/test_data/glance_data.py | 89 -
1488 horizon/tests/test_data/keystone_data.py | 160 -
1489 horizon/tests/test_data/nova_data.py | 343 --
1490 horizon/tests/test_data/quantum_data.py | 111 -
1491 horizon/tests/test_data/swift_data.py | 39 -
1492 horizon/tests/test_data/utils.py | 126 -
1493 horizon/tests/testsettings.py | 197 --
1494 horizon/tests/testurls.py | 41 -
1495 horizon/tests/utils_tests.py | 195 --
1496 horizon/tests/workflows_tests.py | 261 --
1497 horizon/usage/__init__.py | 19 -
1498 horizon/usage/base.py | 155 -
1499 horizon/usage/tables.py | 71 -
1500 horizon/usage/views.py | 54 -
1501 horizon/views.py | 53 +
1502 horizon/views/__init__.py | 17 -
1503 horizon/views/base.py | 72 -
1504 horizon/workflows/views.py | 4 +-
1505 openstack-common.conf | 4 +-
1506 openstack_dashboard/api/__init__.py | 39 +
1507 openstack_dashboard/api/base.py | 118 +
1508 openstack_dashboard/api/glance.py | 98 +
1509 openstack_dashboard/api/keystone.py | 291 ++
1510 openstack_dashboard/api/nova.py | 587 ++++
1511 openstack_dashboard/api/quantum.py | 261 ++
1512 openstack_dashboard/api/swift.py | 265 ++
1513 openstack_dashboard/context_processors.py | 63 +
1514 openstack_dashboard/dashboards/admin/dashboard.py | 37 +
1515 .../dashboards/admin/flavors/forms.py | 96 +
1516 .../dashboards/admin/flavors/panel.py | 33 +
1517 .../dashboards/admin/flavors/tables.py | 54 +
1518 .../admin/flavors/templates/flavors/_create.html | 25 +
1519 .../admin/flavors/templates/flavors/_edit.html | 26 +
1520 .../admin/flavors/templates/flavors/create.html | 11 +
1521 .../admin/flavors/templates/flavors/edit.html | 11 +
1522 .../admin/flavors/templates/flavors/index.html | 11 +
1523 .../dashboards/admin/flavors/tests.py | 81 +
1524 .../dashboards/admin/flavors/urls.py | 29 +
1525 .../dashboards/admin/flavors/views.py | 82 +
1526 .../dashboards/admin/images/forms.py | 26 +
1527 .../dashboards/admin/images/panel.py | 33 +
1528 .../dashboards/admin/images/tables.py | 46 +
1529 .../admin/images/templates/images/_update.html | 25 +
1530 .../admin/images/templates/images/index.html | 11 +
1531 .../admin/images/templates/images/update.html | 12 +
1532 .../dashboards/admin/images/tests.py | 97 +
1533 .../dashboards/admin/images/urls.py | 30 +
1534 .../dashboards/admin/images/views.py | 68 +
1535 .../dashboards/admin/instances/panel.py | 34 +
1536 .../dashboards/admin/instances/tables.py | 100 +
1537 .../admin/instances/templates/instances/index.html | 11 +
1538 .../dashboards/admin/instances/tests.py | 140 +
1539 .../dashboards/admin/instances/urls.py | 34 +
1540 .../dashboards/admin/instances/views.py | 84 +
1541 openstack_dashboard/dashboards/admin/models.py | 23 +
1542 .../dashboards/admin/networks/forms.py | 90 +
1543 .../dashboards/admin/networks/panel.py | 29 +
1544 .../dashboards/admin/networks/ports/forms.py | 93 +
1545 .../dashboards/admin/networks/ports/tables.py | 85 +
1546 .../dashboards/admin/networks/ports/tabs.py | 49 +
1547 .../dashboards/admin/networks/ports/urls.py | 28 +
1548 .../dashboards/admin/networks/ports/views.py | 99 +
1549 .../dashboards/admin/networks/subnets/forms.py | 53 +
1550 .../dashboards/admin/networks/subnets/tables.py | 83 +
1551 .../dashboards/admin/networks/subnets/urls.py | 29 +
1552 .../dashboards/admin/networks/subnets/views.py | 103 +
1553 .../dashboards/admin/networks/tables.py | 82 +
1554 .../admin/networks/templates/networks/_create.html | 25 +
1555 .../admin/networks/templates/networks/_update.html | 24 +
1556 .../admin/networks/templates/networks/create.html | 11 +
1557 .../admin/networks/templates/networks/index.html | 21 +
1558 .../networks/templates/networks/ports/_create.html | 25 +
1559 .../networks/templates/networks/ports/_update.html | 29 +
1560 .../networks/templates/networks/ports/create.html | 11 +
1561 .../networks/templates/networks/ports/update.html | 11 +
1562 .../templates/networks/subnets/_create.html | 25 +
1563 .../templates/networks/subnets/_update.html | 33 +
1564 .../templates/networks/subnets/create.html | 11 +
1565 .../networks/templates/networks/subnets/index.html | 11 +
1566 .../templates/networks/subnets/update.html | 11 +
1567 .../admin/networks/templates/networks/update.html | 11 +
1568 .../dashboards/admin/networks/tests.py | 805 +++++
1569 .../dashboards/admin/networks/urls.py | 47 +
1570 .../dashboards/admin/networks/views.py | 140 +
1571 .../dashboards/admin/overview/panel.py | 34 +
1572 .../admin/overview/templates/overview/usage.csv | 9 +
1573 .../admin/overview/templates/overview/usage.html | 22 +
1574 .../dashboards/admin/overview/tests.py | 97 +
1575 .../dashboards/admin/overview/urls.py | 29 +
1576 .../dashboards/admin/overview/views.py | 48 +
1577 .../dashboards/admin/projects/forms.py | 33 +
1578 .../dashboards/admin/projects/panel.py | 33 +
1579 .../dashboards/admin/projects/tables.py | 157 +
1580 .../projects/templates/projects/_add_user.html | 25 +
1581 .../admin/projects/templates/projects/_create.html | 25 +
1582 .../projects/templates/projects/_create_user.html | 25 +
1583 .../admin/projects/templates/projects/_quotas.html | 24 +
1584 .../admin/projects/templates/projects/_update.html | 25 +
1585 .../templates/projects/_update_members.html | 39 +
1586 .../projects/templates/projects/add_user.html | 11 +
1587 .../admin/projects/templates/projects/create.html | 12 +
1588 .../projects/templates/projects/create_user.html | 12 +
1589 .../admin/projects/templates/projects/index.html | 13 +
1590 .../admin/projects/templates/projects/quotas.html | 11 +
1591 .../admin/projects/templates/projects/update.html | 12 +
1592 .../admin/projects/templates/projects/usage.csv | 11 +
1593 .../admin/projects/templates/projects/usage.html | 14 +
1594 .../admin/projects/templates/projects/users.html | 18 +
1595 .../dashboards/admin/projects/tests.py | 842 +++++
1596 .../dashboards/admin/projects/urls.py | 37 +
1597 .../dashboards/admin/projects/views.py | 203 ++
1598 .../dashboards/admin/projects/workflows.py | 366 ++
1599 .../dashboards/admin/quotas/panel.py | 33 +
1600 .../dashboards/admin/quotas/tables.py | 38 +
1601 .../admin/quotas/templates/quotas/index.html | 13 +
1602 .../dashboards/admin/quotas/tests.py | 1 +
1603 .../dashboards/admin/quotas/urls.py | 27 +
1604 .../dashboards/admin/quotas/views.py | 47 +
1605 .../dashboards/admin/services/panel.py | 33 +
1606 .../dashboards/admin/services/tables.py | 50 +
1607 .../admin/services/templates/services/index.html | 14 +
1608 .../dashboards/admin/services/tests.py | 36 +
1609 .../dashboards/admin/services/urls.py | 27 +
1610 .../dashboards/admin/services/views.py | 41 +
1611 .../dashboards/admin/users/forms.py | 196 ++
1612 .../dashboards/admin/users/panel.py | 33 +
1613 .../dashboards/admin/users/tables.py | 124 +
1614 .../admin/users/templates/users/_create.html | 24 +
1615 .../admin/users/templates/users/_update.html | 24 +
1616 .../admin/users/templates/users/create.html | 12 +
1617 .../admin/users/templates/users/index.html | 13 +
1618 .../admin/users/templates/users/update.html | 12 +
1619 .../dashboards/admin/users/tests.py | 357 ++
1620 openstack_dashboard/dashboards/admin/users/urls.py | 28 +
1621 .../dashboards/admin/users/views.py | 112 +
1622 .../dashboards/admin/volumes/panel.py | 14 +
1623 .../dashboards/admin/volumes/tables.py | 19 +
1624 .../admin/volumes/templates/volumes/detail.html | 15 +
1625 .../admin/volumes/templates/volumes/index.html | 13 +
1626 .../dashboards/admin/volumes/tests.py | 39 +
1627 .../dashboards/admin/volumes/urls.py | 8 +
1628 .../dashboards/admin/volumes/views.py | 39 +
1629 .../access_and_security/floating_ips/forms.py | 47 +
1630 .../access_and_security/floating_ips/tables.py | 130 +
1631 .../access_and_security/floating_ips/tests.py | 177 +
1632 .../access_and_security/floating_ips/urls.py | 29 +
1633 .../access_and_security/floating_ips/views.py | 69 +
1634 .../access_and_security/floating_ips/workflows.py | 115 +
1635 .../project/access_and_security/keypairs/forms.py | 66 +
1636 .../project/access_and_security/keypairs/tables.py | 62 +
1637 .../project/access_and_security/keypairs/tests.py | 163 +
1638 .../project/access_and_security/keypairs/urls.py | 33 +
1639 .../project/access_and_security/keypairs/views.py | 82 +
1640 .../project/access_and_security/panel.py | 30 +
1641 .../access_and_security/security_groups/forms.py | 174 +
1642 .../access_and_security/security_groups/tables.py | 109 +
1643 .../access_and_security/security_groups/tests.py | 375 ++
1644 .../access_and_security/security_groups/urls.py | 30 +
1645 .../access_and_security/security_groups/views.py | 121 +
1646 .../floating_ips/_allocate.html | 33 +
1647 .../access_and_security/floating_ips/allocate.html | 7 +
1648 .../floating_ips/associate.html | 11 +
1649 .../templates/access_and_security/index.html | 21 +
1650 .../access_and_security/keypairs/_create.html | 25 +
1651 .../access_and_security/keypairs/_import.html | 25 +
1652 .../access_and_security/keypairs/create.html | 12 +
1653 .../access_and_security/keypairs/download.html | 21 +
1654 .../access_and_security/keypairs/import.html | 12 +
1655 .../security_groups/_create.html | 25 +
1656 .../security_groups/_edit_rules.html | 21 +
1657 .../security_groups/create.html | 11 +
1658 .../security_groups/edit_rules.html | 11 +
1659 .../project/access_and_security/tests.py | 88 +
1660 .../dashboards/project/access_and_security/urls.py | 35 +
1661 .../project/access_and_security/views.py | 84 +
1662 .../dashboards/project/containers/browsers.py | 33 +
1663 .../dashboards/project/containers/forms.py | 164 +
1664 .../dashboards/project/containers/panel.py | 33 +
1665 .../dashboards/project/containers/tables.py | 270 ++
1666 .../containers/templates/containers/_copy.html | 24 +
1667 .../containers/templates/containers/_create.html | 24 +
1668 .../containers/templates/containers/_upload.html | 25 +
1669 .../containers/templates/containers/copy.html | 13 +
1670 .../containers/templates/containers/create.html | 11 +
1671 .../containers/templates/containers/index.html | 13 +
1672 .../containers/templates/containers/upload.html | 15 +
1673 .../dashboards/project/containers/tests.py | 238 ++
1674 .../dashboards/project/containers/urls.py | 50 +
1675 .../dashboards/project/containers/views.py | 218 ++
1676 .../dashboards/project/dashboard.py | 47 +
1677 .../project/images_and_snapshots/images/forms.py | 165 +
1678 .../project/images_and_snapshots/images/tables.py | 135 +
1679 .../project/images_and_snapshots/images/tabs.py | 45 +
1680 .../project/images_and_snapshots/images/tests.py | 96 +
1681 .../project/images_and_snapshots/images/urls.py | 34 +
1682 .../project/images_and_snapshots/images/views.py | 84 +
1683 .../project/images_and_snapshots/panel.py | 30 +
1684 .../images_and_snapshots/snapshots/forms.py | 57 +
1685 .../images_and_snapshots/snapshots/tables.py | 60 +
1686 .../images_and_snapshots/snapshots/tests.py | 98 +
1687 .../project/images_and_snapshots/snapshots/urls.py | 30 +
1688 .../images_and_snapshots/snapshots/views.py | 63 +
1689 .../images_and_snapshots/images/_create.html | 33 +
1690 .../images/_detail_overview.html | 68 +
1691 .../images_and_snapshots/images/_update.html | 24 +
1692 .../images_and_snapshots/images/create.html | 11 +
1693 .../images_and_snapshots/images/detail.html | 16 +
1694 .../images_and_snapshots/images/update.html | 11 +
1695 .../templates/images_and_snapshots/index.html | 19 +
1696 .../images_and_snapshots/snapshots/_create.html | 25 +
1697 .../snapshots/_detail_overview.html | 42 +
1698 .../images_and_snapshots/snapshots/create.html | 11 +
1699 .../images_and_snapshots/snapshots/detail.html | 15 +
1700 .../project/images_and_snapshots/tests.py | 170 +
1701 .../project/images_and_snapshots/urls.py | 35 +
1702 .../project/images_and_snapshots/views.py | 89 +
1703 .../volume_snapshots/tables.py | 89 +
1704 .../images_and_snapshots/volume_snapshots/tabs.py | 49 +
1705 .../images_and_snapshots/volume_snapshots/tests.py | 61 +
1706 .../dashboards/project/instances/forms.py | 51 +
1707 .../dashboards/project/instances/panel.py | 29 +
1708 .../dashboards/project/instances/tables.py | 319 ++
1709 .../dashboards/project/instances/tabs.py | 78 +
1710 .../instances/templates/instances/_detail_log.html | 17 +
1711 .../templates/instances/_detail_overview.html | 98 +
1712 .../instances/templates/instances/_detail_vnc.html | 10 +
1713 .../templates/instances/_instance_ips.html | 10 +
1714 .../instances/_launch_customize_help.html | 3 +
1715 .../templates/instances/_launch_details_help.html | 53 +
1716 .../templates/instances/_launch_volumes_help.html | 3 +
1717 .../instances/templates/instances/_update.html | 24 +
1718 .../instances/templates/instances/detail.html | 15 +
1719 .../instances/templates/instances/index.html | 11 +
1720 .../instances/templates/instances/launch.html | 11 +
1721 .../instances/templates/instances/update.html | 11 +
1722 .../dashboards/project/instances/tests.py | 980 ++++++
1723 .../dashboards/project/instances/urls.py | 37 +
1724 .../dashboards/project/instances/views.py | 187 +
1725 .../dashboards/project/instances/workflows.py | 511 +++
1726 openstack_dashboard/dashboards/project/models.py | 23 +
1727 .../dashboards/project/networks/forms.py | 56 +
1728 .../dashboards/project/networks/panel.py | 29 +
1729 .../dashboards/project/networks/ports/tables.py | 53 +
1730 .../dashboards/project/networks/ports/tabs.py | 49 +
1731 .../dashboards/project/networks/ports/urls.py | 28 +
1732 .../dashboards/project/networks/ports/views.py | 24 +
1733 .../dashboards/project/networks/subnets/forms.py | 139 +
1734 .../dashboards/project/networks/subnets/tables.py | 106 +
1735 .../dashboards/project/networks/subnets/tabs.py | 49 +
1736 .../dashboards/project/networks/subnets/urls.py | 28 +
1737 .../dashboards/project/networks/subnets/views.py | 111 +
1738 .../dashboards/project/networks/tables.py | 108 +
1739 .../networks/templates/networks/_create.html | 24 +
1740 .../templates/networks/_detail_overview.html | 20 +
1741 .../networks/templates/networks/_network_ips.html | 10 +
1742 .../networks/templates/networks/_update.html | 24 +
1743 .../networks/templates/networks/create.html | 11 +
1744 .../networks/templates/networks/detail.html | 18 +
1745 .../project/networks/templates/networks/index.html | 11 +
1746 .../templates/networks/ports/_detail_overview.html | 41 +
1747 .../templates/networks/ports/_port_ips.html | 7 +
1748 .../networks/templates/networks/ports/detail.html | 15 +
1749 .../templates/networks/subnets/_create.html | 25 +
1750 .../networks/subnets/_detail_overview.html | 29 +
1751 .../templates/networks/subnets/_update.html | 33 +
1752 .../templates/networks/subnets/create.html | 11 +
1753 .../templates/networks/subnets/detail.html | 15 +
1754 .../networks/templates/networks/subnets/index.html | 11 +
1755 .../templates/networks/subnets/update.html | 11 +
1756 .../networks/templates/networks/update.html | 11 +
1757 .../dashboards/project/networks/tests.py | 782 +++++
1758 .../dashboards/project/networks/urls.py | 39 +
1759 .../dashboards/project/networks/views.py | 143 +
1760 .../dashboards/project/networks/workflows.py | 162 +
1761 .../dashboards/project/overview/panel.py | 33 +
1762 .../project/overview/templates/overview/usage.csv | 11 +
1763 .../project/overview/templates/overview/usage.html | 13 +
1764 .../dashboards/project/overview/tests.py | 144 +
1765 .../dashboards/project/overview/urls.py | 30 +
1766 .../dashboards/project/overview/views.py | 37 +
1767 .../dashboards/project/volumes/forms.py | 219 ++
1768 .../dashboards/project/volumes/panel.py | 30 +
1769 .../dashboards/project/volumes/tables.py | 227 ++
1770 .../dashboards/project/volumes/tabs.py | 49 +
1771 .../project/volumes/templates/volumes/_attach.html | 25 +
1772 .../project/volumes/templates/volumes/_create.html | 57 +
1773 .../templates/volumes/_create_snapshot.html | 25 +
1774 .../templates/volumes/_detail_overview.html | 49 +
1775 .../project/volumes/templates/volumes/attach.html | 11 +
1776 .../project/volumes/templates/volumes/create.html | 11 +
1777 .../volumes/templates/volumes/create_snapshot.html | 11 +
1778 .../project/volumes/templates/volumes/detail.html | 15 +
1779 .../project/volumes/templates/volumes/index.html | 11 +
1780 .../dashboards/project/volumes/tests.py | 329 ++
1781 .../dashboards/project/volumes/urls.py | 35 +
1782 .../dashboards/project/volumes/views.py | 184 +
1783 .../dashboards/settings/dashboard.py | 31 +
1784 .../dashboards/settings/ec2/forms.py | 110 +
1785 .../dashboards/settings/ec2/panel.py | 29 +
1786 .../settings/ec2/templates/ec2/download_form.html | 25 +
1787 .../settings/ec2/templates/ec2/ec2rc.sh.template | 15 +
1788 .../settings/ec2/templates/ec2/index.html | 11 +
1789 .../dashboards/settings/ec2/tests.py | 70 +
1790 .../dashboards/settings/ec2/urls.py | 23 +
1791 .../dashboards/settings/ec2/views.py | 32 +
1792 openstack_dashboard/dashboards/settings/models.py | 23 +
1793 .../dashboards/settings/project/forms.py | 72 +
1794 .../dashboards/settings/project/panel.py | 29 +
1795 .../dashboards/settings/project/tables.py | 33 +
1796 .../project/templates/project/_openrc.html | 32 +
1797 .../project/templates/project/openrc.sh.template | 24 +
1798 .../project/templates/project/settings.html | 11 +
1799 .../dashboards/settings/project/urls.py | 23 +
1800 .../dashboards/settings/project/views.py | 44 +
1801 .../dashboards/settings/user/forms.py | 59 +
1802 .../dashboards/settings/user/panel.py | 29 +
1803 .../settings/user/templates/user/_settings.html | 26 +
1804 .../settings/user/templates/user/settings.html | 11 +
1805 .../dashboards/settings/user/urls.py | 23 +
1806 .../dashboards/settings/user/views.py | 31 +
1807 .../locale/bg_BG/LC_MESSAGES/django.mo | Bin 1821 -> 24445 bytes
1808 .../locale/bg_BG/LC_MESSAGES/django.po | 3292 +++++++++++++++++-
1809 .../locale/cs/LC_MESSAGES/django.mo | Bin 1588 -> 1588 bytes
1810 .../locale/cs/LC_MESSAGES/django.po | 3284 ++++++++++++++++-
1811 .../locale/en/LC_MESSAGES/django.mo | Bin 1566 -> 36006 bytes
1812 .../locale/en/LC_MESSAGES/django.po | 3330 +++++++++++++++++-
1813 .../locale/es/LC_MESSAGES/django.mo | Bin 1564 -> 53340 bytes
1814 .../locale/es/LC_MESSAGES/django.po | 3373 +++++++++++++++++-
1815 .../locale/fr/LC_MESSAGES/django.mo | Bin 1577 -> 1520 bytes
1816 .../locale/fr/LC_MESSAGES/django.po | 3269 ++++++++++++++++-
1817 .../locale/it/LC_MESSAGES/django.mo | Bin 0 -> 26275 bytes
1818 .../locale/it/LC_MESSAGES/django.po | 3347 ++++++++++++++++++
1819 .../locale/ja/LC_MESSAGES/django.mo | Bin 1724 -> 60197 bytes
1820 .../locale/ja/LC_MESSAGES/django.po | 3361 +++++++++++++++++-
1821 .../locale/ko_KR/LC_MESSAGES/django.mo | Bin 1634 -> 2705 bytes
1822 .../locale/ko_KR/LC_MESSAGES/django.po | 3268 ++++++++++++++++-
1823 .../locale/nl_NL/LC_MESSAGES/django.mo | Bin 1577 -> 9678 bytes
1824 .../locale/nl_NL/LC_MESSAGES/django.po | 3264 ++++++++++++++++-
1825 .../locale/pl/LC_MESSAGES/django.mo | Bin 478 -> 810 bytes
1826 .../locale/pl/LC_MESSAGES/django.po | 3489 ++++++++++++++++++-
1827 .../locale/pt/LC_MESSAGES/django.mo | Bin 1549 -> 30497 bytes
1828 .../locale/pt/LC_MESSAGES/django.po | 3326 +++++++++++++++++-
1829 .../locale/pt_BR/LC_MESSAGES/django.mo | Bin 1554 -> 36757 bytes
1830 .../locale/pt_BR/LC_MESSAGES/django.po | 3314 +++++++++++++++++-
1831 .../locale/ru/LC_MESSAGES/django.mo | Bin 0 -> 494 bytes
1832 .../locale/ru/LC_MESSAGES/django.po | 3297 ++++++++++++++++++
1833 .../locale/zh_CN/LC_MESSAGES/django.mo | Bin 1468 -> 14112 bytes
1834 .../locale/zh_CN/LC_MESSAGES/django.po | 3276 ++++++++++++++++-
1835 .../locale/zh_TW/LC_MESSAGES/django.mo | Bin 1516 -> 45327 bytes
1836 .../locale/zh_TW/LC_MESSAGES/django.po | 3293 +++++++++++++++++-
1837 openstack_dashboard/openstack/common/setup.py | 200 ++
1838 openstack_dashboard/settings.py | 9 +-
1839 openstack_dashboard/templates/_header.html | 10 +
1840 openstack_dashboard/test/api_tests/base_tests.py | 149 +
1841 openstack_dashboard/test/api_tests/glance_tests.py | 67 +
1842 .../test/api_tests/keystone_tests.py | 98 +
1843 openstack_dashboard/test/api_tests/nova_tests.py | 206 ++
1844 .../test/api_tests/quantum_tests.py | 205 ++
1845 openstack_dashboard/test/api_tests/swift_tests.py | 120 +
1846 openstack_dashboard/test/helpers.py | 298 ++
1847 openstack_dashboard/test/settings.py | 79 +-
1848 openstack_dashboard/test/templates/404.html | 1 +
1849 openstack_dashboard/test/templates/500.html | 1 +
1850 openstack_dashboard/test/templates/_tab.html | 1 +
1851 openstack_dashboard/test/templates/tab_group.html | 1 +
1852 openstack_dashboard/test/templates/workflow.html | 1 +
1853 openstack_dashboard/test/test_data/exceptions.py | 67 +
1854 openstack_dashboard/test/test_data/glance_data.py | 89 +
1855 .../test/test_data/keystone_data.py | 160 +
1856 openstack_dashboard/test/test_data/nova_data.py | 343 ++
1857 openstack_dashboard/test/test_data/quantum_data.py | 111 +
1858 openstack_dashboard/test/test_data/swift_data.py | 39 +
1859 openstack_dashboard/test/test_data/utils.py | 126 +
1860 openstack_dashboard/test/tests/selenium.py | 24 +
1861 openstack_dashboard/urls.py | 5 +-
1862 openstack_dashboard/usage/__init__.py | 19 +
1863 openstack_dashboard/usage/base.py | 156 +
1864 openstack_dashboard/usage/tables.py | 71 +
1865 openstack_dashboard/usage/views.py | 54 +
1866 openstack_dashboard/views.py | 38 +
1867 run_tests.sh | 2 +-
1868 setup.py | 2 +-
1869 876 files changed, 76759 insertions(+), 78266 deletions(-)
1870
1871commit ef1e1d9b7a1fd4140518318ead8b7174a6a434ab
1872Author: Gabriel Hurley <gabriel@strikeawe.com>
1873Date: Fri Oct 5 12:05:08 2012 -0700
1874
1875 Corrects an error in the EC2 form choices.
1876
1877 Fixes bug 1062490.
1878
1879 Change-Id: I1b8bd0fa362c3ddb67a7d4127211adf969b8c48c
1880
1881 horizon/dashboards/settings/ec2/forms.py | 2 +-
1882 1 file changed, 1 insertion(+), 1 deletion(-)
1883
1884commit a058bfc1d61a033c8403524d95422a394b2a4d0d
1885Author: Gabriel Hurley <gabriel@strikeawe.com>
1886Date: Wed Oct 3 14:29:24 2012 -0700
1887
1888 Renames legacy dashboards.
1889
1890 The "Nova" dashboard is now "Project" and the "Syspanel" dashboard
1891 is now "Admin" to match the current real names of the dashboards
1892 which better match their purposes.
1893
1894 Implements blueprint fix-legacy-dashboard-names
1895
1896 Change-Id: I702aa0d54c4e3b0ac10db46e6d6ed32803919b7b
1897
1898 horizon/dashboards/admin/dashboard.py | 37 +
1899 horizon/dashboards/admin/flavors/forms.py | 95 ++
1900 horizon/dashboards/admin/flavors/panel.py | 32 +
1901 horizon/dashboards/admin/flavors/tables.py | 53 ++
1902 .../admin/flavors/templates/flavors/_create.html | 25 +
1903 .../admin/flavors/templates/flavors/_edit.html | 26 +
1904 .../admin/flavors/templates/flavors/create.html | 11 +
1905 .../admin/flavors/templates/flavors/edit.html | 11 +
1906 .../admin/flavors/templates/flavors/index.html | 11 +
1907 horizon/dashboards/admin/flavors/tests.py | 81 ++
1908 horizon/dashboards/admin/flavors/urls.py | 28 +
1909 horizon/dashboards/admin/flavors/views.py | 81 ++
1910 horizon/dashboards/admin/images/forms.py | 25 +
1911 horizon/dashboards/admin/images/panel.py | 32 +
1912 horizon/dashboards/admin/images/tables.py | 45 +
1913 .../admin/images/templates/images/_update.html | 25 +
1914 .../admin/images/templates/images/index.html | 11 +
1915 .../admin/images/templates/images/update.html | 12 +
1916 horizon/dashboards/admin/images/tests.py | 97 ++
1917 horizon/dashboards/admin/images/urls.py | 30 +
1918 horizon/dashboards/admin/images/views.py | 66 ++
1919 horizon/dashboards/admin/instances/panel.py | 33 +
1920 horizon/dashboards/admin/instances/tables.py | 99 ++
1921 .../admin/instances/templates/instances/index.html | 11 +
1922 horizon/dashboards/admin/instances/tests.py | 142 +++
1923 horizon/dashboards/admin/instances/urls.py | 34 +
1924 horizon/dashboards/admin/instances/views.py | 81 ++
1925 horizon/dashboards/admin/models.py | 23 +
1926 horizon/dashboards/admin/networks/forms.py | 89 ++
1927 horizon/dashboards/admin/networks/panel.py | 28 +
1928 horizon/dashboards/admin/networks/ports/forms.py | 92 ++
1929 horizon/dashboards/admin/networks/ports/tables.py | 85 ++
1930 horizon/dashboards/admin/networks/ports/tabs.py | 46 +
1931 horizon/dashboards/admin/networks/ports/urls.py | 24 +
1932 horizon/dashboards/admin/networks/ports/views.py | 98 ++
1933 horizon/dashboards/admin/networks/subnets/forms.py | 52 ++
1934 .../dashboards/admin/networks/subnets/tables.py | 82 ++
1935 horizon/dashboards/admin/networks/subnets/urls.py | 24 +
1936 horizon/dashboards/admin/networks/subnets/views.py | 101 ++
1937 horizon/dashboards/admin/networks/tables.py | 82 ++
1938 .../admin/networks/templates/networks/_create.html | 25 +
1939 .../admin/networks/templates/networks/_update.html | 24 +
1940 .../admin/networks/templates/networks/create.html | 11 +
1941 .../admin/networks/templates/networks/index.html | 21 +
1942 .../networks/templates/networks/ports/_create.html | 25 +
1943 .../networks/templates/networks/ports/_update.html | 29 +
1944 .../networks/templates/networks/ports/create.html | 11 +
1945 .../networks/templates/networks/ports/update.html | 11 +
1946 .../templates/networks/subnets/_create.html | 25 +
1947 .../templates/networks/subnets/_update.html | 33 +
1948 .../templates/networks/subnets/create.html | 11 +
1949 .../networks/templates/networks/subnets/index.html | 11 +
1950 .../templates/networks/subnets/update.html | 11 +
1951 .../admin/networks/templates/networks/update.html | 11 +
1952 horizon/dashboards/admin/networks/tests.py | 805 ++++++++++++++++
1953 horizon/dashboards/admin/networks/urls.py | 45 +
1954 horizon/dashboards/admin/networks/views.py | 140 +++
1955 horizon/dashboards/admin/overview/panel.py | 33 +
1956 .../admin/overview/templates/overview/usage.csv | 9 +
1957 .../admin/overview/templates/overview/usage.html | 22 +
1958 horizon/dashboards/admin/overview/tests.py | 95 ++
1959 horizon/dashboards/admin/overview/urls.py | 28 +
1960 horizon/dashboards/admin/overview/views.py | 48 +
1961 horizon/dashboards/admin/projects/forms.py | 33 +
1962 horizon/dashboards/admin/projects/panel.py | 32 +
1963 horizon/dashboards/admin/projects/tables.py | 157 ++++
1964 .../projects/templates/projects/_add_user.html | 25 +
1965 .../admin/projects/templates/projects/_create.html | 25 +
1966 .../projects/templates/projects/_create_user.html | 25 +
1967 .../admin/projects/templates/projects/_quotas.html | 24 +
1968 .../admin/projects/templates/projects/_update.html | 25 +
1969 .../templates/projects/_update_members.html | 39 +
1970 .../projects/templates/projects/add_user.html | 11 +
1971 .../admin/projects/templates/projects/create.html | 12 +
1972 .../projects/templates/projects/create_user.html | 12 +
1973 .../admin/projects/templates/projects/index.html | 13 +
1974 .../admin/projects/templates/projects/quotas.html | 11 +
1975 .../admin/projects/templates/projects/update.html | 12 +
1976 .../admin/projects/templates/projects/usage.csv | 11 +
1977 .../admin/projects/templates/projects/usage.html | 14 +
1978 .../admin/projects/templates/projects/users.html | 18 +
1979 horizon/dashboards/admin/projects/tests.py | 842 +++++++++++++++++
1980 horizon/dashboards/admin/projects/urls.py | 37 +
1981 horizon/dashboards/admin/projects/views.py | 203 ++++
1982 horizon/dashboards/admin/projects/workflows.py | 364 ++++++++
1983 horizon/dashboards/admin/quotas/panel.py | 32 +
1984 horizon/dashboards/admin/quotas/tables.py | 38 +
1985 .../admin/quotas/templates/quotas/index.html | 13 +
1986 horizon/dashboards/admin/quotas/urls.py | 27 +
1987 horizon/dashboards/admin/quotas/views.py | 46 +
1988 horizon/dashboards/admin/services/panel.py | 32 +
1989 horizon/dashboards/admin/services/tables.py | 50 +
1990 .../admin/services/templates/services/index.html | 14 +
1991 horizon/dashboards/admin/services/tests.py | 36 +
1992 horizon/dashboards/admin/services/urls.py | 27 +
1993 horizon/dashboards/admin/services/views.py | 40 +
1994 horizon/dashboards/admin/users/forms.py | 195 ++++
1995 horizon/dashboards/admin/users/panel.py | 32 +
1996 horizon/dashboards/admin/users/tables.py | 123 +++
1997 .../admin/users/templates/users/_create.html | 24 +
1998 .../admin/users/templates/users/_update.html | 24 +
1999 .../admin/users/templates/users/create.html | 12 +
2000 .../admin/users/templates/users/index.html | 13 +
2001 .../admin/users/templates/users/update.html | 12 +
2002 horizon/dashboards/admin/users/tests.py | 356 +++++++
2003 horizon/dashboards/admin/users/urls.py | 28 +
2004 horizon/dashboards/admin/users/views.py | 111 +++
2005 horizon/dashboards/admin/volumes/panel.py | 14 +
2006 horizon/dashboards/admin/volumes/tables.py | 19 +
2007 .../admin/volumes/templates/volumes/detail.html | 15 +
2008 .../admin/volumes/templates/volumes/index.html | 13 +
2009 horizon/dashboards/admin/volumes/tests.py | 39 +
2010 horizon/dashboards/admin/volumes/urls.py | 8 +
2011 horizon/dashboards/admin/volumes/views.py | 39 +
2012 .../nova/access_and_security/floating_ips/forms.py | 46 -
2013 .../access_and_security/floating_ips/tables.py | 129 ---
2014 .../nova/access_and_security/floating_ips/tests.py | 176 ----
2015 .../nova/access_and_security/floating_ips/urls.py | 29 -
2016 .../nova/access_and_security/floating_ips/views.py | 68 --
2017 .../access_and_security/floating_ips/workflows.py | 114 ---
2018 .../nova/access_and_security/keypairs/forms.py | 66 --
2019 .../nova/access_and_security/keypairs/tables.py | 61 --
2020 .../nova/access_and_security/keypairs/tests.py | 162 ----
2021 .../nova/access_and_security/keypairs/urls.py | 33 -
2022 .../nova/access_and_security/keypairs/views.py | 81 --
2023 .../dashboards/nova/access_and_security/panel.py | 29 -
2024 .../access_and_security/security_groups/forms.py | 173 ----
2025 .../access_and_security/security_groups/tables.py | 108 ---
2026 .../access_and_security/security_groups/tests.py | 374 --------
2027 .../access_and_security/security_groups/urls.py | 30 -
2028 .../access_and_security/security_groups/views.py | 119 ---
2029 .../floating_ips/_allocate.html | 33 -
2030 .../access_and_security/floating_ips/allocate.html | 7 -
2031 .../floating_ips/associate.html | 11 -
2032 .../templates/access_and_security/index.html | 21 -
2033 .../access_and_security/keypairs/_create.html | 25 -
2034 .../access_and_security/keypairs/_import.html | 25 -
2035 .../access_and_security/keypairs/create.html | 12 -
2036 .../access_and_security/keypairs/download.html | 21 -
2037 .../access_and_security/keypairs/import.html | 12 -
2038 .../security_groups/_create.html | 25 -
2039 .../security_groups/_edit_rules.html | 21 -
2040 .../security_groups/create.html | 11 -
2041 .../security_groups/edit_rules.html | 11 -
2042 .../dashboards/nova/access_and_security/tests.py | 86 --
2043 .../dashboards/nova/access_and_security/urls.py | 34 -
2044 .../dashboards/nova/access_and_security/views.py | 83 --
2045 horizon/dashboards/nova/containers/browsers.py | 37 -
2046 horizon/dashboards/nova/containers/forms.py | 164 ----
2047 horizon/dashboards/nova/containers/panel.py | 32 -
2048 horizon/dashboards/nova/containers/tables.py | 269 ------
2049 .../containers/templates/containers/_copy.html | 24 -
2050 .../containers/templates/containers/_create.html | 24 -
2051 .../containers/templates/containers/_upload.html | 25 -
2052 .../nova/containers/templates/containers/copy.html | 13 -
2053 .../containers/templates/containers/create.html | 11 -
2054 .../containers/templates/containers/index.html | 13 -
2055 .../containers/templates/containers/upload.html | 15 -
2056 horizon/dashboards/nova/containers/tests.py | 237 -----
2057 horizon/dashboards/nova/containers/urls.py | 48 -
2058 horizon/dashboards/nova/containers/views.py | 217 -----
2059 horizon/dashboards/nova/dashboard.py | 47 -
2060 .../nova/images_and_snapshots/images/forms.py | 164 ----
2061 .../nova/images_and_snapshots/images/panel.py | 30 -
2062 .../nova/images_and_snapshots/images/tables.py | 134 ---
2063 .../nova/images_and_snapshots/images/tabs.py | 44 -
2064 .../nova/images_and_snapshots/images/tests.py | 96 --
2065 .../nova/images_and_snapshots/images/urls.py | 32 -
2066 .../nova/images_and_snapshots/images/views.py | 83 --
2067 .../dashboards/nova/images_and_snapshots/panel.py | 29 -
2068 .../nova/images_and_snapshots/snapshots/forms.py | 56 --
2069 .../nova/images_and_snapshots/snapshots/panel.py | 30 -
2070 .../nova/images_and_snapshots/snapshots/tables.py | 59 --
2071 .../nova/images_and_snapshots/snapshots/tests.py | 97 --
2072 .../nova/images_and_snapshots/snapshots/urls.py | 30 -
2073 .../nova/images_and_snapshots/snapshots/views.py | 62 --
2074 .../images_and_snapshots/images/_create.html | 33 -
2075 .../images/_detail_overview.html | 68 --
2076 .../images_and_snapshots/images/_update.html | 24 -
2077 .../images_and_snapshots/images/create.html | 11 -
2078 .../images_and_snapshots/images/detail.html | 16 -
2079 .../images_and_snapshots/images/update.html | 11 -
2080 .../templates/images_and_snapshots/index.html | 19 -
2081 .../images_and_snapshots/snapshots/_create.html | 25 -
2082 .../snapshots/_detail_overview.html | 42 -
2083 .../images_and_snapshots/snapshots/create.html | 11 -
2084 .../images_and_snapshots/snapshots/detail.html | 15 -
2085 .../dashboards/nova/images_and_snapshots/tests.py | 169 ----
2086 .../dashboards/nova/images_and_snapshots/urls.py | 35 -
2087 .../dashboards/nova/images_and_snapshots/views.py | 88 --
2088 .../images_and_snapshots/volume_snapshots/panel.py | 26 -
2089 .../volume_snapshots/tables.py | 88 --
2090 .../images_and_snapshots/volume_snapshots/tabs.py | 48 -
2091 .../images_and_snapshots/volume_snapshots/tests.py | 59 --
2092 horizon/dashboards/nova/instances/forms.py | 50 -
2093 horizon/dashboards/nova/instances/panel.py | 28 -
2094 horizon/dashboards/nova/instances/tables.py | 319 -------
2095 horizon/dashboards/nova/instances/tabs.py | 77 --
2096 .../instances/templates/instances/_detail_log.html | 17 -
2097 .../templates/instances/_detail_overview.html | 98 --
2098 .../instances/templates/instances/_detail_vnc.html | 10 -
2099 .../templates/instances/_instance_ips.html | 10 -
2100 .../instances/_launch_customize_help.html | 3 -
2101 .../templates/instances/_launch_details_help.html | 53 --
2102 .../templates/instances/_launch_volumes_help.html | 3 -
2103 .../instances/templates/instances/_update.html | 24 -
2104 .../nova/instances/templates/instances/detail.html | 15 -
2105 .../nova/instances/templates/instances/index.html | 11 -
2106 .../nova/instances/templates/instances/launch.html | 11 -
2107 .../nova/instances/templates/instances/update.html | 11 -
2108 horizon/dashboards/nova/instances/tests.py | 982 --------------------
2109 horizon/dashboards/nova/instances/urls.py | 36 -
2110 horizon/dashboards/nova/instances/views.py | 186 ----
2111 horizon/dashboards/nova/instances/workflows.py | 510 ----------
2112 horizon/dashboards/nova/models.py | 23 -
2113 horizon/dashboards/nova/networks/forms.py | 55 --
2114 horizon/dashboards/nova/networks/panel.py | 28 -
2115 horizon/dashboards/nova/networks/ports/tables.py | 53 --
2116 horizon/dashboards/nova/networks/ports/tabs.py | 46 -
2117 horizon/dashboards/nova/networks/ports/urls.py | 24 -
2118 horizon/dashboards/nova/networks/ports/views.py | 28 -
2119 horizon/dashboards/nova/networks/subnets/forms.py | 138 ---
2120 horizon/dashboards/nova/networks/subnets/tables.py | 105 ---
2121 horizon/dashboards/nova/networks/subnets/tabs.py | 48 -
2122 horizon/dashboards/nova/networks/subnets/urls.py | 24 -
2123 horizon/dashboards/nova/networks/subnets/views.py | 109 ---
2124 horizon/dashboards/nova/networks/tables.py | 107 ---
2125 .../nova/networks/templates/networks/_create.html | 24 -
2126 .../templates/networks/_detail_overview.html | 20 -
2127 .../networks/templates/networks/_network_ips.html | 10 -
2128 .../nova/networks/templates/networks/_update.html | 24 -
2129 .../nova/networks/templates/networks/create.html | 11 -
2130 .../nova/networks/templates/networks/detail.html | 18 -
2131 .../nova/networks/templates/networks/index.html | 11 -
2132 .../templates/networks/ports/_detail_overview.html | 41 -
2133 .../templates/networks/ports/_port_ips.html | 7 -
2134 .../networks/templates/networks/ports/detail.html | 15 -
2135 .../templates/networks/subnets/_create.html | 25 -
2136 .../networks/subnets/_detail_overview.html | 29 -
2137 .../templates/networks/subnets/_update.html | 33 -
2138 .../templates/networks/subnets/create.html | 11 -
2139 .../templates/networks/subnets/detail.html | 15 -
2140 .../networks/templates/networks/subnets/index.html | 11 -
2141 .../templates/networks/subnets/update.html | 11 -
2142 .../nova/networks/templates/networks/update.html | 11 -
2143 horizon/dashboards/nova/networks/tests.py | 783 ----------------
2144 horizon/dashboards/nova/networks/urls.py | 37 -
2145 horizon/dashboards/nova/networks/views.py | 143 ---
2146 horizon/dashboards/nova/networks/workflows.py | 161 ----
2147 horizon/dashboards/nova/overview/panel.py | 32 -
2148 .../nova/overview/templates/overview/usage.csv | 11 -
2149 .../nova/overview/templates/overview/usage.html | 13 -
2150 horizon/dashboards/nova/overview/tests.py | 143 ---
2151 horizon/dashboards/nova/overview/urls.py | 29 -
2152 horizon/dashboards/nova/overview/views.py | 37 -
2153 .../dashboards/nova/templates/nova/_warning.html | 32 -
2154 horizon/dashboards/nova/volumes/forms.py | 219 -----
2155 horizon/dashboards/nova/volumes/panel.py | 29 -
2156 horizon/dashboards/nova/volumes/tables.py | 226 -----
2157 horizon/dashboards/nova/volumes/tabs.py | 48 -
2158 .../nova/volumes/templates/volumes/_attach.html | 25 -
2159 .../nova/volumes/templates/volumes/_create.html | 57 --
2160 .../templates/volumes/_create_snapshot.html | 25 -
2161 .../templates/volumes/_detail_overview.html | 49 -
2162 .../nova/volumes/templates/volumes/attach.html | 11 -
2163 .../nova/volumes/templates/volumes/create.html | 11 -
2164 .../volumes/templates/volumes/create_snapshot.html | 11 -
2165 .../nova/volumes/templates/volumes/detail.html | 15 -
2166 .../nova/volumes/templates/volumes/index.html | 11 -
2167 horizon/dashboards/nova/volumes/tests.py | 328 -------
2168 horizon/dashboards/nova/volumes/urls.py | 35 -
2169 horizon/dashboards/nova/volumes/views.py | 184 ----
2170 .../access_and_security/floating_ips/forms.py | 46 +
2171 .../access_and_security/floating_ips/tables.py | 129 +++
2172 .../access_and_security/floating_ips/tests.py | 176 ++++
2173 .../access_and_security/floating_ips/urls.py | 29 +
2174 .../access_and_security/floating_ips/views.py | 68 ++
2175 .../access_and_security/floating_ips/workflows.py | 114 +++
2176 .../project/access_and_security/keypairs/forms.py | 65 ++
2177 .../project/access_and_security/keypairs/tables.py | 61 ++
2178 .../project/access_and_security/keypairs/tests.py | 162 ++++
2179 .../project/access_and_security/keypairs/urls.py | 33 +
2180 .../project/access_and_security/keypairs/views.py | 81 ++
2181 .../project/access_and_security/panel.py | 29 +
2182 .../access_and_security/security_groups/forms.py | 173 ++++
2183 .../access_and_security/security_groups/tables.py | 108 +++
2184 .../access_and_security/security_groups/tests.py | 374 ++++++++
2185 .../access_and_security/security_groups/urls.py | 30 +
2186 .../access_and_security/security_groups/views.py | 120 +++
2187 .../floating_ips/_allocate.html | 33 +
2188 .../access_and_security/floating_ips/allocate.html | 7 +
2189 .../floating_ips/associate.html | 11 +
2190 .../templates/access_and_security/index.html | 21 +
2191 .../access_and_security/keypairs/_create.html | 25 +
2192 .../access_and_security/keypairs/_import.html | 25 +
2193 .../access_and_security/keypairs/create.html | 12 +
2194 .../access_and_security/keypairs/download.html | 21 +
2195 .../access_and_security/keypairs/import.html | 12 +
2196 .../security_groups/_create.html | 25 +
2197 .../security_groups/_edit_rules.html | 21 +
2198 .../security_groups/create.html | 11 +
2199 .../security_groups/edit_rules.html | 11 +
2200 .../project/access_and_security/tests.py | 86 ++
2201 .../dashboards/project/access_and_security/urls.py | 34 +
2202 .../project/access_and_security/views.py | 83 ++
2203 horizon/dashboards/project/containers/browsers.py | 37 +
2204 horizon/dashboards/project/containers/forms.py | 164 ++++
2205 horizon/dashboards/project/containers/panel.py | 32 +
2206 horizon/dashboards/project/containers/tables.py | 269 ++++++
2207 .../containers/templates/containers/_copy.html | 24 +
2208 .../containers/templates/containers/_create.html | 24 +
2209 .../containers/templates/containers/_upload.html | 25 +
2210 .../containers/templates/containers/copy.html | 13 +
2211 .../containers/templates/containers/create.html | 11 +
2212 .../containers/templates/containers/index.html | 13 +
2213 .../containers/templates/containers/upload.html | 15 +
2214 horizon/dashboards/project/containers/tests.py | 237 +++++
2215 horizon/dashboards/project/containers/urls.py | 48 +
2216 horizon/dashboards/project/containers/views.py | 217 +++++
2217 horizon/dashboards/project/dashboard.py | 47 +
2218 .../project/images_and_snapshots/images/forms.py | 164 ++++
2219 .../project/images_and_snapshots/images/panel.py | 30 +
2220 .../project/images_and_snapshots/images/tables.py | 134 +++
2221 .../project/images_and_snapshots/images/tabs.py | 44 +
2222 .../project/images_and_snapshots/images/tests.py | 96 ++
2223 .../project/images_and_snapshots/images/urls.py | 32 +
2224 .../project/images_and_snapshots/images/views.py | 83 ++
2225 .../project/images_and_snapshots/panel.py | 29 +
2226 .../images_and_snapshots/snapshots/forms.py | 56 ++
2227 .../images_and_snapshots/snapshots/panel.py | 30 +
2228 .../images_and_snapshots/snapshots/tables.py | 59 ++
2229 .../images_and_snapshots/snapshots/tests.py | 97 ++
2230 .../project/images_and_snapshots/snapshots/urls.py | 30 +
2231 .../images_and_snapshots/snapshots/views.py | 62 ++
2232 .../images_and_snapshots/images/_create.html | 33 +
2233 .../images/_detail_overview.html | 68 ++
2234 .../images_and_snapshots/images/_update.html | 24 +
2235 .../images_and_snapshots/images/create.html | 11 +
2236 .../images_and_snapshots/images/detail.html | 16 +
2237 .../images_and_snapshots/images/update.html | 11 +
2238 .../templates/images_and_snapshots/index.html | 19 +
2239 .../images_and_snapshots/snapshots/_create.html | 25 +
2240 .../snapshots/_detail_overview.html | 42 +
2241 .../images_and_snapshots/snapshots/create.html | 11 +
2242 .../images_and_snapshots/snapshots/detail.html | 15 +
2243 .../project/images_and_snapshots/tests.py | 169 ++++
2244 .../project/images_and_snapshots/urls.py | 35 +
2245 .../project/images_and_snapshots/views.py | 88 ++
2246 .../images_and_snapshots/volume_snapshots/panel.py | 26 +
2247 .../volume_snapshots/tables.py | 88 ++
2248 .../images_and_snapshots/volume_snapshots/tabs.py | 48 +
2249 .../images_and_snapshots/volume_snapshots/tests.py | 61 ++
2250 horizon/dashboards/project/instances/forms.py | 50 +
2251 horizon/dashboards/project/instances/panel.py | 28 +
2252 horizon/dashboards/project/instances/tables.py | 319 +++++++
2253 horizon/dashboards/project/instances/tabs.py | 77 ++
2254 .../instances/templates/instances/_detail_log.html | 17 +
2255 .../templates/instances/_detail_overview.html | 98 ++
2256 .../instances/templates/instances/_detail_vnc.html | 10 +
2257 .../templates/instances/_instance_ips.html | 10 +
2258 .../instances/_launch_customize_help.html | 3 +
2259 .../templates/instances/_launch_details_help.html | 53 ++
2260 .../templates/instances/_launch_volumes_help.html | 3 +
2261 .../instances/templates/instances/_update.html | 24 +
2262 .../instances/templates/instances/detail.html | 15 +
2263 .../instances/templates/instances/index.html | 11 +
2264 .../instances/templates/instances/launch.html | 11 +
2265 .../instances/templates/instances/update.html | 11 +
2266 horizon/dashboards/project/instances/tests.py | 980 +++++++++++++++++++
2267 horizon/dashboards/project/instances/urls.py | 36 +
2268 horizon/dashboards/project/instances/views.py | 186 ++++
2269 horizon/dashboards/project/instances/workflows.py | 510 ++++++++++
2270 horizon/dashboards/project/models.py | 23 +
2271 horizon/dashboards/project/networks/forms.py | 55 ++
2272 horizon/dashboards/project/networks/panel.py | 28 +
2273 .../dashboards/project/networks/ports/tables.py | 53 ++
2274 horizon/dashboards/project/networks/ports/tabs.py | 46 +
2275 horizon/dashboards/project/networks/ports/urls.py | 24 +
2276 horizon/dashboards/project/networks/ports/views.py | 28 +
2277 .../dashboards/project/networks/subnets/forms.py | 138 +++
2278 .../dashboards/project/networks/subnets/tables.py | 105 +++
2279 .../dashboards/project/networks/subnets/tabs.py | 48 +
2280 .../dashboards/project/networks/subnets/urls.py | 24 +
2281 .../dashboards/project/networks/subnets/views.py | 109 +++
2282 horizon/dashboards/project/networks/tables.py | 107 +++
2283 .../networks/templates/networks/_create.html | 24 +
2284 .../templates/networks/_detail_overview.html | 20 +
2285 .../networks/templates/networks/_network_ips.html | 10 +
2286 .../networks/templates/networks/_update.html | 24 +
2287 .../networks/templates/networks/create.html | 11 +
2288 .../networks/templates/networks/detail.html | 18 +
2289 .../project/networks/templates/networks/index.html | 11 +
2290 .../templates/networks/ports/_detail_overview.html | 41 +
2291 .../templates/networks/ports/_port_ips.html | 7 +
2292 .../networks/templates/networks/ports/detail.html | 15 +
2293 .../templates/networks/subnets/_create.html | 25 +
2294 .../networks/subnets/_detail_overview.html | 29 +
2295 .../templates/networks/subnets/_update.html | 33 +
2296 .../templates/networks/subnets/create.html | 11 +
2297 .../templates/networks/subnets/detail.html | 15 +
2298 .../networks/templates/networks/subnets/index.html | 11 +
2299 .../templates/networks/subnets/update.html | 11 +
2300 .../networks/templates/networks/update.html | 11 +
2301 horizon/dashboards/project/networks/tests.py | 782 ++++++++++++++++
2302 horizon/dashboards/project/networks/urls.py | 37 +
2303 horizon/dashboards/project/networks/views.py | 143 +++
2304 horizon/dashboards/project/networks/workflows.py | 161 ++++
2305 horizon/dashboards/project/overview/panel.py | 32 +
2306 .../project/overview/templates/overview/usage.csv | 11 +
2307 .../project/overview/templates/overview/usage.html | 13 +
2308 horizon/dashboards/project/overview/tests.py | 143 +++
2309 horizon/dashboards/project/overview/urls.py | 29 +
2310 horizon/dashboards/project/overview/views.py | 37 +
2311 horizon/dashboards/project/volumes/forms.py | 219 +++++
2312 horizon/dashboards/project/volumes/panel.py | 29 +
2313 horizon/dashboards/project/volumes/tables.py | 226 +++++
2314 horizon/dashboards/project/volumes/tabs.py | 48 +
2315 .../project/volumes/templates/volumes/_attach.html | 25 +
2316 .../project/volumes/templates/volumes/_create.html | 57 ++
2317 .../templates/volumes/_create_snapshot.html | 25 +
2318 .../templates/volumes/_detail_overview.html | 49 +
2319 .../project/volumes/templates/volumes/attach.html | 11 +
2320 .../project/volumes/templates/volumes/create.html | 11 +
2321 .../volumes/templates/volumes/create_snapshot.html | 11 +
2322 .../project/volumes/templates/volumes/detail.html | 15 +
2323 .../project/volumes/templates/volumes/index.html | 11 +
2324 horizon/dashboards/project/volumes/tests.py | 328 +++++++
2325 horizon/dashboards/project/volumes/urls.py | 35 +
2326 horizon/dashboards/project/volumes/views.py | 184 ++++
2327 horizon/dashboards/syspanel/dashboard.py | 37 -
2328 horizon/dashboards/syspanel/flavors/forms.py | 95 --
2329 horizon/dashboards/syspanel/flavors/panel.py | 32 -
2330 horizon/dashboards/syspanel/flavors/tables.py | 53 --
2331 .../flavors/templates/flavors/_create.html | 25 -
2332 .../syspanel/flavors/templates/flavors/_edit.html | 26 -
2333 .../syspanel/flavors/templates/flavors/create.html | 11 -
2334 .../syspanel/flavors/templates/flavors/edit.html | 11 -
2335 .../syspanel/flavors/templates/flavors/index.html | 11 -
2336 horizon/dashboards/syspanel/flavors/tests.py | 81 --
2337 horizon/dashboards/syspanel/flavors/urls.py | 28 -
2338 horizon/dashboards/syspanel/flavors/views.py | 81 --
2339 horizon/dashboards/syspanel/images/forms.py | 25 -
2340 horizon/dashboards/syspanel/images/panel.py | 32 -
2341 horizon/dashboards/syspanel/images/tables.py | 45 -
2342 .../syspanel/images/templates/images/_update.html | 25 -
2343 .../syspanel/images/templates/images/index.html | 11 -
2344 .../syspanel/images/templates/images/update.html | 12 -
2345 horizon/dashboards/syspanel/images/tests.py | 97 --
2346 horizon/dashboards/syspanel/images/urls.py | 30 -
2347 horizon/dashboards/syspanel/images/views.py | 66 --
2348 horizon/dashboards/syspanel/instances/panel.py | 33 -
2349 horizon/dashboards/syspanel/instances/tables.py | 99 --
2350 .../instances/templates/instances/index.html | 11 -
2351 horizon/dashboards/syspanel/instances/tests.py | 142 ---
2352 horizon/dashboards/syspanel/instances/urls.py | 34 -
2353 horizon/dashboards/syspanel/instances/views.py | 81 --
2354 horizon/dashboards/syspanel/models.py | 23 -
2355 horizon/dashboards/syspanel/networks/forms.py | 89 --
2356 horizon/dashboards/syspanel/networks/panel.py | 28 -
2357 .../dashboards/syspanel/networks/ports/forms.py | 92 --
2358 .../dashboards/syspanel/networks/ports/tables.py | 85 --
2359 horizon/dashboards/syspanel/networks/ports/tabs.py | 46 -
2360 horizon/dashboards/syspanel/networks/ports/urls.py | 24 -
2361 .../dashboards/syspanel/networks/ports/views.py | 98 --
2362 .../dashboards/syspanel/networks/subnets/forms.py | 52 --
2363 .../dashboards/syspanel/networks/subnets/tables.py | 82 --
2364 .../dashboards/syspanel/networks/subnets/urls.py | 24 -
2365 .../dashboards/syspanel/networks/subnets/views.py | 101 --
2366 horizon/dashboards/syspanel/networks/tables.py | 82 --
2367 .../networks/templates/networks/_create.html | 25 -
2368 .../networks/templates/networks/_update.html | 24 -
2369 .../networks/templates/networks/create.html | 11 -
2370 .../networks/templates/networks/index.html | 21 -
2371 .../networks/templates/networks/ports/_create.html | 25 -
2372 .../networks/templates/networks/ports/_update.html | 29 -
2373 .../networks/templates/networks/ports/create.html | 11 -
2374 .../networks/templates/networks/ports/update.html | 11 -
2375 .../templates/networks/subnets/_create.html | 25 -
2376 .../templates/networks/subnets/_update.html | 33 -
2377 .../templates/networks/subnets/create.html | 11 -
2378 .../networks/templates/networks/subnets/index.html | 11 -
2379 .../templates/networks/subnets/update.html | 11 -
2380 .../networks/templates/networks/update.html | 11 -
2381 horizon/dashboards/syspanel/networks/tests.py | 805 ----------------
2382 horizon/dashboards/syspanel/networks/urls.py | 45 -
2383 horizon/dashboards/syspanel/networks/views.py | 140 ---
2384 horizon/dashboards/syspanel/overview/panel.py | 33 -
2385 .../syspanel/overview/templates/overview/usage.csv | 9 -
2386 .../overview/templates/overview/usage.html | 22 -
2387 horizon/dashboards/syspanel/overview/tests.py | 95 --
2388 horizon/dashboards/syspanel/overview/urls.py | 28 -
2389 horizon/dashboards/syspanel/overview/views.py | 48 -
2390 horizon/dashboards/syspanel/projects/forms.py | 33 -
2391 horizon/dashboards/syspanel/projects/panel.py | 32 -
2392 horizon/dashboards/syspanel/projects/tables.py | 157 ----
2393 .../projects/templates/projects/_add_user.html | 25 -
2394 .../projects/templates/projects/_create.html | 25 -
2395 .../projects/templates/projects/_create_user.html | 25 -
2396 .../projects/templates/projects/_quotas.html | 24 -
2397 .../projects/templates/projects/_update.html | 25 -
2398 .../templates/projects/_update_members.html | 39 -
2399 .../projects/templates/projects/add_user.html | 11 -
2400 .../projects/templates/projects/create.html | 12 -
2401 .../projects/templates/projects/create_user.html | 12 -
2402 .../projects/templates/projects/index.html | 13 -
2403 .../projects/templates/projects/quotas.html | 11 -
2404 .../projects/templates/projects/update.html | 12 -
2405 .../syspanel/projects/templates/projects/usage.csv | 11 -
2406 .../projects/templates/projects/usage.html | 14 -
2407 .../projects/templates/projects/users.html | 18 -
2408 horizon/dashboards/syspanel/projects/tests.py | 842 -----------------
2409 horizon/dashboards/syspanel/projects/urls.py | 37 -
2410 horizon/dashboards/syspanel/projects/views.py | 203 ----
2411 horizon/dashboards/syspanel/projects/workflows.py | 364 --------
2412 horizon/dashboards/syspanel/quotas/panel.py | 32 -
2413 horizon/dashboards/syspanel/quotas/tables.py | 38 -
2414 .../syspanel/quotas/templates/quotas/index.html | 13 -
2415 horizon/dashboards/syspanel/quotas/urls.py | 27 -
2416 horizon/dashboards/syspanel/quotas/views.py | 46 -
2417 horizon/dashboards/syspanel/services/panel.py | 32 -
2418 horizon/dashboards/syspanel/services/tables.py | 50 -
2419 .../services/templates/services/index.html | 14 -
2420 horizon/dashboards/syspanel/services/tests.py | 36 -
2421 horizon/dashboards/syspanel/services/urls.py | 27 -
2422 horizon/dashboards/syspanel/services/views.py | 40 -
2423 horizon/dashboards/syspanel/users/forms.py | 195 ----
2424 horizon/dashboards/syspanel/users/panel.py | 32 -
2425 horizon/dashboards/syspanel/users/tables.py | 123 ---
2426 .../syspanel/users/templates/users/_create.html | 24 -
2427 .../syspanel/users/templates/users/_update.html | 24 -
2428 .../syspanel/users/templates/users/create.html | 12 -
2429 .../syspanel/users/templates/users/index.html | 13 -
2430 .../syspanel/users/templates/users/update.html | 12 -
2431 horizon/dashboards/syspanel/users/tests.py | 356 -------
2432 horizon/dashboards/syspanel/users/urls.py | 28 -
2433 horizon/dashboards/syspanel/users/views.py | 111 ---
2434 horizon/dashboards/syspanel/volumes/panel.py | 14 -
2435 horizon/dashboards/syspanel/volumes/tables.py | 19 -
2436 .../syspanel/volumes/templates/volumes/detail.html | 15 -
2437 .../syspanel/volumes/templates/volumes/index.html | 13 -
2438 horizon/dashboards/syspanel/volumes/tests.py | 39 -
2439 horizon/dashboards/syspanel/volumes/urls.py | 8 -
2440 horizon/dashboards/syspanel/volumes/views.py | 39 -
2441 horizon/templates/base.html | 12 -
2442 horizon/tests/base_tests.py | 12 +-
2443 horizon/tests/testsettings.py | 8 +-
2444 horizon/views/base.py | 4 +-
2445 openstack_dashboard/settings.py | 8 +-
2446 548 files changed, 18324 insertions(+), 18369 deletions(-)
2447
2448commit b8c2634f658cbfb67703fa9e78e794110a25ef4e
2449Merge: afd29ac 175efb4
2450Author: Jenkins <jenkins@review.openstack.org>
2451Date: Wed Sep 19 08:28:16 2012 +0000
2452
2453 Merge "Final translations for Folsom."
2454
2455commit 175efb4f735a181b60d5ed18d72b5e37b139c14b
22Author: Gabriel Hurley <gabriel@strikeawe.com>2456Author: Gabriel Hurley <gabriel@strikeawe.com>
23Date: Tue Sep 18 15:26:19 2012 -07002457Date: Tue Sep 18 15:26:19 2012 -0700
242458
@@ -119,28 +2553,39 @@
119 run_tests.sh | 20 +2553 run_tests.sh | 20 +
120 85 files changed, 30425 insertions(+), 6818 deletions(-)2554 85 files changed, 30425 insertions(+), 6818 deletions(-)
1212555
122commit a925885d794594d218e0112f2d6c28d28ca41ef52556commit afd29ac41c36d66b97f0809b699e51fe788947e0
2557Author: Gabriel Hurley <gabriel@strikeawe.com>
2558Date: Tue Sep 18 14:17:51 2012 -0700
2559
2560 Fixes error when clicking OpenStack logo.
2561
2562 Fixes bug 1052677.
2563
2564 Change-Id: I796f23c4e9c5439b7263957cb4ec1b8fa864f398
2565
2566 openstack_dashboard/settings.py | 2 +-
2567 1 file changed, 1 insertion(+), 1 deletion(-)
2568
2569commit 6a57296d652e90aff105fea4b0d224ee0b2d1dc1
123Author: Brian Waldon <bcwaldon@gmail.com>2570Author: Brian Waldon <bcwaldon@gmail.com>
124Date: Thu Sep 13 13:48:18 2012 -07002571Date: Thu Sep 13 13:48:18 2012 -0700
1252572
126 Allow any python-swiftclient v1.1 through v1.X2573 Allow any python-swiftclient v1.1 through v1.X
127 2574
128 Fixes bug 1050670
129
130 Change-Id: I86c29764e43b204b4eea361c9b3b6519a2ab1d242575 Change-Id: I86c29764e43b204b4eea361c9b3b6519a2ab1d24
1312576
132 tools/pip-requires | 2 +-2577 tools/pip-requires | 2 +-
133 1 file changed, 1 insertion(+), 1 deletion(-)2578 1 file changed, 1 insertion(+), 1 deletion(-)
1342579
135commit 55002fddefc25ac3c075e96c450316997a45d4562580commit 0ba2753953f065ffed0cb254ac1d1dc473cefd97
136Author: Thierry Carrez <thierry@openstack.org>2581Author: Thierry Carrez <thierry@openstack.org>
137Date: Wed Sep 12 00:27:08 2012 +02002582Date: Wed Sep 12 00:20:02 2012 +0200
1382583
139 Set FINAL versioning2584 Open Grizzly (2013.1)
140 2585
141 Set FINAL=True in preparation for RC1 publication2586 Bump version number on master to open up Grizzly development.
142 2587
143 Change-Id: Ib4301a63f94f0cfb8cc3556c70a03444347371282588 Change-Id: I3a71a2aaa0519501ae64d9f00f1b45398502445a
1442589
145 horizon/version.py | 2 +-2590 horizon/version.py | 2 +-
146 1 file changed, 1 insertion(+), 1 deletion(-)2591 1 file changed, 1 insertion(+), 1 deletion(-)
1472592
=== modified file 'MANIFEST.in'
--- MANIFEST.in 2012-08-16 14:01:33 +0000
+++ MANIFEST.in 2012-11-26 19:56:34 +0000
@@ -1,7 +1,7 @@
1recursive-include bin *.js1recursive-include bin *.js
2recursive-include doc *.py *.rst *.css *.js *.html *.conf *.jpg *.gif *.png *.css_t2recursive-include doc *.py *.rst *.css *.js *.html *.conf *.jpg *.gif *.png *.css_t
3recursive-include horizon *.html *.css *.js *.csv *.template *.tmpl *.mo *.po3recursive-include horizon *.html *.css *.js *.csv *.template *.tmpl *.mo *.po
4recursive-include openstack_dashboard *.html *.js *.less *.mo *.po *.example *.eot *.svg *.ttf *.woff *.png *.ico *.wsgi *.gif4recursive-include openstack_dashboard *.html *.js *.less *.mo *.po *.example *.eot *.svg *.ttf *.woff *.png *.ico *.wsgi *.gif *.csv *.template
5recursive-include tools *.py *.sh5recursive-include tools *.py *.sh
66
7include AUTHORS7include AUTHORS
88
=== modified file 'PKG-INFO'
--- PKG-INFO 2012-07-06 11:38:55 +0000
+++ PKG-INFO 2012-11-26 19:56:34 +0000
@@ -1,6 +1,6 @@
1Metadata-Version: 1.11Metadata-Version: 1.1
2Name: horizon2Name: horizon
3Version: 2012.23Version: 2013.1
4Summary: The OpenStack Dashboard.4Summary: The OpenStack Dashboard.
5Home-page: https://github.com/openstack/horizon/5Home-page: https://github.com/openstack/horizon/
6Author: OpenStack6Author: OpenStack
@@ -140,3 +140,4 @@
140Classifier: Operating System :: OS Independent140Classifier: Operating System :: OS Independent
141Classifier: Programming Language :: Python141Classifier: Programming Language :: Python
142Classifier: Topic :: Internet :: WWW/HTTP142Classifier: Topic :: Internet :: WWW/HTTP
143Classifier: Environment :: OpenStack
143144
=== modified file 'debian/changelog'
--- debian/changelog 2012-10-09 12:42:12 +0000
+++ debian/changelog 2012-11-26 19:56:34 +0000
@@ -1,3 +1,21 @@
1horizon (2013.1~g1-0ubuntu1~cloud0) precise-grizzly; urgency=low
2
3 * New upstream release for the Ubuntu Cloud Archive.
4
5 -- Chuck Short <zulcss@ubuntu.com> Mon, 26 Nov 2012 13:34:27 -0600
6
7horizon (2013.1~g1-0ubuntu1) raring; urgency=low
8
9 [ Adam Gandelman ]
10 * debian/patches/add_juju_settings_pannel.patch: Disable during
11 Grizzly dev. cycle.
12
13 [ Chuck Short ]
14 * New upstream relase.
15 * Refreshed patches.
16
17 -- Chuck Short <zulcss@ubuntu.com> Fri, 23 Nov 2012 08:49:14 -0600
18
1horizon (2012.2-0ubuntu2~cloud0) precise-folsom; urgency=low19horizon (2012.2-0ubuntu2~cloud0) precise-folsom; urgency=low
220
3 * New release candidate for the Ubuntu Cloud Archive.21 * New release candidate for the Ubuntu Cloud Archive.
422
=== modified file 'debian/patches/fix-dashboard-manage.patch'
--- debian/patches/fix-dashboard-manage.patch 2012-09-07 12:35:36 +0000
+++ debian/patches/fix-dashboard-manage.patch 2012-11-26 19:56:34 +0000
@@ -1,8 +1,7 @@
1Index: horizon-2012.2/manage.py1diff -Naurp horizon-2013.1.orig/manage.py horizon-2013.1/manage.py
2===================================================================2--- horizon-2013.1.orig/manage.py 2012-11-20 22:59:38.000000000 -0600
3--- horizon-2012.2.orig/manage.py 2012-09-04 16:32:01.000000000 -07003+++ horizon-2013.1/manage.py 2012-11-21 12:28:58.773240222 -0600
4+++ horizon-2012.2/manage.py 2012-09-04 16:32:52.250690667 -07004@@ -5,6 +5,8 @@ import sys
5@@ -5,6 +5,8 @@
6 5
7 from django.core.management import execute_from_command_line6 from django.core.management import execute_from_command_line
8 7
98
=== modified file 'debian/patches/fix-ubuntu-tests.patch'
--- debian/patches/fix-ubuntu-tests.patch 2012-09-07 12:35:36 +0000
+++ debian/patches/fix-ubuntu-tests.patch 2012-11-26 19:56:34 +0000
@@ -1,15 +1,14 @@
1Index: horizon-2012.2/run_tests.sh1diff -Naurp horizon-2013.1.orig/run_tests.sh horizon-2013.1/run_tests.sh
2===================================================================2--- horizon-2013.1.orig/run_tests.sh 2012-11-20 22:59:39.000000000 -0600
3--- horizon-2012.2.orig/run_tests.sh 2012-08-23 18:52:34.891973319 -07003+++ horizon-2013.1/run_tests.sh 2012-11-21 12:25:55.197240133 -0600
4+++ horizon-2012.2/run_tests.sh 2012-08-23 18:53:15.879971813 -07004@@ -292,25 +292,25 @@ function run_tests_all {
5@@ -274,25 +274,25 @@
6 if [ "$NOSE_WITH_HTML_OUTPUT" = '1' ]; then5 if [ "$NOSE_WITH_HTML_OUTPUT" = '1' ]; then
7 export NOSE_HTML_OUT_FILE='horizon_nose_results.html'6 export NOSE_HTML_OUT_FILE='horizon_nose_results.html'
8 fi7 fi
9- ${command_wrapper} coverage erase8- ${command_wrapper} coverage erase
10- ${command_wrapper} coverage run -p $root/manage.py test horizon --settings=horizon.tests.testsettings $testargs9- ${command_wrapper} coverage run -p $root/manage.py test horizon --settings=horizon.test.settings $testopts
11+ ${command_wrapper} python-coverage erase10+ ${command_wrapper} python-coverage erase
12+ ${command_wrapper} python-coverage run -p $root/manage.py test horizon --settings=horizon.tests.testsettings $testargs11+ ${command_wrapper} python-coverage run -p $root/manage.py test horizon --settings=horizon.test.settings $testopts
13 # get results of the Horizon tests12 # get results of the Horizon tests
14 HORIZON_RESULT=$?13 HORIZON_RESULT=$?
15 14
@@ -18,17 +17,16 @@
18- if [ "$NOSE_WITH_HTML_OUTPUT" = '1' ]; then17- if [ "$NOSE_WITH_HTML_OUTPUT" = '1' ]; then
19- export NOSE_HTML_OUT_FILE='dashboard_nose_results.html'18- export NOSE_HTML_OUT_FILE='dashboard_nose_results.html'
20- fi19- fi
21- ${command_wrapper} coverage run -p $root/manage.py test openstack_dashboard --settings=openstack_dashboard.test.settings $testargs20- ${command_wrapper} coverage run -p $root/manage.py test openstack_dashboard --settings=openstack_dashboard.test.settings $testopts
22- # get results of the openstack_dashboard tests21+ #echo "Running openstack_dashboard tests"
22+ #export NOSE_XUNIT_FILE=openstack_dashboard/nosetests.xml
23+ #if [ "$NOSE_WITH_HTML_OUTPUT" = '1' ]; then
24+ # export NOSE_HTML_OUT_FILE='dashboard_nose_results.html'
25+ #fi
26+ #${command_wrapper} coverage run -p $root/manage.py test openstack_dashboard --settings=openstack_dashboard.test.settings $testopts
27 # get results of the openstack_dashboard tests
23- DASHBOARD_RESULT=$?28- DASHBOARD_RESULT=$?
24+# echo "Running openstack_dashboard tests"29+ #DASHBOARD_RESULT=$?
25+# export NOSE_XUNIT_FILE=openstack_dashboard/nosetests.xml
26+# if [ "$NOSE_WITH_HTML_OUTPUT" = '1' ]; then
27+# export NOSE_HTML_OUT_FILE='dashboard_nose_results.html'
28+# fi
29+# ${command_wrapper} python-coverage run -p $root/manage.py test openstack_dashboard --settings=openstack_dashboard.test.settings $testargs
30+# # get results of the openstack_dashboard tests
31+# DASHBOARD_RESULT=$?
32 30
33 if [ $with_coverage -eq 1 ]; then31 if [ $with_coverage -eq 1 ]; then
34 echo "Generating coverage reports"32 echo "Generating coverage reports"
@@ -41,15 +39,3 @@
41 fi39 fi
42 # Remove the leftover coverage files from the -p flag earlier.40 # Remove the leftover coverage files from the -p flag earlier.
43 rm -f .coverage.*41 rm -f .coverage.*
44Index: horizon-2012.2/horizon/tests/testsettings.py
45===================================================================
46--- horizon-2012.2.orig/horizon/tests/testsettings.py 2012-08-23 18:52:34.647973328 -0700
47+++ horizon-2012.2/horizon/tests/testsettings.py 2012-08-23 18:54:36.615968847 -0700
48@@ -98,7 +98,6 @@
49 TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
50 NOSE_ARGS = ['--nocapture',
51 '--nologcapture',
52- '--exclude-dir=horizon/conf/',
53 '--cover-package=horizon',
54 '--cover-inclusive']
55
5642
=== modified file 'debian/patches/series'
--- debian/patches/series 2012-10-09 09:59:55 +0000
+++ debian/patches/series 2012-11-26 19:56:34 +0000
@@ -1,5 +1,8 @@
1fix-dashboard-django-wsgi.patch1fix-dashboard-django-wsgi.patch
2fix-dashboard-manage.patch2fix-dashboard-manage.patch
3add_juju_settings_panel.patch3
4# Disabled during Grizzly dev. cycle
5#add_juju_settings_panel.patch
6
4fix-ubuntu-tests.patch7fix-ubuntu-tests.patch
5ubuntu_local_settings.patch8ubuntu_local_settings.patch
69
=== modified file 'debian/patches/ubuntu_local_settings.patch'
--- debian/patches/ubuntu_local_settings.patch 2012-09-21 08:03:36 +0000
+++ debian/patches/ubuntu_local_settings.patch 2012-11-26 19:56:34 +0000
@@ -1,31 +1,16 @@
1Author: Adam Gandelman <adamg@canonical.com>1diff -Naurp horizon-2013.1.orig/openstack_dashboard/local/local_settings.py.example horizon-2013.1/openstack_dashboard/local/local_settings.py.example
2Date: Mon Sep 10 20:53:00 PDT 20122--- horizon-2013.1.orig/openstack_dashboard/local/local_settings.py.example 2012-11-20 22:59:38.000000000 -0600
3Subject: Squash all patches that update the default local_settings.py.example.3+++ horizon-2013.1/openstack_dashboard/local/local_settings.py.example 2012-11-21 12:35:19.701240407 -0600
44@@ -4,7 +4,7 @@ from django.utils.translation import uge
5This patch combines all previous patches that update local_settings.py.example.
6The example local_settings.py is what gets installed as the default installation
7in Ubuntu package.
8
9Previous patches were:
10 * turn-off-debug.patch
11 * use-memcache.patch (LP: #968850)
12 * set_login_redirects.patch (LP: #1037349)
13 * disable_online_compression.patch (LP: #1024326)
14
15Index: horizon-2013.1/openstack_dashboard/local/local_settings.py.example
16===================================================================
17--- horizon-2013.1.orig/openstack_dashboard/local/local_settings.py.example 2012-09-11 21:09:15.000000000 -0700
18+++ horizon-2013.1/openstack_dashboard/local/local_settings.py.example 2012-09-11 21:11:53.957057760 -0700
19@@ -2,7 +2,7 @@
20 5
21 from django.utils.translation import ugettext_lazy as _6 from openstack_dashboard import exceptions
22 7
23-DEBUG = True8-DEBUG = True
24+DEBUG = False9+DEBUG = False
25 TEMPLATE_DEBUG = DEBUG10 TEMPLATE_DEBUG = DEBUG
26 11
27 # Set SSL proxy settings:12 # Set SSL proxy settings:
28@@ -38,7 +38,7 @@13@@ -49,13 +49,29 @@ LOCAL_PATH = os.path.dirname(os.path.abs
29 # We recommend you use memcached for development; otherwise after every reload14 # We recommend you use memcached for development; otherwise after every reload
30 # of the django development server, you will have to login again. To use15 # of the django development server, you will have to login again. To use
31 # memcached set CACHE_BACKED to something like 'memcached://127.0.0.1:11211/'16 # memcached set CACHE_BACKED to something like 'memcached://127.0.0.1:11211/'
@@ -34,11 +19,9 @@
34 19
35 # Send email to the console by default20 # Send email to the console by default
36 EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'21 EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
37@@ -145,3 +145,19 @@22 # Or send them to /dev/null
38 }23 #EMAIL_BACKEND = 'django.core.mail.backends.dummy.EmailBackend'
39 }24
40 }
41+
42+# Enable the Ubuntu theme if it is present.25+# Enable the Ubuntu theme if it is present.
43+try:26+try:
44+ from ubuntu_theme import *27+ from ubuntu_theme import *
@@ -54,3 +37,7 @@
54+# offline compression by default. To enable online compression, install37+# offline compression by default. To enable online compression, install
55+# the node-less package and enable the following option.38+# the node-less package and enable the following option.
56+COMPRESS_OFFLINE = True39+COMPRESS_OFFLINE = True
40+
41 # Configure these for your outgoing email host
42 # EMAIL_HOST = 'smtp.my-company.com'
43 # EMAIL_PORT = 25
5744
=== modified file 'doc/source/ref/run_tests.rst'
--- doc/source/ref/run_tests.rst 2012-07-06 11:38:55 +0000
+++ doc/source/ref/run_tests.rst 2012-11-26 19:56:34 +0000
@@ -43,6 +43,25 @@
43This isn't recommended, but can be a timesaver when you only need to run43This isn't recommended, but can be a timesaver when you only need to run
44the code tests and not the frontend tests during development.44the code tests and not the frontend tests during development.
4545
46Running a subset of tests
47-------------------------
48
49Instead of running all tests, you can specify an individual directory, file,
50class, or method that contains test code.
51
52To run the tests in the ``horizon/test/tests/tables.py`` file::
53
54 ./run_tests.sh horizon.test.tests.tables
55
56To run the tests in the `WorkflowsTests` class in
57``horizon/test/tests/workflows``::
58
59 ./run_tests.sh horizon.test.tests.workflows:WorkflowsTests
60
61To run just the `WorkflowsTests.test_workflow_view` test method::
62
63 ./run_tests.sh horizon.test.tests.workflows:WorkflowsTests.test_workflow_view
64
46Using Dashboard and Panel Templates65Using Dashboard and Panel Templates
47===================================66===================================
4867
4968
=== modified file 'doc/source/ref/test.rst'
--- doc/source/ref/test.rst 2012-07-06 11:38:55 +0000
+++ doc/source/ref/test.rst 2012-11-26 19:56:34 +0000
@@ -2,10 +2,18 @@
2Horizon TestCase Classes2Horizon TestCase Classes
3========================3========================
44
5.. module:: horizon.test5.. module:: horizon.test.helpers
66
7Horizon provides several useful base classes for testing both views and7Horizon provides a base test case class which provides several useful
8API functions.8pre-prepared attributes for testing Horizon components.
9
10.. autoclass:: TestCase
11 :members:
12
13.. module :: openstack_dashboard.test.helpers
14
15The OpenStack Dashboard also provides test case classes for greater
16ease-of-use when testing APIs and OpenStack-specific auth scenarios.
917
10.. autoclass:: TestCase18.. autoclass:: TestCase
11 :members:19 :members:
1220
=== modified file 'doc/source/testing.rst'
--- doc/source/testing.rst 2012-07-06 11:38:55 +0000
+++ doc/source/testing.rst 2012-11-26 19:56:34 +0000
@@ -19,6 +19,8 @@
19To run the tests::19To run the tests::
2020
21 $ ./run_tests.sh21 $ ./run_tests.sh
22
23It's also possible to :doc:`run a subset of unit tests<ref/run_tests>`.
2224
23.. seealso::25.. seealso::
2426
2527
=== modified file 'doc/source/topics/testing.rst'
--- doc/source/topics/testing.rst 2012-07-06 11:38:55 +0000
+++ doc/source/topics/testing.rst 2012-11-26 19:56:34 +0000
@@ -170,12 +170,12 @@
170necessary.170necessary.
171171
172To that end, Horizon includes several custom assertions to make these tasks172To that end, Horizon includes several custom assertions to make these tasks
173easier. :meth:`~horizon.test.TestCase.assertNoFormErrors`,173easier. :meth:`~horizon.test.helpers.TestCase.assertNoFormErrors`,
174:meth:`~horizon.test.TestCase.assertMessageCount`, and174:meth:`~horizon.test.helpers.TestCase.assertMessageCount`, and
175:meth:`~horizon.test.TestCase.asertNoMessages` all exist for exactly these175:meth:`~horizon.test.helpers.TestCase.asertNoMessages` all exist for exactly
176purposes. Moreover, they provide useful output when things go wrong so you're176these purposes. Moreover, they provide useful output when things go wrong so
177not left scratching your head wondering why your view test didn't redirect177you're not left scratching your head wondering why your view test didn't
178as expected when you posted a form.178redirect as expected when you posted a form.
179179
180.. _debugging_unit_tests:180.. _debugging_unit_tests:
181181
@@ -185,14 +185,14 @@
185Tips and tricks185Tips and tricks
186---------------186---------------
187187
188#. Use :meth:`~horizon.test.TestCase.assertNoFormErrors` immediately after188#. Use :meth:`~horizon.test.helpers.TestCase.assertNoFormErrors` immediately
189 your ``client.post`` call for tests that handle form views. This will189 after your ``client.post`` call for tests that handle form views. This will
190 immediately fail if your form POST failed due to a validation error and190 immediately fail if your form POST failed due to a validation error and
191 tell you what the error was.191 tell you what the error was.
192192
193#. Use :meth:`~horizon.test.TestCase.assertMessageCount` and193#. Use :meth:`~horizon.test.helpers.TestCase.assertMessageCount` and
194 :meth:`~horizon.test.TestCase.asertNoMessages` when a piece of code is194 :meth:`~horizon.test.helpers.TestCase.asertNoMessages` when a piece of code
195 failing inexplicably. Since the core error handlers attach user-facing195 is failing inexplicably. Since the core error handlers attach user-facing
196 error messages (and since the core logging is silenced during test runs)196 error messages (and since the core logging is silenced during test runs)
197 these methods give you the dual benefit of verifying the output you expect197 these methods give you the dual benefit of verifying the output you expect
198 while clearly showing you the problematic error message if they fail.198 while clearly showing you the problematic error message if they fail.
@@ -270,7 +270,7 @@
270This one is the opposite of the unexpected method call. This one means you270This one is the opposite of the unexpected method call. This one means you
271tol mox to expect a call and it didn't happen. This is almost always the271tol mox to expect a call and it didn't happen. This is almost always the
272result of an error in the conditions of the test. Using the272result of an error in the conditions of the test. Using the
273:meth:`~horizon.test.TestCase.assertNoFormErrors` and273:meth:`~horizon.test.helpers.TestCase.assertNoFormErrors` and
274:meth:`~horizon.test.TestCase.assertMessageCount` will make it readily apparent274:meth:`~horizon.test.helpers.TestCase.assertMessageCount` will make it readily
275what the problem is in the majority of cases. If not, then use ``pdb`` and275apparent what the problem is in the majority of cases. If not, then use ``pdb``
276start interrupting the code flow to see where things are getting off track.276and start interrupting the code flow to see where things are getting off track.
277277
=== modified file 'horizon.egg-info/PKG-INFO'
--- horizon.egg-info/PKG-INFO 2012-07-06 11:38:55 +0000
+++ horizon.egg-info/PKG-INFO 2012-11-26 19:56:34 +0000
@@ -1,6 +1,6 @@
1Metadata-Version: 1.11Metadata-Version: 1.1
2Name: horizon2Name: horizon
3Version: 2012.23Version: 2013.1
4Summary: The OpenStack Dashboard.4Summary: The OpenStack Dashboard.
5Home-page: https://github.com/openstack/horizon/5Home-page: https://github.com/openstack/horizon/
6Author: OpenStack6Author: OpenStack
@@ -140,3 +140,4 @@
140Classifier: Operating System :: OS Independent140Classifier: Operating System :: OS Independent
141Classifier: Programming Language :: Python141Classifier: Programming Language :: Python
142Classifier: Topic :: Internet :: WWW/HTTP142Classifier: Topic :: Internet :: WWW/HTTP
143Classifier: Environment :: OpenStack
143144
=== modified file 'horizon.egg-info/SOURCES.txt'
--- horizon.egg-info/SOURCES.txt 2012-09-21 08:03:36 +0000
+++ horizon.egg-info/SOURCES.txt 2012-11-26 19:56:34 +0000
@@ -1,4 +1,3 @@
1.bzrignore
2.gitignore1.gitignore
3.gitreview2.gitreview
4.mailmap3.mailmap
@@ -100,26 +99,20 @@
100horizon/middleware.py99horizon/middleware.py
101horizon/models.py100horizon/models.py
102horizon/site_urls.py101horizon/site_urls.py
103horizon/test.py
104horizon/version.py102horizon/version.py
103horizon/views.py
105horizon.egg-info/PKG-INFO104horizon.egg-info/PKG-INFO
106horizon.egg-info/SOURCES.txt105horizon.egg-info/SOURCES.txt
107horizon.egg-info/dependency_links.txt106horizon.egg-info/dependency_links.txt
108horizon.egg-info/not-zip-safe107horizon.egg-info/not-zip-safe
109horizon.egg-info/requires.txt108horizon.egg-info/requires.txt
110horizon.egg-info/top_level.txt109horizon.egg-info/top_level.txt
111horizon/api/__init__.py
112horizon/api/base.py
113horizon/api/glance.py
114horizon/api/keystone.py
115horizon/api/nova.py
116horizon/api/quantum.py
117horizon/api/swift.py
118horizon/browsers/__init__.py110horizon/browsers/__init__.py
119horizon/browsers/base.py111horizon/browsers/base.py
120horizon/browsers/breadcrumb.py112horizon/browsers/breadcrumb.py
121horizon/browsers/views.py113horizon/browsers/views.py
122horizon/conf/__init__.py114horizon/conf/__init__.py
115horizon/conf/default.py
123horizon/conf/dash_template/__init__.py116horizon/conf/dash_template/__init__.py
124horizon/conf/dash_template/dashboard.py.tmpl117horizon/conf/dash_template/dashboard.py.tmpl
125horizon/conf/dash_template/models.py118horizon/conf/dash_template/models.py
@@ -133,337 +126,6 @@
133horizon/conf/panel_template/urls.py126horizon/conf/panel_template/urls.py
134horizon/conf/panel_template/views.py127horizon/conf/panel_template/views.py
135horizon/conf/panel_template/templates/panel_name/index.html128horizon/conf/panel_template/templates/panel_name/index.html
136horizon/dashboards/__init__.py
137horizon/dashboards/nova/__init__.py
138horizon/dashboards/nova/dashboard.py
139horizon/dashboards/nova/models.py
140horizon/dashboards/nova/access_and_security/__init__.py
141horizon/dashboards/nova/access_and_security/panel.py
142horizon/dashboards/nova/access_and_security/tests.py
143horizon/dashboards/nova/access_and_security/urls.py
144horizon/dashboards/nova/access_and_security/views.py
145horizon/dashboards/nova/access_and_security/floating_ips/__init__.py
146horizon/dashboards/nova/access_and_security/floating_ips/forms.py
147horizon/dashboards/nova/access_and_security/floating_ips/tables.py
148horizon/dashboards/nova/access_and_security/floating_ips/tests.py
149horizon/dashboards/nova/access_and_security/floating_ips/urls.py
150horizon/dashboards/nova/access_and_security/floating_ips/views.py
151horizon/dashboards/nova/access_and_security/floating_ips/workflows.py
152horizon/dashboards/nova/access_and_security/keypairs/__init__.py
153horizon/dashboards/nova/access_and_security/keypairs/forms.py
154horizon/dashboards/nova/access_and_security/keypairs/tables.py
155horizon/dashboards/nova/access_and_security/keypairs/tests.py
156horizon/dashboards/nova/access_and_security/keypairs/urls.py
157horizon/dashboards/nova/access_and_security/keypairs/views.py
158horizon/dashboards/nova/access_and_security/security_groups/__init__.py
159horizon/dashboards/nova/access_and_security/security_groups/forms.py
160horizon/dashboards/nova/access_and_security/security_groups/tables.py
161horizon/dashboards/nova/access_and_security/security_groups/tests.py
162horizon/dashboards/nova/access_and_security/security_groups/urls.py
163horizon/dashboards/nova/access_and_security/security_groups/views.py
164horizon/dashboards/nova/access_and_security/templates/access_and_security/index.html
165horizon/dashboards/nova/access_and_security/templates/access_and_security/floating_ips/_allocate.html
166horizon/dashboards/nova/access_and_security/templates/access_and_security/floating_ips/allocate.html
167horizon/dashboards/nova/access_and_security/templates/access_and_security/floating_ips/associate.html
168horizon/dashboards/nova/access_and_security/templates/access_and_security/keypairs/_create.html
169horizon/dashboards/nova/access_and_security/templates/access_and_security/keypairs/_import.html
170horizon/dashboards/nova/access_and_security/templates/access_and_security/keypairs/create.html
171horizon/dashboards/nova/access_and_security/templates/access_and_security/keypairs/download.html
172horizon/dashboards/nova/access_and_security/templates/access_and_security/keypairs/import.html
173horizon/dashboards/nova/access_and_security/templates/access_and_security/security_groups/_create.html
174horizon/dashboards/nova/access_and_security/templates/access_and_security/security_groups/_edit_rules.html
175horizon/dashboards/nova/access_and_security/templates/access_and_security/security_groups/create.html
176horizon/dashboards/nova/access_and_security/templates/access_and_security/security_groups/edit_rules.html
177horizon/dashboards/nova/containers/__init__.py
178horizon/dashboards/nova/containers/browsers.py
179horizon/dashboards/nova/containers/forms.py
180horizon/dashboards/nova/containers/panel.py
181horizon/dashboards/nova/containers/tables.py
182horizon/dashboards/nova/containers/tests.py
183horizon/dashboards/nova/containers/urls.py
184horizon/dashboards/nova/containers/views.py
185horizon/dashboards/nova/containers/templates/containers/_copy.html
186horizon/dashboards/nova/containers/templates/containers/_create.html
187horizon/dashboards/nova/containers/templates/containers/_upload.html
188horizon/dashboards/nova/containers/templates/containers/copy.html
189horizon/dashboards/nova/containers/templates/containers/create.html
190horizon/dashboards/nova/containers/templates/containers/index.html
191horizon/dashboards/nova/containers/templates/containers/upload.html
192horizon/dashboards/nova/images_and_snapshots/__init__.py
193horizon/dashboards/nova/images_and_snapshots/panel.py
194horizon/dashboards/nova/images_and_snapshots/tests.py
195horizon/dashboards/nova/images_and_snapshots/urls.py
196horizon/dashboards/nova/images_and_snapshots/views.py
197horizon/dashboards/nova/images_and_snapshots/images/__init__.py
198horizon/dashboards/nova/images_and_snapshots/images/forms.py
199horizon/dashboards/nova/images_and_snapshots/images/panel.py
200horizon/dashboards/nova/images_and_snapshots/images/tables.py
201horizon/dashboards/nova/images_and_snapshots/images/tabs.py
202horizon/dashboards/nova/images_and_snapshots/images/tests.py
203horizon/dashboards/nova/images_and_snapshots/images/urls.py
204horizon/dashboards/nova/images_and_snapshots/images/views.py
205horizon/dashboards/nova/images_and_snapshots/snapshots/__init__.py
206horizon/dashboards/nova/images_and_snapshots/snapshots/forms.py
207horizon/dashboards/nova/images_and_snapshots/snapshots/panel.py
208horizon/dashboards/nova/images_and_snapshots/snapshots/tables.py
209horizon/dashboards/nova/images_and_snapshots/snapshots/tests.py
210horizon/dashboards/nova/images_and_snapshots/snapshots/urls.py
211horizon/dashboards/nova/images_and_snapshots/snapshots/views.py
212horizon/dashboards/nova/images_and_snapshots/templates/images_and_snapshots/index.html
213horizon/dashboards/nova/images_and_snapshots/templates/images_and_snapshots/images/_create.html
214horizon/dashboards/nova/images_and_snapshots/templates/images_and_snapshots/images/_detail_overview.html
215horizon/dashboards/nova/images_and_snapshots/templates/images_and_snapshots/images/_update.html
216horizon/dashboards/nova/images_and_snapshots/templates/images_and_snapshots/images/create.html
217horizon/dashboards/nova/images_and_snapshots/templates/images_and_snapshots/images/detail.html
218horizon/dashboards/nova/images_and_snapshots/templates/images_and_snapshots/images/update.html
219horizon/dashboards/nova/images_and_snapshots/templates/images_and_snapshots/snapshots/_create.html
220horizon/dashboards/nova/images_and_snapshots/templates/images_and_snapshots/snapshots/_detail_overview.html
221horizon/dashboards/nova/images_and_snapshots/templates/images_and_snapshots/snapshots/create.html
222horizon/dashboards/nova/images_and_snapshots/templates/images_and_snapshots/snapshots/detail.html
223horizon/dashboards/nova/images_and_snapshots/volume_snapshots/__init__.py
224horizon/dashboards/nova/images_and_snapshots/volume_snapshots/panel.py
225horizon/dashboards/nova/images_and_snapshots/volume_snapshots/tables.py
226horizon/dashboards/nova/images_and_snapshots/volume_snapshots/tabs.py
227horizon/dashboards/nova/images_and_snapshots/volume_snapshots/tests.py
228horizon/dashboards/nova/instances/__init__.py
229horizon/dashboards/nova/instances/forms.py
230horizon/dashboards/nova/instances/panel.py
231horizon/dashboards/nova/instances/tables.py
232horizon/dashboards/nova/instances/tabs.py
233horizon/dashboards/nova/instances/tests.py
234horizon/dashboards/nova/instances/urls.py
235horizon/dashboards/nova/instances/views.py
236horizon/dashboards/nova/instances/workflows.py
237horizon/dashboards/nova/instances/templates/instances/_detail_log.html
238horizon/dashboards/nova/instances/templates/instances/_detail_overview.html
239horizon/dashboards/nova/instances/templates/instances/_detail_vnc.html
240horizon/dashboards/nova/instances/templates/instances/_instance_ips.html
241horizon/dashboards/nova/instances/templates/instances/_launch_customize_help.html
242horizon/dashboards/nova/instances/templates/instances/_launch_details_help.html
243horizon/dashboards/nova/instances/templates/instances/_launch_volumes_help.html
244horizon/dashboards/nova/instances/templates/instances/_update.html
245horizon/dashboards/nova/instances/templates/instances/detail.html
246horizon/dashboards/nova/instances/templates/instances/index.html
247horizon/dashboards/nova/instances/templates/instances/launch.html
248horizon/dashboards/nova/instances/templates/instances/update.html
249horizon/dashboards/nova/networks/__init__.py
250horizon/dashboards/nova/networks/forms.py
251horizon/dashboards/nova/networks/panel.py
252horizon/dashboards/nova/networks/tables.py
253horizon/dashboards/nova/networks/tests.py
254horizon/dashboards/nova/networks/urls.py
255horizon/dashboards/nova/networks/views.py
256horizon/dashboards/nova/networks/workflows.py
257horizon/dashboards/nova/networks/ports/__init__.py
258horizon/dashboards/nova/networks/ports/tables.py
259horizon/dashboards/nova/networks/ports/tabs.py
260horizon/dashboards/nova/networks/ports/urls.py
261horizon/dashboards/nova/networks/ports/views.py
262horizon/dashboards/nova/networks/subnets/__init__.py
263horizon/dashboards/nova/networks/subnets/forms.py
264horizon/dashboards/nova/networks/subnets/tables.py
265horizon/dashboards/nova/networks/subnets/tabs.py
266horizon/dashboards/nova/networks/subnets/urls.py
267horizon/dashboards/nova/networks/subnets/views.py
268horizon/dashboards/nova/networks/templates/networks/_create.html
269horizon/dashboards/nova/networks/templates/networks/_detail_overview.html
270horizon/dashboards/nova/networks/templates/networks/_network_ips.html
271horizon/dashboards/nova/networks/templates/networks/_update.html
272horizon/dashboards/nova/networks/templates/networks/create.html
273horizon/dashboards/nova/networks/templates/networks/detail.html
274horizon/dashboards/nova/networks/templates/networks/index.html
275horizon/dashboards/nova/networks/templates/networks/update.html
276horizon/dashboards/nova/networks/templates/networks/ports/_detail_overview.html
277horizon/dashboards/nova/networks/templates/networks/ports/_port_ips.html
278horizon/dashboards/nova/networks/templates/networks/ports/detail.html
279horizon/dashboards/nova/networks/templates/networks/subnets/_create.html
280horizon/dashboards/nova/networks/templates/networks/subnets/_detail_overview.html
281horizon/dashboards/nova/networks/templates/networks/subnets/_update.html
282horizon/dashboards/nova/networks/templates/networks/subnets/create.html
283horizon/dashboards/nova/networks/templates/networks/subnets/detail.html
284horizon/dashboards/nova/networks/templates/networks/subnets/index.html
285horizon/dashboards/nova/networks/templates/networks/subnets/update.html
286horizon/dashboards/nova/overview/__init__.py
287horizon/dashboards/nova/overview/panel.py
288horizon/dashboards/nova/overview/tests.py
289horizon/dashboards/nova/overview/urls.py
290horizon/dashboards/nova/overview/views.py
291horizon/dashboards/nova/overview/templates/overview/usage.csv
292horizon/dashboards/nova/overview/templates/overview/usage.html
293horizon/dashboards/nova/templates/nova/_warning.html
294horizon/dashboards/nova/volumes/__init__.py
295horizon/dashboards/nova/volumes/forms.py
296horizon/dashboards/nova/volumes/panel.py
297horizon/dashboards/nova/volumes/tables.py
298horizon/dashboards/nova/volumes/tabs.py
299horizon/dashboards/nova/volumes/tests.py
300horizon/dashboards/nova/volumes/urls.py
301horizon/dashboards/nova/volumes/views.py
302horizon/dashboards/nova/volumes/templates/volumes/_attach.html
303horizon/dashboards/nova/volumes/templates/volumes/_create.html
304horizon/dashboards/nova/volumes/templates/volumes/_create_snapshot.html
305horizon/dashboards/nova/volumes/templates/volumes/_detail_overview.html
306horizon/dashboards/nova/volumes/templates/volumes/attach.html
307horizon/dashboards/nova/volumes/templates/volumes/create.html
308horizon/dashboards/nova/volumes/templates/volumes/create_snapshot.html
309horizon/dashboards/nova/volumes/templates/volumes/detail.html
310horizon/dashboards/nova/volumes/templates/volumes/index.html
311horizon/dashboards/settings/__init__.py
312horizon/dashboards/settings/dashboard.py
313horizon/dashboards/settings/models.py
314horizon/dashboards/settings/ec2/__init__.py
315horizon/dashboards/settings/ec2/forms.py
316horizon/dashboards/settings/ec2/panel.py
317horizon/dashboards/settings/ec2/tests.py
318horizon/dashboards/settings/ec2/urls.py
319horizon/dashboards/settings/ec2/views.py
320horizon/dashboards/settings/ec2/templates/ec2/download_form.html
321horizon/dashboards/settings/ec2/templates/ec2/ec2rc.sh.template
322horizon/dashboards/settings/ec2/templates/ec2/index.html
323horizon/dashboards/settings/project/__init__.py
324horizon/dashboards/settings/project/forms.py
325horizon/dashboards/settings/project/panel.py
326horizon/dashboards/settings/project/tables.py
327horizon/dashboards/settings/project/urls.py
328horizon/dashboards/settings/project/views.py
329horizon/dashboards/settings/project/templates/project/_openrc.html
330horizon/dashboards/settings/project/templates/project/openrc.sh.template
331horizon/dashboards/settings/project/templates/project/settings.html
332horizon/dashboards/settings/user/__init__.py
333horizon/dashboards/settings/user/forms.py
334horizon/dashboards/settings/user/panel.py
335horizon/dashboards/settings/user/urls.py
336horizon/dashboards/settings/user/views.py
337horizon/dashboards/settings/user/templates/user/_settings.html
338horizon/dashboards/settings/user/templates/user/settings.html
339horizon/dashboards/syspanel/__init__.py
340horizon/dashboards/syspanel/dashboard.py
341horizon/dashboards/syspanel/models.py
342horizon/dashboards/syspanel/flavors/__init__.py
343horizon/dashboards/syspanel/flavors/forms.py
344horizon/dashboards/syspanel/flavors/panel.py
345horizon/dashboards/syspanel/flavors/tables.py
346horizon/dashboards/syspanel/flavors/tests.py
347horizon/dashboards/syspanel/flavors/urls.py
348horizon/dashboards/syspanel/flavors/views.py
349horizon/dashboards/syspanel/flavors/templates/flavors/_create.html
350horizon/dashboards/syspanel/flavors/templates/flavors/_edit.html
351horizon/dashboards/syspanel/flavors/templates/flavors/create.html
352horizon/dashboards/syspanel/flavors/templates/flavors/edit.html
353horizon/dashboards/syspanel/flavors/templates/flavors/index.html
354horizon/dashboards/syspanel/images/__init__.py
355horizon/dashboards/syspanel/images/forms.py
356horizon/dashboards/syspanel/images/panel.py
357horizon/dashboards/syspanel/images/tables.py
358horizon/dashboards/syspanel/images/tests.py
359horizon/dashboards/syspanel/images/urls.py
360horizon/dashboards/syspanel/images/views.py
361horizon/dashboards/syspanel/images/templates/images/_update.html
362horizon/dashboards/syspanel/images/templates/images/index.html
363horizon/dashboards/syspanel/images/templates/images/update.html
364horizon/dashboards/syspanel/instances/__init__.py
365horizon/dashboards/syspanel/instances/panel.py
366horizon/dashboards/syspanel/instances/tables.py
367horizon/dashboards/syspanel/instances/tests.py
368horizon/dashboards/syspanel/instances/urls.py
369horizon/dashboards/syspanel/instances/views.py
370horizon/dashboards/syspanel/instances/templates/instances/index.html
371horizon/dashboards/syspanel/networks/__init__.py
372horizon/dashboards/syspanel/networks/forms.py
373horizon/dashboards/syspanel/networks/panel.py
374horizon/dashboards/syspanel/networks/tables.py
375horizon/dashboards/syspanel/networks/tests.py
376horizon/dashboards/syspanel/networks/urls.py
377horizon/dashboards/syspanel/networks/views.py
378horizon/dashboards/syspanel/networks/ports/__init__.py
379horizon/dashboards/syspanel/networks/ports/forms.py
380horizon/dashboards/syspanel/networks/ports/tables.py
381horizon/dashboards/syspanel/networks/ports/tabs.py
382horizon/dashboards/syspanel/networks/ports/urls.py
383horizon/dashboards/syspanel/networks/ports/views.py
384horizon/dashboards/syspanel/networks/subnets/__init__.py
385horizon/dashboards/syspanel/networks/subnets/forms.py
386horizon/dashboards/syspanel/networks/subnets/tables.py
387horizon/dashboards/syspanel/networks/subnets/urls.py
388horizon/dashboards/syspanel/networks/subnets/views.py
389horizon/dashboards/syspanel/networks/templates/networks/_create.html
390horizon/dashboards/syspanel/networks/templates/networks/_update.html
391horizon/dashboards/syspanel/networks/templates/networks/create.html
392horizon/dashboards/syspanel/networks/templates/networks/index.html
393horizon/dashboards/syspanel/networks/templates/networks/update.html
394horizon/dashboards/syspanel/networks/templates/networks/ports/_create.html
395horizon/dashboards/syspanel/networks/templates/networks/ports/_update.html
396horizon/dashboards/syspanel/networks/templates/networks/ports/create.html
397horizon/dashboards/syspanel/networks/templates/networks/ports/update.html
398horizon/dashboards/syspanel/networks/templates/networks/subnets/_create.html
399horizon/dashboards/syspanel/networks/templates/networks/subnets/_update.html
400horizon/dashboards/syspanel/networks/templates/networks/subnets/create.html
401horizon/dashboards/syspanel/networks/templates/networks/subnets/index.html
402horizon/dashboards/syspanel/networks/templates/networks/subnets/update.html
403horizon/dashboards/syspanel/overview/__init__.py
404horizon/dashboards/syspanel/overview/panel.py
405horizon/dashboards/syspanel/overview/tests.py
406horizon/dashboards/syspanel/overview/urls.py
407horizon/dashboards/syspanel/overview/views.py
408horizon/dashboards/syspanel/overview/templates/overview/usage.csv
409horizon/dashboards/syspanel/overview/templates/overview/usage.html
410horizon/dashboards/syspanel/projects/__init__.py
411horizon/dashboards/syspanel/projects/forms.py
412horizon/dashboards/syspanel/projects/panel.py
413horizon/dashboards/syspanel/projects/tables.py
414horizon/dashboards/syspanel/projects/tests.py
415horizon/dashboards/syspanel/projects/urls.py
416horizon/dashboards/syspanel/projects/views.py
417horizon/dashboards/syspanel/projects/workflows.py
418horizon/dashboards/syspanel/projects/templates/projects/_add_user.html
419horizon/dashboards/syspanel/projects/templates/projects/_create.html
420horizon/dashboards/syspanel/projects/templates/projects/_create_user.html
421horizon/dashboards/syspanel/projects/templates/projects/_quotas.html
422horizon/dashboards/syspanel/projects/templates/projects/_update.html
423horizon/dashboards/syspanel/projects/templates/projects/_update_members.html
424horizon/dashboards/syspanel/projects/templates/projects/add_user.html
425horizon/dashboards/syspanel/projects/templates/projects/create.html
426horizon/dashboards/syspanel/projects/templates/projects/create_user.html
427horizon/dashboards/syspanel/projects/templates/projects/index.html
428horizon/dashboards/syspanel/projects/templates/projects/quotas.html
429horizon/dashboards/syspanel/projects/templates/projects/update.html
430horizon/dashboards/syspanel/projects/templates/projects/usage.csv
431horizon/dashboards/syspanel/projects/templates/projects/usage.html
432horizon/dashboards/syspanel/projects/templates/projects/users.html
433horizon/dashboards/syspanel/quotas/__init__.py
434horizon/dashboards/syspanel/quotas/panel.py
435horizon/dashboards/syspanel/quotas/tables.py
436horizon/dashboards/syspanel/quotas/tests.py
437horizon/dashboards/syspanel/quotas/urls.py
438horizon/dashboards/syspanel/quotas/views.py
439horizon/dashboards/syspanel/quotas/templates/quotas/index.html
440horizon/dashboards/syspanel/services/__init__.py
441horizon/dashboards/syspanel/services/panel.py
442horizon/dashboards/syspanel/services/tables.py
443horizon/dashboards/syspanel/services/tests.py
444horizon/dashboards/syspanel/services/urls.py
445horizon/dashboards/syspanel/services/views.py
446horizon/dashboards/syspanel/services/templates/services/index.html
447horizon/dashboards/syspanel/users/__init__.py
448horizon/dashboards/syspanel/users/forms.py
449horizon/dashboards/syspanel/users/panel.py
450horizon/dashboards/syspanel/users/tables.py
451horizon/dashboards/syspanel/users/tests.py
452horizon/dashboards/syspanel/users/urls.py
453horizon/dashboards/syspanel/users/views.py
454horizon/dashboards/syspanel/users/templates/users/_create.html
455horizon/dashboards/syspanel/users/templates/users/_update.html
456horizon/dashboards/syspanel/users/templates/users/create.html
457horizon/dashboards/syspanel/users/templates/users/index.html
458horizon/dashboards/syspanel/users/templates/users/update.html
459horizon/dashboards/syspanel/volumes/__init__.py
460horizon/dashboards/syspanel/volumes/panel.py
461horizon/dashboards/syspanel/volumes/tables.py
462horizon/dashboards/syspanel/volumes/tests.py
463horizon/dashboards/syspanel/volumes/urls.py
464horizon/dashboards/syspanel/volumes/views.py
465horizon/dashboards/syspanel/volumes/templates/volumes/detail.html
466horizon/dashboards/syspanel/volumes/templates/volumes/index.html
467horizon/forms/__init__.py129horizon/forms/__init__.py
468horizon/forms/base.py130horizon/forms/base.py
469horizon/forms/fields.py131horizon/forms/fields.py
@@ -528,10 +190,6 @@
528horizon/management/commands/__init__.py190horizon/management/commands/__init__.py
529horizon/management/commands/startdash.py191horizon/management/commands/startdash.py
530horizon/management/commands/startpanel.py192horizon/management/commands/startpanel.py
531horizon/openstack/__init__.py
532horizon/openstack/common/__init__.py
533horizon/openstack/common/jsonutils.py
534horizon/openstack/common/setup.py
535horizon/static/bootstrap/js/bootstrap.js193horizon/static/bootstrap/js/bootstrap.js
536horizon/static/bootstrap/js/bootstrap.min.js194horizon/static/bootstrap/js/bootstrap.min.js
537horizon/static/horizon/js/horizon.communication.js195horizon/static/horizon/js/horizon.communication.js
@@ -547,6 +205,7 @@
547horizon/static/horizon/js/horizon.tables.js205horizon/static/horizon/js/horizon.tables.js
548horizon/static/horizon/js/horizon.tabs.js206horizon/static/horizon/js/horizon.tabs.js
549horizon/static/horizon/js/horizon.templates.js207horizon/static/horizon/js/horizon.templates.js
208horizon/static/horizon/js/horizon.users.js
550horizon/static/horizon/js/horizon.utils.js209horizon/static/horizon/js/horizon.utils.js
551horizon/static/horizon/lib/hogan-1.0.5.min.js210horizon/static/horizon/lib/hogan-1.0.5.min.js
552horizon/static/horizon/lib/json2.js211horizon/static/horizon/lib/json2.js
@@ -597,6 +256,7 @@
597horizon/templates/horizon/common/_data_table_table_actions.html256horizon/templates/horizon/common/_data_table_table_actions.html
598horizon/templates/horizon/common/_detail_table.html257horizon/templates/horizon/common/_detail_table.html
599horizon/templates/horizon/common/_form_fields.html258horizon/templates/horizon/common/_form_fields.html
259horizon/templates/horizon/common/_modal.html
600horizon/templates/horizon/common/_modal_form.html260horizon/templates/horizon/common/_modal_form.html
601horizon/templates/horizon/common/_page_header.html261horizon/templates/horizon/common/_page_header.html
602horizon/templates/horizon/common/_progress_bar.html262horizon/templates/horizon/common/_progress_bar.html
@@ -615,75 +275,57 @@
615horizon/templatetags/parse_date.py275horizon/templatetags/parse_date.py
616horizon/templatetags/sizeformat.py276horizon/templatetags/sizeformat.py
617horizon/templatetags/truncate_filter.py277horizon/templatetags/truncate_filter.py
618horizon/tests/__init__.py278horizon/test/__init__.py
619horizon/tests/base_tests.py279horizon/test/helpers.py
620horizon/tests/message_tests.py280horizon/test/settings.py
621horizon/tests/selenium_tests.py281horizon/test/urls.py
622horizon/tests/table_tests.py282horizon/test/templates/404.html
623horizon/tests/tabs_tests.py283horizon/test/templates/_tab.html
624horizon/tests/templatetag_tests.py284horizon/test/templates/base-sidebar.html
625horizon/tests/testsettings.py285horizon/test/templates/tab_group.html
626horizon/tests/testurls.py286horizon/test/templates/workflow.html
627horizon/tests/utils_tests.py287horizon/test/templates/registration/login.html
628horizon/tests/workflows_tests.py288horizon/test/test_dashboards/__init__.py
629horizon/tests/api_tests/__init__.py289horizon/test/test_dashboards/cats/__init__.py
630horizon/tests/api_tests/base_tests.py290horizon/test/test_dashboards/cats/dashboard.py
631horizon/tests/api_tests/glance_tests.py291horizon/test/test_dashboards/cats/models.py
632horizon/tests/api_tests/keystone_tests.py292horizon/test/test_dashboards/cats/kittens/__init__.py
633horizon/tests/api_tests/nova_tests.py293horizon/test/test_dashboards/cats/kittens/models.py
634horizon/tests/api_tests/quantum_tests.py294horizon/test/test_dashboards/cats/kittens/panel.py
635horizon/tests/api_tests/swift_tests.py295horizon/test/test_dashboards/cats/kittens/urls.py
636horizon/tests/templates/404.html296horizon/test/test_dashboards/cats/kittens/views.py
637horizon/tests/templates/_tab.html297horizon/test/test_dashboards/cats/kittens/templates/kittens/index.html
638horizon/tests/templates/base-sidebar.html298horizon/test/test_dashboards/cats/static/cats/css/cats.css
639horizon/tests/templates/tab_group.html299horizon/test/test_dashboards/cats/static/cats/js/cats.js
640horizon/tests/templates/workflow.html300horizon/test/test_dashboards/cats/templates/cats/base.html
641horizon/tests/test_dashboards/__init__.py301horizon/test/test_dashboards/cats/tigers/__init__.py
642horizon/tests/test_dashboards/cats/__init__.py302horizon/test/test_dashboards/cats/tigers/models.py
643horizon/tests/test_dashboards/cats/dashboard.py303horizon/test/test_dashboards/cats/tigers/panel.py
644horizon/tests/test_dashboards/cats/models.py304horizon/test/test_dashboards/cats/tigers/urls.py
645horizon/tests/test_dashboards/cats/kittens/__init__.py305horizon/test/test_dashboards/cats/tigers/views.py
646horizon/tests/test_dashboards/cats/kittens/models.py306horizon/test/test_dashboards/cats/tigers/templates/tigers/index.html
647horizon/tests/test_dashboards/cats/kittens/panel.py307horizon/test/test_dashboards/dogs/__init__.py
648horizon/tests/test_dashboards/cats/kittens/tests.py308horizon/test/test_dashboards/dogs/dashboard.py
649horizon/tests/test_dashboards/cats/kittens/urls.py309horizon/test/test_dashboards/dogs/models.py
650horizon/tests/test_dashboards/cats/kittens/views.py310horizon/test/test_dashboards/dogs/puppies/__init__.py
651horizon/tests/test_dashboards/cats/kittens/templates/kittens/index.html311horizon/test/test_dashboards/dogs/puppies/models.py
652horizon/tests/test_dashboards/cats/static/cats/css/cats.css312horizon/test/test_dashboards/dogs/puppies/panel.py
653horizon/tests/test_dashboards/cats/static/cats/js/cats.js313horizon/test/test_dashboards/dogs/puppies/urls.py
654horizon/tests/test_dashboards/cats/templates/cats/base.html314horizon/test/test_dashboards/dogs/puppies/views.py
655horizon/tests/test_dashboards/cats/tigers/__init__.py315horizon/test/test_dashboards/dogs/puppies/templates/puppies/index.html
656horizon/tests/test_dashboards/cats/tigers/models.py316horizon/test/test_dashboards/dogs/static/dogs/css/dogs.css
657horizon/tests/test_dashboards/cats/tigers/panel.py317horizon/test/test_dashboards/dogs/static/dogs/js/dogs.js
658horizon/tests/test_dashboards/cats/tigers/tests.py318horizon/test/test_dashboards/dogs/templates/dogs/base.html
659horizon/tests/test_dashboards/cats/tigers/urls.py319horizon/test/tests/__init__.py
660horizon/tests/test_dashboards/cats/tigers/views.py320horizon/test/tests/base.py
661horizon/tests/test_dashboards/cats/tigers/templates/tigers/index.html321horizon/test/tests/messages.py
662horizon/tests/test_dashboards/dogs/__init__.py322horizon/test/tests/middleware.py
663horizon/tests/test_dashboards/dogs/dashboard.py323horizon/test/tests/selenium.py
664horizon/tests/test_dashboards/dogs/models.py324horizon/test/tests/tables.py
665horizon/tests/test_dashboards/dogs/puppies/__init__.py325horizon/test/tests/tabs.py
666horizon/tests/test_dashboards/dogs/puppies/models.py326horizon/test/tests/templatetags.py
667horizon/tests/test_dashboards/dogs/puppies/panel.py327horizon/test/tests/utils.py
668horizon/tests/test_dashboards/dogs/puppies/tests.py328horizon/test/tests/workflows.py
669horizon/tests/test_dashboards/dogs/puppies/urls.py
670horizon/tests/test_dashboards/dogs/puppies/views.py
671horizon/tests/test_dashboards/dogs/puppies/templates/puppies/index.html
672horizon/tests/test_dashboards/dogs/static/dogs/css/dogs.css
673horizon/tests/test_dashboards/dogs/static/dogs/js/dogs.js
674horizon/tests/test_dashboards/dogs/templates/dogs/base.html
675horizon/tests/test_data/__init__.py
676horizon/tests/test_data/exceptions.py
677horizon/tests/test_data/glance_data.py
678horizon/tests/test_data/keystone_data.py
679horizon/tests/test_data/nova_data.py
680horizon/tests/test_data/quantum_data.py
681horizon/tests/test_data/swift_data.py
682horizon/tests/test_data/utils.py
683horizon/usage/__init__.py
684horizon/usage/base.py
685horizon/usage/tables.py
686horizon/usage/views.py
687horizon/utils/__init__.py329horizon/utils/__init__.py
688horizon/utils/fields.py330horizon/utils/fields.py
689horizon/utils/filters.py331horizon/utils/filters.py
@@ -692,15 +334,358 @@
692horizon/utils/memoized.py334horizon/utils/memoized.py
693horizon/utils/secret_key.py335horizon/utils/secret_key.py
694horizon/utils/validators.py336horizon/utils/validators.py
695horizon/views/__init__.py
696horizon/views/base.py
697horizon/workflows/__init__.py337horizon/workflows/__init__.py
698horizon/workflows/base.py338horizon/workflows/base.py
699horizon/workflows/views.py339horizon/workflows/views.py
700openstack_dashboard/__init__.py340openstack_dashboard/__init__.py
341openstack_dashboard/context_processors.py
701openstack_dashboard/exceptions.py342openstack_dashboard/exceptions.py
702openstack_dashboard/settings.py343openstack_dashboard/settings.py
703openstack_dashboard/urls.py344openstack_dashboard/urls.py
345openstack_dashboard/views.py
346openstack_dashboard/api/__init__.py
347openstack_dashboard/api/base.py
348openstack_dashboard/api/cinder.py
349openstack_dashboard/api/glance.py
350openstack_dashboard/api/keystone.py
351openstack_dashboard/api/nova.py
352openstack_dashboard/api/quantum.py
353openstack_dashboard/api/swift.py
354openstack_dashboard/dashboards/__init__.py
355openstack_dashboard/dashboards/admin/__init__.py
356openstack_dashboard/dashboards/admin/dashboard.py
357openstack_dashboard/dashboards/admin/models.py
358openstack_dashboard/dashboards/admin/flavors/__init__.py
359openstack_dashboard/dashboards/admin/flavors/forms.py
360openstack_dashboard/dashboards/admin/flavors/panel.py
361openstack_dashboard/dashboards/admin/flavors/tables.py
362openstack_dashboard/dashboards/admin/flavors/tests.py
363openstack_dashboard/dashboards/admin/flavors/urls.py
364openstack_dashboard/dashboards/admin/flavors/views.py
365openstack_dashboard/dashboards/admin/flavors/extras/__init__.py
366openstack_dashboard/dashboards/admin/flavors/extras/forms.py
367openstack_dashboard/dashboards/admin/flavors/extras/tables.py
368openstack_dashboard/dashboards/admin/flavors/extras/tests.py
369openstack_dashboard/dashboards/admin/flavors/extras/urls.py
370openstack_dashboard/dashboards/admin/flavors/extras/views.py
371openstack_dashboard/dashboards/admin/flavors/templates/flavors/_create.html
372openstack_dashboard/dashboards/admin/flavors/templates/flavors/_edit.html
373openstack_dashboard/dashboards/admin/flavors/templates/flavors/create.html
374openstack_dashboard/dashboards/admin/flavors/templates/flavors/edit.html
375openstack_dashboard/dashboards/admin/flavors/templates/flavors/index.html
376openstack_dashboard/dashboards/admin/flavors/templates/flavors/extras/_create.html
377openstack_dashboard/dashboards/admin/flavors/templates/flavors/extras/_edit.html
378openstack_dashboard/dashboards/admin/flavors/templates/flavors/extras/_index.html
379openstack_dashboard/dashboards/admin/flavors/templates/flavors/extras/create.html
380openstack_dashboard/dashboards/admin/flavors/templates/flavors/extras/edit.html
381openstack_dashboard/dashboards/admin/flavors/templates/flavors/extras/index.html
382openstack_dashboard/dashboards/admin/images/__init__.py
383openstack_dashboard/dashboards/admin/images/forms.py
384openstack_dashboard/dashboards/admin/images/panel.py
385openstack_dashboard/dashboards/admin/images/tables.py
386openstack_dashboard/dashboards/admin/images/tests.py
387openstack_dashboard/dashboards/admin/images/urls.py
388openstack_dashboard/dashboards/admin/images/views.py
389openstack_dashboard/dashboards/admin/images/templates/images/_update.html
390openstack_dashboard/dashboards/admin/images/templates/images/index.html
391openstack_dashboard/dashboards/admin/images/templates/images/update.html
392openstack_dashboard/dashboards/admin/info/__init__.py
393openstack_dashboard/dashboards/admin/info/panel.py
394openstack_dashboard/dashboards/admin/info/tables.py
395openstack_dashboard/dashboards/admin/info/tabs.py
396openstack_dashboard/dashboards/admin/info/tests.py
397openstack_dashboard/dashboards/admin/info/urls.py
398openstack_dashboard/dashboards/admin/info/views.py
399openstack_dashboard/dashboards/admin/info/templates/info/index.html
400openstack_dashboard/dashboards/admin/instances/__init__.py
401openstack_dashboard/dashboards/admin/instances/panel.py
402openstack_dashboard/dashboards/admin/instances/tables.py
403openstack_dashboard/dashboards/admin/instances/tests.py
404openstack_dashboard/dashboards/admin/instances/urls.py
405openstack_dashboard/dashboards/admin/instances/views.py
406openstack_dashboard/dashboards/admin/instances/templates/instances/index.html
407openstack_dashboard/dashboards/admin/networks/__init__.py
408openstack_dashboard/dashboards/admin/networks/forms.py
409openstack_dashboard/dashboards/admin/networks/panel.py
410openstack_dashboard/dashboards/admin/networks/tables.py
411openstack_dashboard/dashboards/admin/networks/tests.py
412openstack_dashboard/dashboards/admin/networks/urls.py
413openstack_dashboard/dashboards/admin/networks/views.py
414openstack_dashboard/dashboards/admin/networks/ports/__init__.py
415openstack_dashboard/dashboards/admin/networks/ports/forms.py
416openstack_dashboard/dashboards/admin/networks/ports/tables.py
417openstack_dashboard/dashboards/admin/networks/ports/tabs.py
418openstack_dashboard/dashboards/admin/networks/ports/urls.py
419openstack_dashboard/dashboards/admin/networks/ports/views.py
420openstack_dashboard/dashboards/admin/networks/subnets/__init__.py
421openstack_dashboard/dashboards/admin/networks/subnets/forms.py
422openstack_dashboard/dashboards/admin/networks/subnets/tables.py
423openstack_dashboard/dashboards/admin/networks/subnets/urls.py
424openstack_dashboard/dashboards/admin/networks/subnets/views.py
425openstack_dashboard/dashboards/admin/networks/templates/networks/_create.html
426openstack_dashboard/dashboards/admin/networks/templates/networks/_update.html
427openstack_dashboard/dashboards/admin/networks/templates/networks/create.html
428openstack_dashboard/dashboards/admin/networks/templates/networks/index.html
429openstack_dashboard/dashboards/admin/networks/templates/networks/update.html
430openstack_dashboard/dashboards/admin/networks/templates/networks/ports/_create.html
431openstack_dashboard/dashboards/admin/networks/templates/networks/ports/_update.html
432openstack_dashboard/dashboards/admin/networks/templates/networks/ports/create.html
433openstack_dashboard/dashboards/admin/networks/templates/networks/ports/update.html
434openstack_dashboard/dashboards/admin/networks/templates/networks/subnets/_create.html
435openstack_dashboard/dashboards/admin/networks/templates/networks/subnets/_update.html
436openstack_dashboard/dashboards/admin/networks/templates/networks/subnets/create.html
437openstack_dashboard/dashboards/admin/networks/templates/networks/subnets/index.html
438openstack_dashboard/dashboards/admin/networks/templates/networks/subnets/update.html
439openstack_dashboard/dashboards/admin/overview/__init__.py
440openstack_dashboard/dashboards/admin/overview/panel.py
441openstack_dashboard/dashboards/admin/overview/tests.py
442openstack_dashboard/dashboards/admin/overview/urls.py
443openstack_dashboard/dashboards/admin/overview/views.py
444openstack_dashboard/dashboards/admin/overview/templates/overview/usage.csv
445openstack_dashboard/dashboards/admin/overview/templates/overview/usage.html
446openstack_dashboard/dashboards/admin/projects/__init__.py
447openstack_dashboard/dashboards/admin/projects/forms.py
448openstack_dashboard/dashboards/admin/projects/panel.py
449openstack_dashboard/dashboards/admin/projects/tables.py
450openstack_dashboard/dashboards/admin/projects/tests.py
451openstack_dashboard/dashboards/admin/projects/urls.py
452openstack_dashboard/dashboards/admin/projects/views.py
453openstack_dashboard/dashboards/admin/projects/workflows.py
454openstack_dashboard/dashboards/admin/projects/templates/projects/_add_user.html
455openstack_dashboard/dashboards/admin/projects/templates/projects/_create.html
456openstack_dashboard/dashboards/admin/projects/templates/projects/_create_user.html
457openstack_dashboard/dashboards/admin/projects/templates/projects/_quotas.html
458openstack_dashboard/dashboards/admin/projects/templates/projects/_update.html
459openstack_dashboard/dashboards/admin/projects/templates/projects/_update_members.html
460openstack_dashboard/dashboards/admin/projects/templates/projects/add_user.html
461openstack_dashboard/dashboards/admin/projects/templates/projects/create.html
462openstack_dashboard/dashboards/admin/projects/templates/projects/create_user.html
463openstack_dashboard/dashboards/admin/projects/templates/projects/index.html
464openstack_dashboard/dashboards/admin/projects/templates/projects/quotas.html
465openstack_dashboard/dashboards/admin/projects/templates/projects/update.html
466openstack_dashboard/dashboards/admin/projects/templates/projects/usage.html
467openstack_dashboard/dashboards/admin/projects/templates/projects/users.html
468openstack_dashboard/dashboards/admin/users/__init__.py
469openstack_dashboard/dashboards/admin/users/forms.py
470openstack_dashboard/dashboards/admin/users/panel.py
471openstack_dashboard/dashboards/admin/users/tables.py
472openstack_dashboard/dashboards/admin/users/tests.py
473openstack_dashboard/dashboards/admin/users/urls.py
474openstack_dashboard/dashboards/admin/users/views.py
475openstack_dashboard/dashboards/admin/users/templates/users/_create.html
476openstack_dashboard/dashboards/admin/users/templates/users/_update.html
477openstack_dashboard/dashboards/admin/users/templates/users/create.html
478openstack_dashboard/dashboards/admin/users/templates/users/index.html
479openstack_dashboard/dashboards/admin/users/templates/users/update.html
480openstack_dashboard/dashboards/admin/volumes/__init__.py
481openstack_dashboard/dashboards/admin/volumes/forms.py
482openstack_dashboard/dashboards/admin/volumes/panel.py
483openstack_dashboard/dashboards/admin/volumes/tables.py
484openstack_dashboard/dashboards/admin/volumes/tests.py
485openstack_dashboard/dashboards/admin/volumes/urls.py
486openstack_dashboard/dashboards/admin/volumes/views.py
487openstack_dashboard/dashboards/admin/volumes/templates/volumes/_create_volume_type.html
488openstack_dashboard/dashboards/admin/volumes/templates/volumes/create_volume_type.html
489openstack_dashboard/dashboards/admin/volumes/templates/volumes/detail.html
490openstack_dashboard/dashboards/admin/volumes/templates/volumes/index.html
491openstack_dashboard/dashboards/project/__init__.py
492openstack_dashboard/dashboards/project/dashboard.py
493openstack_dashboard/dashboards/project/models.py
494openstack_dashboard/dashboards/project/access_and_security/__init__.py
495openstack_dashboard/dashboards/project/access_and_security/panel.py
496openstack_dashboard/dashboards/project/access_and_security/tests.py
497openstack_dashboard/dashboards/project/access_and_security/urls.py
498openstack_dashboard/dashboards/project/access_and_security/views.py
499openstack_dashboard/dashboards/project/access_and_security/floating_ips/__init__.py
500openstack_dashboard/dashboards/project/access_and_security/floating_ips/forms.py
501openstack_dashboard/dashboards/project/access_and_security/floating_ips/tables.py
502openstack_dashboard/dashboards/project/access_and_security/floating_ips/tests.py
503openstack_dashboard/dashboards/project/access_and_security/floating_ips/urls.py
504openstack_dashboard/dashboards/project/access_and_security/floating_ips/views.py
505openstack_dashboard/dashboards/project/access_and_security/floating_ips/workflows.py
506openstack_dashboard/dashboards/project/access_and_security/keypairs/__init__.py
507openstack_dashboard/dashboards/project/access_and_security/keypairs/forms.py
508openstack_dashboard/dashboards/project/access_and_security/keypairs/tables.py
509openstack_dashboard/dashboards/project/access_and_security/keypairs/tests.py
510openstack_dashboard/dashboards/project/access_and_security/keypairs/urls.py
511openstack_dashboard/dashboards/project/access_and_security/keypairs/views.py
512openstack_dashboard/dashboards/project/access_and_security/security_groups/__init__.py
513openstack_dashboard/dashboards/project/access_and_security/security_groups/forms.py
514openstack_dashboard/dashboards/project/access_and_security/security_groups/tables.py
515openstack_dashboard/dashboards/project/access_and_security/security_groups/tests.py
516openstack_dashboard/dashboards/project/access_and_security/security_groups/urls.py
517openstack_dashboard/dashboards/project/access_and_security/security_groups/views.py
518openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/index.html
519openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/floating_ips/_allocate.html
520openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/floating_ips/allocate.html
521openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/floating_ips/associate.html
522openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/keypairs/_create.html
523openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/keypairs/_import.html
524openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/keypairs/create.html
525openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/keypairs/download.html
526openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/keypairs/import.html
527openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/security_groups/_create.html
528openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/security_groups/_edit_rules.html
529openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/security_groups/create.html
530openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/security_groups/edit_rules.html
531openstack_dashboard/dashboards/project/containers/__init__.py
532openstack_dashboard/dashboards/project/containers/browsers.py
533openstack_dashboard/dashboards/project/containers/forms.py
534openstack_dashboard/dashboards/project/containers/panel.py
535openstack_dashboard/dashboards/project/containers/tables.py
536openstack_dashboard/dashboards/project/containers/tests.py
537openstack_dashboard/dashboards/project/containers/urls.py
538openstack_dashboard/dashboards/project/containers/views.py
539openstack_dashboard/dashboards/project/containers/templates/containers/_copy.html
540openstack_dashboard/dashboards/project/containers/templates/containers/_create.html
541openstack_dashboard/dashboards/project/containers/templates/containers/_upload.html
542openstack_dashboard/dashboards/project/containers/templates/containers/copy.html
543openstack_dashboard/dashboards/project/containers/templates/containers/create.html
544openstack_dashboard/dashboards/project/containers/templates/containers/index.html
545openstack_dashboard/dashboards/project/containers/templates/containers/upload.html
546openstack_dashboard/dashboards/project/images_and_snapshots/__init__.py
547openstack_dashboard/dashboards/project/images_and_snapshots/panel.py
548openstack_dashboard/dashboards/project/images_and_snapshots/tests.py
549openstack_dashboard/dashboards/project/images_and_snapshots/urls.py
550openstack_dashboard/dashboards/project/images_and_snapshots/views.py
551openstack_dashboard/dashboards/project/images_and_snapshots/images/__init__.py
552openstack_dashboard/dashboards/project/images_and_snapshots/images/forms.py
553openstack_dashboard/dashboards/project/images_and_snapshots/images/tables.py
554openstack_dashboard/dashboards/project/images_and_snapshots/images/tabs.py
555openstack_dashboard/dashboards/project/images_and_snapshots/images/tests.py
556openstack_dashboard/dashboards/project/images_and_snapshots/images/urls.py
557openstack_dashboard/dashboards/project/images_and_snapshots/images/views.py
558openstack_dashboard/dashboards/project/images_and_snapshots/snapshots/__init__.py
559openstack_dashboard/dashboards/project/images_and_snapshots/snapshots/forms.py
560openstack_dashboard/dashboards/project/images_and_snapshots/snapshots/tables.py
561openstack_dashboard/dashboards/project/images_and_snapshots/snapshots/tests.py
562openstack_dashboard/dashboards/project/images_and_snapshots/snapshots/urls.py
563openstack_dashboard/dashboards/project/images_and_snapshots/snapshots/views.py
564openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/index.html
565openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/images/_create.html
566openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/images/_detail_overview.html
567openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/images/_update.html
568openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/images/create.html
569openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/images/detail.html
570openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/images/update.html
571openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/snapshots/_create.html
572openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/snapshots/_detail_overview.html
573openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/snapshots/create.html
574openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/snapshots/detail.html
575openstack_dashboard/dashboards/project/images_and_snapshots/volume_snapshots/__init__.py
576openstack_dashboard/dashboards/project/images_and_snapshots/volume_snapshots/tables.py
577openstack_dashboard/dashboards/project/images_and_snapshots/volume_snapshots/tabs.py
578openstack_dashboard/dashboards/project/images_and_snapshots/volume_snapshots/tests.py
579openstack_dashboard/dashboards/project/instances/__init__.py
580openstack_dashboard/dashboards/project/instances/forms.py
581openstack_dashboard/dashboards/project/instances/panel.py
582openstack_dashboard/dashboards/project/instances/tables.py
583openstack_dashboard/dashboards/project/instances/tabs.py
584openstack_dashboard/dashboards/project/instances/tests.py
585openstack_dashboard/dashboards/project/instances/urls.py
586openstack_dashboard/dashboards/project/instances/views.py
587openstack_dashboard/dashboards/project/instances/workflows.py
588openstack_dashboard/dashboards/project/instances/templates/instances/_detail_log.html
589openstack_dashboard/dashboards/project/instances/templates/instances/_detail_overview.html
590openstack_dashboard/dashboards/project/instances/templates/instances/_detail_vnc.html
591openstack_dashboard/dashboards/project/instances/templates/instances/_instance_ips.html
592openstack_dashboard/dashboards/project/instances/templates/instances/_launch_customize_help.html
593openstack_dashboard/dashboards/project/instances/templates/instances/_launch_details_help.html
594openstack_dashboard/dashboards/project/instances/templates/instances/_launch_volumes_help.html
595openstack_dashboard/dashboards/project/instances/templates/instances/_update.html
596openstack_dashboard/dashboards/project/instances/templates/instances/detail.html
597openstack_dashboard/dashboards/project/instances/templates/instances/index.html
598openstack_dashboard/dashboards/project/instances/templates/instances/launch.html
599openstack_dashboard/dashboards/project/instances/templates/instances/update.html
600openstack_dashboard/dashboards/project/networks/__init__.py
601openstack_dashboard/dashboards/project/networks/forms.py
602openstack_dashboard/dashboards/project/networks/panel.py
603openstack_dashboard/dashboards/project/networks/tables.py
604openstack_dashboard/dashboards/project/networks/tests.py
605openstack_dashboard/dashboards/project/networks/urls.py
606openstack_dashboard/dashboards/project/networks/views.py
607openstack_dashboard/dashboards/project/networks/workflows.py
608openstack_dashboard/dashboards/project/networks/ports/__init__.py
609openstack_dashboard/dashboards/project/networks/ports/tables.py
610openstack_dashboard/dashboards/project/networks/ports/tabs.py
611openstack_dashboard/dashboards/project/networks/ports/urls.py
612openstack_dashboard/dashboards/project/networks/ports/views.py
613openstack_dashboard/dashboards/project/networks/subnets/__init__.py
614openstack_dashboard/dashboards/project/networks/subnets/forms.py
615openstack_dashboard/dashboards/project/networks/subnets/tables.py
616openstack_dashboard/dashboards/project/networks/subnets/tabs.py
617openstack_dashboard/dashboards/project/networks/subnets/urls.py
618openstack_dashboard/dashboards/project/networks/subnets/views.py
619openstack_dashboard/dashboards/project/networks/templates/networks/_create.html
620openstack_dashboard/dashboards/project/networks/templates/networks/_detail_overview.html
621openstack_dashboard/dashboards/project/networks/templates/networks/_network_ips.html
622openstack_dashboard/dashboards/project/networks/templates/networks/_update.html
623openstack_dashboard/dashboards/project/networks/templates/networks/create.html
624openstack_dashboard/dashboards/project/networks/templates/networks/detail.html
625openstack_dashboard/dashboards/project/networks/templates/networks/index.html
626openstack_dashboard/dashboards/project/networks/templates/networks/update.html
627openstack_dashboard/dashboards/project/networks/templates/networks/ports/_detail_overview.html
628openstack_dashboard/dashboards/project/networks/templates/networks/ports/_port_ips.html
629openstack_dashboard/dashboards/project/networks/templates/networks/ports/detail.html
630openstack_dashboard/dashboards/project/networks/templates/networks/subnets/_create.html
631openstack_dashboard/dashboards/project/networks/templates/networks/subnets/_detail_overview.html
632openstack_dashboard/dashboards/project/networks/templates/networks/subnets/_update.html
633openstack_dashboard/dashboards/project/networks/templates/networks/subnets/create.html
634openstack_dashboard/dashboards/project/networks/templates/networks/subnets/detail.html
635openstack_dashboard/dashboards/project/networks/templates/networks/subnets/index.html
636openstack_dashboard/dashboards/project/networks/templates/networks/subnets/update.html
637openstack_dashboard/dashboards/project/overview/__init__.py
638openstack_dashboard/dashboards/project/overview/panel.py
639openstack_dashboard/dashboards/project/overview/tests.py
640openstack_dashboard/dashboards/project/overview/urls.py
641openstack_dashboard/dashboards/project/overview/views.py
642openstack_dashboard/dashboards/project/overview/templates/overview/usage.csv
643openstack_dashboard/dashboards/project/overview/templates/overview/usage.html
644openstack_dashboard/dashboards/project/volumes/__init__.py
645openstack_dashboard/dashboards/project/volumes/forms.py
646openstack_dashboard/dashboards/project/volumes/panel.py
647openstack_dashboard/dashboards/project/volumes/tables.py
648openstack_dashboard/dashboards/project/volumes/tabs.py
649openstack_dashboard/dashboards/project/volumes/tests.py
650openstack_dashboard/dashboards/project/volumes/urls.py
651openstack_dashboard/dashboards/project/volumes/views.py
652openstack_dashboard/dashboards/project/volumes/templates/volumes/_attach.html
653openstack_dashboard/dashboards/project/volumes/templates/volumes/_create.html
654openstack_dashboard/dashboards/project/volumes/templates/volumes/_create_snapshot.html
655openstack_dashboard/dashboards/project/volumes/templates/volumes/_detail_overview.html
656openstack_dashboard/dashboards/project/volumes/templates/volumes/attach.html
657openstack_dashboard/dashboards/project/volumes/templates/volumes/create.html
658openstack_dashboard/dashboards/project/volumes/templates/volumes/create_snapshot.html
659openstack_dashboard/dashboards/project/volumes/templates/volumes/detail.html
660openstack_dashboard/dashboards/project/volumes/templates/volumes/index.html
661openstack_dashboard/dashboards/settings/__init__.py
662openstack_dashboard/dashboards/settings/dashboard.py
663openstack_dashboard/dashboards/settings/models.py
664openstack_dashboard/dashboards/settings/ec2/__init__.py
665openstack_dashboard/dashboards/settings/ec2/forms.py
666openstack_dashboard/dashboards/settings/ec2/panel.py
667openstack_dashboard/dashboards/settings/ec2/tests.py
668openstack_dashboard/dashboards/settings/ec2/urls.py
669openstack_dashboard/dashboards/settings/ec2/views.py
670openstack_dashboard/dashboards/settings/ec2/templates/ec2/download_form.html
671openstack_dashboard/dashboards/settings/ec2/templates/ec2/ec2rc.sh.template
672openstack_dashboard/dashboards/settings/ec2/templates/ec2/index.html
673openstack_dashboard/dashboards/settings/project/__init__.py
674openstack_dashboard/dashboards/settings/project/forms.py
675openstack_dashboard/dashboards/settings/project/panel.py
676openstack_dashboard/dashboards/settings/project/tables.py
677openstack_dashboard/dashboards/settings/project/urls.py
678openstack_dashboard/dashboards/settings/project/views.py
679openstack_dashboard/dashboards/settings/project/templates/project/_openrc.html
680openstack_dashboard/dashboards/settings/project/templates/project/openrc.sh.template
681openstack_dashboard/dashboards/settings/project/templates/project/settings.html
682openstack_dashboard/dashboards/settings/user/__init__.py
683openstack_dashboard/dashboards/settings/user/forms.py
684openstack_dashboard/dashboards/settings/user/panel.py
685openstack_dashboard/dashboards/settings/user/urls.py
686openstack_dashboard/dashboards/settings/user/views.py
687openstack_dashboard/dashboards/settings/user/templates/user/_settings.html
688openstack_dashboard/dashboards/settings/user/templates/user/settings.html
704openstack_dashboard/local/__init__.py689openstack_dashboard/local/__init__.py
705openstack_dashboard/local/local_settings.py.example690openstack_dashboard/local/local_settings.py.example
706openstack_dashboard/locale/bg_BG/LC_MESSAGES/django.mo691openstack_dashboard/locale/bg_BG/LC_MESSAGES/django.mo
@@ -713,6 +698,8 @@
713openstack_dashboard/locale/es/LC_MESSAGES/django.po698openstack_dashboard/locale/es/LC_MESSAGES/django.po
714openstack_dashboard/locale/fr/LC_MESSAGES/django.mo699openstack_dashboard/locale/fr/LC_MESSAGES/django.mo
715openstack_dashboard/locale/fr/LC_MESSAGES/django.po700openstack_dashboard/locale/fr/LC_MESSAGES/django.po
701openstack_dashboard/locale/it/LC_MESSAGES/django.mo
702openstack_dashboard/locale/it/LC_MESSAGES/django.po
716openstack_dashboard/locale/ja/LC_MESSAGES/django.mo703openstack_dashboard/locale/ja/LC_MESSAGES/django.mo
717openstack_dashboard/locale/ja/LC_MESSAGES/django.po704openstack_dashboard/locale/ja/LC_MESSAGES/django.po
718openstack_dashboard/locale/ko_KR/LC_MESSAGES/django.mo705openstack_dashboard/locale/ko_KR/LC_MESSAGES/django.mo
@@ -725,10 +712,15 @@
725openstack_dashboard/locale/pt/LC_MESSAGES/django.po712openstack_dashboard/locale/pt/LC_MESSAGES/django.po
726openstack_dashboard/locale/pt_BR/LC_MESSAGES/django.mo713openstack_dashboard/locale/pt_BR/LC_MESSAGES/django.mo
727openstack_dashboard/locale/pt_BR/LC_MESSAGES/django.po714openstack_dashboard/locale/pt_BR/LC_MESSAGES/django.po
715openstack_dashboard/locale/ru/LC_MESSAGES/django.mo
716openstack_dashboard/locale/ru/LC_MESSAGES/django.po
728openstack_dashboard/locale/zh_CN/LC_MESSAGES/django.mo717openstack_dashboard/locale/zh_CN/LC_MESSAGES/django.mo
729openstack_dashboard/locale/zh_CN/LC_MESSAGES/django.po718openstack_dashboard/locale/zh_CN/LC_MESSAGES/django.po
730openstack_dashboard/locale/zh_TW/LC_MESSAGES/django.mo719openstack_dashboard/locale/zh_TW/LC_MESSAGES/django.mo
731openstack_dashboard/locale/zh_TW/LC_MESSAGES/django.po720openstack_dashboard/locale/zh_TW/LC_MESSAGES/django.po
721openstack_dashboard/openstack/__init__.py
722openstack_dashboard/openstack/common/__init__.py
723openstack_dashboard/openstack/common/setup.py
732openstack_dashboard/static/bootstrap/img/glyphicons-halflings-white.png724openstack_dashboard/static/bootstrap/img/glyphicons-halflings-white.png
733openstack_dashboard/static/bootstrap/img/glyphicons-halflings.png725openstack_dashboard/static/bootstrap/img/glyphicons-halflings.png
734openstack_dashboard/static/bootstrap/less/accordion.less726openstack_dashboard/static/bootstrap/less/accordion.less
@@ -781,9 +773,43 @@
781openstack_dashboard/templates/403.html773openstack_dashboard/templates/403.html
782openstack_dashboard/templates/404.html774openstack_dashboard/templates/404.html
783openstack_dashboard/templates/500.html775openstack_dashboard/templates/500.html
776openstack_dashboard/templates/_header.html
784openstack_dashboard/templates/_stylesheets.html777openstack_dashboard/templates/_stylesheets.html
785openstack_dashboard/test/__init__.py778openstack_dashboard/test/__init__.py
779openstack_dashboard/test/error_pages_urls.py
780openstack_dashboard/test/helpers.py
786openstack_dashboard/test/settings.py781openstack_dashboard/test/settings.py
782openstack_dashboard/test/api_tests/__init__.py
783openstack_dashboard/test/api_tests/base_tests.py
784openstack_dashboard/test/api_tests/glance_tests.py
785openstack_dashboard/test/api_tests/keystone_tests.py
786openstack_dashboard/test/api_tests/nova_tests.py
787openstack_dashboard/test/api_tests/quantum_tests.py
788openstack_dashboard/test/api_tests/swift_tests.py
789openstack_dashboard/test/templates/404.html
790openstack_dashboard/test/templates/500.html
791openstack_dashboard/test/templates/_tab.html
792openstack_dashboard/test/templates/base-sidebar.html
793openstack_dashboard/test/templates/tab_group.html
794openstack_dashboard/test/templates/workflow.html
795openstack_dashboard/test/templates/registration/login.html
796openstack_dashboard/test/test_data/__init__.py
797openstack_dashboard/test/test_data/exceptions.py
798openstack_dashboard/test/test_data/glance_data.py
799openstack_dashboard/test/test_data/keystone_data.py
800openstack_dashboard/test/test_data/nova_data.py
801openstack_dashboard/test/test_data/quantum_data.py
802openstack_dashboard/test/test_data/swift_data.py
803openstack_dashboard/test/test_data/utils.py
804openstack_dashboard/test/tests/__init__.py
805openstack_dashboard/test/tests/error_pages.py
806openstack_dashboard/test/tests/quotas.py
807openstack_dashboard/test/tests/selenium.py
808openstack_dashboard/usage/__init__.py
809openstack_dashboard/usage/base.py
810openstack_dashboard/usage/quotas.py
811openstack_dashboard/usage/tables.py
812openstack_dashboard/usage/views.py
787openstack_dashboard/wsgi/django.wsgi813openstack_dashboard/wsgi/django.wsgi
788tools/install_venv.py814tools/install_venv.py
789tools/pip-requires815tools/pip-requires
790816
=== modified file 'horizon.egg-info/requires.txt'
--- horizon.egg-info/requires.txt 2012-09-21 08:03:36 +0000
+++ horizon.egg-info/requires.txt 2012-11-26 19:56:34 +0000
@@ -1,6 +1,7 @@
1Django>=1.41Django>=1.4
2django_compressor2django_compressor
3django_openstack_auth3django_openstack_auth>=1.0.3
4netaddr
4python-cinderclient5python-cinderclient
5python-glanceclient<26python-glanceclient<2
6python-keystoneclient7python-keystoneclient
78
=== modified file 'horizon/__init__.py'
--- horizon/__init__.py 2012-07-06 11:38:55 +0000
+++ horizon/__init__.py 2012-11-26 19:56:34 +0000
@@ -14,7 +14,7 @@
14# License for the specific language governing permissions and limitations14# License for the specific language governing permissions and limitations
15# under the License.15# under the License.
1616
17""" The Horizon OpenStack Dashboard interface.17""" The Horizon interface.
1818
19Contains the core Horizon classes--:class:`~horizon.Dashboard` and19Contains the core Horizon classes--:class:`~horizon.Dashboard` and
20:class:`horizon.Panel`--the dynamic URLconf for Horizon, and common interface20:class:`horizon.Panel`--the dynamic URLconf for Horizon, and common interface
2121
=== removed directory 'horizon/api'
=== removed file 'horizon/api/__init__.py'
--- horizon/api/__init__.py 2012-08-16 14:01:33 +0000
+++ horizon/api/__init__.py 1970-01-01 00:00:00 +0000
@@ -1,39 +0,0 @@
1# vim: tabstop=4 shiftwidth=4 softtabstop=4
2
3# Copyright 2012 United States Government as represented by the
4# Administrator of the National Aeronautics and Space Administration.
5# All Rights Reserved.
6#
7# Copyright 2012 Nebula, Inc.
8#
9# Licensed under the Apache License, Version 2.0 (the "License"); you may
10# not use this file except in compliance with the License. You may obtain
11# a copy of the License at
12#
13# http://www.apache.org/licenses/LICENSE-2.0
14#
15# Unless required by applicable law or agreed to in writing, software
16# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
17# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
18# License for the specific language governing permissions and limitations
19# under the License.
20
21"""
22Methods and interface objects used to interact with external APIs.
23
24API method calls return objects that are in many cases objects with
25attributes that are direct maps to the data returned from the API http call.
26Unfortunately, these objects are also often constructed dynamically, making
27it difficult to know what data is available from the API object. Because of
28this, all API calls should wrap their returned object in one defined here,
29using only explicitly defined atributes and/or methods.
30
31In other words, Horizon developers not working on horizon.api
32shouldn't need to understand the finer details of APIs for
33Keystone/Nova/Glance/Swift et. al.
34"""
35from horizon.api.glance import *
36from horizon.api.keystone import *
37from horizon.api.nova import *
38from horizon.api.swift import *
39from horizon.api.quantum import *
400
=== removed file 'horizon/api/base.py'
--- horizon/api/base.py 2012-07-06 11:38:55 +0000
+++ horizon/api/base.py 1970-01-01 00:00:00 +0000
@@ -1,118 +0,0 @@
1# vim: tabstop=4 shiftwidth=4 softtabstop=4
2
3# Copyright 2012 United States Government as represented by the
4# Administrator of the National Aeronautics and Space Administration.
5# All Rights Reserved.
6#
7# Copyright 2012 Nebula, Inc.
8#
9# Licensed under the Apache License, Version 2.0 (the "License"); you may
10# not use this file except in compliance with the License. You may obtain
11# a copy of the License at
12#
13# http://www.apache.org/licenses/LICENSE-2.0
14#
15# Unless required by applicable law or agreed to in writing, software
16# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
17# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
18# License for the specific language governing permissions and limitations
19# under the License.
20
21import logging
22
23from django.conf import settings
24
25from horizon import exceptions
26
27
28__all__ = ('APIResourceWrapper', 'APIDictWrapper',
29 'get_service_from_catalog', 'url_for',)
30
31
32LOG = logging.getLogger(__name__)
33
34
35class APIResourceWrapper(object):
36 """ Simple wrapper for api objects
37
38 Define _attrs on the child class and pass in the
39 api object as the only argument to the constructor
40 """
41 _attrs = []
42
43 def __init__(self, apiresource):
44 self._apiresource = apiresource
45
46 def __getattr__(self, attr):
47 if attr in self._attrs:
48 # __getattr__ won't find properties
49 return self._apiresource.__getattribute__(attr)
50 else:
51 msg = ('Attempted to access unknown attribute "%s" on '
52 'APIResource object of type "%s" wrapping resource of '
53 'type "%s".') % (attr, self.__class__,
54 self._apiresource.__class__)
55 LOG.debug(exceptions.error_color(msg))
56 raise AttributeError(attr)
57
58
59class APIDictWrapper(object):
60 """ Simple wrapper for api dictionaries
61
62 Some api calls return dictionaries. This class provides identical
63 behavior as APIResourceWrapper, except that it will also behave as a
64 dictionary, in addition to attribute accesses.
65
66 Attribute access is the preferred method of access, to be
67 consistent with api resource objects from novclient.
68 """
69 def __init__(self, apidict):
70 self._apidict = apidict
71
72 def __getattr__(self, attr):
73 try:
74 return self._apidict[attr]
75 except KeyError:
76 msg = 'Unknown attribute "%(attr)s" on APIResource object ' \
77 'of type "%(cls)s"' % {'attr': attr, 'cls': self.__class__}
78 LOG.debug(exceptions.error_color(msg))
79 raise AttributeError(msg)
80
81 def __getitem__(self, item):
82 try:
83 return self.__getattr__(item)
84 except AttributeError, e:
85 # caller is expecting a KeyError
86 raise KeyError(e)
87
88 def get(self, item, default=None):
89 try:
90 return self.__getattr__(item)
91 except AttributeError:
92 return default
93
94
95def get_service_from_catalog(catalog, service_type):
96 if catalog:
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches