[PATCH conductor] BZ#743377 Show deployable status in the pretty view

Tomas Sedovic tsedovic at redhat.com
Fri Feb 10 10:26:02 UTC 2012


On 02/09/2012 03:59 PM, Imre Farkas wrote:
> On 02/09/2012 01:52 PM, tsedovic at redhat.com wrote:
>> From: Tomas Sedovic<tomas at sedovic.cz>
>>
>> https://bugzilla.redhat.com/show_bug.cgi?id=743377
>>
>> The deployment cards on the Monitor page now display a graphical
>> status (with a
>> textual fallback for text-only browsers) of the deployment.
>>
>> This makes it easy for the user to determine the status of the
>> deployments at a
>> glance. For more detailed information (e.g. the statuses of individual
>> instances), the user still needs to drill down into the deployment in
>> question.
>> ---
>> src/app/models/deployment.rb | 26 ++++++++----------
>> src/app/stylesheets/layout.scss | 31 ++++++++++++++++++++++
>> src/app/views/deployments/_list.html.haml | 4 +-
>> src/app/views/deployments/_pretty_view.html.haml | 2 +
>> src/app/views/pools/_deployments.html.haml | 3 ++
>> src/config/locales/en.yml | 4 +++
>> 6 files changed, 54 insertions(+), 16 deletions(-)
>>
>> diff --git a/src/app/models/deployment.rb b/src/app/models/deployment.rb
>> index 043b2b4..9593645 100644
>> --- a/src/app/models/deployment.rb
>> +++ b/src/app/models/deployment.rb
>> @@ -415,6 +415,16 @@ class Deployment< ActiveRecord::Base
>> end
>> end
>>
>> + def status
>> + if instances.all? {|i| i.state == Instance::STATE_RUNNING}
>> + :running
>> + elsif instances.all? {|i| [Instance::STATE_STOPPED,
>> Instance::STATE_ERROR, Instance::STATE_CREATE_FAILED].include? i.state}
>> + :stopped
>> + else
>> + :pending
>> + end
>> + end
>> +
>> # A deployment "starts" when _all_ instances begin to run
>> def start_time
>> if instances.deployed.count == instances.count&& ev =
>> events.find_by_status_code(:all_running)
>> @@ -437,7 +447,8 @@ class Deployment< ActiveRecord::Base
>> def as_json(options={})
>> json = super(options).merge({
>> :deployable_xml_name => deployable_xml.name,
>> - :deployment_state => deployment_state,
>> + :status => status,
>> + :status_description => I18n.t("deployments.status.#{status}"),
>> :instances_count => instances.count,
>> :failed_instances_count => failed_instances.count,
>> :instances_count_text => I18n.t('instances.instances', :count =>
>> instances.count.to_i),
>> @@ -461,19 +472,6 @@ class Deployment< ActiveRecord::Base
>> json
>> end
>>
>> - def deployment_state
>> - unless instances.empty?
>> - return instances.first.state if not instances.empty? and
>> instances.length == 1
>> - oracle = instances.first.state
>> - instances.each do |i|
>> - return STATE_MIXED if i.state != oracle
>> - end
>> - return oracle
>> - else
>> - return
>> - end
>> - end
>> -
>> def failed_instances
>> instances.select {|instance| instance.failed?}
>> end
>> diff --git a/src/app/stylesheets/layout.scss
>> b/src/app/stylesheets/layout.scss
>> index 9f385fe..dc51b67 100644
>> --- a/src/app/stylesheets/layout.scss
>> +++ b/src/app/stylesheets/layout.scss
>> @@ -2254,6 +2254,21 @@ ul.deployment-array.large{
>>
>> }
>>
>> + .status {
>> + text-indent: -3000px;
>> + display: block;
>> + background: url('../../images/build_status.png') no-repeat;
>> + width: 18px;
>> + height: 18px;
>> + position: absolute;
>> + bottom: 5px;
>> + right: 5px;
>> +
>> +&.stopped { background-position: 0px center; }
>> +&.pending { background-position: -20px center; }
>> +&.running { background-position: -40px center; }
>> + }
>> +
>> dl.statistics{
>> margin-top: 8px;
>> ul{list-style: none; margin-left: 12px;}
>> @@ -2345,6 +2360,7 @@ ul.deployment-array.small{
>> height: 100%;
>>
>> li.deployment{
>> + position: relative;
>> display: table-cell;
>> float: left;
>> border: 1px solid #ccc;
>> @@ -2362,6 +2378,21 @@ ul.deployment-array.small{
>> margin-bottom: 14px;
>> }
>>
>> + .status {
>> + text-indent: -3000px;
>> + display: block;
>> + background: url('../../images/build_status.png') no-repeat;
>> + width: 18px;
>> + height: 18px;
>> + position: absolute;
>> + bottom: 5px;
>> + right: 5px;
>> +
>> +&.stopped { background-position: 0px center; }
>> +&.pending { background-position: -20px center; }
>> +&.running { background-position: -40px center; }
>> + }
>> +
>> dl.statistics{
>> ul{list-style: none;}
>> li{@include display_inline_block;}
>> diff --git a/src/app/views/deployments/_list.html.haml
>> b/src/app/views/deployments/_list.html.haml
>> index 75b7f3d..bbf7b9b 100644
>> --- a/src/app/views/deployments/_list.html.haml
>> +++ b/src/app/views/deployments/_list.html.haml
>> @@ -35,7 +35,7 @@
>> %td= link_to(deployment.name, deployment_path(deployment, :view =>
>> :filter))
>> %td= deployment.created_at
>> %td= deployment.deployable_xml.name
>> - %td= deployment.deployment_state
>> + %td= deployment.status
>> %td{:class => 'center'}= deployment.instances.count
>> %td= link_to deployment.pool.name, pool_path(deployment.pool, :view =>
>> :filter)
>> %td= owner_name(deployment)
>> @@ -59,7 +59,7 @@
>> <td><a href="#{deployment_path('replace_id', :view =>
>> :filter).sub('replace_id', '${id}')}">${name}</a></td>
>> <td>${created_at}</td>
>> <td>${deployable_xml_name}</td>
>> -<td>${deployment_state}</td>
>> +<td>${status}</td>
>> <td class="center">${instances_count}</td>
>> <td><a href="#{pool_path('replace_id', :view =>
>> :filter).sub('replace_id', '${pool.id}')}">${pool.name}</a></td>
>> <td>${owner}</td>
>> diff --git a/src/app/views/deployments/_pretty_view.html.haml
>> b/src/app/views/deployments/_pretty_view.html.haml
>> index 97c586e..f29e8d4 100644
>> --- a/src/app/views/deployments/_pretty_view.html.haml
>> +++ b/src/app/views/deployments/_pretty_view.html.haml
>> @@ -5,6 +5,7 @@
>> %li.deployment
>> %h3.name
>> = link_to deployment.name, deployment_path(deployment)
>> + %span{ :class => "status #{deployment.status}", :title =>
>> deployment.as_json[:status_description]}
>> %dl.statistics
>> %ul
>> %li.uptime
>> @@ -32,6 +33,7 @@
>> <h3 class="name">
>> <a href="#{deployment_path('replace_id').sub('replace_id',
>> '${id}')}">${name}</a>
>> </h3>
>> +<span class="status ${status}"
>> title="${status_description}">${status}</span>
>> <dl class="statistics">
>> <ul>
>> <li class="uptime">
>> diff --git a/src/app/views/pools/_deployments.html.haml
>> b/src/app/views/pools/_deployments.html.haml
>> index 0aa6143..b4aed1d 100644
>> --- a/src/app/views/pools/_deployments.html.haml
>> +++ b/src/app/views/pools/_deployments.html.haml
>> @@ -5,6 +5,8 @@
>> %li.deployment
>> %h3.name
>> = link_to deployment.name, deployment_path(deployment)
>> + %span{ :class => "status #{deployment.status}", :title =>
>> deployment.as_json[:status_description]}
>> + = deployment.status
>> %dl.statistics
>> %ul
>> %li.right
>> @@ -21,6 +23,7 @@
>> <h3 class="name">
>> <a href="#{deployment_path('replace_id').sub('replace_id',
>> '${id}')}">${name}</a>
>> </h3>
>> +<span class="status ${status}"
>> title="${status_description}">${status}</span>
>> <dl class="statistics">
>> <ul>
>> <li class="right">
>> diff --git a/src/config/locales/en.yml b/src/config/locales/en.yml
>> index 822962d..a30fc28 100644
>> --- a/src/config/locales/en.yml
>> +++ b/src/config/locales/en.yml
>> @@ -174,6 +174,10 @@ en:
>> confirm_delete: "Are you sure you want to delete this deployment?"
>> list_of_events: List of deployment events
>> state: State
>> + status:
>> + running: All instances are running
>> + pending: Some (but not all) instances are running
>> + stopped: No instances are currently running
>> launch_time_params:
>> configure_launch_time_params: "Configure launch-time parameters for
>> your deployment:"
>> finalize: Finalize
>
> There's a failing spec in spec/models/deployment_spec.rb (the one on
> deployment_state)
>
> After fixing it, feel free to push it.
>
> ACK

Good catch Imre, thanks!

It's fixed & pushed now.



More information about the aeolus-devel mailing list