fuel-astute/coverage/rcov/lib-astute-cobbler_rb.html

960 lines
42 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'>
<head>
<title>lib/astute/cobbler.rb</title>
<link href="./assets/0.2.3/screen.css" media="all" rel="stylesheet" type="text/css" />
<link href="./assets/0.2.3/print.css" media="print" rel="stylesheet" type="text/css" />
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
<script type="text/javascript" src="./assets/0.2.3/rcov.js"></script>
</head>
<body>
<h1>Astute C0 Coverage Information - Simploco - RCov</h1>
<h2>lib/astute/cobbler.rb</h2>
<div class="report_table_wrapper">
<table class='report' id='report_table'>
<thead>
<tr>
<th class="left_align">Name</th>
<th class="right_align">Total Lines</th>
<th class="right_align">Lines of Code</th>
<th class="left_align">Total Coverage</th>
<th class="left_align">Code Coverage</th>
</tr>
</thead>
<tbody>
<tr>
<td class="left_align"><a href="lib-astute-cobbler_rb.html">lib/astute/cobbler.rb</a></td>
<td class='right_align'><tt>300</tt></td>
<td class='right_align'><tt>129</tt></td>
<td class="left_align"><div class="percent_graph_legend"><tt class=''>95.00%</tt></div>
<div class="percent_graph">
<div class="covered" style="width:95px"></div>
<div class="uncovered" style="width:5px"></div>
</div></td>
<td class="left_align"><div class="percent_graph_legend"><tt class=''>88.37%</tt></div>
<div class="percent_graph">
<div class="covered" style="width:88px"></div>
<div class="uncovered" style="width:12px"></div>
</div></td>
</tr>
</tbody>
</table>
</div>
<h3>Key</h3>
<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>
<h3>Coverage Details</h3>
<table class="details">
<tbody>
<tr class="inferred">
<td><pre><a name="line2">2</a> # Copyright 2013 Mirantis, Inc.</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line3">3</a> #</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line4">4</a> # Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line5">5</a> # not use this file except in compliance with the License. You may obtain</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line6">6</a> # a copy of the License at</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line7">7</a> #</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line8">8</a> # http://www.apache.org/licenses/LICENSE-2.0</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line9">9</a> #</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line10">10</a> # Unless required by applicable law or agreed to in writing, software</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line11">11</a> # distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line12">12</a> # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line13">13</a> # License for the specific language governing permissions and limitations</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line14">14</a> # under the License.</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line15">15</a> </pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line16">16</a> </pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line17">17</a> require 'xmlrpc/client'</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line18">18</a> </pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line19">19</a> module Astute</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line20">20</a> module Provision</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line21">21</a> class CobblerError &lt; RuntimeError; end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line22">22</a> </pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line23">23</a> class Cobbler</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line24">24</a> </pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line25">25</a> attr_reader :remote, :token</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line26">26</a> </pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line27">27</a> def initialize(o={})</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line28">28</a> Astute.logger.debug(&quot;Cobbler options: #{o.inspect}&quot;)</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line29">29</a> </pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line30">30</a> if (match = /^http:\/\/([^:]+?):?(\d+)?(\/.+)/.match(o['url']))</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line31">31</a> host = match[1]</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line32">32</a> port = match[2] || '80'</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line33">33</a> path = match[3]</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line34">34</a> else</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line35">35</a> host = o['host'] || 'localhost'</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line36">36</a> port = o['port'] || '80'</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line37">37</a> path = o['path'] || '/cobbler_api'</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line38">38</a> end</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line39">39</a> username = o['username'] || 'cobbler'</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line40">40</a> password = o['password'] || 'cobbler'</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line41">41</a> </pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line42">42</a> Astute.logger.debug(&quot;Connecting to cobbler with: host: #{host} port: #{port} path: #{path}&quot;)</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line43">43</a> @remote = XMLRPC::Client.new(host, path, port)</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line44">44</a> Astute.logger.debug(&quot;Trying to log in to cobbler with username: #{username}, password: #{password}&quot;)</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line45">45</a> @token = remote.call('login', username, password)</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line46">46</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line47">47</a> </pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line48">48</a> def item_from_hash(what, name, data, opts = {})</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line49">49</a> options = {</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line50">50</a> :item_preremove =&gt; true,</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line51">51</a> }.merge!(opts)</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line52">52</a> cobsh = Cobsh.new(data.merge({'what' =&gt; what, 'name' =&gt; name}))</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line53">53</a> cobblerized = cobsh.cobblerized</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line54">54</a> </pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line55">55</a> Astute.logger.debug(&quot;Creating/editing item from hash: #{cobsh.inspect}&quot;)</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line56">56</a> remove_item(what, name) if options[:item_preremove]</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line57">57</a> # get existent item id or create new one</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line58">58</a> item_id = get_item_id(what, name)</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line59">59</a> </pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line60">60</a> # defining all item options</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line61">61</a> cobblerized.each do |opt, value|</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line62">62</a> next if opt == 'interfaces'</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line63">63</a> Astute.logger.debug(&quot;Setting #{what} #{name} opt: #{opt}=#{value}&quot;)</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line64">64</a> remote.call('modify_item', what, item_id, opt, value, token)</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line65">65</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line66">66</a> </pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line67">67</a> # defining system interfaces</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line68">68</a> if what == 'system' &amp;&amp; cobblerized.has_key?('interfaces')</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line69">69</a> Astute.logger.debug(&quot;Defining system interfaces #{name} #{cobblerized['interfaces']}&quot;)</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line70">70</a> remote.call('modify_system', item_id, 'modify_interface',</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line71">71</a> cobblerized['interfaces'], token)</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line72">72</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line73">73</a> </pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line74">74</a> # save item into cobbler database</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line75">75</a> Astute.logger.debug(&quot;Saving #{what} #{name}&quot;)</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line76">76</a> remote.call('save_item', what, item_id, token)</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line77">77</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line78">78</a> </pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line79">79</a> def remove_item(what, name, recursive=true)</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line80">80</a> remote.call('remove_item', what, name, token, recursive) if item_exists(what, name)</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line81">81</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line82">82</a> </pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line83">83</a> def remove_system(name)</pre></td>
</tr>
<tr class="uncovered">
<td><pre><a name="line84">84</a> remove_item('system', name)</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line85">85</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line86">86</a> </pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line87">87</a> def item_exists(what, name)</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line88">88</a> remote.call('has_item', what, name)</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line89">89</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line90">90</a> </pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line91">91</a> def system_exists(name)</pre></td>
</tr>
<tr class="uncovered">
<td><pre><a name="line92">92</a> item_exists('system', name)</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line93">93</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line94">94</a> </pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line95">95</a> def get_item_id(what, name)</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line96">96</a> if item_exists(what, name)</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line97">97</a> item_id = remote.call('get_item_handle', what, name, token)</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line98">98</a> else</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line99">99</a> item_id = remote.call('new_item', what, token)</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line100">100</a> remote.call('modify_item', what, item_id, 'name', name, token)</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line101">101</a> end</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line102">102</a> item_id</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line103">103</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line104">104</a> </pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line105">105</a> def sync</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line106">106</a> remote.call('sync', token)</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line107">107</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line108">108</a> </pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line109">109</a> def power(name, action)</pre></td>
</tr>
<tr class="uncovered">
<td><pre><a name="line110">110</a> options = {&quot;systems&quot; =&gt; [name], &quot;power&quot; =&gt; action}</pre></td>
</tr>
<tr class="uncovered">
<td><pre><a name="line111">111</a> remote.call('background_power_system', options, token)</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line112">112</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line113">113</a> </pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line114">114</a> def power_on(name)</pre></td>
</tr>
<tr class="uncovered">
<td><pre><a name="line115">115</a> power(name, 'on')</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line116">116</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line117">117</a> </pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line118">118</a> def power_off(name)</pre></td>
</tr>
<tr class="uncovered">
<td><pre><a name="line119">119</a> power(name, 'off')</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line120">120</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line121">121</a> </pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line122">122</a> def power_reboot(name)</pre></td>
</tr>
<tr class="uncovered">
<td><pre><a name="line123">123</a> power(name, 'reboot')</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line124">124</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line125">125</a> </pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line126">126</a> def event_status(event_id)</pre></td>
</tr>
<tr class="uncovered">
<td><pre><a name="line127">127</a> remote.call('get_task_status', event_id)</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line128">128</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line129">129</a> </pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line130">130</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line131">131</a> </pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line132">132</a> class Cobsh &lt; ::Hash</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line133">133</a> ALIASES = {</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line134">134</a> 'ks_meta' =&gt; ['ksmeta'],</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line135">135</a> 'mac_address' =&gt; ['mac'],</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line136">136</a> 'ip_address' =&gt; ['ip'],</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line137">137</a> }</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line138">138</a> </pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line139">139</a> # these fields can be get from the cobbler code</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line140">140</a> # you can just import cobbler.item_distro.FIELDS</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line141">141</a> # or cobbler.item_system.FIELDS</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line142">142</a> FIELDS = {</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line143">143</a> 'system' =&gt; {</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line144">144</a> 'fields' =&gt; [</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line145">145</a> 'name', 'owners', 'profile', 'image', 'status', 'kernel_options',</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line146">146</a> 'kernel_options_post', 'ks_meta', 'enable_gpxe', 'proxy',</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line147">147</a> 'netboot_enabled', 'kickstart', 'comment', 'server',</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line148">148</a> 'virt_path', 'virt_type', 'virt_cpus', 'virt_file_size',</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line149">149</a> 'virt_disk_driver', 'virt_ram', 'virt_auto_boot', 'power_type',</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line150">150</a> 'power_address', 'power_user', 'power_pass', 'power_id',</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line151">151</a> 'hostname', 'gateway', 'name_servers', 'name_servers_search',</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line152">152</a> 'ipv6_default_device', 'ipv6_autoconfiguration', 'mgmt_classes',</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line153">153</a> 'mgmt_parameters', 'boot_files', 'fetchable_files',</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line154">154</a> 'template_files', 'redhat_management_key', 'redhat_management_server',</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line155">155</a> 'repos_enabled', 'ldap_enabled', 'ldap_type', 'monit_enabled',</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line156">156</a> ],</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line157">157</a> 'interfaces_fields' =&gt; [</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line158">158</a> 'mac_address', 'mtu', 'ip_address', 'interface_type',</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line159">159</a> 'interface_master', 'bonding_opts', 'bridge_opts',</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line160">160</a> 'management', 'static', 'netmask', 'dhcp_tag', 'dns_name',</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line161">161</a> 'static_routes', 'virt_bridge', 'ipv6_address', 'ipv6_secondaries',</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line162">162</a> 'ipv6_mtu', 'ipv6_static_routes', 'ipv6_default_gateway'</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line163">163</a> ],</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line164">164</a> 'special' =&gt; ['interfaces', 'interfaces_extra']</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line165">165</a> },</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line166">166</a> 'profile' =&gt; {</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line167">167</a> 'fields' =&gt; [</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line168">168</a> 'name', 'owners', 'distro', 'parent', 'enable_gpxe',</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line169">169</a> 'enable_menu', 'kickstart', 'kernel_options', 'kernel_options_post',</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line170">170</a> 'ks_meta', 'proxy', 'repos', 'comment', 'virt_auto_boot',</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line171">171</a> 'virt_cpus', 'virt_file_size', 'virt_disk_driver',</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line172">172</a> 'virt_ram', 'virt_type', 'virt_path', 'virt_bridge',</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line173">173</a> 'dhcp_tag', 'server', 'name_servers', 'name_servers_search',</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line174">174</a> 'mgmt_classes', 'mgmt_parameters', 'boot_files', 'fetchable_files',</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line175">175</a> 'template_files', 'redhat_management_key', 'redhat_management_server'</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line176">176</a> ]</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line177">177</a> },</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line178">178</a> 'distro' =&gt; {</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line179">179</a> 'fields' =&gt; ['name', 'owners', 'kernel', 'initrd', 'kernel_options',</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line180">180</a> 'kernel_options_post', 'ks_meta', 'arch', 'breed',</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line181">181</a> 'os_version', 'comment', 'mgmt_classes', 'boot_files',</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line182">182</a> 'fetchable_files', 'template_files', 'redhat_management_key',</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line183">183</a> 'redhat_management_server']</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line184">184</a> }</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line185">185</a> </pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line186">186</a> }</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line187">187</a> </pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line188">188</a> def initialize(h)</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line189">189</a> Astute.logger.debug(&quot;Cobsh is initialized with: #{h.inspect}&quot;)</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line190">190</a> raise CobblerError, &quot;Cobbler hash must have 'name' key&quot; unless h.has_key? 'name'</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line191">191</a> raise CobblerError, &quot;Cobbler hash must have 'what' key&quot; unless h.has_key? 'what'</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line192">192</a> raise CobblerError, &quot;Unsupported 'what' value&quot; unless FIELDS.has_key? h['what']</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line193">193</a> h.each{|k, v| store(k, v)}</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line194">194</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line195">195</a> </pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line196">196</a> </pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line197">197</a> def cobblerized</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line198">198</a> Astute.logger.debug(&quot;Cobblerizing hash: #{inspect}&quot;)</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line199">199</a> ch = {}</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line200">200</a> ks_meta = &quot;&quot;</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line201">201</a> </pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line202">202</a> each do |k, v|</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line203">203</a> k = aliased(k)</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line204">204</a> if ch.has_key?(k) &amp;&amp; ch[k] == v</pre></td>
</tr>
<tr class="uncovered">
<td><pre><a name="line205">205</a> next</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line206">206</a> elsif ch.has_key?(k)</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line207">207</a> raise CobblerError, &quot;Wrong cobbler data: #{k} is duplicated&quot;</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line208">208</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line209">209</a> </pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line210">210</a> # skiping not valid item options</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line211">211</a> unless valid_field?(k)</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line212">212</a> Astute.logger.debug(&quot;Key #{k} is not valid. Will be skipped.&quot;)</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line213">213</a> next</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line214">214</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line215">215</a> </pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line216">216</a> # here we don't store ks_meta directly in ch (cobblerized hash)</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line217">217</a> # instead we just append ks_meta value to store it later</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line218">218</a> if k == 'ks_meta'</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line219">219</a> if v.kind_of?(Hash)</pre></td>
</tr>
<tr class="uncovered">
<td><pre><a name="line220">220</a> v.each do |ks_meta_key, ks_meta_value|</pre></td>
</tr>
<tr class="uncovered">
<td><pre><a name="line221">221</a> ks_meta &lt;&lt; &quot; #{ks_meta_key}=#{ks_meta_value}&quot;</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line222">222</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line223">223</a> elsif v.kind_of?(String)</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line224">224</a> ks_meta &lt;&lt; &quot; #{v}&quot;</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line225">225</a> else</pre></td>
</tr>
<tr class="uncovered">
<td><pre><a name="line226">226</a> raise &quot;Wrong ks_meta format. It must be Hash or String&quot;</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line227">227</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line228">228</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line229">229</a> </pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line230">230</a> # special handling for system interface fields</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line231">231</a> # which are the only objects in cobbler that will ever work this way</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line232">232</a> if k == 'interfaces'</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line233">233</a> ch.store('interfaces', cobblerized_interfaces)</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line234">234</a> next</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line235">235</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line236">236</a> </pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line237">237</a> # here we convert interfaces_extra options into ks_meta format</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line238">238</a> if k == 'interfaces_extra'</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line239">239</a> ks_meta &lt;&lt; cobblerized_interfaces_extra</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line240">240</a> next</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line241">241</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line242">242</a> </pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line243">243</a> ch.store(k, v)</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line244">244</a> end # each do |k, v|</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line245">245</a> ch.store('ks_meta', ks_meta.strip) if ks_meta.strip.length &gt; 0</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line246">246</a> ch</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line247">247</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line248">248</a> </pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line249">249</a> def aliased(k)</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line250">250</a> # converting 'foo-bar' keys into 'foo_bar' keys</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line251">251</a> k1 = k.gsub(/-/,'_')</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line252">252</a> # converting orig keys into alias keys</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line253">253</a> # example: 'ksmeta' into 'ks_meta'</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line254">254</a> k2 = ALIASES.each_key.select{|ak| ALIASES[ak].include?(k1)}[0] || k1</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line255">255</a> Astute.logger.debug(&quot;Key #{k} aliased with #{k2}&quot;) if k != k2</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line256">256</a> k2</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line257">257</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line258">258</a> </pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line259">259</a> def valid_field?(k)</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line260">260</a> (FIELDS[fetch('what')]['fields'].include?(k) or</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line261">261</a> (FIELDS[fetch('what')]['special'] or []).include?(k))</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line262">262</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line263">263</a> </pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line264">264</a> def valid_interface_field?(k)</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line265">265</a> (FIELDS[fetch('what')]['interfaces_fields'] or []).include?(k)</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line266">266</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line267">267</a> </pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line268">268</a> def cobblerized_interfaces</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line269">269</a> interfaces = {}</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line270">270</a> fetch('interfaces').each do |iname, ihash|</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line271">271</a> ihash.each do |iopt, ivalue|</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line272">272</a> iopt = aliased(iopt)</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line273">273</a> if interfaces.has_key?(&quot;#{iopt}-#{iname}&quot;)</pre></td>
</tr>
<tr class="uncovered">
<td><pre><a name="line274">274</a> raise CobblerError, &quot;Wrong interface cobbler data: #{iopt} is duplicated&quot;</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line275">275</a> end</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line276">276</a> unless valid_interface_field?(iopt)</pre></td>
</tr>
<tr class="uncovered">
<td><pre><a name="line277">277</a> Astute.logger.debug(&quot;Interface key #{iopt} is not valid. Skipping&quot;)</pre></td>
</tr>
<tr class="uncovered">
<td><pre><a name="line278">278</a> next</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line279">279</a> end</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line280">280</a> Astute.logger.debug(&quot;Defining interfaces[#{iopt}-#{iname}] = #{ivalue}&quot;)</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line281">281</a> interfaces[&quot;#{iopt}-#{iname}&quot;] = ivalue</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line282">282</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line283">283</a> end</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line284">284</a> interfaces</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line285">285</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line286">286</a> </pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line287">287</a> def cobblerized_interfaces_extra</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line288">288</a> # here we just want to convert interfaces_extra into ks_meta</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line289">289</a> interfaces_extra_str = &quot;&quot;</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line290">290</a> fetch('interfaces_extra').each do |iname, iextra|</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line291">291</a> iextra.each do |k, v|</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line292">292</a> Astute.logger.debug(&quot;Adding into ks_meta interface_extra_#{iname}_#{k}=#{v}&quot;)</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line293">293</a> interfaces_extra_str &lt;&lt; &quot; interface_extra_#{iname}_#{k}=#{v}&quot;</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line294">294</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line295">295</a> end</pre></td>
</tr>
<tr class="marked">
<td><pre><a name="line296">296</a> interfaces_extra_str</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line297">297</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line298">298</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line299">299</a> </pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line300">300</a> end</pre></td>
</tr>
<tr class="inferred">
<td><pre><a name="line301">301</a> end</pre></td>
</tr>
</tbody>
</table>
<p>Generated on 2013-07-19 12:05:31 +0400 with <a href="https://github.com/fguillen/simplecov-rcov">SimpleCov-RCov 0.2.3</a></p>
</body>
</html>