[openstack-tuskar-ui] New patch for IPMI form, tweaking instack instruction output
Jordan O'Mara
jomara at fedoraproject.org
Fri May 9 15:44:29 UTC 2014
commit 64fef00f8e137890212caf94f7106fd3c0a95c0b
Author: Jordan OMara <jomara at redhat.com>
Date: Fri May 9 11:44:46 2014 -0400
New patch for IPMI form, tweaking instack instruction output
0004-Adding-missing-setup-for-instack.patch | 238 +++++++++++++++-----
...Ensure-ipmi-username-and-password-are-set.patch | 124 ++++++++++
openstack-tuskar-ui.spec | 7 +-
3 files changed, 307 insertions(+), 62 deletions(-)
---
diff --git a/0004-Adding-missing-setup-for-instack.patch b/0004-Adding-missing-setup-for-instack.patch
index cb21e70..4a15d63 100644
--- a/0004-Adding-missing-setup-for-instack.patch
+++ b/0004-Adding-missing-setup-for-instack.patch
@@ -1,78 +1,194 @@
-From ee57c569b66f4c7329ccbfca7403173e658d4bdf Mon Sep 17 00:00:00 2001
+From f74abe4a2ec0bdc7dce13a992b5938341b96fcb6 Mon Sep 17 00:00:00 2001
From: Ladislav Smola <lsmola at redhat.com>
Date: Tue, 29 Apr 2014 17:27:11 +0200
Subject: [PATCH] Adding missing setup for instack
--adding setup of neutron and workaround for flavors
+-adding setup of neutron and workaround for flavors.
+also removed whitespace
Change-Id: I59fc22b60938ad9f548cab2990ca9f1f45d8a1f7
---
- .../templates/overcloud/_detail_overview.html | 31 +++++++++++++++++++---
- 1 file changed, 28 insertions(+), 3 deletions(-)
+ .../templates/overcloud/_detail_overview.html | 163 ++++++++++++---------
+ 1 file changed, 94 insertions(+), 69 deletions(-)
diff --git a/tuskar_ui/infrastructure/overcloud/templates/overcloud/_detail_overview.html b/tuskar_ui/infrastructure/overcloud/templates/overcloud/_detail_overview.html
-index 7957972..771f8e3 100644
+index 7957972..18686ac 100644
--- a/tuskar_ui/infrastructure/overcloud/templates/overcloud/_detail_overview.html
+++ b/tuskar_ui/infrastructure/overcloud/templates/overcloud/_detail_overview.html
-@@ -81,7 +81,7 @@
-
- OVERCLOUD_ENDPOINT="http://$OVERCLOUD_IP:5000/v2.0"
- NEW_JSON=$(jq '.overcloud.password="'${OVERCLOUD_ADMIN_PASSWORD}'" | .overcloud.endpoint="'${OVERCLOUD_ENDPOINT}'" | .overcloud.endpointhost="'${OVERCLOUD_IP}'"' $TE_DATAFILE)
+@@ -58,45 +58,45 @@
+ {% endblocktrans %}
+ <div id="devtest" class="collapse">
+ <pre>
+- # You need to run the following commands from a machine where you have a checkout of the tripleo source code
+- # and direct access via SSH to your Overcloud control node ({{overcloud.keystone_ip}}).
+-
+- export TRIPLEO_ROOT=~/tripleo
+- cd $TRIPLEO_ROOT
+-
+- # Be careful to source tripleorc here, some variables are rewritten below
+- source $TRIPLEO_ROOT/tripleorc
+-
+- export OVERCLOUD_IP={{overcloud.keystone_ip}}
+-
+- export OVERCLOUD_ADMIN_TOKEN={{overcloud.attributes.AdminToken}}
+- export OVERCLOUD_ADMIN_PASSWORD={{overcloud.attributes.AdminPassword}}
+- export OVERCLOUD_CINDER_PASSWORD={{overcloud.attributes.CinderPassword}}
+- export OVERCLOUD_GLANCE_PASSWORD={{overcloud.attributes.GlancePassword}}
+- export OVERCLOUD_HEAT_PASSWORD={{overcloud.attributes.HeatPassword}}
+- export OVERCLOUD_NEUTRON_PASSWORD={{overcloud.attributes.NeutronPassword}}
+- export OVERCLOUD_NOVA_PASSWORD={{overcloud.attributes.NovaPassword}}
+- export OVERCLOUD_SWIFT_PASSWORD={{overcloud.attributes.SwiftPassword}}
+- export OVERCLOUD_SWIFT_HASH={{overcloud.attributes.SwiftHashSuffix}}
+-
+- OVERCLOUD_ENDPOINT="http://$OVERCLOUD_IP:5000/v2.0"
+- NEW_JSON=$(jq '.overcloud.password="'${OVERCLOUD_ADMIN_PASSWORD}'" | .overcloud.endpoint="'${OVERCLOUD_ENDPOINT}'" | .overcloud.endpointhost="'${OVERCLOUD_IP}'"' $TE_DATAFILE)
- echo $NEW_JSON > $TE_DATAFILE
-+ echo $NEW_JSON > $TE_DATAFILE
-
- source ./tripleo-incubator/overcloudrc
-
-@@ -109,11 +109,17 @@
- # You need to run the following commands from a Undercloud node where you have
- # direct access via SSH to your Overcloud control node ({{overcloud.keystone_ip}}).
-
+-
+- source ./tripleo-incubator/overcloudrc
+-
+- init-keystone -p $OVERCLOUD_ADMIN_PASSWORD $OVERCLOUD_ADMIN_TOKEN \
+- $OVERCLOUD_IP admin at example.com heat-admin@$OVERCLOUD_IP \
+- ${SSLBASE:+--ssl $PUBLIC_API_URL}
+- setup-endpoints $OVERCLOUD_IP --cinder-password $OVERCLOUD_CINDER_PASSWORD \
+- --glance-password $OVERCLOUD_GLANCE_PASSWORD \
+- --heat-password $OVERCLOUD_HEAT_PASSWORD \
+- --neutron-password $OVERCLOUD_NEUTRON_PASSWORD \
+- --nova-password $OVERCLOUD_NOVA_PASSWORD \
+- --swift-password $OVERCLOUD_SWIFT_PASSWORD \
+- --enable-horizon \
+- ${SSLBASE:+--ssl $PUBLIC_API_URL}
+- keystone role-create --name heat_stack_user
++# You need to run the following commands from a machine where you have a checkout of the tripleo source code
++# and direct access via SSH to your Overcloud control node ({{overcloud.keystone_ip}}).
++
++export TRIPLEO_ROOT=~/tripleo
++cd $TRIPLEO_ROOT
++
++# Be careful to source tripleorc here, some variables are rewritten below
++source $TRIPLEO_ROOT/tripleorc
++
++export OVERCLOUD_IP={{overcloud.keystone_ip}}
++
++export OVERCLOUD_ADMIN_TOKEN={{overcloud.attributes.AdminToken}}
++export OVERCLOUD_ADMIN_PASSWORD={{overcloud.attributes.AdminPassword}}
++export OVERCLOUD_CINDER_PASSWORD={{overcloud.attributes.CinderPassword}}
++export OVERCLOUD_GLANCE_PASSWORD={{overcloud.attributes.GlancePassword}}
++export OVERCLOUD_HEAT_PASSWORD={{overcloud.attributes.HeatPassword}}
++export OVERCLOUD_NEUTRON_PASSWORD={{overcloud.attributes.NeutronPassword}}
++export OVERCLOUD_NOVA_PASSWORD={{overcloud.attributes.NovaPassword}}
++export OVERCLOUD_SWIFT_PASSWORD={{overcloud.attributes.SwiftPassword}}
++export OVERCLOUD_SWIFT_HASH={{overcloud.attributes.SwiftHashSuffix}}
++
++OVERCLOUD_ENDPOINT="http://$OVERCLOUD_IP:5000/v2.0"
++NEW_JSON=$(jq '.overcloud.password="'${OVERCLOUD_ADMIN_PASSWORD}'" | .overcloud.endpoint="'${OVERCLOUD_ENDPOINT}'" | .overcloud.endpointhost="'${OVERCLOUD_IP}'"' $TE_DATAFILE)
++echo $NEW_JSON > $TE_DATAFILE
++
++source ./tripleo-incubator/overcloudrc
++
++init-keystone -p $OVERCLOUD_ADMIN_PASSWORD $OVERCLOUD_ADMIN_TOKEN \
++ $OVERCLOUD_IP admin at example.com heat-admin@$OVERCLOUD_IP \
++ ${SSLBASE:+--ssl $PUBLIC_API_URL}
++setup-endpoints $OVERCLOUD_IP --cinder-password $OVERCLOUD_CINDER_PASSWORD \
++ --glance-password $OVERCLOUD_GLANCE_PASSWORD \
++ --heat-password $OVERCLOUD_HEAT_PASSWORD \
++ --neutron-password $OVERCLOUD_NEUTRON_PASSWORD \
++ --nova-password $OVERCLOUD_NOVA_PASSWORD \
++ --swift-password $OVERCLOUD_SWIFT_PASSWORD \
++ --enable-horizon \
++ ${SSLBASE:+--ssl $PUBLIC_API_URL}
++keystone role-create --name heat_stack_user
+ </pre>
+ </div>
+ </li>
+@@ -106,36 +106,61 @@
+ {% endblocktrans %}
+ <div id="instack" class="collapse">
+ <pre>
+- # You need to run the following commands from a Undercloud node where you have
+- # direct access via SSH to your Overcloud control node ({{overcloud.keystone_ip}}).
+-
- # Usually stack user has access to Overcloud control node, so switch to stack user
- su stack
-+ # Run these commands as the user you used to install the undercloud, likely the stack
-+ # user if you followed the recommendations from http://openstack.redhat.com/Deploying_RDO_using_Instack.
-+ # The commands should also be run from the home directory of that user.
-+
-+ # Source your deploy-overcloudrc
-+ # This file was created when you followed http://openstack.redhat.com/Deploying_an_RDO_Overcloud_with_Instack
-+ source deploy-overcloudrc
-
- export OVERCLOUD_IP={{overcloud.keystone_ip}}
-
-+ cat > tripleo-overcloud-passwords <<EOF
- export OVERCLOUD_ADMIN_TOKEN={{overcloud.attributes.AdminToken}}
- export OVERCLOUD_ADMIN_PASSWORD={{overcloud.attributes.AdminPassword}}
- export OVERCLOUD_CINDER_PASSWORD={{overcloud.attributes.CinderPassword}}
-@@ -123,6 +129,18 @@
- export OVERCLOUD_NOVA_PASSWORD={{overcloud.attributes.NovaPassword}}
- export OVERCLOUD_SWIFT_PASSWORD={{overcloud.attributes.SwiftPassword}}
- export OVERCLOUD_SWIFT_HASH={{overcloud.attributes.SwiftHashSuffix}}
-+ EOF
-+
-+ source tripleo-overcloud-passwords
-+
-+ JSONFILE=nodes.json
-+ if [ ! -f $JSONFILE ]; then
-+ echo '{}' > $JSONFILE
-+ fi
-+ OVERCLOUD_ENDPOINT="http://{{overcloud.keystone_ip}}:5000/v2.0"
-+ NEW_JSON=$(jq '.overcloud.password="'{{overcloud.attributes.AdminPassword}}'" | .overcloud.endpoint="'${OVERCLOUD_ENDPOINT}'" | .overcloud.endpointhost="'{{overcloud.keystone_ip}}'"' $JSONFILE)
-+ echo $NEW_JSON > $JSONFILE
-+ export TE_DATAFILE=$JSONFILE
-
- source /etc/tripleo/overcloudrc
-
-@@ -136,6 +154,13 @@
- --swift-password $OVERCLOUD_SWIFT_PASSWORD \
- --enable-horizon
- keystone role-create --name heat_stack_user
-+
-+ # Setup the neutron
-+ tripleo setup-neutron "" "" $NETWORK_CIDR "" "" "" $FLOATING_IP_START $FLOATING_IP_END $FLOATING_IP_CIDR
-+
-+ # Workaround https://bugs.launchpad.net/diskimage-builder/+bug/1211165
-+ nova flavor-delete m1.tiny
-+ nova flavor-create m1.tiny 1 512 2 1
+-
+- export OVERCLOUD_IP={{overcloud.keystone_ip}}
+-
+- export OVERCLOUD_ADMIN_TOKEN={{overcloud.attributes.AdminToken}}
+- export OVERCLOUD_ADMIN_PASSWORD={{overcloud.attributes.AdminPassword}}
+- export OVERCLOUD_CINDER_PASSWORD={{overcloud.attributes.CinderPassword}}
+- export OVERCLOUD_GLANCE_PASSWORD={{overcloud.attributes.GlancePassword}}
+- export OVERCLOUD_HEAT_PASSWORD={{overcloud.attributes.HeatPassword}}
+- export OVERCLOUD_NEUTRON_PASSWORD={{overcloud.attributes.NeutronPassword}}
+- export OVERCLOUD_NOVA_PASSWORD={{overcloud.attributes.NovaPassword}}
+- export OVERCLOUD_SWIFT_PASSWORD={{overcloud.attributes.SwiftPassword}}
+- export OVERCLOUD_SWIFT_HASH={{overcloud.attributes.SwiftHashSuffix}}
+-
+- source /etc/tripleo/overcloudrc
+-
+- tripleo init-keystone -p $OVERCLOUD_ADMIN_PASSWORD $OVERCLOUD_ADMIN_TOKEN \
+- $OVERCLOUD_IP admin at example.com heat-admin@$OVERCLOUD_IP
+- tripleo setup-endpoints $OVERCLOUD_IP --cinder-password $OVERCLOUD_CINDER_PASSWORD \
+- --glance-password $OVERCLOUD_GLANCE_PASSWORD \
+- --heat-password $OVERCLOUD_HEAT_PASSWORD \
+- --neutron-password $OVERCLOUD_NEUTRON_PASSWORD \
+- --nova-password $OVERCLOUD_NOVA_PASSWORD \
+- --swift-password $OVERCLOUD_SWIFT_PASSWORD \
+- --enable-horizon
+- keystone role-create --name heat_stack_user
++# You need to run the following commands from a Undercloud node where you have
++# direct access via SSH to your Overcloud control node ({{overcloud.keystone_ip}}).
++
++# Run these commands as the user you used to install the undercloud, likely the stack
++# user if you followed the recommendations from http://openstack.redhat.com/Deploying_RDO_using_Instack.
++# The commands should also be run from the home directory of that user.
++
++# Source your deploy-overcloudrc
++# This file was created when you followed http://openstack.redhat.com/Deploying_an_RDO_Overcloud_with_Instack
++source deploy-overcloudrc
++
++export OVERCLOUD_IP={{overcloud.keystone_ip}}
++
++cat > tripleo-overcloud-passwords <<EOF
++export OVERCLOUD_ADMIN_TOKEN={{overcloud.attributes.AdminToken}}
++export OVERCLOUD_ADMIN_PASSWORD={{overcloud.attributes.AdminPassword}}
++export OVERCLOUD_CINDER_PASSWORD={{overcloud.attributes.CinderPassword}}
++export OVERCLOUD_GLANCE_PASSWORD={{overcloud.attributes.GlancePassword}}
++export OVERCLOUD_HEAT_PASSWORD={{overcloud.attributes.HeatPassword}}
++export OVERCLOUD_NEUTRON_PASSWORD={{overcloud.attributes.NeutronPassword}}
++export OVERCLOUD_NOVA_PASSWORD={{overcloud.attributes.NovaPassword}}
++export OVERCLOUD_SWIFT_PASSWORD={{overcloud.attributes.SwiftPassword}}
++export OVERCLOUD_SWIFT_HASH={{overcloud.attributes.SwiftHashSuffix}}
++EOF
++
++source tripleo-overcloud-passwords
++
++JSONFILE=nodes.json
++if [ ! -f $JSONFILE ]; then
++ echo '{}' > $JSONFILE
++fi
++OVERCLOUD_ENDPOINT="http://{{overcloud.keystone_ip}}:5000/v2.0"
++NEW_JSON=$(jq '.overcloud.password="'{{overcloud.attributes.AdminPassword}}'" | .overcloud.endpoint="'${OVERCLOUD_ENDPOINT}'" | .overcloud.endpointhost="'{{overcloud.keystone_ip}}'"' $JSONFILE)
++echo $NEW_JSON > $JSONFILE
++export TE_DATAFILE=$JSONFILE
++
++source /etc/tripleo/overcloudrc
++
++tripleo init-keystone -p $OVERCLOUD_ADMIN_PASSWORD $OVERCLOUD_ADMIN_TOKEN \
++ $OVERCLOUD_IP admin at example.com heat-admin@$OVERCLOUD_IP
++tripleo setup-endpoints $OVERCLOUD_IP --cinder-password $OVERCLOUD_CINDER_PASSWORD \
++ --glance-password $OVERCLOUD_GLANCE_PASSWORD \
++ --heat-password $OVERCLOUD_HEAT_PASSWORD \
++ --neutron-password $OVERCLOUD_NEUTRON_PASSWORD \
++ --nova-password $OVERCLOUD_NOVA_PASSWORD \
++ --swift-password $OVERCLOUD_SWIFT_PASSWORD \
++ --enable-horizon
++keystone role-create --name heat_stack_user
++
++# Setup the neutron
++tripleo setup-neutron "" "" $NETWORK_CIDR "" "" "" $FLOATING_IP_START $FLOATING_IP_END $FLOATING_IP_CIDR
++
++# Workaround https://bugs.launchpad.net/diskimage-builder/+bug/1211165
++nova flavor-delete m1.tiny
++nova flavor-create m1.tiny 1 512 2 1
</pre>
</div>
</li>
diff --git a/0007-Ensure-ipmi-username-and-password-are-set.patch b/0007-Ensure-ipmi-username-and-password-are-set.patch
new file mode 100644
index 0000000..9343ad7
--- /dev/null
+++ b/0007-Ensure-ipmi-username-and-password-are-set.patch
@@ -0,0 +1,124 @@
+From b875449a8cd3a3b0b7e10a35844030136aeb15c2 Mon Sep 17 00:00:00 2001
+From: Tzu-Mainn Chen <tzumainn at redhat.com>
+Date: Fri, 9 May 2014 16:34:42 +0200
+Subject: [PATCH] Ensure ipmi username and password are set
+
+The UI was explicitly setting these values to 'None'; the
+ipmi_username field was also misnamed. This change allows
+the ipmi username and password to be properly passed down.
+
+Closes-Bug: #1317922
+Change-Id: I195e6f5399ac932d5427d742679df2d4a22dd114
+---
+ tuskar_ui/api.py | 2 +-
+ tuskar_ui/infrastructure/nodes/forms.py | 7 +++++--
+ .../nodes/templates/nodes/_nodes_formset_form.html | 2 +-
+ tuskar_ui/infrastructure/nodes/tests.py | 20 ++++++++++++--------
+ 4 files changed, 19 insertions(+), 12 deletions(-)
+
+diff --git a/tuskar_ui/api.py b/tuskar_ui/api.py
+index e2c47bd..be4e21c 100644
+--- a/tuskar_ui/api.py
++++ b/tuskar_ui/api.py
+@@ -665,7 +665,7 @@ class Node(base.APIResourceWrapper):
+ # )
+ node = baremetalclient(request).create(**cls.nova_baremetal_format(
+ ipmi_address, cpu, ram, local_disk, mac_addresses,
+- ipmi_username=None, ipmi_password=None))
++ ipmi_username=ipmi_username, ipmi_password=ipmi_password))
+
+ return cls(node)
+
+diff --git a/tuskar_ui/infrastructure/nodes/forms.py b/tuskar_ui/infrastructure/nodes/forms.py
+index ad4ed35..d58555e 100644
+--- a/tuskar_ui/infrastructure/nodes/forms.py
++++ b/tuskar_ui/infrastructure/nodes/forms.py
+@@ -31,7 +31,7 @@ class NodeForm(django.forms.Form):
+ required=False,
+ widget=django.forms.TextInput(attrs={'class': 'input input-medium'}),
+ )
+- ipmi_user = django.forms.CharField(
++ ipmi_username = django.forms.CharField(
+ label=_("IPMI User"),
+ required=False,
+ widget=django.forms.TextInput(attrs={'class': 'input input-medium'}),
+@@ -114,7 +114,10 @@ class BaseNodeFormset(django.forms.formsets.BaseFormSet):
+ if not form.cleaned_data:
+ raise django.forms.ValidationError(
+ _("Please provide node data for all nodes."))
+-
++ if not form.cleaned_data.get('ipmi_username'):
++ form.cleaned_data['ipmi_username'] = None
++ if not form.cleaned_data.get('ipmi_password'):
++ form.cleaned_data['ipmi_password'] = None
+
+ NodeFormset = django.forms.formsets.formset_factory(NodeForm, extra=1,
+ formset=BaseNodeFormset)
+diff --git a/tuskar_ui/infrastructure/nodes/templates/nodes/_nodes_formset_form.html b/tuskar_ui/infrastructure/nodes/templates/nodes/_nodes_formset_form.html
+index 32ae201..7083034 100644
+--- a/tuskar_ui/infrastructure/nodes/templates/nodes/_nodes_formset_form.html
++++ b/tuskar_ui/infrastructure/nodes/templates/nodes/_nodes_formset_form.html
+@@ -8,7 +8,7 @@
+ <div class="row-fluid">
+ <h5>Power Management</h5>
+ {% include 'infrastructure/nodes/_nodes_formset_field.html' with field=form.ipmi_address %}
+- {% include 'infrastructure/nodes/_nodes_formset_field.html' with field=form.ipmi_user %}
++ {% include 'infrastructure/nodes/_nodes_formset_field.html' with field=form.ipmi_username %}
+ {% include 'infrastructure/nodes/_nodes_formset_field.html' with field=form.ipmi_password %}
+ </div>
+ <div class="row-fluid">
+diff --git a/tuskar_ui/infrastructure/nodes/tests.py b/tuskar_ui/infrastructure/nodes/tests.py
+index 1dfbf5a..ef298c2 100644
+--- a/tuskar_ui/infrastructure/nodes/tests.py
++++ b/tuskar_ui/infrastructure/nodes/tests.py
+@@ -156,6 +156,8 @@ class NodesTests(test.BaseAdminViewTests):
+ 'register_nodes-MAX_NUM_FORMS': 1000,
+
+ 'register_nodes-0-ipmi_address': '127.0.0.1',
++ 'register_nodes-0-ipmi_username': 'username',
++ 'register_nodes-0-ipmi_password': 'password',
+ 'register_nodes-0-mac_address': 'de:ad:be:ef:ca:fe',
+ 'register_nodes-0-cpus': '1',
+ 'register_nodes-0-memory': '2',
+@@ -174,10 +176,10 @@ class NodesTests(test.BaseAdminViewTests):
+ res = self.client.post(REGISTER_URL, data)
+ request = Node.create.call_args_list[0][0][0] # This is a hack.
+ self.assertListEqual(Node.create.call_args_list, [
+- call(request, '127.0.0.1', 1, 2, 3,
+- 'DE:AD:BE:EF:CA:FE', None, u''),
+- call(request, '127.0.0.2', 4, 5, 6,
+- 'DE:AD:BE:EF:CA:FF', None, u''),
++ call(request, u'127.0.0.1', 1, 2, 3,
++ 'DE:AD:BE:EF:CA:FE', u'username', u'password'),
++ call(request, u'127.0.0.2', 4, 5, 6,
++ 'DE:AD:BE:EF:CA:FF', None, None),
+ ])
+ self.assertRedirectsNoFollow(res, INDEX_URL)
+
+@@ -188,6 +190,8 @@ class NodesTests(test.BaseAdminViewTests):
+ 'register_nodes-MAX_NUM_FORMS': 1000,
+
+ 'register_nodes-0-ipmi_address': '127.0.0.1',
++ 'register_nodes-0-ipmi_username': 'username',
++ 'register_nodes-0-ipmi_password': 'password',
+ 'register_nodes-0-mac_address': 'de:ad:be:ef:ca:fe',
+ 'register_nodes-0-cpus': '1',
+ 'register_nodes-0-memory': '2',
+@@ -206,10 +210,10 @@ class NodesTests(test.BaseAdminViewTests):
+ res = self.client.post(REGISTER_URL, data)
+ request = Node.create.call_args_list[0][0][0] # This is a hack.
+ self.assertListEqual(Node.create.call_args_list, [
+- call(request, '127.0.0.1', 1, 2, 3,
+- 'DE:AD:BE:EF:CA:FE', None, u''),
+- call(request, '127.0.0.2', 4, 5, 6,
+- 'DE:AD:BE:EF:CA:FF', None, u''),
++ call(request, u'127.0.0.1', 1, 2, 3,
++ 'DE:AD:BE:EF:CA:FE', u'username', u'password'),
++ call(request, u'127.0.0.2', 4, 5, 6,
++ 'DE:AD:BE:EF:CA:FF', None, None),
+ ])
+ self.assertTemplateUsed(
+ res, 'infrastructure/nodes/register.html')
+--
+1.8.1.4
+
diff --git a/openstack-tuskar-ui.spec b/openstack-tuskar-ui.spec
index 65e249d..74a33f9 100644
--- a/openstack-tuskar-ui.spec
+++ b/openstack-tuskar-ui.spec
@@ -1,6 +1,6 @@
Name: openstack-tuskar-ui
Version: 0.1.0
-Release: 14%{?dist}
+Release: 15%{?dist}
Summary: The UI component for Tuskar
Group: Applications/System
@@ -13,6 +13,7 @@ Patch1: 0003-Init-code-for-Instack-Undercloud.patch
Patch2: 0004-Adding-missing-setup-for-instack.patch
Patch3: 0005-Default-GlanceLogFile-template-parameter-value.patch
Patch4: 0006-Import-keystoneclient.apiclient.exceptions.patch
+Patch5: 0007-Ensure-ipmi-username-and-password-are-set.patch
BuildArch: noarch
@@ -75,6 +76,7 @@ deployments. It is a plugin for OpenStack Horizon.
%patch2 -p1
%patch3 -p1
%patch4 -p1
+%patch5 -p1
rm -rf tuskar_ui.egg-info/
# Remove the requirements file so that pbr hooks don't add it
@@ -125,6 +127,9 @@ export PYTHONPATH=$PYTHONPATH:%{_datadir}/openstack-dashboard
%endif
%changelog
+* Fri May 09 2014 Jordan OMara <jomara at redhat.com> - 0.1.0-15
+- IPMI form patch (jomara at redhat.com)
+
* Tue May 06 2014 Jordan OMara <jomara at redhat.com> - 0.1.0-14
- updated upstream patch w/ fixed escaping (jomara at redhat.com)
More information about the scm-commits
mailing list