1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
<html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'>
4
<title>lib/user_app_client.rb</title>
5
<link href="screen.css" media="all" rel="stylesheet" type="text/css" />
6
<link href="print.css" media="print" rel="stylesheet" type="text/css" />
8
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
9
<script type="text/javascript" src="rcov.js"></script>
12
<h1>Appcontroller C0 Coverage Information - RCov</h1>
13
<h2>lib/user_app_client.rb</h2>
17
<div class="report_table_wrapper">
18
<table class='report' id='report_table'>
21
<th class="left_align">Name</th>
22
<th class="right_align">Total Lines</th>
23
<th class="right_align">Lines of Code</th>
24
<th class="left_align">Total Coverage</th>
25
<th class="left_align">Code Coverage</th>
30
<td class="left_align"><a href="lib-user_app_client_rb.html">lib/user_app_client.rb</a></td>
31
<td class='right_align'><tt>300</tt></td>
32
<td class='right_align'><tt>231</tt></td>
33
<td class="left_align"><div class="percent_graph_legend"><tt class=''>24.67%</tt></div>
34
<div class="percent_graph">
35
<div class="covered" style="width:25px"></div>
36
<div class="uncovered" style="width:75px"></div>
38
<td class="left_align"><div class="percent_graph_legend"><tt class=''>12.12%</tt></div>
39
<div class="percent_graph">
40
<div class="covered" style="width:12px"></div>
41
<div class="uncovered" style="width:88px"></div>
50
<div class="key"><pre><span class='marked'>Code reported as executed by Ruby looks like this...</span><span class='marked1'>and this: this line is also marked as covered.</span><span class='inferred'>Lines considered as run by rcov, but not reported by Ruby, look like this,</span><span class='inferred1'>and this: these lines were inferred by rcov (using simple heuristics).</span><span class='uncovered'>Finally, here's a line marked as not executed.</span></pre></div>
52
<h3>Coverage Details</h3>
54
<table class="details">
60
<td><pre><a name="line1">1</a> #!/usr/bin/ruby -w</pre></td>
66
<td><pre><a name="line2">2</a> # Programmer: Chris Bunch</pre></td>
72
<td><pre><a name="line3">3</a> </pre></td>
78
<td><pre><a name="line4">4</a> </pre></td>
84
<td><pre><a name="line5">5</a> # Imports within Ruby's standard libraries</pre></td>
90
<td><pre><a name="line6">6</a> require 'base64'</pre></td>
96
<td><pre><a name="line7">7</a> require 'openssl'</pre></td>
102
<td><pre><a name="line8">8</a> require 'soap/rpc/driver'</pre></td>
108
<td><pre><a name="line9">9</a> require 'timeout'</pre></td>
113
<tr class="inferred">
114
<td><pre><a name="line10">10</a> </pre></td>
119
<tr class="inferred">
120
<td><pre><a name="line11">11</a> </pre></td>
125
<tr class="inferred">
126
<td><pre><a name="line12">12</a> # AppControllers and other services need to read or write data relating to users</pre></td>
131
<tr class="inferred">
132
<td><pre><a name="line13">13</a> # and applications hosted in AppScale. Since it has to be done in a</pre></td>
137
<tr class="inferred">
138
<td><pre><a name="line14">14</a> # database-agnostic fashion, we throw up a special server that responds to SOAP</pre></td>
143
<tr class="inferred">
144
<td><pre><a name="line15">15</a> # requests for this information, called the UserAppServer. This class provides</pre></td>
149
<tr class="inferred">
150
<td><pre><a name="line16">16</a> # convenience methods for interacting with the UserAppServer.</pre></td>
156
<td><pre><a name="line17">17</a> class UserAppClient</pre></td>
162
<td><pre><a name="line18">18</a> attr_reader :conn, :ip, :secret</pre></td>
167
<tr class="inferred">
168
<td><pre><a name="line19">19</a> </pre></td>
173
<tr class="inferred">
174
<td><pre><a name="line20">20</a> </pre></td>
179
<tr class="inferred">
180
<td><pre><a name="line21">21</a> # The port that the UserAppServer binds to, by default.</pre></td>
186
<td><pre><a name="line22">22</a> DEFAULT_UASERVER_PORT = 4343</pre></td>
191
<tr class="inferred">
192
<td><pre><a name="line23">23</a> </pre></td>
197
<tr class="inferred">
198
<td><pre><a name="line24">24</a> </pre></td>
204
<td><pre><a name="line25">25</a> def initialize(ip, secret)</pre></td>
209
<tr class="uncovered">
210
<td><pre><a name="line26">26</a> @ip = ip</pre></td>
215
<tr class="uncovered">
216
<td><pre><a name="line27">27</a> @secret = secret</pre></td>
221
<tr class="uncovered">
222
<td><pre><a name="line28">28</a> </pre></td>
227
<tr class="uncovered">
228
<td><pre><a name="line29">29</a> @conn = SOAP::RPC::Driver.new("https://#{@ip}:#{DEFAULT_UASERVER_PORT}")</pre></td>
233
<tr class="uncovered">
234
<td><pre><a name="line30">30</a> @conn.add_method("change_password", "user", "password", "secret")</pre></td>
239
<tr class="uncovered">
240
<td><pre><a name="line31">31</a> @conn.add_method("commit_new_user", "user", "passwd", "utype", "secret")</pre></td>
245
<tr class="uncovered">
246
<td><pre><a name="line32">32</a> @conn.add_method("commit_new_app", "user", "appname", "language", "secret")</pre></td>
251
<tr class="uncovered">
252
<td><pre><a name="line33">33</a> @conn.add_method("commit_tar", "app_name", "tar", "secret")</pre></td>
257
<tr class="uncovered">
258
<td><pre><a name="line34">34</a> @conn.add_method("delete_app", "appname", "secret") </pre></td>
263
<tr class="uncovered">
264
<td><pre><a name="line35">35</a> @conn.add_method("is_app_enabled", "appname", "secret")</pre></td>
269
<tr class="uncovered">
270
<td><pre><a name="line36">36</a> @conn.add_method("is_user_cloud_admin", "username", "secret")</pre></td>
275
<tr class="uncovered">
276
<td><pre><a name="line37">37</a> @conn.add_method("does_user_exist", "username", "secret")</pre></td>
281
<tr class="uncovered">
282
<td><pre><a name="line38">38</a> @conn.add_method("get_user_data", "username", "secret")</pre></td>
287
<tr class="uncovered">
288
<td><pre><a name="line39">39</a> @conn.add_method("get_app_data", "appname", "secret")</pre></td>
293
<tr class="uncovered">
294
<td><pre><a name="line40">40</a> @conn.add_method("delete_instance", "appname", "host", "port", "secret")</pre></td>
299
<tr class="uncovered">
300
<td><pre><a name="line41">41</a> @conn.add_method("get_tar", "app_name", "secret")</pre></td>
305
<tr class="uncovered">
306
<td><pre><a name="line42">42</a> @conn.add_method("add_instance", "appname", "host", "port", "secret")</pre></td>
311
<tr class="uncovered">
312
<td><pre><a name="line43">43</a> @conn.add_method("get_all_apps", "secret")</pre></td>
317
<tr class="uncovered">
318
<td><pre><a name="line44">44</a> @conn.add_method("get_all_users", "secret")</pre></td>
323
<tr class="uncovered">
324
<td><pre><a name="line45">45</a> end</pre></td>
329
<tr class="inferred">
330
<td><pre><a name="line46">46</a> </pre></td>
336
<td><pre><a name="line47">47</a> def make_call(timeout, retry_on_except)</pre></td>
341
<tr class="uncovered">
342
<td><pre><a name="line48">48</a> result = ""</pre></td>
347
<tr class="uncovered">
348
<td><pre><a name="line49">49</a> begin</pre></td>
353
<tr class="uncovered">
354
<td><pre><a name="line50">50</a> Timeout::timeout(timeout) do</pre></td>
359
<tr class="uncovered">
360
<td><pre><a name="line51">51</a> begin</pre></td>
365
<tr class="uncovered">
366
<td><pre><a name="line52">52</a> yield if block_given?</pre></td>
371
<tr class="uncovered">
372
<td><pre><a name="line53">53</a> end</pre></td>
377
<tr class="uncovered">
378
<td><pre><a name="line54">54</a> end</pre></td>
383
<tr class="uncovered">
384
<td><pre><a name="line55">55</a> rescue OpenSSL::SSL::SSLError</pre></td>
389
<tr class="uncovered">
390
<td><pre><a name="line56">56</a> retry</pre></td>
395
<tr class="uncovered">
396
<td><pre><a name="line57">57</a> rescue Errno::ECONNREFUSED</pre></td>
401
<tr class="uncovered">
402
<td><pre><a name="line58">58</a> if retry_on_except</pre></td>
407
<tr class="uncovered">
408
<td><pre><a name="line59">59</a> sleep(1)</pre></td>
413
<tr class="uncovered">
414
<td><pre><a name="line60">60</a> retry</pre></td>
419
<tr class="uncovered">
420
<td><pre><a name="line61">61</a> else</pre></td>
425
<tr class="uncovered">
426
<td><pre><a name="line62">62</a> abort("We were unable to establish a connection with the UserAppServer at the designated location. Is AppScale currently running?")</pre></td>
431
<tr class="uncovered">
432
<td><pre><a name="line63">63</a> end </pre></td>
437
<tr class="uncovered">
438
<td><pre><a name="line64">64</a> rescue Exception => except</pre></td>
443
<tr class="uncovered">
444
<td><pre><a name="line65">65</a> if except.class == Interrupt</pre></td>
449
<tr class="uncovered">
450
<td><pre><a name="line66">66</a> abort</pre></td>
455
<tr class="uncovered">
456
<td><pre><a name="line67">67</a> end</pre></td>
461
<tr class="uncovered">
462
<td><pre><a name="line68">68</a> </pre></td>
467
<tr class="uncovered">
468
<td><pre><a name="line69">69</a> puts "An exception of type #{except.class} was thrown."</pre></td>
473
<tr class="uncovered">
474
<td><pre><a name="line70">70</a> retry if retry_on_except</pre></td>
479
<tr class="uncovered">
480
<td><pre><a name="line71">71</a> end</pre></td>
485
<tr class="uncovered">
486
<td><pre><a name="line72">72</a> end</pre></td>
491
<tr class="inferred">
492
<td><pre><a name="line73">73</a> </pre></td>
498
<td><pre><a name="line74">74</a> def commit_new_user(user, encrypted_password, user_type, retry_on_except=true)</pre></td>
503
<tr class="uncovered">
504
<td><pre><a name="line75">75</a> result = ""</pre></td>
509
<tr class="uncovered">
510
<td><pre><a name="line76">76</a> make_call(10, retry_on_except) { </pre></td>
515
<tr class="uncovered">
516
<td><pre><a name="line77">77</a> result = @conn.commit_new_user(user, encrypted_password, user_type, @secret)</pre></td>
521
<tr class="uncovered">
522
<td><pre><a name="line78">78</a> }</pre></td>
527
<tr class="uncovered">
528
<td><pre><a name="line79">79</a> </pre></td>
533
<tr class="uncovered">
534
<td><pre><a name="line80">80</a> if result == "true"</pre></td>
539
<tr class="uncovered">
540
<td><pre><a name="line81">81</a> puts "\nYour user account has been created successfully."</pre></td>
545
<tr class="uncovered">
546
<td><pre><a name="line82">82</a> elsif result == "false"</pre></td>
551
<tr class="uncovered">
552
<td><pre><a name="line83">83</a> abort("\nWe were unable to create your user account. Please contact your cloud administrator for further details.")</pre></td>
557
<tr class="uncovered">
558
<td><pre><a name="line84">84</a> else</pre></td>
563
<tr class="uncovered">
564
<td><pre><a name="line85">85</a> puts "\n[unexpected] Commit new user returned: [#{result}]"</pre></td>
569
<tr class="uncovered">
570
<td><pre><a name="line86">86</a> end</pre></td>
575
<tr class="uncovered">
576
<td><pre><a name="line87">87</a> end</pre></td>
581
<tr class="inferred">
582
<td><pre><a name="line88">88</a> </pre></td>
588
<td><pre><a name="line89">89</a> def commit_new_app(user, app_name, language, file_location)</pre></td>
593
<tr class="uncovered">
594
<td><pre><a name="line90">90</a> commit_new_app_name(user, app_name, language)</pre></td>
599
<tr class="uncovered">
600
<td><pre><a name="line91">91</a> commit_tar(app_name, file_location)</pre></td>
605
<tr class="uncovered">
606
<td><pre><a name="line92">92</a> end</pre></td>
611
<tr class="inferred">
612
<td><pre><a name="line93">93</a> </pre></td>
618
<td><pre><a name="line94">94</a> def commit_new_app_name(user, app_name, language, retry_on_except=true)</pre></td>
623
<tr class="uncovered">
624
<td><pre><a name="line95">95</a> result = ""</pre></td>
629
<tr class="uncovered">
630
<td><pre><a name="line96">96</a> make_call(10, retry_on_except) {</pre></td>
635
<tr class="uncovered">
636
<td><pre><a name="line97">97</a> result = @conn.commit_new_app(user, app_name, language, @secret)</pre></td>
641
<tr class="uncovered">
642
<td><pre><a name="line98">98</a> }</pre></td>
647
<tr class="uncovered">
648
<td><pre><a name="line99">99</a> </pre></td>
653
<tr class="uncovered">
654
<td><pre><a name="line100">100</a> if result == "true"</pre></td>
659
<tr class="uncovered">
660
<td><pre><a name="line101">101</a> puts "We have reserved the name #{app_name} for your application."</pre></td>
665
<tr class="uncovered">
666
<td><pre><a name="line102">102</a> elsif result == "Error: appname already exist"</pre></td>
671
<tr class="uncovered">
672
<td><pre><a name="line103">103</a> puts "We are uploading a new version of the application #{app_name}."</pre></td>
677
<tr class="uncovered">
678
<td><pre><a name="line104">104</a> elsif result == "Error: User not found"</pre></td>
683
<tr class="uncovered">
684
<td><pre><a name="line105">105</a> abort("We were unable to reserve the name of your application. Please contact your cloud administrator for more information.")</pre></td>
689
<tr class="uncovered">
690
<td><pre><a name="line106">106</a> else</pre></td>
695
<tr class="uncovered">
696
<td><pre><a name="line107">107</a> puts "[unexpected] Commit new app says: [#{result}]"</pre></td>
701
<tr class="uncovered">
702
<td><pre><a name="line108">108</a> end</pre></td>
707
<tr class="uncovered">
708
<td><pre><a name="line109">109</a> end</pre></td>
713
<tr class="inferred">
714
<td><pre><a name="line110">110</a> </pre></td>
720
<td><pre><a name="line111">111</a> def commit_tar(app_name, file_location, retry_on_except=true)</pre></td>
725
<tr class="uncovered">
726
<td><pre><a name="line112">112</a> file = File.open(file_location, "rb")</pre></td>
731
<tr class="uncovered">
732
<td><pre><a name="line113">113</a> tar_contents = Base64.encode64(file.read)</pre></td>
737
<tr class="uncovered">
738
<td><pre><a name="line114">114</a> </pre></td>
743
<tr class="uncovered">
744
<td><pre><a name="line115">115</a> result = ""</pre></td>
749
<tr class="uncovered">
750
<td><pre><a name="line116">116</a> make_call(300, retry_on_except) {</pre></td>
755
<tr class="uncovered">
756
<td><pre><a name="line117">117</a> result = @conn.commit_tar(app_name, tar_contents, @secret)</pre></td>
761
<tr class="uncovered">
762
<td><pre><a name="line118">118</a> }</pre></td>
767
<tr class="uncovered">
768
<td><pre><a name="line119">119</a> </pre></td>
773
<tr class="uncovered">
774
<td><pre><a name="line120">120</a> if result == "true"</pre></td>
779
<tr class="uncovered">
780
<td><pre><a name="line121">121</a> puts "#{app_name} was uploaded successfully."</pre></td>
785
<tr class="uncovered">
786
<td><pre><a name="line122">122</a> elsif result == "Error: app does not exist"</pre></td>
791
<tr class="uncovered">
792
<td><pre><a name="line123">123</a> abort("We were unable to upload your application. Please contact your cloud administrator for more information.")</pre></td>
797
<tr class="uncovered">
798
<td><pre><a name="line124">124</a> else</pre></td>
803
<tr class="uncovered">
804
<td><pre><a name="line125">125</a> puts "[unexpected] Commit new tar says: [#{result}]"</pre></td>
809
<tr class="uncovered">
810
<td><pre><a name="line126">126</a> end</pre></td>
815
<tr class="uncovered">
816
<td><pre><a name="line127">127</a> end</pre></td>
821
<tr class="inferred">
822
<td><pre><a name="line128">128</a> </pre></td>
828
<td><pre><a name="line129">129</a> def change_password(user, new_password, retry_on_except=true)</pre></td>
833
<tr class="uncovered">
834
<td><pre><a name="line130">130</a> result = ""</pre></td>
839
<tr class="uncovered">
840
<td><pre><a name="line131">131</a> make_call(10, retry_on_except) {</pre></td>
845
<tr class="uncovered">
846
<td><pre><a name="line132">132</a> result = @conn.change_password(user, new_password, @secret)</pre></td>
851
<tr class="uncovered">
852
<td><pre><a name="line133">133</a> }</pre></td>
857
<tr class="uncovered">
858
<td><pre><a name="line134">134</a> </pre></td>
863
<tr class="uncovered">
864
<td><pre><a name="line135">135</a> if result == "true"</pre></td>
869
<tr class="uncovered">
870
<td><pre><a name="line136">136</a> puts "We successfully changed the password for the given user."</pre></td>
875
<tr class="uncovered">
876
<td><pre><a name="line137">137</a> elsif result == "Error: user not found"</pre></td>
881
<tr class="uncovered">
882
<td><pre><a name="line138">138</a> puts "We were unable to locate a user with the given username."</pre></td>
887
<tr class="uncovered">
888
<td><pre><a name="line139">139</a> else</pre></td>
893
<tr class="uncovered">
894
<td><pre><a name="line140">140</a> puts "[unexpected] Got this message back: [#{result}]"</pre></td>
899
<tr class="uncovered">
900
<td><pre><a name="line141">141</a> end</pre></td>
905
<tr class="uncovered">
906
<td><pre><a name="line142">142</a> end</pre></td>
911
<tr class="inferred">
912
<td><pre><a name="line143">143</a> </pre></td>
918
<td><pre><a name="line144">144</a> def delete_app(app, retry_on_except=true)</pre></td>
923
<tr class="uncovered">
924
<td><pre><a name="line145">145</a> result = ""</pre></td>
929
<tr class="uncovered">
930
<td><pre><a name="line146">146</a> make_call(10, retry_on_except) {</pre></td>
935
<tr class="uncovered">
936
<td><pre><a name="line147">147</a> result = @conn.delete_app(app, @secret)</pre></td>
941
<tr class="uncovered">
942
<td><pre><a name="line148">148</a> }</pre></td>
947
<tr class="uncovered">
948
<td><pre><a name="line149">149</a> </pre></td>
953
<tr class="uncovered">
954
<td><pre><a name="line150">150</a> if result == "true"</pre></td>
959
<tr class="uncovered">
960
<td><pre><a name="line151">151</a> return true</pre></td>
965
<tr class="uncovered">
966
<td><pre><a name="line152">152</a> else</pre></td>
971
<tr class="uncovered">
972
<td><pre><a name="line153">153</a> return result</pre></td>
977
<tr class="uncovered">
978
<td><pre><a name="line154">154</a> end </pre></td>
983
<tr class="uncovered">
984
<td><pre><a name="line155">155</a> end</pre></td>
989
<tr class="inferred">
990
<td><pre><a name="line156">156</a> </pre></td>
996
<td><pre><a name="line157">157</a> def does_app_exist?(app, retry_on_except=true)</pre></td>
1001
<tr class="uncovered">
1002
<td><pre><a name="line158">158</a> result = ""</pre></td>
1007
<tr class="uncovered">
1008
<td><pre><a name="line159">159</a> make_call(10, retry_on_except) {</pre></td>
1013
<tr class="uncovered">
1014
<td><pre><a name="line160">160</a> result = @conn.is_app_enabled(app, @secret)</pre></td>
1019
<tr class="uncovered">
1020
<td><pre><a name="line161">161</a> }</pre></td>
1025
<tr class="uncovered">
1026
<td><pre><a name="line162">162</a> </pre></td>
1031
<tr class="uncovered">
1032
<td><pre><a name="line163">163</a> if result == "true"</pre></td>
1037
<tr class="uncovered">
1038
<td><pre><a name="line164">164</a> return true</pre></td>
1043
<tr class="uncovered">
1044
<td><pre><a name="line165">165</a> else</pre></td>
1049
<tr class="uncovered">
1050
<td><pre><a name="line166">166</a> return false</pre></td>
1055
<tr class="uncovered">
1056
<td><pre><a name="line167">167</a> end</pre></td>
1061
<tr class="uncovered">
1062
<td><pre><a name="line168">168</a> end</pre></td>
1067
<tr class="inferred">
1068
<td><pre><a name="line169">169</a> </pre></td>
1074
<td><pre><a name="line170">170</a> def does_user_exist?(user, retry_on_except=true)</pre></td>
1079
<tr class="uncovered">
1080
<td><pre><a name="line171">171</a> result = ""</pre></td>
1085
<tr class="uncovered">
1086
<td><pre><a name="line172">172</a> make_call(10, retry_on_except) {</pre></td>
1091
<tr class="uncovered">
1092
<td><pre><a name="line173">173</a> result = @conn.does_user_exist(user, @secret)</pre></td>
1097
<tr class="uncovered">
1098
<td><pre><a name="line174">174</a> }</pre></td>
1103
<tr class="uncovered">
1104
<td><pre><a name="line175">175</a> </pre></td>
1109
<tr class="uncovered">
1110
<td><pre><a name="line176">176</a> return result</pre></td>
1115
<tr class="uncovered">
1116
<td><pre><a name="line177">177</a> end</pre></td>
1121
<tr class="inferred">
1122
<td><pre><a name="line178">178</a> </pre></td>
1128
<td><pre><a name="line179">179</a> def get_user_data(username, retry_on_except=true)</pre></td>
1133
<tr class="uncovered">
1134
<td><pre><a name="line180">180</a> result = ""</pre></td>
1139
<tr class="uncovered">
1140
<td><pre><a name="line181">181</a> make_call(10, retry_on_except) {</pre></td>
1145
<tr class="uncovered">
1146
<td><pre><a name="line182">182</a> result = @conn.get_user_data(username, @secret)</pre></td>
1151
<tr class="uncovered">
1152
<td><pre><a name="line183">183</a> }</pre></td>
1157
<tr class="uncovered">
1158
<td><pre><a name="line184">184</a> </pre></td>
1163
<tr class="uncovered">
1164
<td><pre><a name="line185">185</a> return result</pre></td>
1169
<tr class="uncovered">
1170
<td><pre><a name="line186">186</a> end</pre></td>
1175
<tr class="inferred">
1176
<td><pre><a name="line187">187</a> </pre></td>
1182
<td><pre><a name="line188">188</a> def get_app_data(appname, retry_on_except=true)</pre></td>
1187
<tr class="uncovered">
1188
<td><pre><a name="line189">189</a> result = ""</pre></td>
1193
<tr class="uncovered">
1194
<td><pre><a name="line190">190</a> make_call(10, retry_on_except) {</pre></td>
1199
<tr class="uncovered">
1200
<td><pre><a name="line191">191</a> result = @conn.get_app_data(appname, @secret)</pre></td>
1205
<tr class="uncovered">
1206
<td><pre><a name="line192">192</a> }</pre></td>
1211
<tr class="uncovered">
1212
<td><pre><a name="line193">193</a> </pre></td>
1217
<tr class="uncovered">
1218
<td><pre><a name="line194">194</a> return result</pre></td>
1223
<tr class="uncovered">
1224
<td><pre><a name="line195">195</a> end</pre></td>
1229
<tr class="inferred">
1230
<td><pre><a name="line196">196</a> </pre></td>
1236
<td><pre><a name="line197">197</a> def delete_instance(appname, host, port, retry_on_except=true)</pre></td>
1241
<tr class="uncovered">
1242
<td><pre><a name="line198">198</a> result = ""</pre></td>
1247
<tr class="uncovered">
1248
<td><pre><a name="line199">199</a> make_call(10, retry_on_except) {</pre></td>
1253
<tr class="uncovered">
1254
<td><pre><a name="line200">200</a> result = @conn.delete_instance(appname, host, port, @secret)</pre></td>
1259
<tr class="uncovered">
1260
<td><pre><a name="line201">201</a> }</pre></td>
1265
<tr class="uncovered">
1266
<td><pre><a name="line202">202</a> </pre></td>
1271
<tr class="uncovered">
1272
<td><pre><a name="line203">203</a> return result</pre></td>
1277
<tr class="uncovered">
1278
<td><pre><a name="line204">204</a> end</pre></td>
1283
<tr class="inferred">
1284
<td><pre><a name="line205">205</a> </pre></td>
1290
<td><pre><a name="line206">206</a> def get_all_apps(retry_on_except=true)</pre></td>
1295
<tr class="uncovered">
1296
<td><pre><a name="line207">207</a> all_apps = ""</pre></td>
1301
<tr class="uncovered">
1302
<td><pre><a name="line208">208</a> make_call(10, retry_on_except) {</pre></td>
1307
<tr class="uncovered">
1308
<td><pre><a name="line209">209</a> all_apps = @conn.get_all_apps(@secret)</pre></td>
1313
<tr class="uncovered">
1314
<td><pre><a name="line210">210</a> }</pre></td>
1319
<tr class="uncovered">
1320
<td><pre><a name="line211">211</a> </pre></td>
1325
<tr class="uncovered">
1326
<td><pre><a name="line212">212</a> app_list = all_apps.split(":")</pre></td>
1331
<tr class="uncovered">
1332
<td><pre><a name="line213">213</a> app_list = app_list - [app_list[0]] # first item is a dummy value</pre></td>
1337
<tr class="uncovered">
1338
<td><pre><a name="line214">214</a> return app_list</pre></td>
1343
<tr class="uncovered">
1344
<td><pre><a name="line215">215</a> end</pre></td>
1349
<tr class="inferred">
1350
<td><pre><a name="line216">216</a> </pre></td>
1356
<td><pre><a name="line217">217</a> def get_all_users(retry_on_except=true)</pre></td>
1361
<tr class="uncovered">
1362
<td><pre><a name="line218">218</a> all_users = ""</pre></td>
1367
<tr class="uncovered">
1368
<td><pre><a name="line219">219</a> make_call(10, retry_on_except) {</pre></td>
1373
<tr class="uncovered">
1374
<td><pre><a name="line220">220</a> all_users = @conn.get_all_users(@secret)</pre></td>
1379
<tr class="uncovered">
1380
<td><pre><a name="line221">221</a> }</pre></td>
1385
<tr class="uncovered">
1386
<td><pre><a name="line222">222</a> </pre></td>
1391
<tr class="uncovered">
1392
<td><pre><a name="line223">223</a> user_list = all_users.split(":")</pre></td>
1397
<tr class="uncovered">
1398
<td><pre><a name="line224">224</a> user_list = user_list - [user_list[0]] # first item is a dummy value</pre></td>
1403
<tr class="uncovered">
1404
<td><pre><a name="line225">225</a> return user_list</pre></td>
1409
<tr class="uncovered">
1410
<td><pre><a name="line226">226</a> end</pre></td>
1415
<tr class="inferred">
1416
<td><pre><a name="line227">227</a> </pre></td>
1422
<td><pre><a name="line228">228</a> def get_tar(appname, retry_on_except=true)</pre></td>
1427
<tr class="uncovered">
1428
<td><pre><a name="line229">229</a> result = ""</pre></td>
1433
<tr class="uncovered">
1434
<td><pre><a name="line230">230</a> make_call(300, retry_on_except) {</pre></td>
1439
<tr class="uncovered">
1440
<td><pre><a name="line231">231</a> result = @conn.get_tar(appname, @secret)</pre></td>
1445
<tr class="uncovered">
1446
<td><pre><a name="line232">232</a> }</pre></td>
1451
<tr class="uncovered">
1452
<td><pre><a name="line233">233</a> </pre></td>
1457
<tr class="uncovered">
1458
<td><pre><a name="line234">234</a> return result</pre></td>
1463
<tr class="uncovered">
1464
<td><pre><a name="line235">235</a> end</pre></td>
1469
<tr class="inferred">
1470
<td><pre><a name="line236">236</a> </pre></td>
1476
<td><pre><a name="line237">237</a> def add_instance(appname, host, port, retry_on_except=true)</pre></td>
1481
<tr class="uncovered">
1482
<td><pre><a name="line238">238</a> result = ""</pre></td>
1487
<tr class="uncovered">
1488
<td><pre><a name="line239">239</a> make_call(10, retry_on_except) {</pre></td>
1493
<tr class="uncovered">
1494
<td><pre><a name="line240">240</a> result = @conn.add_instance(appname, host, port, @secret)</pre></td>
1499
<tr class="uncovered">
1500
<td><pre><a name="line241">241</a> }</pre></td>
1505
<tr class="uncovered">
1506
<td><pre><a name="line242">242</a> </pre></td>
1511
<tr class="uncovered">
1512
<td><pre><a name="line243">243</a> if result == "true"</pre></td>
1517
<tr class="uncovered">
1518
<td><pre><a name="line244">244</a> return true</pre></td>
1523
<tr class="uncovered">
1524
<td><pre><a name="line245">245</a> else</pre></td>
1529
<tr class="uncovered">
1530
<td><pre><a name="line246">246</a> return false</pre></td>
1535
<tr class="uncovered">
1536
<td><pre><a name="line247">247</a> end</pre></td>
1541
<tr class="uncovered">
1542
<td><pre><a name="line248">248</a> end</pre></td>
1547
<tr class="inferred">
1548
<td><pre><a name="line249">249</a> </pre></td>
1553
<tr class="inferred">
1554
<td><pre><a name="line250">250</a> # This method sees if the given app is already uploaded in the system.</pre></td>
1559
<tr class="inferred">
1560
<td><pre><a name="line251">251</a> # TODO(cgb): compare this with is_app_enabled? above</pre></td>
1566
<td><pre><a name="line252">252</a> def is_app_uploaded?(appname)</pre></td>
1571
<tr class="uncovered">
1572
<td><pre><a name="line253">253</a> all_apps = get_all_apps()</pre></td>
1577
<tr class="uncovered">
1578
<td><pre><a name="line254">254</a> return app_list.include?(appname)</pre></td>
1583
<tr class="uncovered">
1584
<td><pre><a name="line255">255</a> end</pre></td>
1589
<tr class="inferred">
1590
<td><pre><a name="line256">256</a> </pre></td>
1596
<td><pre><a name="line257">257</a> def is_user_cloud_admin?(user, retry_on_except=true)</pre></td>
1601
<tr class="uncovered">
1602
<td><pre><a name="line258">258</a> result = ""</pre></td>
1607
<tr class="uncovered">
1608
<td><pre><a name="line259">259</a> make_call(10, retry_on_except) {</pre></td>
1613
<tr class="uncovered">
1614
<td><pre><a name="line260">260</a> result = @conn.is_user_cloud_admin(user, @secret)</pre></td>
1619
<tr class="uncovered">
1620
<td><pre><a name="line261">261</a> }</pre></td>
1625
<tr class="uncovered">
1626
<td><pre><a name="line262">262</a> </pre></td>
1631
<tr class="uncovered">
1632
<td><pre><a name="line263">263</a> if result == "true"</pre></td>
1637
<tr class="uncovered">
1638
<td><pre><a name="line264">264</a> return true</pre></td>
1643
<tr class="uncovered">
1644
<td><pre><a name="line265">265</a> else</pre></td>
1649
<tr class="uncovered">
1650
<td><pre><a name="line266">266</a> return false</pre></td>
1655
<tr class="uncovered">
1656
<td><pre><a name="line267">267</a> end</pre></td>
1661
<tr class="uncovered">
1662
<td><pre><a name="line268">268</a> end</pre></td>
1667
<tr class="inferred">
1668
<td><pre><a name="line269">269</a> </pre></td>
1673
<tr class="inferred">
1674
<td><pre><a name="line270">270</a> # This method returns an array of strings, each corresponding to a</pre></td>
1679
<tr class="inferred">
1680
<td><pre><a name="line271">271</a> # ip:port that the given app is hosted at.</pre></td>
1686
<td><pre><a name="line272">272</a> def get_hosts_for_app(appname)</pre></td>
1691
<tr class="uncovered">
1692
<td><pre><a name="line273">273</a> app_data = get_app_data(appname)</pre></td>
1697
<tr class="uncovered">
1698
<td><pre><a name="line274">274</a> hosts = app_data.scan(/\nhosts:([\d\.|:]+)\n/).flatten.to_s.split(":")</pre></td>
1703
<tr class="uncovered">
1704
<td><pre><a name="line275">275</a> ports = app_data.scan(/\nports: ([\d|:]+)\n/).flatten.to_s.split(":")</pre></td>
1709
<tr class="uncovered">
1710
<td><pre><a name="line276">276</a> </pre></td>
1715
<tr class="uncovered">
1716
<td><pre><a name="line277">277</a> host_list = []</pre></td>
1721
<tr class="uncovered">
1722
<td><pre><a name="line278">278</a> </pre></td>
1727
<tr class="uncovered">
1728
<td><pre><a name="line279">279</a> hosts.each_index { |i|</pre></td>
1733
<tr class="uncovered">
1734
<td><pre><a name="line280">280</a> host_list << "#{hosts[i]}:#{ports[i]}"</pre></td>
1739
<tr class="uncovered">
1740
<td><pre><a name="line281">281</a> }</pre></td>
1745
<tr class="uncovered">
1746
<td><pre><a name="line282">282</a> </pre></td>
1751
<tr class="uncovered">
1752
<td><pre><a name="line283">283</a> return host_list</pre></td>
1757
<tr class="uncovered">
1758
<td><pre><a name="line284">284</a> end</pre></td>
1763
<tr class="inferred">
1764
<td><pre><a name="line285">285</a> </pre></td>
1769
<tr class="inferred">
1770
<td><pre><a name="line286">286</a> # This method finds the first user who is a cloud administrator. Since the</pre></td>
1775
<tr class="inferred">
1776
<td><pre><a name="line287">287</a> # UserAppServer doesn't provide a function that does this for us, we have</pre></td>
1781
<tr class="inferred">
1782
<td><pre><a name="line288">288</a> # to get a list of all the users that exist and individually query the</pre></td>
1787
<tr class="inferred">
1788
<td><pre><a name="line289">289</a> # UAServer to find out who the cloud admin is.</pre></td>
1793
<tr class="inferred">
1794
<td><pre><a name="line290">290</a> # TODO(cgb): Maybe cache who the cloud admin is to speed up future queries?</pre></td>
1800
<td><pre><a name="line291">291</a> def get_cloud_admin()</pre></td>
1805
<tr class="uncovered">
1806
<td><pre><a name="line292">292</a> user_list = get_all_users()</pre></td>
1811
<tr class="uncovered">
1812
<td><pre><a name="line293">293</a> </pre></td>
1817
<tr class="uncovered">
1818
<td><pre><a name="line294">294</a> user_list.each { |user|</pre></td>
1823
<tr class="uncovered">
1824
<td><pre><a name="line295">295</a> return user if is_user_cloud_admin?(user)</pre></td>
1829
<tr class="uncovered">
1830
<td><pre><a name="line296">296</a> }</pre></td>
1835
<tr class="uncovered">
1836
<td><pre><a name="line297">297</a> </pre></td>
1841
<tr class="uncovered">
1842
<td><pre><a name="line298">298</a> raise Exception.new("Couldn't find a cloud administrator")</pre></td>
1847
<tr class="uncovered">
1848
<td><pre><a name="line299">299</a> end</pre></td>
1853
<tr class="uncovered">
1854
<td><pre><a name="line300">300</a> end</pre></td>
1860
<p>Generated on Fri Feb 17 23:21:44 -0800 2012 with <a href="http://github.com/relevance/rcov">rcov 0.9.8</a></p>