From 095b80800859445c7dad62b36f2d85adeb9135a7 Mon Sep 17 00:00:00 2001 From: Dmitry Burmistrov Date: Fri, 16 May 2014 14:34:36 +0400 Subject: [PATCH] Update specs to 2013.2.3 version Change-Id: I8ee371fa3379987fdb34b83ae8bfeec681f2e2b9 --- debian/changelog | 113 +- debian/openstack-dashboard.postinst | 1 - .../revert-stable-havana-requirements.patch | 13 + debian/patches/series | 2 +- debian/patches/ubuntu_settings.patch | 20 +- .../js/{271a130e6a31.js => 59722976ae97.js} | 6 +- .../static/openstack-dashboard/manifest.json | 6 +- ...t-access-the-net-while-building-docs.patch | 2 +- .../0002-disable-debug-move-web-root.patch | 4 +- ...location-to-tmp-and-also-add-localho.patch | 4 +- ...a-customization-module-based-on-RHOS.patch | 61 +- ...sphinx-and-remove-local-copy-of-doc-.patch | 1348 ----------------- ...files-and-checks-to-etc-openstack-d.patch} | 4 +- ...TORE-to-var-lib-openstack-dashboard.patch} | 8 +- ...008-fix-up-issues-with-customization.patch | 81 - ...runcate-the-logo-related-rhbz-877138.patch | 26 - ...STORE-to-var-lib-openstack-dashboard.patch | 22 - rpm/SPECS/python-django-horizon.spec | 74 +- 18 files changed, 253 insertions(+), 1542 deletions(-) create mode 100644 debian/patches/revert-stable-havana-requirements.patch rename debian/static/openstack-dashboard/js/{271a130e6a31.js => 59722976ae97.js} (99%) delete mode 100644 rpm/SOURCES/0005-Revert-Use-oslo.sphinx-and-remove-local-copy-of-doc-.patch rename rpm/SOURCES/{0006-move-RBAC-policy-files-and-checks-to-etc-openstack-d.patch => 0005-move-RBAC-policy-files-and-checks-to-etc-openstack-d.patch} (92%) rename rpm/SOURCES/{0007-move-SECRET_KEY-secret_key_store-to-tmp.patch => 0006-move-SECRET_KEYSTORE-to-var-lib-openstack-dashboard.patch} (83%) delete mode 100644 rpm/SOURCES/0008-fix-up-issues-with-customization.patch delete mode 100644 rpm/SOURCES/0009-do-not-truncate-the-logo-related-rhbz-877138.patch delete mode 100644 rpm/SOURCES/0010-move-SECRET_KEYSTORE-to-var-lib-openstack-dashboard.patch diff --git a/debian/changelog b/debian/changelog index 56c3afb..57f5a9f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,115 @@ -horizon (1:2013.2-0ubuntu1~cloud0) precise-havana; urgency=low +horizon (1:2013.2.3-0ubuntu1~cloud0) precise-havana; urgency=medium - * New upstream release for the Ubuntu Cloud Archive. + * New upstream release for the Ubuntu Cloud Archive. - -- Chuck Short Wed, 16 Oct 2013 20:28:28 -0400 + -- Openstack Ubuntu Testing Bot Mon, 14 Apr 2014 07:58:45 -0400 + +horizon (1:2013.2.3-0ubuntu1) saucy-proposed; urgency=medium + + * Resynchronize with stable/havana (82cb9f6) (LP: #1302575): + - [b2259b3] Don't copy the flavorid when updating flavors + - [8db4687] Allow snapshots of paused and suspended instances + - [cf181c1] Reduce number of novaclient calls + - [82cb9f6] Fixing tests to work with keystoneclient 0.6.0 + + -- Corey Bryant Fri, 04 Apr 2014 10:52:55 -0400 + +horizon (1:2013.2.2-0ubuntu1) saucy-proposed; urgency=low + + [ Chuck Short ] + * Resynchronize with stable/havana (36e0ab5) (LP: #1284643): + - [e73ff07] run_tests.sh fails with a fresh venv due to django 1.6 + installed LP: 1250581 + - [3e93b54] Email shouldn't be a mandatory attribute LP: 1260423 + - [2c1f1f3] Wrap call to extension_supported on Launch Instance with + try/except LP: 1262223 + - [2e11482] Unit tests failing with raise + UnknownMethodCallError('management_url') LP: 1268631 + - [c6d38a1] Metering dashboard. Marker could not be found (havana) + LP: 1260528 + - [2b6dfa7] keypairs can not have an '@' sign in the name LP: 1265563 + - [8ba7780] Cannot see confirmation message when working on longer pages + LP: 1251361 + - [edd8ee4] fix help text in "Create An image" window + - [aa55b24] Inconsistance between horizon and django_openstack_auth default + keystone version LP: 1231357 + - [7a8eadc] LBaaS. HealthMonitor representation should be improved + LP: 1237377 + - [02e7b6e] "neutron lb-pool-list" running by admin returns also non-admin + load balancer pools which appear later in horizon's admin project + LP: 1244126 + - [5520d65] create volume option is shown, even without cinder enabled + LP: 1267438 + - [5b970a5] .tx/config in havana needs to catch up with Transifex resource + renaming LP: 1274005 + - [6508afd] when creating instance,access security and networking tabs + missing asterisk LP: 1252005 + - [96bd650] timeout logic causes logout when load balanced LP: 1243277 + - [36e0ab5] Import translations for Havana 2013.2.2 update + + [ James Page ] + * d/static/*: Refreshed for new upstream release. + + -- Chuck Short Tue, 25 Feb 2014 09:19:08 -0500 + +horizon (1:2013.2.1-0ubuntu1) saucy-proposed; urgency=low + + * Resynchronize with stable/havana (9668e80) (LP: #1262788): + - [d97bba1] precision of floating point metering stats is discarded + unnecessarily LP: 1241467 + - [53047be] "Tenant" should be "Project" (Resource Usage panel) LP: 1250942 + - [728b5d1] Subnet / Subnet details not marked as translatable LP: 1254026 + - [9465e54] missing hover hint for instance: meter in Metric dropdown + list LP: 1243241 + - [842ba5f] Default port for The MS SQL Security Group is 1433 instead of + 1443 LP: 1250029 + - [631ee65] iso8601 debug message is annoying in dashboard unit test + LP: 1250554 + - [1361a02] only meters associated with the first instance reported appear + in Metric dropdown list LP: 1243298 + - [599d4a5] Persistent XSS in OpenStack Web UI for Instances LP: 1247675 + - [7f804c9] Password Change needs to logout current user LP: 1226829 + - [3b621e7] The "Weight" parameter in Horizon's LBaaS member creation + dialog is mandatory while it's only optional in the cli command + LP: 1241004 + - [b5b102e] i18n: "Filter" in "Flavor Access" tab of "Create Flavor" + workflow is not translatable LP: 1239927 + - [0aba596] I18n: Localization of the role "Member" LP: 1255004 + - [d66a483] detach volume dialog contains escaped html LP: 1252881 + - [37f0128] English string for "Injected File Path Bytes" is wrong + LP: 1254049 + - [ac2815c] ./templates/base.html.c:6: warning: unterminated string literal + LP: 1243526 + - [6d02f2e] Cannot assign different translations for present and past + message of BatchAction LP: 1252082 + - [655dc79] Resource Usage Page table views shows statistics in a wrong way + LP: 1249279 + - [5d9684d] lbaas pool tcp LP: 1241713 + - [040bebb] Some "Working" dialogs are not translatable LP: 1252074 + - [852e5c8] Translation update for 2013.2.1 release LP: 1258462 + - [9668e80] Updated from global requirements + * debian/patches/CVE-2013-6406: Dropped, applied upstream [599d4a5] + * debian/patches/revert-stable-havana-requirements.patch: Revert + version bumps to dependencies in stable/havana back to what was + shipped with Saucy. + + -- Adam Gandelman Wed, 18 Dec 2013 10:47:22 -0800 + +horizon (1:2013.2-0ubuntu1.1) saucy-security; urgency=low + + * SECURITY UPDATE: XSS in Volumes and Network Topology pages + - debian/patches/CVE-2013-6406: html.escape() various items in + volumes/tables.py and volume_snapshots/tables.py + - CVE-2013-6406 (also referred to as CVE-2013-6858) + - LP: #1247675 + + -- Jamie Strandboge Tue, 03 Dec 2013 15:54:34 -0600 + +horizon (1:2013.2-0ubuntu1) saucy; urgency=low + + * New upstream release (LP: #1236462). + + -- Chuck Short Thu, 17 Oct 2013 09:43:46 -0400 horizon (1:2013.2~rc3-0ubuntu1) saucy; urgency=low diff --git a/debian/openstack-dashboard.postinst b/debian/openstack-dashboard.postinst index d05528f..2bfb8e3 100755 --- a/debian/openstack-dashboard.postinst +++ b/debian/openstack-dashboard.postinst @@ -58,7 +58,6 @@ if [ "$1" = "configure" ]; then fi chown -R horizon:horizon /var/lib/openstack-dashboard fi - if [ -d /usr/share/openstack-dashboard ] ; then chown -R horizon:horizon /usr/share/openstack-dashboard fi diff --git a/debian/patches/revert-stable-havana-requirements.patch b/debian/patches/revert-stable-havana-requirements.patch new file mode 100644 index 0000000..f091d75 --- /dev/null +++ b/debian/patches/revert-stable-havana-requirements.patch @@ -0,0 +1,13 @@ +Index: horizon/requirements.txt +=================================================================== +--- horizon.orig/requirements.txt 2013-12-18 10:45:38.715248799 -0800 ++++ horizon/requirements.txt 2013-12-18 10:46:46.763248182 -0800 +@@ -6,7 +6,7 @@ + eventlet>=0.13.0 + kombu>=2.4.8 + lesscpy>=0.9j +-iso8601>=0.1.8 ++iso8601>=0.1.4 + netaddr + python-cinderclient>=1.0.6 + python-glanceclient>=0.9.0 diff --git a/debian/patches/series b/debian/patches/series index 813ce13..e0bc54f 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -6,6 +6,6 @@ fix-dashboard-manage.patch fix-ubuntu-tests.patch ubuntu_settings.patch - +revert-stable-havana-requirements.patch mos-disable-metering.patch mos-fix-murano-savana-dashboard.patch diff --git a/debian/patches/ubuntu_settings.patch b/debian/patches/ubuntu_settings.patch index bc064c1..f776e79 100644 --- a/debian/patches/ubuntu_settings.patch +++ b/debian/patches/ubuntu_settings.patch @@ -1,6 +1,8 @@ ---- a/openstack_dashboard/local/local_settings.py.example -+++ b/openstack_dashboard/local/local_settings.py.example -@@ -4,7 +4,7 @@ from django.utils.translation import uge +Index: horizon/openstack_dashboard/local/local_settings.py.example +=================================================================== +--- horizon.orig/openstack_dashboard/local/local_settings.py.example 2013-12-18 10:46:15.499248466 -0800 ++++ horizon/openstack_dashboard/local/local_settings.py.example 2013-12-18 10:46:15.491248466 -0800 +@@ -4,7 +4,7 @@ from openstack_dashboard import exceptions @@ -9,7 +11,7 @@ TEMPLATE_DEBUG = DEBUG # Required for Django 1.5. -@@ -89,22 +89,16 @@ LOCAL_PATH = os.path.dirname(os.path.abs +@@ -89,22 +89,16 @@ # requests routed to the same dashboard instance or you set the same SECRET_KEY # for all of them. from horizon.utils import secret_key @@ -37,7 +39,7 @@ } # Send email to the console by default -@@ -406,3 +400,24 @@ SECURITY_GROUP_RULES = { +@@ -448,3 +442,24 @@ 'to_port': '3389', }, } @@ -62,9 +64,11 @@ +# installations should have this set accordingly. For more information +# see https://docs.djangoproject.com/en/dev/ref/settings/. +ALLOWED_HOSTS = '*' ---- a/openstack_dashboard/settings.py -+++ b/openstack_dashboard/settings.py -@@ -217,8 +217,7 @@ if not SECRET_KEY: +Index: horizon/openstack_dashboard/settings.py +=================================================================== +--- horizon.orig/openstack_dashboard/settings.py 2013-12-18 10:46:15.499248466 -0800 ++++ horizon/openstack_dashboard/settings.py 2013-12-18 10:46:15.491248466 -0800 +@@ -219,8 +219,7 @@ from horizon.utils import secret_key LOCAL_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'local') diff --git a/debian/static/openstack-dashboard/js/271a130e6a31.js b/debian/static/openstack-dashboard/js/59722976ae97.js similarity index 99% rename from debian/static/openstack-dashboard/js/271a130e6a31.js rename to debian/static/openstack-dashboard/js/59722976ae97.js index dd375e9..f774a81 100644 --- a/debian/static/openstack-dashboard/js/271a130e6a31.js +++ b/debian/static/openstack-dashboard/js/59722976ae97.js @@ -211,8 +211,8 @@ var template=horizon.templates.compiled_templates["#alert_message_template"],par horizon.addInitFunction(function(){$("body").ajaxComplete(function(event,request,settings){var message_array=$.parseJSON(horizon.ajax.get_messages(request));$(message_array).each(function(index,item){horizon.alert(item[0],item[1],item[2]);});});$('a.ajax-modal').click(function(){horizon.clearAllMessages();});$(".alert").alert();horizon.autoDismissAlerts();});horizon.modals={_request:null,spinner:null,_init_functions:[]};horizon.modals.addModalInitFunction=function(f){horizon.modals._init_functions.push(f);};horizon.modals.initModal=function(modal){$(horizon.modals._init_functions).each(function(index,f){f(modal);});};horizon.modals.create=function(title,body,confirm,cancel){if(!cancel){cancel=gettext("Cancel");} var template=horizon.templates.compiled_templates["#modal_template"],params={title:title,body:body,confirm:confirm,cancel:cancel},modal=$(template.render(params)).appendTo("#modal_wrapper");return modal;};horizon.modals.success=function(data,textStatus,jqXHR){var modal;$('#modal_wrapper').append(data);$('.modal span.help-block').hide();modal=$('.modal:last');modal.modal();$(modal).trigger("new_modal",modal);return modal;};horizon.modals.modal_spinner=function(text){var template=horizon.templates.compiled_templates["#spinner-modal"];horizon.modals.spinner=$(template.render({text:text}));horizon.modals.spinner.appendTo("#modal_wrapper");horizon.modals.spinner.modal({backdrop:'static'});horizon.modals.spinner.spin(horizon.conf.spinner_options.modal);};horizon.addInitFunction(function(){$('#modal_wrapper').on('new_modal',function(evt,modal){horizon.modals.initModal(modal);});$(document).on('click','.modal .cancel',function(evt){$(this).closest('.modal').modal('hide');evt.preventDefault();});$(document).on('submit','.modal form',function(evt){var $form=$(this),$button=$form.find(".modal-footer .btn-primary"),update_field_id=$form.attr("data-add-to-field"),headers={};if($form.attr("enctype")==="multipart/form-data"){return;} evt.preventDefault();$button.prop("disabled",true);if(update_field_id){headers["X-Horizon-Add-To-Field"]=update_field_id;} -$.ajax({type:"POST",url:$form.attr('action'),headers:headers,data:$form.serialize(),beforeSend:function(){$("#modal_wrapper .modal").last().modal("hide");horizon.modals.modal_spinner("Working");},complete:function(){horizon.modals.spinner.modal('hide');$("#modal_wrapper .modal").last().modal("show");$button.prop("disabled",false);},success:function(data,textStatus,jqXHR){var redirect_header=jqXHR.getResponseHeader("X-Horizon-Location"),add_to_field_header=jqXHR.getResponseHeader("X-Horizon-Add-To-Field"),json_data,field_to_update;$form.closest(".modal").modal("hide");if(redirect_header){location.href=redirect_header;} -else if(add_to_field_header){json_data=$.parseJSON(data);field_to_update=$("#"+add_to_field_header);field_to_update.append("");field_to_update.change();field_to_update.val(json_data[0]);}else{horizon.modals.success(data,textStatus,jqXHR);}},error:function(jqXHR,status,errorThrown){$form.closest(".modal").modal("hide");horizon.alert("error",gettext("There was an error submitting the form. Please try again."));}});});$(document).on('show','.modal',function(evt){if($(evt.target).hasClass("modal")){var scrollShift=$('body').scrollTop(),$this=$(this),topVal=$this.css('top');$this.css('top',scrollShift+parseInt(topVal,10));}});horizon.modals.addModalInitFunction(function(modal){$(modal).find(":text, select, textarea").filter(":visible:first").focus();});horizon.modals.addModalInitFunction(horizon.datatables.validate_button);$(document).on('click','.ajax-modal',function(evt){var $this=$(this);if(horizon.modals._request&&typeof(horizon.modals._request.abort)!==undefined){horizon.modals._request.abort();} +$.ajax({type:"POST",url:$form.attr('action'),headers:headers,data:$form.serialize(),beforeSend:function(){$("#modal_wrapper .modal").last().modal("hide");horizon.modals.modal_spinner(gettext("Working"));},complete:function(){horizon.modals.spinner.modal('hide');$("#modal_wrapper .modal").last().modal("show");$button.prop("disabled",false);},success:function(data,textStatus,jqXHR){var redirect_header=jqXHR.getResponseHeader("X-Horizon-Location"),add_to_field_header=jqXHR.getResponseHeader("X-Horizon-Add-To-Field"),json_data,field_to_update;$form.closest(".modal").modal("hide");if(redirect_header){location.href=redirect_header;} +else if(add_to_field_header){json_data=$.parseJSON(data);field_to_update=$("#"+add_to_field_header);field_to_update.append("");field_to_update.change();field_to_update.val(json_data[0]);}else{horizon.modals.success(data,textStatus,jqXHR);}},error:function(jqXHR,status,errorThrown){if(jqXHR.getResponseHeader('logout')){location.href=jqXHR.getResponseHeader("X-Horizon-Location");}else{$form.closest(".modal").modal("hide");horizon.alert("error",gettext("There was an error submitting the form. Please try again."));}}});});$(document).on('show','.modal',function(evt){if($(evt.target).hasClass("modal")){var scrollShift=$('body').scrollTop()||$('html').scrollTop(),$this=$(this),topVal=$this.css('top');$this.css('top',scrollShift+parseInt(topVal,10));}});horizon.modals.addModalInitFunction(function(modal){$(modal).find(":text, select, textarea").filter(":visible:first").focus();});horizon.modals.addModalInitFunction(horizon.datatables.validate_button);$(document).on('click','.ajax-modal',function(evt){var $this=$(this);if(horizon.modals._request&&typeof(horizon.modals._request.abort)!==undefined){horizon.modals._request.abort();} horizon.modals._request=$.ajax($this.attr('href'),{beforeSend:function(){horizon.modals.modal_spinner(gettext("Loading"));},complete:function(){horizon.modals._request=null;horizon.modals.spinner.modal('hide');},error:function(jqXHR,status,errorThrown){if(jqXHR.status===401){var redir_url=jqXHR.getResponseHeader("X-Horizon-Location");if(redir_url){location.href=redir_url;}else{location.reload(true);}} else{if(!horizon.ajax.get_messages(jqXHR)){horizon.alert("error",gettext("An error occurred. Please try again later."));}}},success:function(data,textStatus,jqXHR){var update_field_id=$this.attr('data-add-to-field'),modal,form;modal=horizon.modals.success(data,textStatus,jqXHR);if(update_field_id){form=modal.find("form");if(form.length){form.attr("data-add-to-field",update_field_id);}}}});evt.preventDefault();});$(document).on("show",".modal",function(){var container=$("#modal_wrapper"),modal_stack=container.find(".modal"),$this=$(this);modal_stack.splice(modal_stack.length-1,1);modal_stack.modal("hide");});$(document).on('hidden','.modal',function(){var $this=$(this),modal_stack=$("#modal_wrapper .modal");if($this[0]==modal_stack.last()[0]||$this.hasClass("loading")){$this.remove();if(!$this.hasClass("loading")){$("#modal_wrapper .modal").last().modal("show");}}});});horizon.Quota={is_flavor_quota:false,user_value_progress_bars:[],auto_value_progress_bars:[],flavor_progress_bars:[],user_value_form_inputs:[],selected_flavor:null,flavors:[],init:function(){this.user_value_progress_bars=$('div[data-progress-indicator-for]');this.auto_value_progress_bars=$('div[data-progress-indicator-step-by]');this.user_value_form_inputs=$($.map(this.user_value_progress_bars,function(elm){return('#'+$(elm).attr('data-progress-indicator-for'));}));this._initialCreation(this.user_value_progress_bars) this._initialCreation(this.auto_value_progress_bars) @@ -462,7 +462,7 @@ self.color=d3.scale.category20();self.load_settings=function(settings){self.sett self.get_size=function(){$(self.html_element).css("height","");$(self.html_element).css("width","");var svg=$(self.html_element).find("svg");svg.hide();self.width=jquery_element.width();self.height=jquery_element.height();if(self.settings.auto_size){var auto_height=$(window).height()-jquery_element.offset().top-30;if(auto_height>self.height){self.height=auto_height;}} $(self.html_element).css("height",self.height);$(self.html_element).css("width",self.width);svg.show();svg.css("height",self.height);svg.css("width",self.width);} self.load_settings({});self.get_size();self.refresh=function(){var self=this;self.start_loading();horizon.ajax.queue({url:self.final_url,success:function(data,textStatus,jqXHR){$(self.html_element).html("");$(self.legend_element).html("");self.series=data.series;self.load_settings(data.settings);if(self.series.length<=0){$(self.html_element).html("No data available.");$(self.legend_element).html("");$(self.legend_element).css("height","");}else{self.render();}},error:function(jqXHR,textStatus,errorThrown){$(self.html_element).html("No data available.");$(self.legend_element).html("");$(self.legend_element).css("height","");horizon.alert("error",gettext("An error occurred. Please try again later."));},complete:function(jqXHR,textStatus){self.finish_loading();}});};self.render=function(){var self=this;$.map(self.series,function(serie){serie.color=self.color(serie.name) -$.map(serie.data,function(statistic){statistic.x=d3.time.format("%Y-%m-%dT%H:%M:%S").parse(statistic.x);statistic.x=statistic.x.getTime()/1000;});});var graph=new Rickshaw.Graph({element:self.html_element,width:self.width,height:self.height,renderer:self.settings.renderer,series:self.series});graph.render();var hoverDetail=new Rickshaw.Graph.HoverDetail({graph:graph,formatter:function(series,x,y){var date=''+new Date(x*1000).toUTCString()+'';var swatch='';var content=swatch+series.name+": "+parseInt(y)+" "+series.unit+'
'+date;return content;}});if(self.legend_element){var legend=new Rickshaw.Graph.Legend({graph:graph,element:self.legend_element});var shelving=new Rickshaw.Graph.Behavior.Series.Toggle({graph:graph,legend:legend});var order=new Rickshaw.Graph.Behavior.Series.Order({graph:graph,legend:legend});var highlighter=new Rickshaw.Graph.Behavior.Series.Highlight({graph:graph,legend:legend});} +$.map(serie.data,function(statistic){statistic.x=d3.time.format("%Y-%m-%dT%H:%M:%S").parse(statistic.x);statistic.x=statistic.x.getTime()/1000;});});var graph=new Rickshaw.Graph({element:self.html_element,width:self.width,height:self.height,renderer:self.settings.renderer,series:self.series});graph.render();var hoverDetail=new Rickshaw.Graph.HoverDetail({graph:graph,formatter:function(series,x,y){var date=''+new Date(x*1000).toUTCString()+'';var swatch='';var content=swatch+series.name+": "+parseFloat(y).toFixed(2)+" "+series.unit+'
'+date;return content;}});if(self.legend_element){var legend=new Rickshaw.Graph.Legend({graph:graph,element:self.legend_element});var shelving=new Rickshaw.Graph.Behavior.Series.Toggle({graph:graph,legend:legend});var order=new Rickshaw.Graph.Behavior.Series.Order({graph:graph,legend:legend});var highlighter=new Rickshaw.Graph.Behavior.Series.Highlight({graph:graph,legend:legend});} var axes_x=new Rickshaw.Graph.Axis.Time({graph:graph});axes_x.render();var axes_y=new Rickshaw.Graph.Axis.Y({graph:graph});axes_y.render();$(self.legend_element).css("height","");};self.start_loading=function(){var self=this;$(self.html_element).find(".modal-backdrop").remove();$(self.html_element).find(".spinner_wrapper").remove();self.backdrop=$("");self.backdrop.css("width",self.width).css("height",self.height);$(self.html_element).append(self.backdrop);$(self.legend_element).html("").addClass("disabled");self.spinner=$("
");$(self.html_element).append(self.spinner);self.spinner.spin(horizon.conf.spinner_options.line_chart);var radius=horizon.conf.spinner_options.line_chart.radius;var length=horizon.conf.spinner_options.line_chart.length;var spinner_size=radius+length;var top=(self.height/2)-spinner_size/2;var left=(self.width/2)-spinner_size/2;self.spinner.css("top",top).css("left",left);};self.finish_loading=function(){var self=this;$(self.legend_element).removeClass("disabled");};},init:function(selector,settings){var self=this;$(selector).each(function(){self.refresh(this);});var rtime=new Date(1,1,2000,12,00,00);var timeout=false;var delta=400;$(window).resize(function(){rtime=new Date();if(timeout===false){timeout=true;setTimeout(resizeend,delta);}});function resizeend(){if(new Date()-rtime", - "fa1e37f67ab85248c0eeab1040fd5b0f": "", - "cd3f60d28370bf68dc0658c05abae046": "" + "cd3f60d28370bf68dc0658c05abae046": "", + "fa1e37f67ab85248c0eeab1040fd5b0f": "", + "31e68b3a0f4dc1c7b2874c30d74a6c5f": "" } \ No newline at end of file diff --git a/rpm/SOURCES/0001-Don-t-access-the-net-while-building-docs.patch b/rpm/SOURCES/0001-Don-t-access-the-net-while-building-docs.patch index 2a53c0f..b3c01ad 100644 --- a/rpm/SOURCES/0001-Don-t-access-the-net-while-building-docs.patch +++ b/rpm/SOURCES/0001-Don-t-access-the-net-while-building-docs.patch @@ -1,4 +1,4 @@ -From 7e42671c5b9c190191ba5044b63e750824742ffa Mon Sep 17 00:00:00 2001 +From f945b999b097f74783b910175d004579ca8e4919 Mon Sep 17 00:00:00 2001 From: Matthias Runge Date: Fri, 5 Apr 2013 10:16:19 +0200 Subject: [PATCH] Don't access the net while building docs (Note this hasn't diff --git a/rpm/SOURCES/0002-disable-debug-move-web-root.patch b/rpm/SOURCES/0002-disable-debug-move-web-root.patch index 9e3b8c6..a020b9c 100644 --- a/rpm/SOURCES/0002-disable-debug-move-web-root.patch +++ b/rpm/SOURCES/0002-disable-debug-move-web-root.patch @@ -1,4 +1,4 @@ -From 9627a3e4df39cf243e889599298e70bfa48bd4fe Mon Sep 17 00:00:00 2001 +From 4259ab6b64ae1fc6f5f14664fad981781e4280e3 Mon Sep 17 00:00:00 2001 From: Matthias Runge Date: Fri, 5 Apr 2013 10:07:53 +0200 Subject: [PATCH] disable debug, move web root @@ -9,7 +9,7 @@ Subject: [PATCH] disable debug, move web root 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/openstack_dashboard/local/local_settings.py.example b/openstack_dashboard/local/local_settings.py.example -index 6e426c9..d2db3cd 100644 +index a1a8474..8f15a64 100644 --- a/openstack_dashboard/local/local_settings.py.example +++ b/openstack_dashboard/local/local_settings.py.example @@ -4,7 +4,7 @@ from django.utils.translation import ugettext_lazy as _ diff --git a/rpm/SOURCES/0003-change-lockfile-location-to-tmp-and-also-add-localho.patch b/rpm/SOURCES/0003-change-lockfile-location-to-tmp-and-also-add-localho.patch index a1ba7ad..67303f0 100644 --- a/rpm/SOURCES/0003-change-lockfile-location-to-tmp-and-also-add-localho.patch +++ b/rpm/SOURCES/0003-change-lockfile-location-to-tmp-and-also-add-localho.patch @@ -1,4 +1,4 @@ -From ff59c0877d17ae0f64e83cd4af930df56182299e Mon Sep 17 00:00:00 2001 +From f4bde71afb9b9ece56eed607061937f3d261c383 Mon Sep 17 00:00:00 2001 From: Matthias Runge Date: Thu, 25 Jul 2013 11:32:38 +0200 Subject: [PATCH] change lockfile location to '/tmp' and also add localhost to @@ -9,7 +9,7 @@ Subject: [PATCH] change lockfile location to '/tmp' and also add localhost to 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openstack_dashboard/local/local_settings.py.example b/openstack_dashboard/local/local_settings.py.example -index d2db3cd..d386d46 100644 +index 8f15a64..832358e 100644 --- a/openstack_dashboard/local/local_settings.py.example +++ b/openstack_dashboard/local/local_settings.py.example @@ -12,7 +12,7 @@ TEMPLATE_DEBUG = DEBUG diff --git a/rpm/SOURCES/0004-Add-a-customization-module-based-on-RHOS.patch b/rpm/SOURCES/0004-Add-a-customization-module-based-on-RHOS.patch index 2a6daee..fa1c459 100644 --- a/rpm/SOURCES/0004-Add-a-customization-module-based-on-RHOS.patch +++ b/rpm/SOURCES/0004-Add-a-customization-module-based-on-RHOS.patch @@ -1,4 +1,4 @@ -From 2b983d9b083c2ae9f09a535f64617ec3a3b02cfb Mon Sep 17 00:00:00 2001 +From 33218f8ba3ba47209b92ffd5c5bdf7fdce9ae926 Mon Sep 17 00:00:00 2001 From: Matthias Runge Date: Thu, 14 Feb 2013 12:55:54 +0100 Subject: [PATCH] Add a customization module based on RHOS @@ -7,17 +7,21 @@ Change-Id: I8622ffc8e31cf553315077070b2a696de1bd5081 Conflicts: openstack_dashboard/settings.py + +fix up issues with customization + +do not truncate the logo (related rhbz 877138) --- openstack_dashboard/settings.py | 12 ++++- - openstack_dashboard_theme/__init__.py | 0 - openstack_dashboard_theme/models.py | 0 + openstack_dashboard_theme/__init__.py | 1 + + openstack_dashboard_theme/models.py | 1 + .../static/dashboard/less/rhtheme.less | 55 ++++++++++++++++++++++ .../templates/_stylesheets.html | 7 +++ .../templates/auth/_login.html | 29 ++++++++++++ .../templates/auth/login.html | 10 ++++ - .../templates/horizon/common/_sidebar.html | 35 ++++++++++++++ + .../templates/horizon/common/_sidebar.html | 54 +++++++++++++++++++++ openstack_dashboard_theme/templates/splash.html | 17 +++++++ - 9 files changed, 163 insertions(+), 2 deletions(-) + 9 files changed, 184 insertions(+), 2 deletions(-) create mode 100644 openstack_dashboard_theme/__init__.py create mode 100644 openstack_dashboard_theme/models.py create mode 100644 openstack_dashboard_theme/static/dashboard/less/rhtheme.less @@ -65,17 +69,25 @@ index 84da859..cc40815 100644 MESSAGE_STORAGE = 'django.contrib.messages.storage.cookie.CookieStorage' diff --git a/openstack_dashboard_theme/__init__.py b/openstack_dashboard_theme/__init__.py new file mode 100644 -index 0000000..e69de29 +index 0000000..94456ab +--- /dev/null ++++ b/openstack_dashboard_theme/__init__.py +@@ -0,0 +1 @@ ++# intentionally left blank diff --git a/openstack_dashboard_theme/models.py b/openstack_dashboard_theme/models.py new file mode 100644 -index 0000000..e69de29 +index 0000000..94456ab +--- /dev/null ++++ b/openstack_dashboard_theme/models.py +@@ -0,0 +1 @@ ++# intentionally left blank diff --git a/openstack_dashboard_theme/static/dashboard/less/rhtheme.less b/openstack_dashboard_theme/static/dashboard/less/rhtheme.less new file mode 100644 -index 0000000..5350db3 +index 0000000..d70852e --- /dev/null +++ b/openstack_dashboard_theme/static/dashboard/less/rhtheme.less @@ -0,0 +1,55 @@ -+@import "/static/dashboard/less/horizon.less"; ++@import "horizon.less"; + +/* Login Splash Page */ + @@ -123,10 +135,10 @@ index 0000000..5350db3 + background: url(/static/dashboard/img/rh-logo.png) top left no-repeat; + display: block; + float: left; -+ width: 116px; ++ width: 123px; + height: 123px; + text-indent: -9999px; -+ margin-left: 56px; ++ margin-left: 53px; + margin-top: 15px; + margin-bottom: 25px; +} @@ -196,14 +208,15 @@ index 0000000..6fa7746 +{% endblock %} diff --git a/openstack_dashboard_theme/templates/horizon/common/_sidebar.html b/openstack_dashboard_theme/templates/horizon/common/_sidebar.html new file mode 100644 -index 0000000..5672846 +index 0000000..df66c62 --- /dev/null +++ b/openstack_dashboard_theme/templates/horizon/common/_sidebar.html -@@ -0,0 +1,35 @@ +@@ -0,0 +1,54 @@ +{% load branding horizon i18n %} ++{% load url from future %} + + + {% endif %} + ++ {% with num_of_regions=request.user.available_services_regions|length %} ++ {% if num_of_regions > 1 %} ++ ++ {% endif %} ++ {% endwith %} ++ + {% horizon_dashboard_nav %} + diff --git a/openstack_dashboard_theme/templates/splash.html b/openstack_dashboard_theme/templates/splash.html diff --git a/rpm/SOURCES/0005-Revert-Use-oslo.sphinx-and-remove-local-copy-of-doc-.patch b/rpm/SOURCES/0005-Revert-Use-oslo.sphinx-and-remove-local-copy-of-doc-.patch deleted file mode 100644 index 94740bb..0000000 --- a/rpm/SOURCES/0005-Revert-Use-oslo.sphinx-and-remove-local-copy-of-doc-.patch +++ /dev/null @@ -1,1348 +0,0 @@ -From 9058dd457bf4ce116848c48cc9fdcd0319e77e84 Mon Sep 17 00:00:00 2001 -From: Matthias Runge -Date: Mon, 9 Sep 2013 13:51:19 +0200 -Subject: [PATCH] Revert "Use oslo.sphinx and remove local copy of doc theme" - -This reverts commit b6f7d8318bf909cc9989809127fc108e405fa400. ---- - doc/source/_static/.gitignore | 0 - doc/source/_static/basic.css | 416 +++++++++++++++++++++++++++++++++++++ - doc/source/_static/default.css | 230 ++++++++++++++++++++ - doc/source/_static/jquery.tweet.js | 154 ++++++++++++++ - doc/source/_static/nature.css | 245 ++++++++++++++++++++++ - doc/source/_static/tweaks.css | 95 +++++++++ - doc/source/_templates/.placeholder | 0 - doc/source/_theme/layout.html | 83 ++++++++ - doc/source/_theme/theme.conf | 4 + - doc/source/conf.py | 13 +- - test-requirements.txt | 1 - - 11 files changed, 1234 insertions(+), 7 deletions(-) - create mode 100644 doc/source/_static/.gitignore - create mode 100644 doc/source/_static/basic.css - create mode 100644 doc/source/_static/default.css - create mode 100644 doc/source/_static/jquery.tweet.js - create mode 100644 doc/source/_static/nature.css - create mode 100644 doc/source/_static/tweaks.css - create mode 100644 doc/source/_templates/.placeholder - create mode 100644 doc/source/_theme/layout.html - create mode 100644 doc/source/_theme/theme.conf - -diff --git a/doc/source/_static/.gitignore b/doc/source/_static/.gitignore -new file mode 100644 -index 0000000..e69de29 -diff --git a/doc/source/_static/basic.css b/doc/source/_static/basic.css -new file mode 100644 -index 0000000..d909ce3 ---- /dev/null -+++ b/doc/source/_static/basic.css -@@ -0,0 +1,416 @@ -+/** -+ * Sphinx stylesheet -- basic theme -+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+ */ -+ -+/* -- main layout ----------------------------------------------------------- */ -+ -+div.clearer { -+ clear: both; -+} -+ -+/* -- relbar ---------------------------------------------------------------- */ -+ -+div.related { -+ width: 100%; -+ font-size: 90%; -+} -+ -+div.related h3 { -+ display: none; -+} -+ -+div.related ul { -+ margin: 0; -+ padding: 0 0 0 10px; -+ list-style: none; -+} -+ -+div.related li { -+ display: inline; -+} -+ -+div.related li.right { -+ float: right; -+ margin-right: 5px; -+} -+ -+/* -- sidebar --------------------------------------------------------------- */ -+ -+div.sphinxsidebarwrapper { -+ padding: 10px 5px 0 10px; -+} -+ -+div.sphinxsidebar { -+ float: left; -+ width: 230px; -+ margin-left: -100%; -+ font-size: 90%; -+} -+ -+div.sphinxsidebar ul { -+ list-style: none; -+} -+ -+div.sphinxsidebar ul ul, -+div.sphinxsidebar ul.want-points { -+ margin-left: 20px; -+ list-style: square; -+} -+ -+div.sphinxsidebar ul ul { -+ margin-top: 0; -+ margin-bottom: 0; -+} -+ -+div.sphinxsidebar form { -+ margin-top: 10px; -+} -+ -+div.sphinxsidebar input { -+ border: 1px solid #98dbcc; -+ font-family: sans-serif; -+ font-size: 1em; -+} -+ -+img { -+ border: 0; -+} -+ -+/* -- search page ----------------------------------------------------------- */ -+ -+ul.search { -+ margin: 10px 0 0 20px; -+ padding: 0; -+} -+ -+ul.search li { -+ padding: 5px 0 5px 20px; -+ background-image: url(file.png); -+ background-repeat: no-repeat; -+ background-position: 0 7px; -+} -+ -+ul.search li a { -+ font-weight: bold; -+} -+ -+ul.search li div.context { -+ color: #888; -+ margin: 2px 0 0 30px; -+ text-align: left; -+} -+ -+ul.keywordmatches li.goodmatch a { -+ font-weight: bold; -+} -+ -+/* -- index page ------------------------------------------------------------ */ -+ -+table.contentstable { -+ width: 90%; -+} -+ -+table.contentstable p.biglink { -+ line-height: 150%; -+} -+ -+a.biglink { -+ font-size: 1.3em; -+} -+ -+span.linkdescr { -+ font-style: italic; -+ padding-top: 5px; -+ font-size: 90%; -+} -+ -+/* -- general index --------------------------------------------------------- */ -+ -+table.indextable td { -+ text-align: left; -+ vertical-align: top; -+} -+ -+table.indextable dl, table.indextable dd { -+ margin-top: 0; -+ margin-bottom: 0; -+} -+ -+table.indextable tr.pcap { -+ height: 10px; -+} -+ -+table.indextable tr.cap { -+ margin-top: 10px; -+ background-color: #f2f2f2; -+} -+ -+img.toggler { -+ margin-right: 3px; -+ margin-top: 3px; -+ cursor: pointer; -+} -+ -+/* -- general body styles --------------------------------------------------- */ -+ -+a.headerlink { -+ visibility: hidden; -+} -+ -+h1:hover > a.headerlink, -+h2:hover > a.headerlink, -+h3:hover > a.headerlink, -+h4:hover > a.headerlink, -+h5:hover > a.headerlink, -+h6:hover > a.headerlink, -+dt:hover > a.headerlink { -+ visibility: visible; -+} -+ -+div.body p.caption { -+ text-align: inherit; -+} -+ -+div.body td { -+ text-align: left; -+} -+ -+.field-list ul { -+ padding-left: 1em; -+} -+ -+.first { -+} -+ -+p.rubric { -+ margin-top: 30px; -+ font-weight: bold; -+} -+ -+/* -- sidebars -------------------------------------------------------------- */ -+ -+div.sidebar { -+ margin: 0 0 0.5em 1em; -+ border: 1px solid #ddb; -+ padding: 7px 7px 0 7px; -+ background-color: #ffe; -+ width: 40%; -+ float: right; -+} -+ -+p.sidebar-title { -+ font-weight: bold; -+} -+ -+/* -- topics ---------------------------------------------------------------- */ -+ -+div.topic { -+ border: 1px solid #ccc; -+ padding: 7px 7px 0 7px; -+ margin: 10px 0 10px 0; -+} -+ -+p.topic-title { -+ font-size: 1.1em; -+ font-weight: bold; -+ margin-top: 10px; -+} -+ -+/* -- admonitions ----------------------------------------------------------- */ -+ -+div.admonition { -+ margin-top: 10px; -+ margin-bottom: 10px; -+ padding: 7px; -+} -+ -+div.admonition dt { -+ font-weight: bold; -+} -+ -+div.admonition dl { -+ margin-bottom: 0; -+} -+ -+p.admonition-title { -+ margin: 0px 10px 5px 0px; -+ font-weight: bold; -+} -+ -+div.body p.centered { -+ text-align: center; -+ margin-top: 25px; -+} -+ -+/* -- tables ---------------------------------------------------------------- */ -+ -+table.docutils { -+ border: 0; -+ border-collapse: collapse; -+} -+ -+table.docutils td, table.docutils th { -+ padding: 1px 8px 1px 0; -+ border-top: 0; -+ border-left: 0; -+ border-right: 0; -+ border-bottom: 1px solid #aaa; -+} -+ -+table.field-list td, table.field-list th { -+ border: 0 !important; -+} -+ -+table.footnote td, table.footnote th { -+ border: 0 !important; -+} -+ -+th { -+ text-align: left; -+ padding-right: 5px; -+} -+ -+/* -- other body styles ----------------------------------------------------- */ -+ -+dl { -+ margin-bottom: 15px; -+} -+ -+dd p { -+ margin-top: 0px; -+} -+ -+dd ul, dd table { -+ margin-bottom: 10px; -+} -+ -+dd { -+ margin-top: 3px; -+ margin-bottom: 10px; -+ margin-left: 30px; -+} -+ -+dt:target, .highlight { -+ background-color: #fbe54e; -+} -+ -+dl.glossary dt { -+ font-weight: bold; -+ font-size: 1.1em; -+} -+ -+.field-list ul { -+ margin: 0; -+ padding-left: 1em; -+} -+ -+.field-list p { -+ margin: 0; -+} -+ -+.refcount { -+ color: #060; -+} -+ -+.optional { -+ font-size: 1.3em; -+} -+ -+.versionmodified { -+ font-style: italic; -+} -+ -+.system-message { -+ background-color: #fda; -+ padding: 5px; -+ border: 3px solid red; -+} -+ -+.footnote:target { -+ background-color: #ffa -+} -+ -+.line-block { -+ display: block; -+ margin-top: 1em; -+ margin-bottom: 1em; -+} -+ -+.line-block .line-block { -+ margin-top: 0; -+ margin-bottom: 0; -+ margin-left: 1.5em; -+} -+ -+/* -- code displays --------------------------------------------------------- */ -+ -+pre { -+ overflow: auto; -+} -+ -+td.linenos pre { -+ padding: 5px 0px; -+ border: 0; -+ background-color: transparent; -+ color: #aaa; -+} -+ -+table.highlighttable { -+ margin-left: 0.5em; -+} -+ -+table.highlighttable td { -+ padding: 0 0.5em 0 0.5em; -+} -+ -+tt.descname { -+ background-color: transparent; -+ font-weight: bold; -+ font-size: 1.2em; -+} -+ -+tt.descclassname { -+ background-color: transparent; -+} -+ -+tt.xref, a tt { -+ background-color: transparent; -+ font-weight: bold; -+} -+ -+h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt { -+ background-color: transparent; -+} -+ -+/* -- math display ---------------------------------------------------------- */ -+ -+img.math { -+ vertical-align: middle; -+} -+ -+div.body div.math p { -+ text-align: center; -+} -+ -+span.eqno { -+ float: right; -+} -+ -+/* -- printout stylesheet --------------------------------------------------- */ -+ -+@media print { -+ div.document, -+ div.documentwrapper, -+ div.bodywrapper { -+ margin: 0 !important; -+ width: 100%; -+ } -+ -+ div.sphinxsidebar, -+ div.related, -+ div.footer, -+ #top-link { -+ display: none; -+ } -+} -diff --git a/doc/source/_static/default.css b/doc/source/_static/default.css -new file mode 100644 -index 0000000..c8091ec ---- /dev/null -+++ b/doc/source/_static/default.css -@@ -0,0 +1,230 @@ -+/** -+ * Sphinx stylesheet -- default theme -+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+ */ -+ -+@import url("basic.css"); -+ -+/* -- page layout ----------------------------------------------------------- */ -+ -+body { -+ font-family: sans-serif; -+ font-size: 100%; -+ background-color: #11303d; -+ color: #000; -+ margin: 0; -+ padding: 0; -+} -+ -+div.document { -+ background-color: #1c4e63; -+} -+ -+div.documentwrapper { -+ float: left; -+ width: 100%; -+} -+ -+div.bodywrapper { -+ margin: 0 0 0 230px; -+} -+ -+div.body { -+ background-color: #ffffff; -+ color: #000000; -+ padding: 0 20px 30px 20px; -+} -+ -+div.footer { -+ color: #ffffff; -+ width: 100%; -+ padding: 9px 0 9px 0; -+ text-align: center; -+ font-size: 75%; -+} -+ -+div.footer a { -+ color: #ffffff; -+ text-decoration: underline; -+} -+ -+div.related { -+ background-color: #133f52; -+ line-height: 30px; -+ color: #ffffff; -+} -+ -+div.related a { -+ color: #ffffff; -+} -+ -+div.sphinxsidebar { -+} -+ -+div.sphinxsidebar h3 { -+ font-family: 'Trebuchet MS', sans-serif; -+ color: #ffffff; -+ font-size: 1.4em; -+ font-weight: normal; -+ margin: 0; -+ padding: 0; -+} -+ -+div.sphinxsidebar h3 a { -+ color: #ffffff; -+} -+ -+div.sphinxsidebar h4 { -+ font-family: 'Trebuchet MS', sans-serif; -+ color: #ffffff; -+ font-size: 1.3em; -+ font-weight: normal; -+ margin: 5px 0 0 0; -+ padding: 0; -+} -+ -+div.sphinxsidebar p { -+ color: #ffffff; -+} -+ -+div.sphinxsidebar p.topless { -+ margin: 5px 10px 10px 10px; -+} -+ -+div.sphinxsidebar ul { -+ margin: 10px; -+ padding: 0; -+ color: #ffffff; -+} -+ -+div.sphinxsidebar a { -+ color: #98dbcc; -+} -+ -+div.sphinxsidebar input { -+ border: 1px solid #98dbcc; -+ font-family: sans-serif; -+ font-size: 1em; -+} -+ -+/* -- body styles ----------------------------------------------------------- */ -+ -+a { -+ color: #355f7c; -+ text-decoration: none; -+} -+ -+a:hover { -+ text-decoration: underline; -+} -+ -+div.body p, div.body dd, div.body li { -+ text-align: left; -+ line-height: 130%; -+} -+ -+div.body h1, -+div.body h2, -+div.body h3, -+div.body h4, -+div.body h5, -+div.body h6 { -+ font-family: 'Trebuchet MS', sans-serif; -+ background-color: #f2f2f2; -+ font-weight: normal; -+ color: #20435c; -+ border-bottom: 1px solid #ccc; -+ margin: 20px -20px 10px -20px; -+ padding: 3px 0 3px 10px; -+} -+ -+div.body h1 { margin-top: 0; font-size: 200%; } -+div.body h2 { font-size: 160%; } -+div.body h3 { font-size: 140%; } -+div.body h4 { font-size: 120%; } -+div.body h5 { font-size: 110%; } -+div.body h6 { font-size: 100%; } -+ -+a.headerlink { -+ color: #c60f0f; -+ font-size: 0.8em; -+ padding: 0 4px 0 4px; -+ text-decoration: none; -+} -+ -+a.headerlink:hover { -+ background-color: #c60f0f; -+ color: white; -+} -+ -+div.body p, div.body dd, div.body li { -+ text-align: left; -+ line-height: 130%; -+} -+ -+div.admonition p.admonition-title + p { -+ display: inline; -+} -+ -+div.admonition p { -+ margin-bottom: 5px; -+} -+ -+div.admonition pre { -+ margin-bottom: 5px; -+} -+ -+div.admonition ul, div.admonition ol { -+ margin-bottom: 5px; -+} -+ -+div.note { -+ background-color: #eee; -+ border: 1px solid #ccc; -+} -+ -+div.seealso { -+ background-color: #ffc; -+ border: 1px solid #ff6; -+} -+ -+div.topic { -+ background-color: #eee; -+} -+ -+div.warning { -+ background-color: #ffe4e4; -+ border: 1px solid #f66; -+} -+ -+p.admonition-title { -+ display: inline; -+} -+ -+p.admonition-title:after { -+ content: ":"; -+} -+ -+pre { -+ padding: 5px; -+ background-color: #eeffcc; -+ color: #333333; -+ line-height: 120%; -+ border: 1px solid #ac9; -+ border-left: none; -+ border-right: none; -+} -+ -+tt { -+ background-color: #ecf0f3; -+ padding: 0 1px 0 1px; -+ font-size: 0.95em; -+} -+ -+.warning tt { -+ background: #efc2c2; -+} -+ -+.note tt { -+ background: #d6d6d6; -+} -diff --git a/doc/source/_static/jquery.tweet.js b/doc/source/_static/jquery.tweet.js -new file mode 100644 -index 0000000..79bf0bd ---- /dev/null -+++ b/doc/source/_static/jquery.tweet.js -@@ -0,0 +1,154 @@ -+(function($) { -+ -+ $.fn.tweet = function(o){ -+ var s = { -+ username: ["seaofclouds"], // [string] required, unless you want to display our tweets. :) it can be an array, just do ["username1","username2","etc"] -+ list: null, //[string] optional name of list belonging to username -+ avatar_size: null, // [integer] height and width of avatar if displayed (48px max) -+ count: 3, // [integer] how many tweets to display? -+ intro_text: null, // [string] do you want text BEFORE your your tweets? -+ outro_text: null, // [string] do you want text AFTER your tweets? -+ join_text: null, // [string] optional text in between date and tweet, try setting to "auto" -+ auto_join_text_default: "i said,", // [string] auto text for non verb: "i said" bullocks -+ auto_join_text_ed: "i", // [string] auto text for past tense: "i" surfed -+ auto_join_text_ing: "i am", // [string] auto tense for present tense: "i was" surfing -+ auto_join_text_reply: "i replied to", // [string] auto tense for replies: "i replied to" @someone "with" -+ auto_join_text_url: "i was looking at", // [string] auto tense for urls: "i was looking at" http:... -+ loading_text: null, // [string] optional loading text, displayed while tweets load -+ query: null // [string] optional search query -+ }; -+ -+ if(o) $.extend(s, o); -+ -+ $.fn.extend({ -+ linkUrl: function() { -+ var returning = []; -+ var regexp = /((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)/gi; -+ this.each(function() { -+ returning.push(this.replace(regexp,"$1")); -+ }); -+ return $(returning); -+ }, -+ linkUser: function() { -+ var returning = []; -+ var regexp = /[\@]+([A-Za-z0-9-_]+)/gi; -+ this.each(function() { -+ returning.push(this.replace(regexp,"@$1")); -+ }); -+ return $(returning); -+ }, -+ linkHash: function() { -+ var returning = []; -+ var regexp = / [\#]+([A-Za-z0-9-_]+)/gi; -+ this.each(function() { -+ returning.push(this.replace(regexp, ' #$1')); -+ }); -+ return $(returning); -+ }, -+ capAwesome: function() { -+ var returning = []; -+ this.each(function() { -+ returning.push(this.replace(/\b(awesome)\b/gi, '$1')); -+ }); -+ return $(returning); -+ }, -+ capEpic: function() { -+ var returning = []; -+ this.each(function() { -+ returning.push(this.replace(/\b(epic)\b/gi, '$1')); -+ }); -+ return $(returning); -+ }, -+ makeHeart: function() { -+ var returning = []; -+ this.each(function() { -+ returning.push(this.replace(/(<)+[3]/gi, "")); -+ }); -+ return $(returning); -+ } -+ }); -+ -+ function relative_time(time_value) { -+ var parsed_date = Date.parse(time_value); -+ var relative_to = (arguments.length > 1) ? arguments[1] : new Date(); -+ var delta = parseInt((relative_to.getTime() - parsed_date) / 1000); -+ var pluralize = function (singular, n) { -+ return '' + n + ' ' + singular + (n == 1 ? '' : 's'); -+ }; -+ if(delta < 60) { -+ return 'less than a minute ago'; -+ } else if(delta < (45*60)) { -+ return 'about ' + pluralize("minute", parseInt(delta / 60)) + ' ago'; -+ } else if(delta < (24*60*60)) { -+ return 'about ' + pluralize("hour", parseInt(delta / 3600)) + ' ago'; -+ } else { -+ return 'about ' + pluralize("day", parseInt(delta / 86400)) + ' ago'; -+ } -+ } -+ -+ function build_url() { -+ var proto = ('https:' == document.location.protocol ? 'https:' : 'http:'); -+ if (s.list) { -+ return proto+"//api.twitter.com/1/"+s.username[0]+"/lists/"+s.list+"/statuses.json?per_page="+s.count+"&callback=?"; -+ } else if (s.query == null && s.username.length == 1) { -+ return proto+'//twitter.com/status/user_timeline/'+s.username[0]+'.json?count='+s.count+'&callback=?'; -+ } else { -+ var query = (s.query || 'from:'+s.username.join('%20OR%20from:')); -+ return proto+'//search.twitter.com/search.json?&q='+query+'&rpp='+s.count+'&callback=?'; -+ } -+ } -+ -+ return this.each(function(){ -+ var list = $('
    ').appendTo(this); -+ var intro = '

    '+s.intro_text+'

    '; -+ var outro = '

    '+s.outro_text+'

    '; -+ var loading = $('

    '+s.loading_text+'

    '); -+ -+ if(typeof(s.username) == "string"){ -+ s.username = [s.username]; -+ } -+ -+ if (s.loading_text) $(this).append(loading); -+ $.getJSON(build_url(), function(data){ -+ if (s.loading_text) loading.remove(); -+ if (s.intro_text) list.before(intro); -+ $.each((data.results || data), function(i,item){ -+ // auto join text based on verb tense and content -+ if (s.join_text == "auto") { -+ if (item.text.match(/^(@([A-Za-z0-9-_]+)) .*/i)) { -+ var join_text = s.auto_join_text_reply; -+ } else if (item.text.match(/(^\w+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+) .*/i)) { -+ var join_text = s.auto_join_text_url; -+ } else if (item.text.match(/^((\w+ed)|just) .*/im)) { -+ var join_text = s.auto_join_text_ed; -+ } else if (item.text.match(/^(\w*ing) .*/i)) { -+ var join_text = s.auto_join_text_ing; -+ } else { -+ var join_text = s.auto_join_text_default; -+ } -+ } else { -+ var join_text = s.join_text; -+ }; -+ -+ var from_user = item.from_user || item.user.screen_name; -+ var profile_image_url = item.profile_image_url || item.user.profile_image_url; -+ var join_template = ' '+join_text+' '; -+ var join = ((s.join_text) ? join_template : ' '); -+ var avatar_template = ''+from_user+'\'s avatar'; -+ var avatar = (s.avatar_size ? avatar_template : ''); -+ var date = ''+relative_time(item.created_at)+''; -+ var text = '' +$([item.text]).linkUrl().linkUser().linkHash().makeHeart().capAwesome().capEpic()[0]+ ''; -+ -+ // until we create a template option, arrange the items below to alter a tweet's display. -+ list.append('
  • ' + avatar + date + join + text + '
  • '); -+ -+ list.children('li:first').addClass('tweet_first'); -+ list.children('li:odd').addClass('tweet_even'); -+ list.children('li:even').addClass('tweet_odd'); -+ }); -+ if (s.outro_text) list.after(outro); -+ }); -+ -+ }); -+ }; -+})(jQuery); -\ No newline at end of file -diff --git a/doc/source/_static/nature.css b/doc/source/_static/nature.css -new file mode 100644 -index 0000000..a98bd42 ---- /dev/null -+++ b/doc/source/_static/nature.css -@@ -0,0 +1,245 @@ -+/* -+ * nature.css_t -+ * ~~~~~~~~~~~~ -+ * -+ * Sphinx stylesheet -- nature theme. -+ * -+ * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. -+ * :license: BSD, see LICENSE for details. -+ * -+ */ -+ -+@import url("basic.css"); -+ -+/* -- page layout ----------------------------------------------------------- */ -+ -+body { -+ font-family: Arial, sans-serif; -+ font-size: 100%; -+ background-color: #111; -+ color: #555; -+ margin: 0; -+ padding: 0; -+} -+ -+div.documentwrapper { -+ float: left; -+ width: 100%; -+} -+ -+div.bodywrapper { -+ margin: 0 0 0 {{ theme_sidebarwidth|toint }}px; -+} -+ -+hr { -+ border: 1px solid #B1B4B6; -+} -+ -+div.document { -+ background-color: #eee; -+} -+ -+div.body { -+ background-color: #ffffff; -+ color: #3E4349; -+ padding: 0 30px 30px 30px; -+ font-size: 0.9em; -+} -+ -+div.footer { -+ color: #555; -+ width: 100%; -+ padding: 13px 0; -+ text-align: center; -+ font-size: 75%; -+} -+ -+div.footer a { -+ color: #444; -+ text-decoration: underline; -+} -+ -+div.related { -+ background-color: #6BA81E; -+ line-height: 32px; -+ color: #fff; -+ text-shadow: 0px 1px 0 #444; -+ font-size: 0.9em; -+} -+ -+div.related a { -+ color: #E2F3CC; -+} -+ -+div.sphinxsidebar { -+ font-size: 0.75em; -+ line-height: 1.5em; -+} -+ -+div.sphinxsidebarwrapper{ -+ padding: 20px 0; -+} -+ -+div.sphinxsidebar h3, -+div.sphinxsidebar h4 { -+ font-family: Arial, sans-serif; -+ color: #222; -+ font-size: 1.2em; -+ font-weight: normal; -+ margin: 0; -+ padding: 5px 10px; -+ background-color: #ddd; -+ text-shadow: 1px 1px 0 white -+} -+ -+div.sphinxsidebar h4{ -+ font-size: 1.1em; -+} -+ -+div.sphinxsidebar h3 a { -+ color: #444; -+} -+ -+ -+div.sphinxsidebar p { -+ color: #888; -+ padding: 5px 20px; -+} -+ -+div.sphinxsidebar p.topless { -+} -+ -+div.sphinxsidebar ul { -+ margin: 10px 20px; -+ padding: 0; -+ color: #000; -+} -+ -+div.sphinxsidebar a { -+ color: #444; -+} -+ -+div.sphinxsidebar input { -+ border: 1px solid #ccc; -+ font-family: sans-serif; -+ font-size: 1em; -+} -+ -+div.sphinxsidebar input[type=text]{ -+ margin-left: 20px; -+} -+ -+/* -- body styles ----------------------------------------------------------- */ -+ -+a { -+ color: #005B81; -+ text-decoration: none; -+} -+ -+a:hover { -+ color: #E32E00; -+ text-decoration: underline; -+} -+ -+div.body h1, -+div.body h2, -+div.body h3, -+div.body h4, -+div.body h5, -+div.body h6 { -+ font-family: Arial, sans-serif; -+ background-color: #BED4EB; -+ font-weight: normal; -+ color: #212224; -+ margin: 30px 0px 10px 0px; -+ padding: 5px 0 5px 10px; -+ text-shadow: 0px 1px 0 white -+} -+ -+div.body h1 { border-top: 20px solid white; margin-top: 0; font-size: 200%; } -+div.body h2 { font-size: 150%; background-color: #C8D5E3; } -+div.body h3 { font-size: 120%; background-color: #D8DEE3; } -+div.body h4 { font-size: 110%; background-color: #D8DEE3; } -+div.body h5 { font-size: 100%; background-color: #D8DEE3; } -+div.body h6 { font-size: 100%; background-color: #D8DEE3; } -+ -+a.headerlink { -+ color: #c60f0f; -+ font-size: 0.8em; -+ padding: 0 4px 0 4px; -+ text-decoration: none; -+} -+ -+a.headerlink:hover { -+ background-color: #c60f0f; -+ color: white; -+} -+ -+div.body p, div.body dd, div.body li { -+ line-height: 1.5em; -+} -+ -+div.admonition p.admonition-title + p { -+ display: inline; -+} -+ -+div.highlight{ -+ background-color: white; -+} -+ -+div.note { -+ background-color: #eee; -+ border: 1px solid #ccc; -+} -+ -+div.seealso { -+ background-color: #ffc; -+ border: 1px solid #ff6; -+} -+ -+div.topic { -+ background-color: #eee; -+} -+ -+div.warning { -+ background-color: #ffe4e4; -+ border: 1px solid #f66; -+} -+ -+p.admonition-title { -+ display: inline; -+} -+ -+p.admonition-title:after { -+ content: ":"; -+} -+ -+pre { -+ padding: 10px; -+ background-color: White; -+ color: #222; -+ line-height: 1.2em; -+ border: 1px solid #C6C9CB; -+ font-size: 1.1em; -+ margin: 1.5em 0 1.5em 0; -+ -webkit-box-shadow: 1px 1px 1px #d8d8d8; -+ -moz-box-shadow: 1px 1px 1px #d8d8d8; -+} -+ -+tt { -+ background-color: #ecf0f3; -+ color: #222; -+ /* padding: 1px 2px; */ -+ font-size: 1.1em; -+ font-family: monospace; -+} -+ -+.viewcode-back { -+ font-family: Arial, sans-serif; -+} -+ -+div.viewcode-block:target { -+ background-color: #f4debf; -+ border-top: 1px solid #ac9; -+ border-bottom: 1px solid #ac9; -+} -diff --git a/doc/source/_static/tweaks.css b/doc/source/_static/tweaks.css -new file mode 100644 -index 0000000..9977c65 ---- /dev/null -+++ b/doc/source/_static/tweaks.css -@@ -0,0 +1,95 @@ -+body { -+ background: #fff url(../_static/header_bg.jpg) top left no-repeat; -+} -+ -+#header { -+ width: 950px; -+ margin: 0 auto; -+ height: 102px; -+} -+ -+#header h1#logo { -+ background: url(../_static/openstack_logo.png) top left no-repeat; -+ display: block; -+ float: left; -+ text-indent: -9999px; -+ width: 175px; -+ height: 55px; -+} -+ -+#navigation { -+ background: url(../_static/header-line.gif) repeat-x 0 bottom; -+ display: block; -+ float: left; -+ margin: 27px 0 0 25px; -+ padding: 0; -+} -+ -+#navigation li{ -+ float: left; -+ display: block; -+ margin-right: 25px; -+} -+ -+#navigation li a { -+ display: block; -+ font-weight: normal; -+ text-decoration: none; -+ background-position: 50% 0; -+ padding: 20px 0 5px; -+ color: #353535; -+ font-size: 14px; -+} -+ -+#navigation li a.current, #navigation li a.section { -+ border-bottom: 3px solid #cf2f19; -+ color: #cf2f19; -+} -+ -+div.related { -+ background-color: #cde2f8; -+ border: 1px solid #b0d3f8; -+} -+ -+div.related a { -+ color: #4078ba; -+ text-shadow: none; -+} -+ -+div.sphinxsidebarwrapper { -+ padding-top: 0; -+ overflow: hidden; -+} -+ -+pre { -+ color: #555; -+} -+ -+div.documentwrapper h1, div.documentwrapper h2, div.documentwrapper h3, div.documentwrapper h4, div.documentwrapper h5, div.documentwrapper h6 { -+ font-family: 'PT Sans', sans-serif !important; -+ color: #264D69; -+ border-bottom: 1px dotted #C5E2EA; -+ padding: 0; -+ background: none; -+ padding-bottom: 5px; -+} -+ -+div.documentwrapper h3 { -+ color: #CF2F19; -+} -+ -+a.headerlink { -+ color: #fff !important; -+ margin-left: 5px; -+ background: #CF2F19 !important; -+} -+ -+div.body { -+ margin-top: -25px; -+ margin-left: 230px; -+} -+ -+div.document { -+ width: 960px; -+ margin: 0 auto; -+} -diff --git a/doc/source/_templates/.placeholder b/doc/source/_templates/.placeholder -new file mode 100644 -index 0000000..e69de29 -diff --git a/doc/source/_theme/layout.html b/doc/source/_theme/layout.html -new file mode 100644 -index 0000000..750b782 ---- /dev/null -+++ b/doc/source/_theme/layout.html -@@ -0,0 +1,83 @@ -+{% extends "basic/layout.html" %} -+{% set css_files = css_files + ['_static/tweaks.css'] %} -+{% set script_files = script_files + ['_static/jquery.tweet.js'] %} -+ -+{%- macro sidebar() %} -+ {%- if not embedded %}{% if not theme_nosidebar|tobool %} -+
    -+
    -+ {%- block sidebarlogo %} -+ {%- if logo %} -+ -+ {%- endif %} -+ {%- endblock %} -+ {%- block sidebartoc %} -+ {%- if display_toc %} -+

    {{ _('Table Of Contents') }}

    -+ {{ toc }} -+ {%- endif %} -+ {%- endblock %} -+ {%- block sidebarrel %} -+ {%- if prev %} -+

    {{ _('Previous topic') }}

    -+

    {{ prev.title }}

    -+ {%- endif %} -+ {%- if next %} -+

    {{ _('Next topic') }}

    -+

    {{ next.title }}

    -+ {%- endif %} -+ {%- endblock %} -+ {%- block sidebarsourcelink %} -+ {%- if show_source and has_source and sourcename %} -+

    {{ _('This Page') }}

    -+ -+ {%- endif %} -+ {%- endblock %} -+ {%- if customsidebar %} -+ {% include customsidebar %} -+ {%- endif %} -+ {%- block sidebarsearch %} -+ {%- if pagename != "search" %} -+ -+ -+ {%- endif %} -+ {%- endblock %} -+
    -+
    -+ {%- endif %}{% endif %} -+{%- endmacro %} -+ -+{% block relbar1 %}{% endblock relbar1 %} -+ -+{% block header %} -+ -+{% endblock %} -\ No newline at end of file -diff --git a/doc/source/_theme/theme.conf b/doc/source/_theme/theme.conf -new file mode 100644 -index 0000000..1cc4004 ---- /dev/null -+++ b/doc/source/_theme/theme.conf -@@ -0,0 +1,4 @@ -+[theme] -+inherit = basic -+stylesheet = nature.css -+pygments_style = tango -diff --git a/doc/source/conf.py b/doc/source/conf.py -index 30e4b6d..ec9e63f 100644 ---- a/doc/source/conf.py -+++ b/doc/source/conf.py -@@ -144,12 +144,13 @@ extensions = ['sphinx.ext.autodoc', - 'sphinx.ext.todo', - 'sphinx.ext.coverage', - 'sphinx.ext.pngmath', -- 'sphinx.ext.viewcode', -- 'oslo.sphinx', -- ] -+ 'sphinx.ext.viewcode'] - - # Add any paths that contain templates here, relative to this directory. --templates_path = ['_templates'] -+if os.getenv('HUDSON_PUBLISH_DOCS'): -+ templates_path = ['_ga', '_templates'] -+else: -+ templates_path = ['_templates'] - - # The suffix of source filenames. - source_suffix = '.rst' -@@ -216,8 +217,8 @@ nitpicky = False - - # The theme to use for HTML and HTML Help pages. See the documentation for - # a list of builtin themes. --# html_theme_path = ['.'] --# html_theme = '_theme' -+html_theme_path = ['.'] -+html_theme = '_theme' - - # Theme options are theme-specific and customize the look and feel of a theme - # further. For a list of options available for each theme, see the -diff --git a/test-requirements.txt b/test-requirements.txt -index 6f771b2..3ddb8a0 100644 ---- a/test-requirements.txt -+++ b/test-requirements.txt -@@ -14,4 +14,3 @@ selenium - sphinx>=1.1.2,<1.2 - # for bug 1091333, remove after sphinx >1.1.3 is released. - docutils==0.9.1 --oslo.sphinx diff --git a/rpm/SOURCES/0006-move-RBAC-policy-files-and-checks-to-etc-openstack-d.patch b/rpm/SOURCES/0005-move-RBAC-policy-files-and-checks-to-etc-openstack-d.patch similarity index 92% rename from rpm/SOURCES/0006-move-RBAC-policy-files-and-checks-to-etc-openstack-d.patch rename to rpm/SOURCES/0005-move-RBAC-policy-files-and-checks-to-etc-openstack-d.patch index 1dbf37b..8876377 100644 --- a/rpm/SOURCES/0006-move-RBAC-policy-files-and-checks-to-etc-openstack-d.patch +++ b/rpm/SOURCES/0005-move-RBAC-policy-files-and-checks-to-etc-openstack-d.patch @@ -1,4 +1,4 @@ -From 78e5ed6e2be464922850f68ec4c371428c9c56d7 Mon Sep 17 00:00:00 2001 +From 499eaf237a6fb1b8e0233f59793d54827bfbf2e7 Mon Sep 17 00:00:00 2001 From: Matthias Runge Date: Mon, 9 Sep 2013 14:13:07 +0200 Subject: [PATCH] move RBAC policy files and checks to /etc/openstack-dashboard @@ -8,7 +8,7 @@ Subject: [PATCH] move RBAC policy files and checks to /etc/openstack-dashboard 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/openstack_dashboard/local/local_settings.py.example b/openstack_dashboard/local/local_settings.py.example -index d386d46..afa95f1 100644 +index 832358e..6838944 100644 --- a/openstack_dashboard/local/local_settings.py.example +++ b/openstack_dashboard/local/local_settings.py.example @@ -228,12 +228,13 @@ TIME_ZONE = "UTC" diff --git a/rpm/SOURCES/0007-move-SECRET_KEY-secret_key_store-to-tmp.patch b/rpm/SOURCES/0006-move-SECRET_KEYSTORE-to-var-lib-openstack-dashboard.patch similarity index 83% rename from rpm/SOURCES/0007-move-SECRET_KEY-secret_key_store-to-tmp.patch rename to rpm/SOURCES/0006-move-SECRET_KEYSTORE-to-var-lib-openstack-dashboard.patch index 2419386..8342e29 100644 --- a/rpm/SOURCES/0007-move-SECRET_KEY-secret_key_store-to-tmp.patch +++ b/rpm/SOURCES/0006-move-SECRET_KEYSTORE-to-var-lib-openstack-dashboard.patch @@ -1,14 +1,14 @@ -From 09539805488bcb346dbd43770f4d0d9edf39c800 Mon Sep 17 00:00:00 2001 +From 7f7882eb403c493cb857c0c7523e964ffd165c19 Mon Sep 17 00:00:00 2001 From: Matthias Runge Date: Mon, 9 Sep 2013 20:52:51 +0200 -Subject: [PATCH] move SECRET_KEY secret_key_store to /tmp +Subject: [PATCH] move SECRET_KEYSTORE to '/var/lib/openstack-dashboard' --- openstack_dashboard/local/local_settings.py.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openstack_dashboard/local/local_settings.py.example b/openstack_dashboard/local/local_settings.py.example -index afa95f1..d120dfc 100644 +index 6838944..cd31406 100644 --- a/openstack_dashboard/local/local_settings.py.example +++ b/openstack_dashboard/local/local_settings.py.example @@ -77,7 +77,6 @@ HORIZON_CONFIG = { @@ -23,7 +23,7 @@ index afa95f1..d120dfc 100644 # requests routed to the same dashboard instance or you set the same SECRET_KEY # for all of them. from horizon.utils import secret_key -+LOCAL_PATH = '/tmp' ++LOCAL_PATH = '/var/lib/openstack-dashboard' SECRET_KEY = secret_key.generate_or_read_from_file(os.path.join(LOCAL_PATH, '.secret_key_store')) # We recommend you use memcached for development; otherwise after every reload diff --git a/rpm/SOURCES/0008-fix-up-issues-with-customization.patch b/rpm/SOURCES/0008-fix-up-issues-with-customization.patch deleted file mode 100644 index 6bcd77b..0000000 --- a/rpm/SOURCES/0008-fix-up-issues-with-customization.patch +++ /dev/null @@ -1,81 +0,0 @@ -From 9bf1112382a3ce8ea197f207c417c7351dc05c8f Mon Sep 17 00:00:00 2001 -From: Matthias Runge -Date: Thu, 19 Sep 2013 12:58:00 +0200 -Subject: [PATCH] fix up issues with customization - ---- - openstack_dashboard_theme/__init__.py | 1 + - openstack_dashboard_theme/models.py | 1 + - .../static/dashboard/less/rhtheme.less | 2 +- - .../templates/horizon/common/_sidebar.html | 23 ++++++++++++++++++++-- - 4 files changed, 24 insertions(+), 3 deletions(-) - -diff --git a/openstack_dashboard_theme/__init__.py b/openstack_dashboard_theme/__init__.py -index e69de29..94456ab 100644 ---- a/openstack_dashboard_theme/__init__.py -+++ b/openstack_dashboard_theme/__init__.py -@@ -0,0 +1 @@ -+# intentionally left blank -diff --git a/openstack_dashboard_theme/models.py b/openstack_dashboard_theme/models.py -index e69de29..94456ab 100644 ---- a/openstack_dashboard_theme/models.py -+++ b/openstack_dashboard_theme/models.py -@@ -0,0 +1 @@ -+# intentionally left blank -diff --git a/openstack_dashboard_theme/static/dashboard/less/rhtheme.less b/openstack_dashboard_theme/static/dashboard/less/rhtheme.less -index 5350db3..2d8b2d0 100644 ---- a/openstack_dashboard_theme/static/dashboard/less/rhtheme.less -+++ b/openstack_dashboard_theme/static/dashboard/less/rhtheme.less -@@ -1,4 +1,4 @@ --@import "/static/dashboard/less/horizon.less"; -+@import "horizon.less"; - - /* Login Splash Page */ - -diff --git a/openstack_dashboard_theme/templates/horizon/common/_sidebar.html b/openstack_dashboard_theme/templates/horizon/common/_sidebar.html -index 5672846..df66c62 100644 ---- a/openstack_dashboard_theme/templates/horizon/common/_sidebar.html -+++ b/openstack_dashboard_theme/templates/horizon/common/_sidebar.html -@@ -1,7 +1,8 @@ - {% load branding horizon i18n %} -+{% load url from future %} - -
-@@ -31,5 +32,23 @@ - - {% endif %} - -+ {% with num_of_regions=request.user.available_services_regions|length %} -+ {% if num_of_regions > 1 %} -+ -+ {% endif %} -+ {% endwith %} -+ - {% horizon_dashboard_nav %} - diff --git a/rpm/SOURCES/0009-do-not-truncate-the-logo-related-rhbz-877138.patch b/rpm/SOURCES/0009-do-not-truncate-the-logo-related-rhbz-877138.patch deleted file mode 100644 index bdf61fa..0000000 --- a/rpm/SOURCES/0009-do-not-truncate-the-logo-related-rhbz-877138.patch +++ /dev/null @@ -1,26 +0,0 @@ -From daed1adb7fa46c0398542f88ebf002088daf96b3 Mon Sep 17 00:00:00 2001 -From: Matthias Runge -Date: Thu, 19 Sep 2013 13:58:16 +0200 -Subject: [PATCH] do not truncate the logo (related rhbz 877138) - ---- - openstack_dashboard_theme/static/dashboard/less/rhtheme.less | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/openstack_dashboard_theme/static/dashboard/less/rhtheme.less b/openstack_dashboard_theme/static/dashboard/less/rhtheme.less -index 2d8b2d0..d70852e 100644 ---- a/openstack_dashboard_theme/static/dashboard/less/rhtheme.less -+++ b/openstack_dashboard_theme/static/dashboard/less/rhtheme.less -@@ -46,10 +46,10 @@ h1.rhos a { - background: url(/static/dashboard/img/rh-logo.png) top left no-repeat; - display: block; - float: left; -- width: 116px; -+ width: 123px; - height: 123px; - text-indent: -9999px; -- margin-left: 56px; -+ margin-left: 53px; - margin-top: 15px; - margin-bottom: 25px; - } diff --git a/rpm/SOURCES/0010-move-SECRET_KEYSTORE-to-var-lib-openstack-dashboard.patch b/rpm/SOURCES/0010-move-SECRET_KEYSTORE-to-var-lib-openstack-dashboard.patch deleted file mode 100644 index d7076f3..0000000 --- a/rpm/SOURCES/0010-move-SECRET_KEYSTORE-to-var-lib-openstack-dashboard.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 2c3a2c7c2c7e0d396bc80ebfa9fdc2af773050c1 Mon Sep 17 00:00:00 2001 -From: Matthias Runge -Date: Fri, 4 Oct 2013 09:46:36 +0200 -Subject: [PATCH] move SECRET_KEYSTORE to '/var/lib/openstack-dashboard' - ---- - openstack_dashboard/local/local_settings.py.example | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/openstack_dashboard/local/local_settings.py.example b/openstack_dashboard/local/local_settings.py.example -index d120dfc..a60ad0c 100644 ---- a/openstack_dashboard/local/local_settings.py.example -+++ b/openstack_dashboard/local/local_settings.py.example -@@ -88,7 +88,7 @@ HORIZON_CONFIG = { - # requests routed to the same dashboard instance or you set the same SECRET_KEY - # for all of them. - from horizon.utils import secret_key --LOCAL_PATH = '/tmp' -+LOCAL_PATH = '/var/lib/openstack-dashboard' - SECRET_KEY = secret_key.generate_or_read_from_file(os.path.join(LOCAL_PATH, '.secret_key_store')) - - # We recommend you use memcached for development; otherwise after every reload diff --git a/rpm/SPECS/python-django-horizon.spec b/rpm/SPECS/python-django-horizon.spec index b06a7e7..73b2b65 100644 --- a/rpm/SPECS/python-django-horizon.spec +++ b/rpm/SPECS/python-django-horizon.spec @@ -1,5 +1,5 @@ Name: python-django-horizon -Version: 2013.2 +Version: 2013.2.3 Release: 1%{?dist} Summary: Django application for talking to Openstack @@ -7,8 +7,7 @@ Group: Development/Libraries # Code in horizon/horizon/utils taken from django which is BSD License: ASL 2.0 and BSD URL: http://horizon.openstack.org/ -BuildArch: noarch -Source0: horizon-2013.2.2.fuel4.1.tar.gz +Source0: https://launchpad.net/horizon/havana/%{version}/+download/horizon-%{version}.tar.gz Source1: openstack-dashboard.conf Source2: openstack-dashboard-httpd-2.4.conf @@ -20,35 +19,42 @@ Source10: rhfavicon.ico Source11: rh-logo.png # -# patches_base=2013.2 +# patches_base=2013.2.3 # Patch0001: 0001-Don-t-access-the-net-while-building-docs.patch Patch0002: 0002-disable-debug-move-web-root.patch Patch0003: 0003-change-lockfile-location-to-tmp-and-also-add-localho.patch Patch0004: 0004-Add-a-customization-module-based-on-RHOS.patch -Patch0005: 0005-Revert-Use-oslo.sphinx-and-remove-local-copy-of-doc-.patch -Patch0006: 0006-move-RBAC-policy-files-and-checks-to-etc-openstack-d.patch -Patch0007: 0007-move-SECRET_KEY-secret_key_store-to-tmp.patch -Patch0008: 0008-fix-up-issues-with-customization.patch -Patch0009: 0009-do-not-truncate-the-logo-related-rhbz-877138.patch -Patch0010: 0010-move-SECRET_KEYSTORE-to-var-lib-openstack-dashboard.patch +Patch0005: 0005-move-RBAC-policy-files-and-checks-to-etc-openstack-d.patch +Patch0006: 0006-move-SECRET_KEYSTORE-to-var-lib-openstack-dashboard.patch + #mirantis OpenStack patch Patch0100: mos-disable-metering.patch Patch0101: mos-fix-murano-savana-dashboard.patch +BuildArch: noarch +## epel6 has a separate Django14 package +#%if 0%{?rhel}==6 +#Requires: Django14 +#BuildRequires: Django14 +#%else +#BuildRequires: Django +#Requires: Django +#%endif # Migrate to Django 15 (python-django) BuildRequires: python-django Requires: python-django - Requires: python-dateutil Requires: pytz Requires: python-lockfile +Requires: python-pbr BuildRequires: python2-devel BuildRequires: python-setuptools +BuildRequires: git BuildRequires: python-d2to1 BuildRequires: python-pbr >= 0.5.21 BuildRequires: python-lockfile @@ -97,10 +103,10 @@ Requires: python-cinderclient Requires: python-swiftclient Requires: python-heatclient Requires: python-ceilometerclient >= 1.0.5 -# Requires: python-troveclient +Requires: python-troveclient Requires: python-netaddr Requires: python-oslo-config -Requires: python-lesscpy +Requires: python-eventlet BuildRequires: python2-devel BuildRequires: python-django-openstack-auth >= 1.0.11 @@ -138,7 +144,8 @@ BuildRequires: python-cinderclient BuildRequires: python-swiftclient BuildRequires: python-heatclient BuildRequires: python-ceilometerclient -# BuildRequires: python-troveclient +BuildRequires: python-troveclient +BuildRequires: python-oslo-sphinx %description doc Documentation for the Django Horizon application for talking with Openstack @@ -152,20 +159,24 @@ Customization module for OpenStack Dashboard to provide a branded logo. %prep %setup -q -n horizon-%{version} - +## Use git to manage patches. +## http://rwmj.wordpress.com/2011/08/09/nice-rpm-git-patch-management-trick/ +#git init +#git config user.email "python-django-horizon-owner@fedoraproject.org" +#git config user.name "python-django-horizon" +#git add . +#git commit -a -q -m "%{version} baseline" +#git am %{patches} %patch0001 -p1 %patch0002 -p1 %patch0003 -p1 %patch0004 -p1 %patch0005 -p1 %patch0006 -p1 -%patch0007 -p1 -%patch0008 -p1 -%patch0009 -p1 -%patch0010 -p1 %patch0100 -p1 %patch0101 -p1 + # remove unnecessary .po files find . -name "django*.po" -exec rm -f '{}' \; @@ -266,6 +277,10 @@ cp -a static/* %{buildroot}%{_datadir}/openstack-dashboard/static # create /var/run/openstack-dashboard/ and own it mkdir -p %{buildroot}%{_sharedstatedir}/openstack-dashboard + +# create /var/log/horizon and own it +mkdir -p %{buildroot}%{_var}/log/horizon + #%check #sed -i 's:^SECRET_KEY =.*:SECRET_KEY = "badcafe":' openstack_dashboard/local/local_settings.py #./run_tests.sh -N @@ -313,6 +328,7 @@ mkdir -p %{buildroot}%{_sharedstatedir}/openstack-dashboard %dir %attr(0750, root, apache) %{_sysconfdir}/openstack-dashboard %dir %attr(0750, apache, apache) %{_sharedstatedir}/openstack-dashboard +%dir %attr(0750, apache, apache) %{_var}/log/horizon %config(noreplace) %{_sysconfdir}/httpd/conf.d/openstack-dashboard.conf %config(noreplace) %attr(0640, root, apache) %{_sysconfdir}/openstack-dashboard/local_settings %config(noreplace) %attr(0640, root, apache) %{_sysconfdir}/openstack-dashboard/keystone_policy.json @@ -325,8 +341,26 @@ mkdir -p %{buildroot}%{_sharedstatedir}/openstack-dashboard %{_datadir}/openstack-dashboard/openstack_dashboard_theme %changelog -* Fri Oct 18 2013 Matthias Runge - 2013.2-1 +* Thu Apr 10 2014 Matthias Runge - 2013.2.3-1 +- rebase to 2013.2.3 +- fix CVE-2014-0157 (rhbz#1085826) + +* Fri Feb 14 2014 Matthias Runge - 2013.2.2-1 +- rebase to 2013.2.2 + +* Wed Dec 18 2013 Matthias Runge - 2013.2.1-1 +- rebase to 2013.2.1 + +* Tue Dec 03 2013 Matthias Runge - 2013.2-4 +- fix CVE-2013-6406 (RHBZ#1035914) + +* Thu Nov 21 2013 Matthias Runge - 2013.2-3 +- add runtime requiremt python-pbr + +* Fri Oct 18 2013 Matthias Runge - 2013.2-2 - Horizon-2013.2 final +- create /var/log/horizon +- add requirement to python-eventlet * Thu Oct 17 2013 Matthias Runge - 2013.2.0.15.rc3 - rebase to Havana-rc3 -- 2.45.2