From e263577b106f56f3a88788b7169652911260212a Mon Sep 17 00:00:00 2001 From: Eddie Ramirez Date: Thu, 4 Aug 2016 00:17:08 +0000 Subject: [PATCH] Added regions panel --- AUTHORS | 2 ++ ChangeLog | 5 +++ README.md => README.rst | 0 craton_dashboard/__init__.py | 0 craton_dashboard/dashboards/__init__.py | 0 craton_dashboard/dashboards/__init__.pyc | Bin 0 -> 109 bytes .../dashboards/project/__init__.py | 0 .../dashboards/project/__init__.pyc | Bin 0 -> 117 bytes .../dashboards/project/fleet/__init__.py | 0 .../dashboards/project/fleet/__init__.pyc | Bin 0 -> 123 bytes .../dashboards/project/fleet/panel.py | 21 ++++++++++++ .../dashboards/project/fleet/panel.pyc | Bin 0 -> 497 bytes .../fleet/templates/regions/index.html | 1 + .../dashboards/project/fleet/urls.py | 8 +++++ .../dashboards/project/fleet/views.py | 31 ++++++++++++++++++ .../enabled/_1710_fleet_panel_group.py | 23 +++++++++++++ .../enabled/_1720_fleet_regions_panel.py | 25 ++++++++++++++ craton_dashboard/enabled/__init__.py | 0 craton_ui.egg-info/PKG-INFO | 12 +++++++ craton_ui.egg-info/SOURCES.txt | 23 +++++++++++++ craton_ui.egg-info/dependency_links.txt | 1 + craton_ui.egg-info/not-zip-safe | 1 + craton_ui.egg-info/pbr.json | 1 + craton_ui.egg-info/top_level.txt | 1 + dist/craton-ui-0.0.1.dev1.tar.gz | Bin 0 -> 6517 bytes setup.cfg | 23 +++++++++++++ setup.py | 29 ++++++++++++++++ 27 files changed, 207 insertions(+) create mode 100644 AUTHORS create mode 100644 ChangeLog rename README.md => README.rst (100%) create mode 100644 craton_dashboard/__init__.py create mode 100644 craton_dashboard/dashboards/__init__.py create mode 100644 craton_dashboard/dashboards/__init__.pyc create mode 100644 craton_dashboard/dashboards/project/__init__.py create mode 100644 craton_dashboard/dashboards/project/__init__.pyc create mode 100644 craton_dashboard/dashboards/project/fleet/__init__.py create mode 100644 craton_dashboard/dashboards/project/fleet/__init__.pyc create mode 100644 craton_dashboard/dashboards/project/fleet/panel.py create mode 100644 craton_dashboard/dashboards/project/fleet/panel.pyc create mode 100644 craton_dashboard/dashboards/project/fleet/templates/regions/index.html create mode 100644 craton_dashboard/dashboards/project/fleet/urls.py create mode 100644 craton_dashboard/dashboards/project/fleet/views.py create mode 100644 craton_dashboard/enabled/_1710_fleet_panel_group.py create mode 100644 craton_dashboard/enabled/_1720_fleet_regions_panel.py create mode 100644 craton_dashboard/enabled/__init__.py create mode 100644 craton_ui.egg-info/PKG-INFO create mode 100644 craton_ui.egg-info/SOURCES.txt create mode 100644 craton_ui.egg-info/dependency_links.txt create mode 100644 craton_ui.egg-info/not-zip-safe create mode 100644 craton_ui.egg-info/pbr.json create mode 100644 craton_ui.egg-info/top_level.txt create mode 100644 dist/craton-ui-0.0.1.dev1.tar.gz create mode 100644 setup.cfg create mode 100644 setup.py diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..cf17014 --- /dev/null +++ b/AUTHORS @@ -0,0 +1,2 @@ +Eddie Ramirez +Eddie Ramirez diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..d52aa5c --- /dev/null +++ b/ChangeLog @@ -0,0 +1,5 @@ +CHANGES +======= + +* Initial Structure +* Initial commit diff --git a/README.md b/README.rst similarity index 100% rename from README.md rename to README.rst diff --git a/craton_dashboard/__init__.py b/craton_dashboard/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/craton_dashboard/dashboards/__init__.py b/craton_dashboard/dashboards/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/craton_dashboard/dashboards/__init__.pyc b/craton_dashboard/dashboards/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..97cf6ec4685fdec9c8cedf9a3e8f9f38d7550afb GIT binary patch literal 109 zcmZSn%**viVNrN80~9atlE)JK literal 0 HcmV?d00001 diff --git a/craton_dashboard/dashboards/project/__init__.py b/craton_dashboard/dashboards/project/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/craton_dashboard/dashboards/project/__init__.pyc b/craton_dashboard/dashboards/project/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8096d4ff69aef87f0ffb153186b56d8ac526d615 GIT binary patch literal 117 zcmZSn%**voVNrN80~9aBo=2RlIX%Z~ztBzslt+VtfR5P3 zp88Wu!UT$W%J+&O%qsmsCG^B|BC5*DPFEF9Lee=k7*4sO!i12|L*UI&r$oRB{4J$Q z`t`e$z4G~{cdcGxzA{>4er%R+q}3+dY=ey}s_?8k7E_UqDZpzMX{D`QHeh3XhP|}j uNTdfBbOr^FC`@7P`ex@WGV#i?LGxrNME`RY#&Cal_`?P126vayH2MW(BWZ~M literal 0 HcmV?d00001 diff --git a/craton_dashboard/dashboards/project/fleet/templates/regions/index.html b/craton_dashboard/dashboards/project/fleet/templates/regions/index.html new file mode 100644 index 0000000..986a4a1 --- /dev/null +++ b/craton_dashboard/dashboards/project/fleet/templates/regions/index.html @@ -0,0 +1 @@ +

Hello

diff --git a/craton_dashboard/dashboards/project/fleet/urls.py b/craton_dashboard/dashboards/project/fleet/urls.py new file mode 100644 index 0000000..543d602 --- /dev/null +++ b/craton_dashboard/dashboards/project/fleet/urls.py @@ -0,0 +1,8 @@ +from django.conf.urls import url + +from craton_dashboard.dashboards.project.fleet import views + +urlpatterns = [ + url(r'^$', views.IndexView.as_view(), name='index'), +] + diff --git a/craton_dashboard/dashboards/project/fleet/views.py b/craton_dashboard/dashboards/project/fleet/views.py new file mode 100644 index 0000000..42ba3de --- /dev/null +++ b/craton_dashboard/dashboards/project/fleet/views.py @@ -0,0 +1,31 @@ +# Copyright 2016 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from django.utils.translation import ugettext_lazy as _ +from django.views import generic + +from horizon import exceptions +from horizon import forms +from horizon import tables + +class IndexView(generic.TemplateView): + template_name = 'project/fleet/templates/regions/index.hml' + page_title = _('Regions') + + def __init__(self, *args, **kwargs): + super(IndexView, self).__init__(*args, **kwargs) + self._more = None + + def get_data(self): + return [] diff --git a/craton_dashboard/enabled/_1710_fleet_panel_group.py b/craton_dashboard/enabled/_1710_fleet_panel_group.py new file mode 100644 index 0000000..61de211 --- /dev/null +++ b/craton_dashboard/enabled/_1710_fleet_panel_group.py @@ -0,0 +1,23 @@ +# Copyright 2016 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from django.utils.translation import ugettext_lazy as _ + +PANEL_GROUP = 'fleet_management' + +PANEL_GROUP_NAME = _('Fleet Management') + +PANEL_GROUP_DASHBOARD = 'project' + +DISABLED = False diff --git a/craton_dashboard/enabled/_1720_fleet_regions_panel.py b/craton_dashboard/enabled/_1720_fleet_regions_panel.py new file mode 100644 index 0000000..c7b3242 --- /dev/null +++ b/craton_dashboard/enabled/_1720_fleet_regions_panel.py @@ -0,0 +1,25 @@ +# Copyright 2016 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from django.utils.translation import ugettext_lazy as _ + +PANEL = 'regions' + +PANEL_DASHBOARD = 'project' + +PANEL_GROUP = 'fleet_management' + +ADD_PANEL = 'craton_dashboard.dashboards.project.fleet.panel.Regions' + +ADD_INSTALLED_APPS = ['craton_dashboard'] diff --git a/craton_dashboard/enabled/__init__.py b/craton_dashboard/enabled/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/craton_ui.egg-info/PKG-INFO b/craton_ui.egg-info/PKG-INFO new file mode 100644 index 0000000..e40042b --- /dev/null +++ b/craton_ui.egg-info/PKG-INFO @@ -0,0 +1,12 @@ +Metadata-Version: 1.0 +Name: craton-ui +Version: 0.0.1.dev1 +Summary: The Craton UI for Horizon Dashboard +Home-page: http://www.openstack.org/ +Author: OSIC +Author-email: eddie.ramirez@intel.com +License: UNKNOWN +Description: Craton UI for Horizon Dashboard + + +Platform: UNKNOWN diff --git a/craton_ui.egg-info/SOURCES.txt b/craton_ui.egg-info/SOURCES.txt new file mode 100644 index 0000000..b27136e --- /dev/null +++ b/craton_ui.egg-info/SOURCES.txt @@ -0,0 +1,23 @@ +AUTHORS +ChangeLog +LICENSE +README.rst +setup.cfg +setup.py +craton_dashboard/__init__.py +craton_dashboard/api/craton.py +craton_dashboard/dashboards/__init__.py +craton_dashboard/dashboards/project/__init__.py +craton_dashboard/dashboards/project/fleet/__init__.py +craton_dashboard/dashboards/project/fleet/panel.py +craton_dashboard/dashboards/project/fleet/urls.py +craton_dashboard/dashboards/project/fleet/views.py +craton_dashboard/enabled/_1710_fleet_panel_group.py +craton_dashboard/enabled/_1720_fleet_regions_panel.py +craton_dashboard/enabled/__init__.py +craton_ui.egg-info/PKG-INFO +craton_ui.egg-info/SOURCES.txt +craton_ui.egg-info/dependency_links.txt +craton_ui.egg-info/not-zip-safe +craton_ui.egg-info/pbr.json +craton_ui.egg-info/top_level.txt \ No newline at end of file diff --git a/craton_ui.egg-info/dependency_links.txt b/craton_ui.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/craton_ui.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/craton_ui.egg-info/not-zip-safe b/craton_ui.egg-info/not-zip-safe new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/craton_ui.egg-info/not-zip-safe @@ -0,0 +1 @@ + diff --git a/craton_ui.egg-info/pbr.json b/craton_ui.egg-info/pbr.json new file mode 100644 index 0000000..28f7b6d --- /dev/null +++ b/craton_ui.egg-info/pbr.json @@ -0,0 +1 @@ +{"is_release": false, "git_version": "ea966ea"} \ No newline at end of file diff --git a/craton_ui.egg-info/top_level.txt b/craton_ui.egg-info/top_level.txt new file mode 100644 index 0000000..42c113b --- /dev/null +++ b/craton_ui.egg-info/top_level.txt @@ -0,0 +1 @@ +craton_dashboard diff --git a/dist/craton-ui-0.0.1.dev1.tar.gz b/dist/craton-ui-0.0.1.dev1.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..d26008218b9915314ae8e6d51ccab5229d023439 GIT binary patch literal 6517 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 Z?v>fXu;Kp?!UFDLcG9&hpdk?G{{Z_O=1.8'], + pbr=True)