incubator-deltacloud-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michal Fojtik <mfoj...@redhat.com>
Subject Re: [PATCH core] RHEV-M fixes (realms, client). Instance UI enhancements (images, ID shortening)
Date Wed, 02 Mar 2011 10:00:15 GMT
On 01/03/11 18:07 +0100, Tomas Sedovic wrote:
>ACK

Pushed, thanks for testing this Tomas!

   -- Michal

>
>On 02/28/2011 10:43 AM, mfojtik@redhat.com wrote:
>>From: Michal Fojtik<mfojtik@redhat.com>
>>
>>---
>>  server/bin/deltacloudd                             |    1 +
>>  server/config/drivers.yaml                         |    3 ++
>>  .../lib/deltacloud/drivers/rhevm/rhevm_client.rb   |   24 +++++++++++++++++--
>>  .../lib/deltacloud/drivers/rhevm/rhevm_driver.rb   |   20 +++++++++-------
>>  .../lib/deltacloud/helpers/application_helper.rb   |   12 ++++++++++
>>  server/public/images/pending.png                   |  Bin 0 ->  792 bytes
>>  server/public/images/running.png                   |  Bin 0 ->  740 bytes
>>  server/public/images/stopped.png                   |  Bin 0 ->  779 bytes
>>  server/views/instances/index.html.haml             |    6 ++--
>>  9 files changed, 51 insertions(+), 15 deletions(-)
>>  create mode 100644 server/public/images/pending.png
>>  create mode 100644 server/public/images/running.png
>>  create mode 100644 server/public/images/stopped.png
>>
>>diff --git a/server/bin/deltacloudd b/server/bin/deltacloudd
>>index 70be6ca..addb1f5 100755
>>--- a/server/bin/deltacloudd
>>+++ b/server/bin/deltacloudd
>>@@ -105,6 +105,7 @@ else
>>    argv_opts<<  ['--rackup', 'config.ru' ]
>>    argv_opts<<  ['--chdir', dirname ]
>>    argv_opts<<  ['-e', options[:env] ]
>>+  argv_opts<<  ['--timeout', '60']
>>    argv_opts<<  ['--threaded', '-D', '--stats', '/stats']
>>
>>    argv_opts.flatten!
>>diff --git a/server/config/drivers.yaml b/server/config/drivers.yaml
>>index 3f34521..d028ca0 100644
>>--- a/server/config/drivers.yaml
>>+++ b/server/config/drivers.yaml
>>@@ -5,6 +5,9 @@
>>    :name: Mock
>>  :rhevm:
>>    :name: RHEVM
>>+  :entrypoints:
>>+    default:
>>+      default: "https://rhev-dc.lab.eng.brq.redhat.com:8443/rhevm-api-powershell"
>>  :rimuhosting:
>>    :name: RimuHosting
>>  :opennebula:
>>diff --git a/server/lib/deltacloud/drivers/rhevm/rhevm_client.rb b/server/lib/deltacloud/drivers/rhevm/rhevm_client.rb
>>index 09c025f..c1c7161 100644
>>--- a/server/lib/deltacloud/drivers/rhevm/rhevm_client.rb
>>+++ b/server/lib/deltacloud/drivers/rhevm/rhevm_client.rb
>>@@ -25,6 +25,15 @@ require 'json'
>>  module RHEVM
>>
>>    class FixtureNotFound<  Exception; end
>>+  class ConnectionError<  StandardError
>>+    attr_reader :code, :cause, :details
>>+    def initialize(code, cause, message, details)
>>+      super(message)
>>+      @code = code
>>+      @cause = cause
>>+      @details = details
>>+    end
>>+  end
>>
>>    class Client
>>
>>@@ -51,7 +60,7 @@ module RHEVM
>>        opts ||= {}
>>        if @@COLLECTIONS.include?(method_name.to_sym)
>>          if opts[:id]
>>-          object = Nokogiri::XML(get("#{@entry_points[method_name.to_s]}#{opts[:id]}"))
>>+          object = Nokogiri::XML(get("#{@entry_points[method_name.to_s]}/#{opts[:id]}"))
>>            element = method_name.to_s
>>            element = 'data_centers' if method_name.eql?(:datacenters)
>>            @current_element = element
>>@@ -105,7 +114,12 @@ module RHEVM
>>        if ENV['RACK_ENV'] == 'test'
>>          response = mock_request(:get, uri, {}, headers)
>>        else
>>-        response = RestClient.get(uri, headers).to_s
>>+        puts "[RHEV-M] #{uri}"
>>+        begin
>>+          response = RestClient.get(uri, headers).to_s
>>+        rescue Exception =>  e
>>+          raise ConnectionError::new(500, "GET #{uri}", "#{e.message} (GET #{uri})",
e.backtrace)
>>+        end
>>        end
>>        response
>>      end
>>@@ -127,7 +141,11 @@ module RHEVM
>>
>>      def discover_entry_points()
>>        return if @discovered
>>-      doc = Nokogiri.XML(get(@base_uri))
>>+      begin
>>+        doc = Nokogiri.XML(get(@base_uri))
>>+      rescue Exception =>  e
>>+        raise ConnectionError::new(500, "RHEV-M Connection Error (#{@base_uri})",
"#{e.message} (#{@base_uri})", e.backtrace)
>>+      end
>>        doc.xpath('api/link').each() do |link|
>>          @entry_points[link['rel']] = @host + link['href']
>>        end
>>diff --git a/server/lib/deltacloud/drivers/rhevm/rhevm_driver.rb b/server/lib/deltacloud/drivers/rhevm/rhevm_driver.rb
>>index 8b4282f..3fd5365 100644
>>--- a/server/lib/deltacloud/drivers/rhevm/rhevm_driver.rb
>>+++ b/server/lib/deltacloud/drivers/rhevm/rhevm_driver.rb
>>@@ -72,7 +72,7 @@ class RHEVMDriver<  Deltacloud::BaseDriver
>>    # or setting provider using HTTP header X-Deltacloud-Provider to URL.
>>    #
>>    def provider_uri
>>-    'https://10.34.2.122:8443/rhevm-api-powershell'
>>+    Deltacloud::Drivers::driver_config[:rhevm][:entrypoints]['default']['default']
>>    end
>>
>>    define_instance_states do
>>@@ -203,7 +203,9 @@ class RHEVMDriver<  Deltacloud::BaseDriver
>>
>>    def new_client(credentials)
>>      url = (Thread.current[:provider] || ENV['API_PROVIDER'] || provider_uri)
>>-    ::RHEVM::Client.new(credentials.user, credentials.password, url)
>>+    safely do
>>+      ::RHEVM::Client.new(credentials.user, credentials.password, url)
>>+    end
>>    end
>>
>>    def convert_instance(client, inst)
>>@@ -299,13 +301,13 @@ class RHEVMDriver<  Deltacloud::BaseDriver
>>    # Disabling this error catching will lead to more verbose messages
>>    # on console (eg. response from RHEV-M API (so far I didn't figure our
>>    # how to pass those message to our exception handling tool)
>>-  #def catched_exceptions_list
>>-  #  {
>>-  #    :auth =>  RestClient::Unauthorized,
>>-  #    :error =>  RestClient::InternalServerError,
>>-  #    :glob =>  [ /RestClient::(\w+)/ ]
>>-  #  }
>>-  #end
>>+  def catched_exceptions_list
>>+    {
>>+      :auth =>  RestClient::Unauthorized,
>>+      :error =>  RestClient::InternalServerError,
>>+      :glob =>  [ /(RestClient|RHEVM)::(\w+)/ ]
>>+    }
>>+  end
>>
>>  end
>>
>>diff --git a/server/lib/deltacloud/helpers/application_helper.rb b/server/lib/deltacloud/helpers/application_helper.rb
>>index f1909b2..191a0c9 100644
>>--- a/server/lib/deltacloud/helpers/application_helper.rb
>>+++ b/server/lib/deltacloud/helpers/application_helper.rb
>>@@ -186,4 +186,16 @@ module ApplicationHelper
>>      end
>>    end
>>
>>+  def image_for_state(state)
>>+    state_img = "stopped" if (state!='RUNNING' or state!='PENDING')
>>+    "<img src='/images/#{state.downcase}.png' title='#{state}'/>"
>>+  end
>>+
>>+  def truncate_words(text, length = 10)
>>+    return nil unless text
>>+    return text if text.length<=length
>>+    end_string = "...#{text[(text.length-(length/2))..text.length]}"
>>+    "#{text[0..(length/2)]}#{end_string}"
>>+  end
>>+
>>  end
>>diff --git a/server/public/images/pending.png b/server/public/images/pending.png
>>new file mode 100644
>>index 0000000000000000000000000000000000000000..6753441a11065d1e2b10104dd0e59db34842856f
>>GIT binary patch
>>literal 792
>>zcmV+z1LypSP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80000PbVXQnQ*UN;
>>zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!x=BPqRCwC#R!>M2Q5gT;%<MnM(RHvj
>>z6VVDf2$fjW!RQYjB82MDAv$ylT8M5P+EWyi9Xdo2NYtf6bm>qe(qYN4OHpD4LV~g;
>>zySBEjy0h!%t~1m3y&Yv;(iL~Y%e>{szIpHW?f2uo@B7U%(==f#hX7kV90861M}Sn0
>>zz!+Qg*cf_o*z{EQ7)(5FLcv2Aegsn=V2kO{RL}X3xU|Y#*7F)x&WMTxh>bU1_0}lL
>>zrBiJ!u)nDus@x*qSjg${HJX6_kqJm?+LNi9XM(t_+bKZ8<S!f4y3^OX+F>aE2f~pI
>>zL{m$g(^MltSE~#i4PLkx9)|c#^6AvAvzM1eR4RZ4t~@%b?ra;le)0f3`#uljbBiEh
>>z^$6DK82B4Y2EZ=A2QKcdg}ZORK=S90W77|UgN6KNMMdah>W<sz+FRkxSQ_G)Jk)wb
>>zsK(=$T>=NqX^r-XLtN%>yhE{ebb$|C-p+vE50TkCC|2SsJOZBun$sHX5r?=SxjT7m
>>zrCor-&9JB=ngKG-1V&Z=?_u)m0M2EFMsV99fZuc~XJFL}YbGxiL0pT+>=3{^VLq$#
>>zW8O&D5VyoXDiUCt3#lP3J=d{aRY5m&SW5%t6a^7}C6hogrG~WGBFtrn!}mvHG4Nmk
>>z$S#Q&p0@-(UWgLs5SL;o)(!#Lx&Ft43$gLn??*<!OKs<Kf$WjE6B1}nYqUok;!+I7
>>zmc8DM7!iIch?c<B-X5iSPxqnS&Ct579z3ps6))y>i2P2#r?E-UCP(|G9|l9XJb}>4
>>z8PP_qm@?IJ*FACJi0@!`5R|%o%b}d2&3?;%?(0pxd;S5RqKJ9Bta#;Rgpd&`q8?Fg
>>zt$~#&jYuGph>YDYqm@U?UVWCyu%h<QS$CfQU$5g$kM(j$l>|Hg2^|5B06WHC0R{m2
>>W(HoU0sdYgB0000<MNUMnLSTZ#=yb^d
>>
>>literal 0
>>HcmV?d00001
>>
>>diff --git a/server/public/images/running.png b/server/public/images/running.png
>>new file mode 100644
>>index 0000000000000000000000000000000000000000..f74a91436191dc62eb6ad4316c2e6807fb1ed17d
>>GIT binary patch
>>literal 740
>>zcmV<A0vr8_P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80000PbVXQnQ*UN;
>>zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!hDk(0RCwC#R^LlgVHkeCbIy*fri-~u
>>zjM+t$P!K^ELaXe?q91q{{R2VLO$FXqf(WHI1$Gl&RR2J9V?V&WQLJE)6@fxUNL%7G
>>zQ)hEqTkZ6|=bWh%@eI$2L7Wes?d<)Ym-qS3_kGVhp=lb*IV6;MxB^@Ou7I)&P^<_-
>>zh@zj(ooJM{phuH%qTpdn5qS*dGiV>|LWDv^?zWNH2`eXDB|tvajXr<X){7?(oyURt
>>zMtIe2`b0Xrgt2G@FWx^wVlj1p;5u3<{KrWF3Kf4`8w|EwK64YX#A}RCKgB|NPUmd*
>>z2C#qUIfVR2aPN5s;@@W<4BWt_f(W|;#Ib8QUbn|Lbfu*WucEz}NyZ@YYcH&jkf)Ct
>>zUkKs)tGL_WiTFgaY4{FCjQX0bL+J5V<JRfJ7w~TCA?8ytRM5#$WtuR-&m7}9<}kM+
>>zfNsup;ud&?2jRLMm6%G7L7`$YWl3wmF`i=%bA^I1=i0snG*o`o)0sDrWoyL+uDLy`
>>z69V*OnEVxmB1$tB=86?Pwgu=47BW%D#Mbf_T*=@H;hYm{xfI_1m^1cR-v()Y@EmiP
>>z%Q<TeX|n>dlcVVUGC>7sRf@8{2)(#saG1+Eoa=;u^!O8u%zs0FWYj32(&h3fE7y>p
>>zImUC$VJ_!zuI2WYVnp;+N!Z=ghMwvW&Nl1=YHMi4<}Lr71L8Bl$4~V7V|X@v8|@VS
>>zO89AIM5S6WtrLF2uD#7TN^PK3t-`_O9VSY45g(`>^nD)0ONvYq5>8q1ax)@u_X!Y!
>>z1fLm$Stv=EC2)gSa=IC<_8E`qa4L%1LDt;!+`nqan;sk0Q0yeT{|Q|I|Am0R0t^5@
>>WHt<xS!(=1?0000<MNUMnLSTYd-B(%w
>>
>>literal 0
>>HcmV?d00001
>>
>>diff --git a/server/public/images/stopped.png b/server/public/images/stopped.png
>>new file mode 100644
>>index 0000000000000000000000000000000000000000..b6cfd0b8f00132d106c0e214e8d0225015feb91e
>>GIT binary patch
>>literal 779
>>zcmV+m1N8ifP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80000PbVXQnQ*UN;
>>zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!tw}^dRCwC#R?lk_Q4pT@_D7PosWnX_
>>zp{4DiSRz%?OOT2ck$Nb^vlr<>v?%@o{R6aDK`KQoh!;;D4D?b&A{8{3fLaKtB{a1f
>>zj4{UaS7>(goY`z^qO>W^N<i}9BiVW1WWF~uZ#GN_0rgxQ>bx2P8Uh*u>MlU8MqrFp
>>zJU;jP{4E?NBq7dk4>98CjD^;UFn&244Wp@Iy6rXWShY!5CP11!<C}7}wqEPHa1mU-
>>z0g##;#)iJJ37P0Tth{^ytGV2x;WyDSGFvG?#^BG|Jf6V7^;=MgeSm!U6=>g*r8IVU
>>z!R{XdrT;k0Kb(Z@*VOdz+vtsL5w!|n)2I5*9XrwyI(hRp<bzM4u(E{t!0K_cg^EQC
>>zrGe7b3--Vjc=zBw#8T;@(a6WSQhZTU6Dpmme5dEq2yBIBK*v+_re@#{2XLFM1p1CP
>>z+9M8ey{dGVe66?z4!gt$54X30o`_>W45ngGS*ZlsaE~~|wQ)X3zBS(hTq-4ye~N>w
>>z+Cfm-D{n@5y92}05Z6q)YJ~s>jDyJjFit6U3;w&Q3@-T?z7_~DPF%zvm27q>R%u#p
>>za)B|+CZWh_dL+A%#}e2;#(GP;fcA((T=MyIARSb|)@&+!FOf_E$NEwLNm2f4LbA~w
>>zafnMk<ZFe1&B^$exy9UiFcMwB0E*F!B_XN-BQt2DJ>n3Te8{(Ib@wxf@WYAdd3^fl
>>zM8C^9(%0J!Znqmd$ZR1^gLFC#i%ZK8%dF0fMi$1=nn0{p8$|mZ#S-EWqVsCE=WM|1
>>z8f%xO6JqC@0DRZ<_rYXl>dA8IH9meu{IqHm@4So<%?K9)j}I-T4a`7mh%_RDShxCR
>>z1Z9U+%n7HK-E(0!9M!z=uU^LoUVFumYjJM;Cu|7#F9iG&U;vZq6mJi1`DFkA002ov
>>JPDHLkV1j$QW{&^>
>>
>>literal 0
>>HcmV?d00001
>>
>>diff --git a/server/views/instances/index.html.haml b/server/views/instances/index.html.haml
>>index d728ec5..d0ada19 100644
>>--- a/server/views/instances/index.html.haml
>>+++ b/server/views/instances/index.html.haml
>>@@ -14,17 +14,17 @@
>>      - @instances.each do |instance|
>>        %tr
>>          %td
>>-          = link_to instance.id, instance_url( instance.id )
>>+          = link_to truncate_words(instance.id), instance_url( instance.id )
>>          %td
>>            = link_to instance.owner_id, images_url
>>          %td
>>            = instance.name
>>          %td
>>-          = link_to instance.image_id, image_url( instance.image_id )
>>+          = link_to truncate_words(instance.image_id), image_url( instance.image_id
)
>>          %td
>>            = instance.hardware_profile ? link_to(instance.hardware_profile, hardware_profile_url(
instance.instance_profile.id )) : 'default'
>>          %td
>>-          = instance.state
>>+          = image_for_state(instance.state)
>>          %td
>>            -instance.actions.each do |action|
>>              =link_to_action action, self.send(:"#{action}_instance_url", instance.id),
instance_action_method(action)
>

-- 
--------------------------------------------------------
Michal Fojtik, mfojtik@redhat.com
Deltacloud API: http://deltacloud.org
--------------------------------------------------------

Mime
View raw message