diff --git a/MANIFEST.in b/MANIFEST.in
index f71cb1a..02327c2 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -7,7 +7,7 @@ include AUTHORS
include LICENSE
include Makefile
include manage.py
-include README.md
+include README.rst
include run_tests.sh
include tox.ini
include doc/Makefile
diff --git a/README.md b/README.rst
similarity index 100%
rename from README.md
rename to README.rst
diff --git a/tuskar_boxes/overview/panel.py b/tuskar_boxes/overview/panel.py
index fb5e303..844f938 100644
--- a/tuskar_boxes/overview/panel.py
+++ b/tuskar_boxes/overview/panel.py
@@ -16,7 +16,8 @@ from django.utils.translation import ugettext_lazy as _
import horizon
-from tuskar_ui.infrastructure import dashboard
+import tuskar_ui.infrastructure.dashboard as tuskar_dashboard
+from tuskar_ui.infrastructure.overview.panel import Overview as TuskarOverview
class Overview(horizon.Panel):
@@ -24,4 +25,5 @@ class Overview(horizon.Panel):
slug = "overview"
-dashboard.Infrastructure.register(Overview)
+tuskar_dashboard.Infrastructure.unregister(TuskarOverview)
+tuskar_dashboard.Infrastructure.register(Overview)
diff --git a/tuskar_boxes/overview/templates/overview/_deploy_confirmation.html b/tuskar_boxes/overview/templates/overview/_deploy_confirmation.html
deleted file mode 100644
index c8b5e84..0000000
--- a/tuskar_boxes/overview/templates/overview/_deploy_confirmation.html
+++ /dev/null
@@ -1,26 +0,0 @@
-{% extends "horizon/common/_modal_form.html" %}
-{% load i18n %}
-{% load url from future %}
-
-{% block form_id %}provision_form{% endblock %}
-{% block form_action %}{% url 'horizon:infrastructure:overview:deploy_confirmation' %}{% endblock %}
-
-{% block modal_id %}provision_modal{% endblock %}
-{% block modal-header %}{% trans "Deployment Confirmation" %}{% endblock %}
-
-{% block modal-body %}
-
-
{% trans "You are about deploy your overcloud" %}
-
- {% if autogenerated_parameters %}
-
These parameters will be randomly generated before the deployment:
-
{{ autogenerated_parameters|join:", " }}
- {% endif %}
-
{% trans "This operation cannot be undone. Are you sure you want to do that?" %}
-
-{% endblock %}
-
-{% block modal-footer %}
-
- {% trans "Cancel" %}
-{% endblock %}
diff --git a/tuskar_boxes/overview/templates/overview/_post_deploy_init.html b/tuskar_boxes/overview/templates/overview/_post_deploy_init.html
deleted file mode 100644
index 9e5dfee..0000000
--- a/tuskar_boxes/overview/templates/overview/_post_deploy_init.html
+++ /dev/null
@@ -1,27 +0,0 @@
-{% extends "horizon/common/_modal_form.html" %}
-{% load i18n %}
-{% load url from future %}
-
-{% block form_id %}post_deploy_init_form{% endblock %}
-{% block form_action %}{% url 'horizon:infrastructure:overview:post_deploy_init' %}{% endblock %}
-
-{% block modal_id %}provision_modal{% endblock %}
-{% block modal-header %}{% trans "Initialize Overcloud" %}{% endblock %}
-
-{% block modal-body %}
-
-
-
-{% endblock %}
-
-{% block modal-footer %}
-
- {% trans "Cancel" %}
-{% endblock %}
diff --git a/tuskar_boxes/overview/templates/overview/_undeploy_confirmation.html b/tuskar_boxes/overview/templates/overview/_undeploy_confirmation.html
deleted file mode 100644
index 9fc0c5e..0000000
--- a/tuskar_boxes/overview/templates/overview/_undeploy_confirmation.html
+++ /dev/null
@@ -1,25 +0,0 @@
-{% extends "horizon/common/_modal_form.html" %}
-{% load i18n %}
-{% load url from future %}
-
-{% block form_id %}provision_form{% endblock %}
-{% block form_action %}{% url 'horizon:infrastructure:overview:undeploy_confirmation' %}{% endblock %}
-
-{% block modal_id %}provision_modal{% endblock %}
-{% block modal-header %}{% trans "Undeployment Confirmation" %}{% endblock %}
-
-{% block modal-body %}
-
-
{% trans "You are about undeploy your overcloud" %}
-
-
{% trans "This operation cannot be undone. Are you sure you want to do that?" %}
-
-
-{% endblock %}
-
-{% block modal-footer %}
-
- {% trans "Cancel" %}
-{% endblock %}
diff --git a/tuskar_boxes/overview/templates/overview/deploy_confirmation.html b/tuskar_boxes/overview/templates/overview/deploy_confirmation.html
deleted file mode 100644
index 74f6dc8..0000000
--- a/tuskar_boxes/overview/templates/overview/deploy_confirmation.html
+++ /dev/null
@@ -1,11 +0,0 @@
-{% extends 'infrastructure/base.html' %}
-{% load i18n %}
-{% block title %}{% trans "Deploy overcloud" %}{% endblock %}
-
-{% block page_header %}
- {% include "horizon/common/_page_header.html" with title=_("Deploy overcloud") %}
-{% endblock page_header %}
-
-{% block infrastructure_main %}
- {% include "infrastructure/overview/_deploy_confirmation.html" %}
-{% endblock %}
diff --git a/tuskar_boxes/overview/templates/overview/deployment_base.html b/tuskar_boxes/overview/templates/overview/deployment_base.html
deleted file mode 100644
index ca55e96..0000000
--- a/tuskar_boxes/overview/templates/overview/deployment_base.html
+++ /dev/null
@@ -1,22 +0,0 @@
-{% load i18n %}
-{% load url from future%}
-
-
- {% block deployment-icon %}
-
- {% endblock %}
-
-
-
{% block deployment-title %}{% endblock %}
- {% block deployment-info %}{% endblock %}
-
-
diff --git a/tuskar_boxes/overview/templates/overview/deployment_failed.html b/tuskar_boxes/overview/templates/overview/deployment_failed.html
deleted file mode 100644
index d7add0c..0000000
--- a/tuskar_boxes/overview/templates/overview/deployment_failed.html
+++ /dev/null
@@ -1,44 +0,0 @@
-{% extends "infrastructure/overview/deployment_base.html" %}
-
-{% load i18n %}
-{% load url from future%}
-
-{% block deployment-icon %}
-
-{% endblock %}
-
-{% block deployment-title %}
- {% if stack.is_delete_failed %}
- {% trans "Undeploying failed" %}
- {% elif stack.is_failed %}
- {% trans "Deployment failed" %}
- {% else %}
- {% trans "Failure" %}
- {% endif %}
-{% endblock %}
-
-{% block deployment-info %}
-{% if last_failed_events %}
-{% trans "Last failed events:" %}
-{% for event in last_failed_events %}
-
-
- - {% trans "Timestamp" %}
-
- - {% trans "Resource Name" %}
- - {{ event.resource_name }}
- - {% trans "Status" %}
- - {{ event.resource_status }}
- - {% trans "Reason" %}
- - {{ event.resource_status_reason }}
-
-
-{% endfor %}
-{% endif %}
-See full log
-{% endblock %}
-
-{% block deployment-buttons %}
- {{ block.super }}
-{% endblock %}
-
diff --git a/tuskar_boxes/overview/templates/overview/deployment_initialize.html b/tuskar_boxes/overview/templates/overview/deployment_initialize.html
deleted file mode 100644
index 65419b9..0000000
--- a/tuskar_boxes/overview/templates/overview/deployment_initialize.html
+++ /dev/null
@@ -1,23 +0,0 @@
-{% extends "infrastructure/overview/deployment_base.html" %}
-
-{% load i18n %}
-{% load url from future%}
-
-{% block deployment-icon %}
-
-{% endblock %}
-
-{% block deployment-title %}{% trans "Initialization" %}{% endblock %}
-
-{% block deployment-info %}
-{% trans "Your OpenStack cloud is deployed but it needs to get initialized in order to get live." %}
-{% endblock %}
-
-{% block deployment-buttons %}
- {{ block.super }}
-
-
- {% trans "Initialize" %}
-
-{% endblock %}
diff --git a/tuskar_boxes/overview/templates/overview/deployment_live.html b/tuskar_boxes/overview/templates/overview/deployment_live.html
deleted file mode 100644
index 92ab9f8..0000000
--- a/tuskar_boxes/overview/templates/overview/deployment_live.html
+++ /dev/null
@@ -1,33 +0,0 @@
-{% extends "infrastructure/overview/deployment_base.html" %}
-
-{% load i18n %}
-{% load url from future%}
-
-{% block deployment-icon %}
-
-{% endblock %}
-{% block deployment-title %}{% trans "Deployment is live" %}{% endblock %}
-{% block deployment-info %}
-{% trans "Access information" %}
-
- {% for dashboard_url in dashboard_urls %}
- - {% trans "Horizon URL" %}
- - {{ dashboard_url }}
- {% endfor %}
- - {% trans "User name" %}
- - admin
-
- -
-
-
-
-{% endblock %}
diff --git a/tuskar_boxes/overview/templates/overview/deployment_plan.html b/tuskar_boxes/overview/templates/overview/deployment_plan.html
deleted file mode 100644
index 9c90617..0000000
--- a/tuskar_boxes/overview/templates/overview/deployment_plan.html
+++ /dev/null
@@ -1,43 +0,0 @@
-{% extends "infrastructure/overview/deployment_base.html" %}
-
-{% load i18n %}
-{% load url from future%}
-
-{% block deployment-icon %}
-{% if plan_invalid %}
-
-{% else %}
-
-{% endif %}
-{% endblock %}
-
-{% block deployment-title %}
-{% if plan_invalid %}
- {% trans "Design your deployment" %}
-{% else %}
- {% trans "Ready to get deployed" %}
-{% endif %}
-{% endblock %}
-
-{% block deployment-info %}
-
-{% endblock %}
-
-{% block deployment-buttons %}
-
-
-{% trans "Deploy" %}
-
-{% endblock %}
diff --git a/tuskar_boxes/overview/templates/overview/deployment_progress.html b/tuskar_boxes/overview/templates/overview/deployment_progress.html
deleted file mode 100644
index d4ee783..0000000
--- a/tuskar_boxes/overview/templates/overview/deployment_progress.html
+++ /dev/null
@@ -1,61 +0,0 @@
-{% extends "infrastructure/overview/deployment_base.html" %}
-
-{% load i18n %}
-{% load url from future%}
-
-{% block deployment-icon %}
-
-{% endblock %}
-
-{% block deployment-title %}
- {% if stack.is_deleting %}
- {% trans "Undeploying..." %}
- {% elif stack.is_deploying %}
- {% trans "Deploying..." %}
- {% endif %}
-{% endblock %}
-
-{% block deployment-info %}
-{% if progress %}
-
-
{{ progress }}% {% trans "Complete" %}
-
-{% endif %}
-{% if last_failed_events %}
- {% trans "Last failed events:" %}
-{% for event in last_failed_events %}
-
-
- - {% trans "Timestamp" %}
-
- - {% trans "Resource Name" %}
- - {{ event.resource_name }}
- - {% trans "Status" %}
- - {{ event.resource_status }}
- - {% trans "Reason" %}
- - {{ event.resource_status_reason }}
-
-
-{% endfor %}
-{% endif %}
-See full log
-{% endblock %}
-
-{% block deployment-buttons %}
- {% if stack.is_deploying %}
-
-
- {% trans "Stop" %}
-
- {% endif %}
-{% endblock %}
-
diff --git a/tuskar_boxes/overview/templates/overview/post_deploy_init.html b/tuskar_boxes/overview/templates/overview/post_deploy_init.html
deleted file mode 100644
index 835c0e5..0000000
--- a/tuskar_boxes/overview/templates/overview/post_deploy_init.html
+++ /dev/null
@@ -1,11 +0,0 @@
-{% extends 'infrastructure/base.html' %}
-{% load i18n %}
-{% block title %}{% trans "Initialize" %}{% endblock %}
-
-{% block page_header %}
- {% include "horizon/common/_page_header.html" with title=_("Initialize Overcloud") %}
-{% endblock page_header %}
-
-{% block infrastructure_main %}
- {% include "infrastructure/overview/_post_deploy_init.html" %}
-{% endblock %}
diff --git a/tuskar_boxes/overview/templates/overview/role_nodes_edit.html b/tuskar_boxes/overview/templates/overview/role_nodes_edit.html
deleted file mode 100644
index 2b0f5bc..0000000
--- a/tuskar_boxes/overview/templates/overview/role_nodes_edit.html
+++ /dev/null
@@ -1,32 +0,0 @@
-{% load i18n %}
-{% load url from future %}
-{% load form_helpers %}
-
-{% trans "Deployment Roles" %}
-
diff --git a/tuskar_boxes/overview/templates/overview/role_nodes_status.html b/tuskar_boxes/overview/templates/overview/role_nodes_status.html
deleted file mode 100644
index 688835a..0000000
--- a/tuskar_boxes/overview/templates/overview/role_nodes_status.html
+++ /dev/null
@@ -1,28 +0,0 @@
-{% load i18n %}
-{% load url from future %}
-
-{% trans "Deployment Roles" %}
-{% for role in roles %}
-
-
- {% if role.deployed_node_count < role.planned_node_count %}
- {{ role.deployed_node_count }}/{{ role.planned_node_count }}
- {% else %}
- {{ role.planned_node_count }}
- {% endif %}
-
-
-
-{% endfor %}
diff --git a/tuskar_boxes/overview/templates/overview/undeploy_confirmation.html b/tuskar_boxes/overview/templates/overview/undeploy_confirmation.html
deleted file mode 100644
index b234ac9..0000000
--- a/tuskar_boxes/overview/templates/overview/undeploy_confirmation.html
+++ /dev/null
@@ -1,11 +0,0 @@
-{% extends 'infrastructure/base.html' %}
-{% load i18n %}
-{% block title %}{% trans "Undeploy overcloud" %}{% endblock %}
-
-{% block page_header %}
- {% include "horizon/common/_page_header.html" with title=_("Undeploy overcloud") %}
-{% endblock page_header %}
-
-{% block infrastructure_main %}
- {% include "infrastructure/overview/_undeploy_confirmation.html" %}
-{% endblock %}
diff --git a/tuskar_boxes/overview/urls.py b/tuskar_boxes/overview/urls.py
index 7cbac26..683c350 100644
--- a/tuskar_boxes/overview/urls.py
+++ b/tuskar_boxes/overview/urls.py
@@ -15,12 +15,14 @@
from django.conf import urls
from tuskar_ui.infrastructure.overview import views
-import tuskar_boxes.views
+import tuskar_boxes.overview.views as boxes_views
urlpatterns = urls.patterns(
'',
- urls.url(r'^$', tuskar_boxes.views.IndexView.as_view(), name='index'),
+ urls.url(r'^$',
+ boxes_views.IndexView.as_view(),
+ name='index'),
urls.url(r'^deploy-confirmation$',
views.DeployConfirmationView.as_view(),
name='deploy_confirmation'),
diff --git a/tuskar_boxes/overview/views.py b/tuskar_boxes/overview/views.py
index 8dce6a9..7fcebac 100644
--- a/tuskar_boxes/overview/views.py
+++ b/tuskar_boxes/overview/views.py
@@ -12,7 +12,40 @@
# License for the specific language governing permissions and limitations
# under the License.
+from tuskar_ui import api
from tuskar_ui.infrastructure.overview import views
+
+def flavor_nodes(request, flavor):
+ """Lists all nodes that match the given flavor exactly."""
+ for node in api.node.Node.list(request):
+ if all([
+ int(node.cpus) == int(flavor.vcpus),
+ int(node.memory_mb) == int(flavor.ram),
+ int(node.local_gb) == int(flavor.disk),
+ # TODO(rdopieralski) add architecture when available
+ ]):
+ yield node
+
class IndexView(views.IndexView):
- pass
+ template_name = "tuskar_boxes/overview/index.html"
+
+ def get_context_data(self, *args, **kwargs):
+ context = super(IndexView, self).get_context_data(*args, **kwargs)
+ flavors = api.flavor.Flavor.list(self.request)
+ flavors.sort(key=lambda np: (np.vcpus, np.ram, np.disk))
+ context['flavors'] = []
+ for flavor in flavors:
+ nodes = [{
+ 'role': '',
+ } for node in flavor_nodes(self.request, flavor)]
+ flavor = {
+ 'name': flavor.name,
+ 'vcpus': flavor.vcpus,
+ 'ram': flavor.ram,
+ 'disk': flavor.disk,
+ 'nodes': nodes,
+ }
+ if nodes: # Don't list empty flavors
+ context['flavors'].append(flavor)
+ return context
diff --git a/tuskar_boxes/overview/templates/overview/index.html b/tuskar_boxes/templates/tuskar_boxes/overview/index.html
similarity index 84%
rename from tuskar_boxes/overview/templates/overview/index.html
rename to tuskar_boxes/templates/tuskar_boxes/overview/index.html
index 60ac0d4..b50171d 100644
--- a/tuskar_boxes/overview/templates/overview/index.html
+++ b/tuskar_boxes/templates/tuskar_boxes/overview/index.html
@@ -4,13 +4,6 @@
{% block title %}{% trans 'My OpenStack Deployment' %}{% endblock %}
-{% block css %}
- {% if stack.is_deploying %}
-
- {% endif %}
- {{ block.super }}
-{% endblock %}
-
{% block page_header %}
{% include 'horizon/common/_domain_page_header.html' with title=_('My OpenStack Deployment') %}
{% endblock page_header %}
@@ -36,7 +29,7 @@
{% if stack %}
{% include "infrastructure/overview/role_nodes_status.html" %}
{% else %}
- {% include "infrastructure/overview/role_nodes_edit.html" %}
+ {% include "tuskar_boxes/overview/role_nodes_edit.html" %}
{% endif %}
diff --git a/tuskar_boxes/templates/tuskar_boxes/overview/role_nodes_edit.html b/tuskar_boxes/templates/tuskar_boxes/overview/role_nodes_edit.html
new file mode 100644
index 0000000..178c3ca
--- /dev/null
+++ b/tuskar_boxes/templates/tuskar_boxes/overview/role_nodes_edit.html
@@ -0,0 +1,205 @@
+{% load i18n %}
+{% load url from future %}
+{% load form_helpers %}
+
+{% trans "Available Deployment Roles" %}
+