Early draft version
This commit is contained in:
parent
ef034d0a0b
commit
e58c8cfca6
|
@ -0,0 +1,44 @@
|
|||
PATH
|
||||
remote: .
|
||||
specs:
|
||||
astute (0.0.1)
|
||||
activesupport (= 3.0.10)
|
||||
mcollective-client (~> 2.2.4)
|
||||
rest-client (~> 1.6.7)
|
||||
symboltable (= 1.0.2)
|
||||
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
activesupport (3.0.10)
|
||||
diff-lcs (1.2.4)
|
||||
json (1.8.0)
|
||||
mcollective-client (2.2.4)
|
||||
json
|
||||
stomp
|
||||
systemu
|
||||
metaclass (0.0.1)
|
||||
mime-types (1.23)
|
||||
mocha (0.13.3)
|
||||
metaclass (~> 0.0.1)
|
||||
rest-client (1.6.7)
|
||||
mime-types (>= 1.16)
|
||||
rspec (2.13.0)
|
||||
rspec-core (~> 2.13.0)
|
||||
rspec-expectations (~> 2.13.0)
|
||||
rspec-mocks (~> 2.13.0)
|
||||
rspec-core (2.13.1)
|
||||
rspec-expectations (2.13.0)
|
||||
diff-lcs (>= 1.1.3, < 2.0)
|
||||
rspec-mocks (2.13.1)
|
||||
stomp (1.2.11)
|
||||
symboltable (1.0.2)
|
||||
systemu (2.5.2)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
astute!
|
||||
mocha (= 0.13.3)
|
||||
rspec (= 2.13.0)
|
|
@ -0,0 +1,2 @@
|
|||
* CLI client should be provided for API (with all available operations supported)
|
||||
* Component to be used for orchestration transport layer (MComponent for orchestration transport layer should be pluggable. In addition to default option (MCollective) user should be able to prepare custom plugin (to use Salt, SSH, python Fabric etc) and rComponent for orchestration transport layer should be pluggable. In addition to default option (MCollective) user should be able to prepare custom plugin (to use Salt, SSH, python Fabric etc) and rCollective by default):
|
|
@ -11,8 +11,9 @@ Gem::Specification.new do |s|
|
|||
s.email = ['mscherbakov@mirantis.com']
|
||||
|
||||
s.add_dependency 'activesupport', '3.0.10'
|
||||
s.add_dependency 'mcollective-client', '2.3.1'
|
||||
s.add_dependency 'mcollective-client', '~> 2.2.4' #'2.3.1'
|
||||
s.add_dependency 'symboltable', '1.0.2'
|
||||
s.add_dependency 'rest-client', '~> 1.6.7'
|
||||
|
||||
s.add_development_dependency 'rspec', '2.13.0'
|
||||
s.add_development_dependency 'mocha', '0.13.3'
|
||||
|
|
|
@ -0,0 +1,207 @@
|
|||
##Network section of node configuration
|
||||
node_01: &node_01
|
||||
role: primary-controller
|
||||
network_data:
|
||||
- name: public
|
||||
ip: 10.108.2.94
|
||||
dev: eth0
|
||||
netmask: 255.255.255.0
|
||||
gateway: 10.108.2.1
|
||||
- name:
|
||||
- management
|
||||
- storage
|
||||
ip: 10.20.1.94
|
||||
dev: eth1
|
||||
- name: fixed
|
||||
dev: eth2
|
||||
public_br: br-ex
|
||||
internal_br: br-mgmt
|
||||
id: 01
|
||||
default_gateway: 10.20.0.1
|
||||
uid: 01
|
||||
mac: 52:54:00:de:bc:77
|
||||
name: controller-01
|
||||
ip: 10.108.2.94
|
||||
profile: centos-x86_64
|
||||
fqdn: controller-01.domain.tld
|
||||
power_type: ssh
|
||||
power_user: root
|
||||
power_pass: /root/.ssh/bootstrap.rsa
|
||||
power_address: 10.108.2.94
|
||||
netboot_enabled: '1'
|
||||
name_servers: ! '"10.108.2.2"'
|
||||
ks_meta:
|
||||
ks_spaces: '"[
|
||||
{\"type\": \"disk\", \"id\": \"disk/by-path/pci-0000:00:01.1-scsi-0:0:0:0\",
|
||||
\"volumes\":
|
||||
[
|
||||
{\"mount\": \"/boot\", \"type\": \"partition\", \"size\": 200 },
|
||||
{\"type\": \"mbr\"}, {\"size\": 7989, \"type\": \"pv\", \"vg\": \"os\"}
|
||||
],
|
||||
\"size\": 8190
|
||||
},
|
||||
{\"type\": \"vg\", \"id\": \"os\", \"volumes\":
|
||||
[
|
||||
{\"mount\": \"/\", \"type\": \"lv\", \"name\": \"root\", \"size\": 7166 },
|
||||
{\"mount\":\"swap\", \"type\": \"lv\", \"name\": \"swap\", \"size\": 1024 }
|
||||
]
|
||||
}
|
||||
]"'
|
||||
mco_enable: 1
|
||||
mco_vhost: mcollective
|
||||
mco_pskey: unset
|
||||
mco_user: mcollective
|
||||
puppet_enable: 0
|
||||
install_log_2_syslog: 1
|
||||
mco_password: marionette
|
||||
puppet_auto_setup: 1
|
||||
puppet_master: fuel.domain.tld
|
||||
mco_auto_setup: 1
|
||||
auth_key: ! '""'
|
||||
puppet_version: 2.7.19
|
||||
mco_connector: rabbitmq
|
||||
mco_host: 10.108.2.2
|
||||
interfaces:
|
||||
eth0:
|
||||
ip_address: 10.108.2.94
|
||||
netmask: 255.255.255.0
|
||||
dns_name: controller-01.domain.tld
|
||||
static: '1'
|
||||
mac_address: 52:54:00:de:bc:77
|
||||
interfaces_extra:
|
||||
eth2:
|
||||
onboot: 'no'
|
||||
peerdns: 'no'
|
||||
eth1:
|
||||
onboot: 'no'
|
||||
peerdns: 'no'
|
||||
eth0:
|
||||
onboot: 'yes'
|
||||
peerdns: 'no'
|
||||
meta:
|
||||
memory:
|
||||
total: 778694656
|
||||
interfaces:
|
||||
- mac: 64:D8:E1:F6:66:43
|
||||
max_speed: 100
|
||||
name: eth2
|
||||
ip: 10.22.0.94
|
||||
netmask: 255.255.255.0
|
||||
current_speed: 100
|
||||
- mac: 64:C8:E2:3B:FD:6E
|
||||
max_speed: 100
|
||||
name: eth1
|
||||
ip: 10.21.0.94
|
||||
netmask: 255.255.255.0
|
||||
current_speed: 100
|
||||
- name: eth0
|
||||
ip: 10.20.0.94
|
||||
netmask: 255.255.255.0
|
||||
mac: 64:43:7B:CA:56:DD
|
||||
max_speed: 100
|
||||
current_speed: 100
|
||||
disks:
|
||||
- model: VBOX HARDDISK
|
||||
disk: disk/by-path/pci-0000:00:0d.0-scsi-2:0:0:0
|
||||
name: sdc
|
||||
size: 2411724800000
|
||||
- model: VBOX HARDDISK
|
||||
disk: disk/by-path/pci-0000:00:0d.0-scsi-1:0:0:0
|
||||
name: sdb
|
||||
size: 536870912000
|
||||
- model: VBOX HARDDISK
|
||||
disk: disk/by-path/pci-0000:00:0d.0-scsi-0:0:0:0
|
||||
name: sda
|
||||
size: 17179869184
|
||||
system:
|
||||
serial: '0'
|
||||
version: '1.2'
|
||||
fqdn: bootstrap
|
||||
family: Virtual Machine
|
||||
manufacturer: VirtualBox
|
||||
cpu:
|
||||
real: 0
|
||||
total: 1
|
||||
spec:
|
||||
- model: Intel(R) Core(TM)2 Duo CPU P8600 @ 2.40GHz
|
||||
frequency: 2397
|
||||
error_type:
|
||||
|
||||
nodes:
|
||||
- <<: *node_01
|
||||
|
||||
attributes:
|
||||
use_cow_images: true
|
||||
libvirt_type: qemu
|
||||
dns_nameservers:
|
||||
- 10.20.0.1
|
||||
verbose: true|false
|
||||
debug: true|false
|
||||
auto_assign_floating_ip: true
|
||||
start_guests_on_host_boot: true
|
||||
create_networks: true
|
||||
compute_scheduler_driver: nova.scheduler.multi.MultiScheduler
|
||||
quantum: true
|
||||
master_hostname: controller-01
|
||||
nagios: false
|
||||
proj_name: test
|
||||
nagios_master: fuelweb.domain.tld
|
||||
management_vip: 10.108.2.2
|
||||
public_vip: 10.108.2.2
|
||||
#Nova-network part, gets ignored if $quantum = `false`
|
||||
novanetwork_parameters:
|
||||
fixed_network_range: CIDR
|
||||
vlan_start: <1-1024>
|
||||
network_manager: String
|
||||
network_size: <Integer>
|
||||
#Quantum part, used only if quantum='true'
|
||||
quantum_parameters:
|
||||
tenant_network_type: gre
|
||||
segment_range: ! '300:500'
|
||||
metadata_proxy_shared_secret: quantum
|
||||
mysql:
|
||||
root_password: root
|
||||
glance:
|
||||
db_password: glance
|
||||
user_password: glance
|
||||
swift:
|
||||
user_password: swift_pass
|
||||
nova:
|
||||
db_password: nova
|
||||
user_password: nova
|
||||
access:
|
||||
password: admin
|
||||
user: admin
|
||||
tenant: admin
|
||||
email: admin@example.org
|
||||
keystone:
|
||||
db_password: keystone
|
||||
admin_token: nova
|
||||
quantum_access:
|
||||
user_password: quantum
|
||||
db_password: quantum
|
||||
rabbit:
|
||||
password: nova
|
||||
user: nova
|
||||
cinder:
|
||||
password: cinder
|
||||
user: cinder
|
||||
floating_network_range:
|
||||
- 10.20.0.100
|
||||
base_syslog:
|
||||
syslog_port: '514'
|
||||
syslog_server: 10.108.2.2
|
||||
syslog:
|
||||
syslog_port: '514'
|
||||
syslog_transport: udp
|
||||
syslog_server: ''
|
||||
deployment_id: 1
|
||||
deployment_mode: ha
|
||||
deployment_source: cli
|
||||
deployment_engine: nailyfact
|
||||
|
||||
|
||||
engine:
|
||||
url: http://localhost/cobbler_api
|
||||
username: cobbler
|
||||
password: cobbler
|
|
@ -23,6 +23,7 @@ require 'optparse'
|
|||
require 'yaml'
|
||||
require 'astute'
|
||||
require 'astute/version'
|
||||
require 'astute/enviroment'
|
||||
|
||||
class ConsoleReporter
|
||||
def report(msg)
|
||||
|
@ -63,7 +64,8 @@ end
|
|||
reporter = ConsoleReporter.new
|
||||
Astute.logger = Logger.new(STDOUT) if opts[:verbose]
|
||||
|
||||
environment = YAML.load_file(opts[:filename])
|
||||
environment = Astute::Enviroment.load_file(opts[:filename])
|
||||
p environment['nodes'][0]['ip']
|
||||
|
||||
deploy_engine = nil
|
||||
|
||||
|
@ -84,7 +86,8 @@ def console_provision(orchestrator, reporter, environment)
|
|||
res = orchestrator.fast_provision(reporter, environment['engine'], environment['nodes'])
|
||||
if res == Astute::SUCCESS
|
||||
puts "restarting nodes..."
|
||||
sleep 5
|
||||
sleep 25
|
||||
puts "start watching progress"
|
||||
res = orchestrator.provision(reporter, environment['task_uuid'], environment['nodes'])
|
||||
end
|
||||
res
|
||||
|
|
Binary file not shown.
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"result": {
|
||||
"covered_percent": 91.2
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,12 @@
|
|||
/* Hide controls */
|
||||
|
||||
body {
|
||||
color: #000000;
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
/* Hide controls */
|
||||
|
||||
div.filters {
|
||||
display: none;
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
function toggleCode( id ) {
|
||||
if ( document.getElementById ) {
|
||||
elem = document.getElementById( id );
|
||||
} else if ( document.all ) {
|
||||
elem = eval( "document.all." + id );
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
elemStyle = elem.style;
|
||||
|
||||
if ( elemStyle.display != "block" ) {
|
||||
elemStyle.display = "block";
|
||||
} else {
|
||||
elemStyle.display = "none";
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function restripe() {
|
||||
i = 0;
|
||||
$('table#report_table tbody tr').each(function(){
|
||||
if (this.style.display != "none") {
|
||||
i += 1;
|
||||
classes = this.className.split(" ");
|
||||
if ($.inArray("even",classes) != -1) {
|
||||
classes.splice($.inArray("even",classes),1);
|
||||
} else if ($.inArray("odd",classes) != -1) {
|
||||
classes.splice($.inArray("odd",classes),1);
|
||||
}
|
||||
if (i % 2 === 0) {
|
||||
this.className = classes.join(" ") + " odd";
|
||||
} else {
|
||||
this.className = classes.join(" ") + " even";
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Fix IE's lack of support for indexOf (!)
|
||||
if (!Array.indexOf) { Array.prototype.indexOf = function(obj){ for(var i=0; i<this.length; i++){ if(this[i]==obj){return i;} } return -1; }}
|
|
@ -0,0 +1,270 @@
|
|||
/* @group General */
|
||||
|
||||
body {
|
||||
font-family: Verdana, Helvetica, Arial, Sans-Serif;
|
||||
font-size: 12px;
|
||||
color: #4C4C4C;
|
||||
background-color: #F4F2ED;
|
||||
padding: 1em;
|
||||
}
|
||||
|
||||
a:link {
|
||||
color: #191919;
|
||||
}
|
||||
|
||||
a:visited {
|
||||
color: #191919;
|
||||
}
|
||||
|
||||
pre, code {
|
||||
color: #000000;
|
||||
font-family: "Bitstream Vera Sans Mono","Monaco","Courier New",monospace;
|
||||
font-size: 95%;
|
||||
line-height: 1.3em;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
padding: 0;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin: 0em 0em 1em 0em;
|
||||
color: #666666;
|
||||
}
|
||||
|
||||
h1 {
|
||||
display: block;
|
||||
font-size: 2em;
|
||||
letter-spacing: -1px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-top: -1em;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
display: inline;
|
||||
border: 0px;
|
||||
padding: 0px;
|
||||
margin-right: 1em;
|
||||
}
|
||||
|
||||
div.filters {
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* @end */
|
||||
|
||||
/* @group Cross-References */
|
||||
|
||||
span.cross-ref-title {
|
||||
font-size: 140%;
|
||||
}
|
||||
|
||||
span.cross-ref a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
span.cross-ref {
|
||||
background-color:#f3f7fa;
|
||||
border: 1px dashed #333;
|
||||
margin: 1em;
|
||||
padding: 0.5em;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
a.crossref-toggle {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* @end */
|
||||
|
||||
/* @group Report Table */
|
||||
|
||||
div.report_table_wrapper {
|
||||
min-width: 900px;
|
||||
}
|
||||
|
||||
table.report {
|
||||
border-collapse: collapse;
|
||||
border: 1px solid #666666;
|
||||
width: 100%;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
table.report tr {
|
||||
line-height: 1.75em;
|
||||
}
|
||||
|
||||
table.report th {
|
||||
background: #666666;
|
||||
color: #ffffff;
|
||||
text-align: right;
|
||||
text-transform: uppercase;
|
||||
font-size: .8em;
|
||||
font-weight: bold;
|
||||
padding: 0em .5em;
|
||||
border: 1px solid #666666;
|
||||
}
|
||||
|
||||
table.report tfoot tr {
|
||||
background: #dddddd;
|
||||
font-weight: bold;
|
||||
padding: .5em;
|
||||
border: 1px solid #666666;
|
||||
}
|
||||
|
||||
th.left_align, td.left_align {
|
||||
text-align: left !important;
|
||||
}
|
||||
|
||||
th.right_align, td.right_align {
|
||||
text-align: right;
|
||||
padding-right: 2em !important;
|
||||
}
|
||||
|
||||
table.report th.header:hover {
|
||||
cursor: pointer;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
table.report th.headerSortUp:after{
|
||||
content: "\25BC";
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
table.report th.headerSortDown:after {
|
||||
content: "\25B2";
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
table.report tr.summary_row {
|
||||
background: #cccccc;
|
||||
border: 1px solid #cccccc;
|
||||
}
|
||||
|
||||
table.report tr.summary_row td {
|
||||
padding-left: .2em !important;
|
||||
color: #333333;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
table.report td {
|
||||
padding: .2em .5em .2em .5em;
|
||||
}
|
||||
|
||||
table.report td a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
table.report tbody tr:hover {
|
||||
background: #cccccc !important;
|
||||
}
|
||||
|
||||
table.report tr.summary_row td {
|
||||
border-bottom: 1px solid #aaaaaa;
|
||||
}
|
||||
|
||||
table.report tr {
|
||||
background-color: #eeeeee;
|
||||
}
|
||||
|
||||
table.report tr.odd {
|
||||
background-color: #dddddd;
|
||||
}
|
||||
|
||||
/* @end */
|
||||
|
||||
/* @group Percentage Graphs */
|
||||
|
||||
div.percent_graph_legend {
|
||||
width: 5.5em;
|
||||
float: left;
|
||||
margin: .5em 1em .5em 0em;
|
||||
height: 1em;
|
||||
line-height: 1em;
|
||||
}
|
||||
|
||||
div.percent_graph {
|
||||
height: 1em;
|
||||
border: #333333 1px solid;
|
||||
empty-cells: show;
|
||||
padding: 0px;
|
||||
border-collapse: collapse;
|
||||
width: 100px !important;
|
||||
float: left;
|
||||
margin: .5em 1em .5em 0em;
|
||||
}
|
||||
|
||||
div.percent_graph div {
|
||||
float: left;
|
||||
height: 1em;
|
||||
padding: 0px !important;
|
||||
}
|
||||
|
||||
div.percent_graph div.covered {
|
||||
background: #649632;
|
||||
}
|
||||
|
||||
div.percent_graph div.uncovered {
|
||||
background: #a92730;
|
||||
}
|
||||
|
||||
div.percent_graph div.NA {
|
||||
background: #eaeaea;
|
||||
}
|
||||
|
||||
/* @end */
|
||||
|
||||
/* @group Details page */
|
||||
|
||||
table.details {
|
||||
margin-top: 1em;
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
border: 1px solid #666666;
|
||||
}
|
||||
|
||||
table.details tr {
|
||||
line-height: 1.75em;
|
||||
}
|
||||
|
||||
table.details td {
|
||||
padding: .25em;
|
||||
}
|
||||
|
||||
span.inferred, span.inferred1, span.marked, span.marked1, span.uncovered, span.uncovered1 {
|
||||
display: block;
|
||||
padding: .25em;
|
||||
}
|
||||
|
||||
tr.inferred td, span.inferred {
|
||||
background-color: #e0dedb;
|
||||
}
|
||||
|
||||
tr.inferred1 td, span.inferred1 {
|
||||
background-color: #e0dedb;
|
||||
}
|
||||
|
||||
tr.marked td, span.marked, span.marked1 {
|
||||
background-color: #bed2be;
|
||||
}
|
||||
|
||||
tr.uncovered td, span.uncovered {
|
||||
background-color: #ce8b8c;
|
||||
}
|
||||
|
||||
tr.uncovered1 td, span.uncovered1 {
|
||||
background-color: #ce8b8c;
|
||||
}
|
||||
|
||||
div.key {
|
||||
border: 1px solid #666666;
|
||||
margin: 1em 0em;
|
||||
}
|
||||
|
||||
/* @end */
|
|
@ -0,0 +1,552 @@
|
|||
<!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>
|
||||
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
|
||||
<title>Astute C0 Coverage Information - SimpleCov - RCov style</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" />
|
||||
<script type="text/javascript" src="./assets/0.2.3/jquery-1.3.2.min.js"></script>
|
||||
<script type="text/javascript" src="./assets/0.2.3/jquery.tablesorter.min.js"></script>
|
||||
<script type="text/javascript" src="./assets/0.2.3/rcov.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Astute C0 Coverage Information - SimpleCov - RCov style</h1>
|
||||
|
||||
<noscript><style type="text/css">.if_js { display:none; }</style></noscript>
|
||||
|
||||
<div class="filters if_js">
|
||||
<fieldset>
|
||||
<label>File Filter:</label>
|
||||
<select id="file_filter" class="filter">
|
||||
<option value="all_files">Show All</option>
|
||||
<option value="astute">astute/</option><option value="deployment_engine">deployment_engine/</option><option value="lib">lib/</option><option value="logparser">logparser/</option><option value="spec">spec/</option><option value="unit">unit/</option>
|
||||
</select>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<label>Code Coverage Threshold:</label>
|
||||
<select id="coverage_filter" class="filter">
|
||||
<option value="all_coverage">Show All</option>
|
||||
<option value="10">< 10% Coverage</option><option value="20">< 20% Coverage</option><option value="30">< 30% Coverage</option><option value="40">< 40% Coverage</option><option value="50">< 50% Coverage</option><option value="60">< 60% Coverage</option><option value="70">< 70% Coverage</option><option value="80">< 80% Coverage</option><option value="90">< 90% Coverage</option><option value="100">< 100% Coverage</option>
|
||||
<option value="110">= 100% Coverage</option>
|
||||
</select>
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
<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>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td class="left_align">TOTAL</td>
|
||||
<td class='right_align'><tt>4723</tt></td>
|
||||
<td class='right_align'><tt>2022</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>96.23%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:96px"></div>
|
||||
<div class="uncovered" style="width:4px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class='coverage_total'>91.20%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:91px"></div>
|
||||
<div class="uncovered" style="width:9px"></div>
|
||||
</div></td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
<tbody>
|
||||
|
||||
<tr class="all_files all_coverage 90 100 lib even">
|
||||
<td class="left_align"><a href="lib-astute_rb.html">lib/astute.rb</a></td>
|
||||
<td class='right_align'><tt>63</tt></td>
|
||||
<td class='right_align'><tt>37</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>93.65%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:94px"></div>
|
||||
<div class="uncovered" style="width:6px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>89.19%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:89px"></div>
|
||||
<div class="uncovered" style="width:11px"></div>
|
||||
</div></td>
|
||||
</tr>
|
||||
|
||||
<tr class="all_files all_coverage 90 100 lib astute odd">
|
||||
<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>
|
||||
|
||||
<tr class="all_files all_coverage 90 100 lib astute even">
|
||||
<td class="left_align"><a href="lib-astute-config_rb.html">lib/astute/config.rb</a></td>
|
||||
<td class='right_align'><tt>66</tt></td>
|
||||
<td class='right_align'><tt>34</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>93.94%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:94px"></div>
|
||||
<div class="uncovered" style="width:6px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>88.24%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:88px"></div>
|
||||
<div class="uncovered" style="width:12px"></div>
|
||||
</div></td>
|
||||
</tr>
|
||||
|
||||
<tr class="all_files all_coverage 110 lib astute odd">
|
||||
<td class="left_align"><a href="lib-astute-context_rb.html">lib/astute/context.rb</a></td>
|
||||
<td class='right_align'><tt>26</tt></td>
|
||||
<td class='right_align'><tt>7</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
</tr>
|
||||
|
||||
<tr class="all_files all_coverage 100 lib astute even">
|
||||
<td class="left_align"><a href="lib-astute-deployment_engine_rb.html">lib/astute/deployment_engine.rb</a></td>
|
||||
<td class='right_align'><tt>217</tt></td>
|
||||
<td class='right_align'><tt>128</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>97.24%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:97px"></div>
|
||||
<div class="uncovered" style="width:3px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>95.31%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:95px"></div>
|
||||
<div class="uncovered" style="width:5px"></div>
|
||||
</div></td>
|
||||
</tr>
|
||||
|
||||
<tr class="all_files all_coverage 100 lib astute deployment_engine odd">
|
||||
<td class="left_align"><a href="lib-astute-deployment_engine-nailyfact_rb.html">lib/astute/deployment_engine/nailyfact.rb</a></td>
|
||||
<td class='right_align'><tt>91</tt></td>
|
||||
<td class='right_align'><tt>38</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>97.80%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:98px"></div>
|
||||
<div class="uncovered" style="width:2px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>94.74%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:95px"></div>
|
||||
<div class="uncovered" style="width:5px"></div>
|
||||
</div></td>
|
||||
</tr>
|
||||
|
||||
<tr class="all_files all_coverage 110 lib astute deployment_engine even">
|
||||
<td class="left_align"><a href="lib-astute-deployment_engine-simple_puppet_rb.html">lib/astute/deployment_engine/simple_puppet.rb</a></td>
|
||||
<td class='right_align'><tt>26</tt></td>
|
||||
<td class='right_align'><tt>7</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
</tr>
|
||||
|
||||
<tr class="all_files all_coverage 90 100 lib astute odd">
|
||||
<td class="left_align"><a href="lib-astute-logparser_rb.html">lib/astute/logparser.rb</a></td>
|
||||
<td class='right_align'><tt>148</tt></td>
|
||||
<td class='right_align'><tt>78</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>91.22%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:91px"></div>
|
||||
<div class="uncovered" style="width:9px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>83.33%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:83px"></div>
|
||||
<div class="uncovered" style="width:17px"></div>
|
||||
</div></td>
|
||||
</tr>
|
||||
|
||||
<tr class="all_files all_coverage 70 80 90 100 lib astute logparser even">
|
||||
<td class="left_align"><a href="lib-astute-logparser-deployment_rb.html">lib/astute/logparser/deployment.rb</a></td>
|
||||
<td class='right_align'><tt>171</tt></td>
|
||||
<td class='right_align'><tt>88</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>82.46%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:82px"></div>
|
||||
<div class="uncovered" style="width:18px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>65.91%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:66px"></div>
|
||||
<div class="uncovered" style="width:34px"></div>
|
||||
</div></td>
|
||||
</tr>
|
||||
|
||||
<tr class="all_files all_coverage 90 100 lib astute logparser odd">
|
||||
<td class="left_align"><a href="lib-astute-logparser-parser_patterns_rb.html">lib/astute/logparser/parser_patterns.rb</a></td>
|
||||
<td class='right_align'><tt>534</tt></td>
|
||||
<td class='right_align'><tt>8</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>99.81%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>87.50%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:88px"></div>
|
||||
<div class="uncovered" style="width:12px"></div>
|
||||
</div></td>
|
||||
</tr>
|
||||
|
||||
<tr class="all_files all_coverage 80 90 100 lib astute logparser even">
|
||||
<td class="left_align"><a href="lib-astute-logparser-provision_rb.html">lib/astute/logparser/provision.rb</a></td>
|
||||
<td class='right_align'><tt>254</tt></td>
|
||||
<td class='right_align'><tt>122</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>86.61%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:87px"></div>
|
||||
<div class="uncovered" style="width:13px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>72.13%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:72px"></div>
|
||||
<div class="uncovered" style="width:28px"></div>
|
||||
</div></td>
|
||||
</tr>
|
||||
|
||||
<tr class="all_files all_coverage 90 100 lib astute odd">
|
||||
<td class="left_align"><a href="lib-astute-mclient_rb.html">lib/astute/mclient.rb</a></td>
|
||||
<td class='right_align'><tt>135</tt></td>
|
||||
<td class='right_align'><tt>75</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>91.11%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:91px"></div>
|
||||
<div class="uncovered" style="width:9px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>84.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:84px"></div>
|
||||
<div class="uncovered" style="width:16px"></div>
|
||||
</div></td>
|
||||
</tr>
|
||||
|
||||
<tr class="all_files all_coverage 60 70 80 90 100 lib astute even">
|
||||
<td class="left_align"><a href="lib-astute-metadata_rb.html">lib/astute/metadata.rb</a></td>
|
||||
<td class='right_align'><tt>30</tt></td>
|
||||
<td class='right_align'><tt>9</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>86.67%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:87px"></div>
|
||||
<div class="uncovered" style="width:13px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>55.56%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:56px"></div>
|
||||
<div class="uncovered" style="width:44px"></div>
|
||||
</div></td>
|
||||
</tr>
|
||||
|
||||
<tr class="all_files all_coverage 110 lib astute odd">
|
||||
<td class="left_align"><a href="lib-astute-network_rb.html">lib/astute/network.rb</a></td>
|
||||
<td class='right_align'><tt>112</tt></td>
|
||||
<td class='right_align'><tt>45</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
</tr>
|
||||
|
||||
<tr class="all_files all_coverage 110 lib astute even">
|
||||
<td class="left_align"><a href="lib-astute-node_rb.html">lib/astute/node.rb</a></td>
|
||||
<td class='right_align'><tt>93</tt></td>
|
||||
<td class='right_align'><tt>44</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
</tr>
|
||||
|
||||
<tr class="all_files all_coverage 100 lib astute odd">
|
||||
<td class="left_align"><a href="lib-astute-nodes_remover_rb.html">lib/astute/nodes_remover.rb</a></td>
|
||||
<td class='right_align'><tt>105</tt></td>
|
||||
<td class='right_align'><tt>53</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>98.10%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:98px"></div>
|
||||
<div class="uncovered" style="width:2px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>96.23%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:96px"></div>
|
||||
<div class="uncovered" style="width:4px"></div>
|
||||
</div></td>
|
||||
</tr>
|
||||
|
||||
<tr class="all_files all_coverage 90 100 lib astute even">
|
||||
<td class="left_align"><a href="lib-astute-orchestrator_rb.html">lib/astute/orchestrator.rb</a></td>
|
||||
<td class='right_align'><tt>256</tt></td>
|
||||
<td class='right_align'><tt>141</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>90.23%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:90px"></div>
|
||||
<div class="uncovered" style="width:10px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>82.27%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:82px"></div>
|
||||
<div class="uncovered" style="width:18px"></div>
|
||||
</div></td>
|
||||
</tr>
|
||||
|
||||
<tr class="all_files all_coverage 100 lib astute odd">
|
||||
<td class="left_align"><a href="lib-astute-puppetd_rb.html">lib/astute/puppetd.rb</a></td>
|
||||
<td class='right_align'><tt>170</tt></td>
|
||||
<td class='right_align'><tt>86</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>95.88%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:96px"></div>
|
||||
<div class="uncovered" style="width:4px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>91.86%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:92px"></div>
|
||||
<div class="uncovered" style="width:8px"></div>
|
||||
</div></td>
|
||||
</tr>
|
||||
|
||||
<tr class="all_files all_coverage 100 lib astute even">
|
||||
<td class="left_align"><a href="lib-astute-reporter_rb.html">lib/astute/reporter.rb</a></td>
|
||||
<td class='right_align'><tt>124</tt></td>
|
||||
<td class='right_align'><tt>57</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>99.19%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:99px"></div>
|
||||
<div class="uncovered" style="width:1px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>98.25%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:98px"></div>
|
||||
<div class="uncovered" style="width:2px"></div>
|
||||
</div></td>
|
||||
</tr>
|
||||
|
||||
<tr class="all_files all_coverage 30 40 50 60 70 80 90 100 lib astute odd">
|
||||
<td class="left_align"><a href="lib-astute-rpuppet_rb.html">lib/astute/rpuppet.rb</a></td>
|
||||
<td class='right_align'><tt>42</tt></td>
|
||||
<td class='right_align'><tt>17</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>71.43%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:71px"></div>
|
||||
<div class="uncovered" style="width:29px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>29.41%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:29px"></div>
|
||||
<div class="uncovered" style="width:71px"></div>
|
||||
</div></td>
|
||||
</tr>
|
||||
|
||||
<tr class="all_files all_coverage 110 lib astute even">
|
||||
<td class="left_align"><a href="lib-astute-ruby_removed_functions_rb.html">lib/astute/ruby_removed_functions.rb</a></td>
|
||||
<td class='right_align'><tt>23</tt></td>
|
||||
<td class='right_align'><tt>6</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
</tr>
|
||||
|
||||
<tr class="all_files all_coverage 110 spec unit odd">
|
||||
<td class="left_align"><a href="spec-unit-logparser_spec_rb.html">spec/unit/logparser_spec.rb</a></td>
|
||||
<td class='right_align'><tt>278</tt></td>
|
||||
<td class='right_align'><tt>153</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
</tr>
|
||||
|
||||
<tr class="all_files all_coverage 110 spec unit even">
|
||||
<td class="left_align"><a href="spec-unit-mclient_spec_rb.html">spec/unit/mclient_spec.rb</a></td>
|
||||
<td class='right_align'><tt>95</tt></td>
|
||||
<td class='right_align'><tt>51</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
</tr>
|
||||
|
||||
<tr class="all_files all_coverage 110 spec unit odd">
|
||||
<td class="left_align"><a href="spec-unit-nailyfact_deploy_spec_rb.html">spec/unit/nailyfact_deploy_spec.rb</a></td>
|
||||
<td class='right_align'><tt>286</tt></td>
|
||||
<td class='right_align'><tt>70</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
</tr>
|
||||
|
||||
<tr class="all_files all_coverage 110 spec unit even">
|
||||
<td class="left_align"><a href="spec-unit-node_spec_rb.html">spec/unit/node_spec.rb</a></td>
|
||||
<td class='right_align'><tt>95</tt></td>
|
||||
<td class='right_align'><tt>52</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
</tr>
|
||||
|
||||
<tr class="all_files all_coverage 100 spec unit odd">
|
||||
<td class="left_align"><a href="spec-unit-orchestrator_spec_rb.html">spec/unit/orchestrator_spec.rb</a></td>
|
||||
<td class='right_align'><tt>423</tt></td>
|
||||
<td class='right_align'><tt>183</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>98.58%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:99px"></div>
|
||||
<div class="uncovered" style="width:1px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>96.72%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:97px"></div>
|
||||
<div class="uncovered" style="width:3px"></div>
|
||||
</div></td>
|
||||
</tr>
|
||||
|
||||
<tr class="all_files all_coverage 110 spec unit even">
|
||||
<td class="left_align"><a href="spec-unit-puppetd_spec_rb.html">spec/unit/puppetd_spec.rb</a></td>
|
||||
<td class='right_align'><tt>233</tt></td>
|
||||
<td class='right_align'><tt>105</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
</tr>
|
||||
|
||||
<tr class="all_files all_coverage 110 spec unit odd">
|
||||
<td class="left_align"><a href="spec-unit-reporter_spec_rb.html">spec/unit/reporter_spec.rb</a></td>
|
||||
<td class='right_align'><tt>205</tt></td>
|
||||
<td class='right_align'><tt>126</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
</tr>
|
||||
|
||||
<tr class="all_files all_coverage 110 spec unit even">
|
||||
<td class="left_align"><a href="spec-unit-simplepuppet_deploy_spec_rb.html">spec/unit/simplepuppet_deploy_spec.rb</a></td>
|
||||
<td class='right_align'><tt>122</tt></td>
|
||||
<td class='right_align'><tt>73</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<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>
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function(){$("#report_table").tablesorter({widgets: ['zebra'], textExtraction: 'complex'});});
|
||||
$('.filter').change(function(){
|
||||
ff = $('#file_filter').val();
|
||||
cf = $('#coverage_filter').val();
|
||||
$('table#report_table tbody tr').each(function(i){
|
||||
if ((this.className.split(" ").indexOf(ff) > -1) && (this.className.split(" ").indexOf(cf) > -1)) {
|
||||
this.style.display = "";
|
||||
} else {
|
||||
this.style.display = "none";
|
||||
};
|
||||
restripe();
|
||||
})
|
||||
})
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,959 @@
|
|||
<!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 "License"); 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 "AS IS" 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 < 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("Cobbler options: #{o.inspect}")</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("Connecting to cobbler with: host: #{host} port: #{port} path: #{path}")</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("Trying to log in to cobbler with username: #{username}, password: #{password}")</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 => 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' => what, 'name' => 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("Creating/editing item from hash: #{cobsh.inspect}")</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("Setting #{what} #{name} opt: #{opt}=#{value}")</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' && cobblerized.has_key?('interfaces')</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line69">69</a> Astute.logger.debug("Defining system interfaces #{name} #{cobblerized['interfaces']}")</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("Saving #{what} #{name}")</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 = {"systems" => [name], "power" => 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 < ::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' => ['ksmeta'],</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line135">135</a> 'mac_address' => ['mac'],</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line136">136</a> 'ip_address' => ['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' => {</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line144">144</a> 'fields' => [</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' => [</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' => ['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' => {</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line167">167</a> 'fields' => [</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' => {</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line179">179</a> 'fields' => ['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("Cobsh is initialized with: #{h.inspect}")</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line190">190</a> raise CobblerError, "Cobbler hash must have 'name' key" unless h.has_key? 'name'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line191">191</a> raise CobblerError, "Cobbler hash must have 'what' key" unless h.has_key? 'what'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line192">192</a> raise CobblerError, "Unsupported 'what' value" 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("Cobblerizing hash: #{inspect}")</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 = ""</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) && 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, "Wrong cobbler data: #{k} is duplicated"</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("Key #{k} is not valid. Will be skipped.")</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 << " #{ks_meta_key}=#{ks_meta_value}"</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 << " #{v}"</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 "Wrong ks_meta format. It must be Hash or String"</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 << 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 > 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("Key #{k} aliased with #{k2}") 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?("#{iopt}-#{iname}")</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line274">274</a> raise CobblerError, "Wrong interface cobbler data: #{iopt} is duplicated"</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("Interface key #{iopt} is not valid. Skipping")</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("Defining interfaces[#{iopt}-#{iname}] = #{ivalue}")</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line281">281</a> interfaces["#{iopt}-#{iname}"] = 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 = ""</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("Adding into ks_meta interface_extra_#{iname}_#{k}=#{v}")</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line293">293</a> interfaces_extra_str << " interface_extra_#{iname}_#{k}=#{v}"</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>
|
|
@ -0,0 +1,257 @@
|
|||
<!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/config.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/config.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-config_rb.html">lib/astute/config.rb</a></td>
|
||||
<td class='right_align'><tt>66</tt></td>
|
||||
<td class='right_align'><tt>34</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>93.94%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:94px"></div>
|
||||
<div class="uncovered" style="width:6px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>88.24%</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 "License"); 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 "AS IS" 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 'symboltable'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line18">18</a> require 'singleton'</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line19">19</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line20">20</a> module Astute</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line21">21</a> class ConfigError < StandardError; end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line22">22</a> class UnknownOptionError < ConfigError</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line23">23</a> attr_reader :name</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> def initialize(name)</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line26">26</a> super("Unknown config option #{name}")</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line27">27</a> @name = name</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line28">28</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line29">29</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line30">30</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line31">31</a> class MyConfig</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line32">32</a> include Singleton</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line33">33</a> attr_reader :configtable</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line34">34</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line35">35</a> def initialize</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line36">36</a> @configtable = SymbolTable.new</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line37">37</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line38">38</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line39">39</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line40">40</a> class ParseError < ConfigError</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line41">41</a> attr_reader :line</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line42">42</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line43">43</a> def initialize(message, line)</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line44">44</a> super(message)</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line45">45</a> @line = line</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> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line48">48</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line49">49</a> def self.config</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line50">50</a> config = MyConfig.instance.configtable</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line51">51</a> config.update(default_config) if config.empty?</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line52">52</a> return config</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line53">53</a> end</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> def self.default_config</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line56">56</a> conf = {}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line57">57</a> conf[:PUPPET_TIMEOUT] = 60*60 # maximum time it waits for the whole deployment</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line58">58</a> conf[:PUPPET_DEPLOY_INTERVAL] = 2 # sleep for ## sec, then check puppet status again</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line59">59</a> conf[:PUPPET_FADE_TIMEOUT] = 60 # how long it can take for puppet to exit after dumping to last_run_summary</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line60">60</a> conf[:MC_RETRIES] = 5 # MClient tries to call mcagent before failure</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line61">61</a> conf[:MC_RETRY_INTERVAL] = 1 # MClient sleeps for ## sec between retries</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line62">62</a> conf[:PUPPET_FADE_INTERVAL] = 1 # retry every ## seconds to check puppet state if it was running</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line63">63</a> conf[:PROVISIONING_TIMEOUT] = 90 * 60 # timeout for booting target OS in provision</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line64">64</a> conf[:REBOOT_TIMEOUT] = 120 # how long it can take for node to reboot </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line65">65</a> return conf</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line66">66</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line67">67</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>
|
|
@ -0,0 +1,137 @@
|
|||
<!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/context.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/context.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-context_rb.html">lib/astute/context.rb</a></td>
|
||||
<td class='right_align'><tt>26</tt></td>
|
||||
<td class='right_align'><tt>7</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></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 "License"); 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 "AS IS" 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> module Astute</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line18">18</a> class Context</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line19">19</a> attr_accessor :task_id, :reporter, :deploy_log_parser</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line20">20</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line21">21</a> def initialize(task_id, reporter, deploy_log_parser=nil)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line22">22</a> @task_id = task_id</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line23">23</a> @reporter = reporter</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line24">24</a> @deploy_log_parser = deploy_log_parser</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line25">25</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line26">26</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line27">27</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>
|
|
@ -0,0 +1,332 @@
|
|||
<!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/deployment_engine/nailyfact.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/deployment_engine/nailyfact.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-deployment_engine-nailyfact_rb.html">lib/astute/deployment_engine/nailyfact.rb</a></td>
|
||||
<td class='right_align'><tt>91</tt></td>
|
||||
<td class='right_align'><tt>38</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>97.80%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:98px"></div>
|
||||
<div class="uncovered" style="width:2px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>94.74%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:95px"></div>
|
||||
<div class="uncovered" style="width:5px"></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 "License"); 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 "AS IS" 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> class Astute::DeploymentEngine::NailyFact < Astute::DeploymentEngine</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> def deploy(nodes, attrs)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line20">20</a> attrs_for_mode = self.send("attrs_#{attrs['deployment_mode']}", nodes, attrs)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line21">21</a> super(nodes, attrs_for_mode)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line22">22</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line23">23</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line24">24</a> def create_facts(node, attrs)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line25">25</a> # calculate_networks method is common and you can find it in superclass</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line26">26</a> # if node['network_data'] is undefined, we use empty list because we later try to iterate over it</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line27">27</a> # otherwise we will get KeyError</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line28">28</a> node_network_data = node['network_data'].nil? ? [] : node['network_data']</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line29">29</a> interfaces = node['meta']['interfaces']</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line30">30</a> network_data_puppet = calculate_networks(node_network_data, interfaces)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line31">31</a> metadata = {</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line32">32</a> 'role' => node['role'],</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line33">33</a> 'uid' => node['uid'],</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line34">34</a> 'network_data' => network_data_puppet.to_json</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line35">35</a> }</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line36">36</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line37">37</a> attrs.each do |k, v|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line38">38</a> if v.is_a? String</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line39">39</a> metadata[k] = v</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line40">40</a> else</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line41">41</a> # And it's the problem on the puppet side now to decode json</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line42">42</a> metadata[k] = v.to_json</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line43">43</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line44">44</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line45">45</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line46">46</a> # Let's calculate interface settings we need for OpenStack:</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line47">47</a> node_network_data.each do |iface|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line48">48</a> device = if iface['vlan'] && iface['vlan'] > 0</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line49">49</a> [iface['dev'], iface['vlan']].join('.')</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line50">50</a> else</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line51">51</a> iface['dev']</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line52">52</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line53">53</a> metadata["#{iface['name']}_interface"] = device</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line54">54</a> if iface['ip']</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line55">55</a> metadata["#{iface['name']}_address"] = iface['ip'].split('/')[0]</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line56">56</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line57">57</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line58">58</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line59">59</a> # internal_address is required for HA..</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line60">60</a> metadata['internal_address'] = node['network_data'].select{|nd| nd['name'] == 'management' }[0]['ip'].split('/')[0]</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line61">61</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line62">62</a> if metadata['network_manager'] == 'VlanManager' && !metadata['fixed_interface']</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line63">63</a> metadata['fixed_interface'] = get_fixed_interface(node)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line64">64</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line65">65</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line66">66</a> Astute::Metadata.publish_facts(@ctx, node['uid'], metadata)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line67">67</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line68">68</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line69">69</a> def deploy_piece(nodes, attrs, retries=2, change_node_status=true)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line70">70</a> return false unless validate_nodes(nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line71">71</a> @ctx.reporter.report nodes_status(nodes, 'deploying', {'progress' => 0})</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line72">72</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line73">73</a> Astute.logger.info "#{@ctx.task_id}: Calculation of required attributes to pass, include netw.settings"</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line74">74</a> nodes.each do |node|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line75">75</a> create_facts(node, attrs)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line76">76</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line77">77</a> Astute.logger.info "#{@ctx.task_id}: All required attrs/metadata passed via facts extension. Starting deployment."</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> Astute::PuppetdDeployer.deploy(@ctx, nodes, retries, change_node_status)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line80">80</a> nodes_roles = nodes.map { |n| { n['uid'] => n['role'] } }</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line81">81</a> Astute.logger.info "#{@ctx.task_id}: Finished deployment of nodes => roles: #{nodes_roles.inspect}"</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line82">82</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line83">83</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line84">84</a> private</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line85">85</a> def get_fixed_interface(node)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line86">86</a> return node['vlan_interface'] if node['vlan_interface']</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line87">87</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line88">88</a> Astute.logger.warn "Can not find vlan_interface for node #{node['uid']}"</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line89">89</a> nil</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line90">90</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line91">91</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line92">92</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>
|
|
@ -0,0 +1,137 @@
|
|||
<!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/deployment_engine/simple_puppet.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/deployment_engine/simple_puppet.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-deployment_engine-simple_puppet_rb.html">lib/astute/deployment_engine/simple_puppet.rb</a></td>
|
||||
<td class='right_align'><tt>26</tt></td>
|
||||
<td class='right_align'><tt>7</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></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 "License"); 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 "AS IS" 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> class Astute::DeploymentEngine::SimplePuppet < Astute::DeploymentEngine</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line18">18</a> # It is trivial puppet run. It's assumed that user has prepared site.pp</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line19">19</a> # with all required parameters for modules</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line20">20</a> def deploy_piece(nodes, attrs, retries=2, change_node_status=true)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line21">21</a> return false unless validate_nodes(nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line22">22</a> @ctx.reporter.report nodes_status(nodes, 'deploying', {'progress' => 0})</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line23">23</a> Astute::PuppetdDeployer.deploy(@ctx, nodes, retries, change_node_status)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line24">24</a> nodes_roles = nodes.map { |n| { n['uid'] => n['role'] } }</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line25">25</a> Astute.logger.info "#{@ctx.task_id}: Finished deployment of nodes => roles: #{nodes_roles.inspect}"</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line26">26</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line27">27</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>
|
|
@ -0,0 +1,710 @@
|
|||
<!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/deployment_engine.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/deployment_engine.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-deployment_engine_rb.html">lib/astute/deployment_engine.rb</a></td>
|
||||
<td class='right_align'><tt>217</tt></td>
|
||||
<td class='right_align'><tt>128</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>97.24%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:97px"></div>
|
||||
<div class="uncovered" style="width:3px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>95.31%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:95px"></div>
|
||||
<div class="uncovered" style="width:5px"></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 "License"); 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 "AS IS" 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 'json'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line18">18</a> require 'timeout'</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line19">19</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line20">20</a> module Astute</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line21">21</a> class DeploymentEngine</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line22">22</a> def initialize(context)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line23">23</a> if self.class.superclass.name == 'Object'</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line24">24</a> raise "Instantiation of this superclass is not allowed. Please subclass from #{self.class.name}."</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line25">25</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line26">26</a> @ctx = context</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line27">27</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line28">28</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line29">29</a> def deploy(nodes, attrs)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line30">30</a> # See implementation in subclasses, this may be everriden</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line31">31</a> attrs['deployment_mode'] ||= 'multinode' # simple multinode deployment is the default</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line32">32</a> attrs['use_cinder'] ||= nodes.any?{|n| n['role'] == 'cinder'}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line33">33</a> @ctx.deploy_log_parser.deploy_type = attrs['deployment_mode']</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line34">34</a> Astute.logger.info "Deployment mode #{attrs['deployment_mode']}"</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line35">35</a> result = self.send("deploy_#{attrs['deployment_mode']}", nodes, attrs)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line36">36</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line37">37</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line38">38</a> def method_missing(method, *args)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line39">39</a> Astute.logger.error "Method #{method} is not implemented for #{self.class}, raising exception."</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line40">40</a> raise "Method #{method} is not implemented for #{self.class}"</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line41">41</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line42">42</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line43">43</a> def attrs_singlenode(nodes, attrs)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line44">44</a> ctrl_management_ip = nodes[0]['network_data'].select {|nd| nd['name'] == 'management'}[0]['ip']</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line45">45</a> ctrl_public_ip = nodes[0]['network_data'].select {|nd| nd['name'] == 'public'}[0]['ip']</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line46">46</a> attrs['controller_node_address'] = ctrl_management_ip.split('/')[0]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line47">47</a> attrs['controller_node_public'] = ctrl_public_ip.split('/')[0]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line48">48</a> attrs</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line49">49</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line50">50</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line51">51</a> def deploy_singlenode(nodes, attrs)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line52">52</a> # TODO(mihgen) some real stuff is needed</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line53">53</a> Astute.logger.info "Starting deployment of single node OpenStack"</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line54">54</a> deploy_piece(nodes, attrs)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line55">55</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line56">56</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line57">57</a> # we mix all attrs and prepare them for Puppet</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line58">58</a> # Works for multinode deployment mode</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line59">59</a> def attrs_multinode(nodes, attrs)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line60">60</a> ctrl_nodes = attrs['controller_nodes']</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line61">61</a> # TODO(mihgen): we should report error back if there are not enough metadata passed</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line62">62</a> ctrl_management_ips = []</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line63">63</a> ctrl_public_ips = []</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line64">64</a> ctrl_nodes.each do |n|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line65">65</a> ctrl_management_ips << n['network_data'].select {|nd| nd['name'] == 'management'}[0]['ip']</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line66">66</a> ctrl_public_ips << n['network_data'].select {|nd| nd['name'] == 'public'}[0]['ip']</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line67">67</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line68">68</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line69">69</a> attrs['controller_node_address'] = ctrl_management_ips[0].split('/')[0]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line70">70</a> attrs['controller_node_public'] = ctrl_public_ips[0].split('/')[0]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line71">71</a> attrs</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> # This method is called by Ruby metaprogramming magic from deploy method</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line75">75</a> # It should not contain any magic with attributes, and should not directly run any type of MC plugins</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line76">76</a> # It does only support of deployment sequence. See deploy_piece implementation in subclasses.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line77">77</a> def deploy_multinode(nodes, attrs)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line78">78</a> deploy_ha_full(nodes, attrs)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line79">79</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line80">80</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line81">81</a> def attrs_ha(nodes, attrs)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line82">82</a> # TODO(mihgen): we should report error back if there are not enough metadata passed</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line83">83</a> ctrl_nodes = attrs['controller_nodes']</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line84">84</a> ctrl_manag_addrs = {}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line85">85</a> ctrl_public_addrs = {}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line86">86</a> ctrl_storage_addrs = {}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line87">87</a> ctrl_nodes.each do |n|</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line88">88</a> # current puppet modules require `hostname -s`</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line89">89</a> hostname = n['fqdn'].split(/\./)[0]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line90">90</a> ctrl_manag_addrs.merge!({hostname =></pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line91">91</a> n['network_data'].select {|nd| nd['name'] == 'management'}[0]['ip'].split(/\//)[0]})</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line92">92</a> ctrl_public_addrs.merge!({hostname =></pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line93">93</a> n['network_data'].select {|nd| nd['name'] == 'public'}[0]['ip'].split(/\//)[0]})</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line94">94</a> ctrl_storage_addrs.merge!({hostname =></pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line95">95</a> n['network_data'].select {|nd| nd['name'] == 'storage'}[0]['ip'].split(/\//)[0]})</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line96">96</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line97">97</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line98">98</a> attrs['nodes'] = ctrl_nodes.map do |n|</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line99">99</a> {</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line100">100</a> 'name' => n['fqdn'].split(/\./)[0],</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line101">101</a> 'role' => 'controller',</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line102">102</a> 'internal_address' => n['network_data'].select {|nd| nd['name'] == 'management'}[0]['ip'].split(/\//)[0],</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line103">103</a> 'public_address' => n['network_data'].select {|nd| nd['name'] == 'public'}[0]['ip'].split(/\//)[0],</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line104">104</a> 'mountpoints' => "1 1\n2 2",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line105">105</a> 'zone' => n['id'],</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line106">106</a> 'storage_local_net_ip' => n['network_data'].select {|nd| nd['name'] == 'storage'}[0]['ip'].split(/\//)[0],</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line107">107</a> }</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line108">108</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line109">109</a> attrs['nodes'].first['role'] = 'primary-controller'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line110">110</a> attrs['ctrl_hostnames'] = ctrl_nodes.map {|n| n['fqdn'].split(/\./)[0]}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line111">111</a> attrs['master_hostname'] = ctrl_nodes[0]['fqdn'].split(/\./)[0]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line112">112</a> attrs['ctrl_public_addresses'] = ctrl_public_addrs</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line113">113</a> attrs['ctrl_management_addresses'] = ctrl_manag_addrs</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line114">114</a> attrs['ctrl_storage_addresses'] = ctrl_storage_addrs</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line115">115</a> attrs</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 deploy_ha(nodes, attrs)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line119">119</a> deploy_ha_full(nodes, attrs)</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 deploy_ha_compact(nodes, attrs)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line123">123</a> deploy_ha_full(nodes, attrs)</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 deploy_ha_full(nodes, attrs)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line127">127</a> primary_ctrl_nodes = nodes.select {|n| n['role'] == 'primary-controller'}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line128">128</a> ctrl_nodes = nodes.select {|n| n['role'] == 'controller'}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line129">129</a> unless primary_ctrl_nodes.any?</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line130">130</a> if ctrl_nodes.size > 1</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line131">131</a> primary_ctrl_nodes = [ctrl_nodes.shift]</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line132">132</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line133">133</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line134">134</a> compute_nodes = nodes.select {|n| n['role'] == 'compute'}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line135">135</a> quantum_nodes = nodes.select {|n| n['role'] == 'quantum'}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line136">136</a> storage_nodes = nodes.select {|n| n['role'] == 'storage'}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line137">137</a> proxy_nodes = nodes.select {|n| n['role'] == 'swift-proxy'}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line138">138</a> primary_proxy_nodes = nodes.select {|n| n['role'] == 'primary-swift-proxy'}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line139">139</a> other_nodes = nodes - ctrl_nodes - primary_ctrl_nodes - \</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line140">140</a> primary_proxy_nodes - quantum_nodes</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line141">141</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line142">142</a> Astute.logger.info "Starting deployment of primary controller"</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line143">143</a> deploy_piece(primary_ctrl_nodes, attrs, 0, false)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line144">144</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line145">145</a> Astute.logger.info "Starting deployment of all controllers one by one"</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line146">146</a> ctrl_nodes.each {|n| deploy_piece([n], attrs)}</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line147">147</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line148">148</a> Astute.logger.info "Starting deployment of 1st controller and 1st proxy"</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line149">149</a> deploy_piece(primary_ctrl_nodes + primary_proxy_nodes, attrs)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line150">150</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line151">151</a> Astute.logger.info "Starting deployment of quantum nodes"</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line152">152</a> deploy_piece(quantum_nodes, attrs)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line153">153</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line154">154</a> Astute.logger.info "Starting deployment of other nodes"</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line155">155</a> deploy_piece(other_nodes, attrs)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line156">156</a> return</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line157">157</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line158">158</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line159">159</a> private</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line160">160</a> def nodes_status(nodes, status, data_to_merge)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line161">161</a> {'nodes' => nodes.map { |n| {'uid' => n['uid'], 'status' => status}.merge(data_to_merge) }}</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line162">162</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line163">163</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line164">164</a> def validate_nodes(nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line165">165</a> if nodes.empty?</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line166">166</a> Astute.logger.info "#{@ctx.task_id}: Nodes to deploy are not provided. Do nothing."</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line167">167</a> return false</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line168">168</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line169">169</a> return true</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line170">170</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line171">171</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line172">172</a> def calculate_networks(data, hwinterfaces)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line173">173</a> interfaces = {}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line174">174</a> data ||= []</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line175">175</a> Astute.logger.info "calculate_networks function was provided with #{data.size} interfaces"</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line176">176</a> data.each do |net|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line177">177</a> Astute.logger.debug "Calculating network for #{net.inspect}"</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line178">178</a> if net['vlan'] && net['vlan'] != 0</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line179">179</a> name = [net['dev'], net['vlan']].join('.')</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line180">180</a> else</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line181">181</a> name = net['dev']</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line182">182</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line183">183</a> unless interfaces.has_key?(name)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line184">184</a> interfaces[name] = {'interface' => name, 'ipaddr' => []}</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line185">185</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line186">186</a> iface = interfaces[name]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line187">187</a> if net['name'] == 'admin'</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line188">188</a> if iface['ipaddr'].size > 0</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line189">189</a> Astute.logger.error "Admin network interferes with openstack nets"</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line190">190</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line191">191</a> iface['ipaddr'] += ['dhcp']</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line192">192</a> else</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line193">193</a> if iface['ipaddr'].any?{|x| x == 'dhcp'}</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line194">194</a> Astute.logger.error "Admin network interferes with openstack nets"</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line195">195</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line196">196</a> if net['ip']</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line197">197</a> iface['ipaddr'] += [net['ip']]</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line198">198</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line199">199</a> if net['gateway'] && net['name'] =~ /^public$/i</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line200">200</a> iface['gateway'] = net['gateway']</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line201">201</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line202">202</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line203">203</a> Astute.logger.debug "Calculated network for interface: #{name}, data: #{iface.inspect}"</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line204">204</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line205">205</a> interfaces['lo'] = {'interface'=>'lo', 'ipaddr'=>['127.0.0.1/8']} unless interfaces.has_key?('lo')</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line206">206</a> hwinterfaces.each do |i|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line207">207</a> unless interfaces.has_key?(i['name'])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line208">208</a> interfaces[i['name']] = {'interface' => i['name'], 'ipaddr' => []}</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line209">209</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line210">210</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line211">211</a> interfaces.keys.each do |i|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line212">212</a> interfaces[i]['ipaddr'] = 'none' if interfaces[i]['ipaddr'].size == 0</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line213">213</a> interfaces[i]['ipaddr'] = 'dhcp' if interfaces[i]['ipaddr'] == ['dhcp']</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line214">214</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line215">215</a> interfaces</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line216">216</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line217">217</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line218">218</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>
|
|
@ -0,0 +1,572 @@
|
|||
<!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/logparser/deployment.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/logparser/deployment.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-logparser-deployment_rb.html">lib/astute/logparser/deployment.rb</a></td>
|
||||
<td class='right_align'><tt>171</tt></td>
|
||||
<td class='right_align'><tt>88</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>82.46%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:82px"></div>
|
||||
<div class="uncovered" style="width:18px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>65.91%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:66px"></div>
|
||||
<div class="uncovered" style="width:34px"></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 "License"); 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 "AS IS" 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> module Astute</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line18">18</a> module LogParser</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line19">19</a> class ParseDeployLogs <ParseNodeLogs</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line20">20</a> attr_reader :deploy_type</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line21">21</a> def initialize(deploy_type='multinode')</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line22">22</a> @deploy_type = deploy_type</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line23">23</a> pattern_spec = Patterns::get_default_pattern(</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line24">24</a> "puppet-log-components-list-#{@deploy_type}-controller")</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line25">25</a> super(pattern_spec)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line26">26</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line27">27</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line28">28</a> def deploy_type= (deploy_type)</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line29">29</a> @deploy_type = deploy_type</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line30">30</a> @nodes_states = {}</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line31">31</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line32">32</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line33">33</a> def progress_calculate(uids_to_calc, nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line34">34</a> # Just create correct pattern for each node and then call parent method.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line35">35</a> uids_to_calc.each do |uid|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line36">36</a> node = nodes.select {|n| n['uid'] == uid}[0]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line37">37</a> unless @nodes_states[uid]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line38">38</a> pattern_spec = Patterns::get_default_pattern(</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line39">39</a> "puppet-log-components-list-#{@deploy_type}-#{node['role']}")</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line40">40</a> pattern_spec['path_prefix'] ||= PATH_PREFIX.to_s</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line41">41</a> pattern_spec['separator'] ||= SEPARATOR.to_s</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line42">42</a> @nodes_states[uid] = pattern_spec</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line43">43</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line44">44</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line45">45</a> super(uids_to_calc, nodes)</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> private</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line49">49</a> def calculate(fo, node_pattern_spec)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line50">50</a> case node_pattern_spec['type']</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line51">51</a> when 'count-lines'</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line52">52</a> progress = simple_line_counter(fo, node_pattern_spec)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line53">53</a> when 'components-list'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line54">54</a> progress = component_parser(fo, node_pattern_spec)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line55">55</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line56">56</a> return progress</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line57">57</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line58">58</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line59">59</a> def simple_line_counter(fo, pattern_spec)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line60">60</a> # Pattern specification example:</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line61">61</a> # pattern_spec = {'type' => 'count-lines',</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line62">62</a> # 'endlog_patterns' => [{'pattern' => /Finished catalog run in [0-9]+\.[0-9]* seconds\n/, 'progress' => 1.0}],</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line63">63</a> # 'expected_line_number' => 500}</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line64">64</a> # Use custom separator if defined.</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line65">65</a> separator = pattern_spec['separator']</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line66">66</a> counter = 0</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line67">67</a> end_of_scope = false</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line68">68</a> previous_subchunk = ''</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line69">69</a> until end_of_scope</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line70">70</a> chunk = get_chunk(fo, pattern_spec['chunk_size'])</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line71">71</a> break unless chunk</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line72">72</a> # Trying to find separator on border between chunks.</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line73">73</a> subchunk = chunk.slice((1-separator.size)..-1)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line74">74</a> # End of file reached. Exit from cycle.</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line75">75</a> end_of_scope = true unless subchunk</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line76">76</a> if subchunk and (subchunk + previous_subchunk).include?(separator)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line77">77</a> # Separator found on border between chunks. Exit from cycle.</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line78">78</a> end_of_scope = true</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line79">79</a> continue</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line80">80</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line81">81</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line82">82</a> pos = chunk.rindex(separator)</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line83">83</a> if pos</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line84">84</a> end_of_scope = true</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line85">85</a> chunk = chunk.slice((pos + separator.size)..-1)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line86">86</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line87">87</a> counter += chunk.count("\n")</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line88">88</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line89">89</a> number = pattern_spec['expected_line_number']</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line90">90</a> unless number</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line91">91</a> Astute.logger.warn("Wrong pattern #{pattern_spec.inspect} defined for calculating progress via log.")</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line92">92</a> return 0</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line93">93</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line94">94</a> progress = counter.to_f / number</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line95">95</a> progress = 1 if progress > 1</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line96">96</a> return progress</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line97">97</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line98">98</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line99">99</a> def component_parser(fo, pattern_spec)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line100">100</a> # Pattern specification example:</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line101">101</a> # pattern_spec = {'type' => 'components-list',</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line102">102</a> # 'chunk_size' => 40000,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line103">103</a> # 'components_list' => [</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line104">104</a> # {'name' => 'Horizon', 'weight' => 10, 'patterns' => [</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line105">105</a> # {'pattern' => '/Stage[main]/Horizon/Package[mod_wsgi]/ensure) created', 'progress' => 0.1},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line106">106</a> # {'pattern' => '/Stage[main]/Horizon/File_line[horizon_redirect_rule]/ensure) created', 'progress' => 0.3},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line107">107</a> # {'pattern' => '/Stage[main]/Horizon/File[/etc/openstack-dashboard/local_settings]/group)', 'progress' => 0.7},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line108">108</a> # {'pattern' => '/Stage[main]/Horizon/Service[$::horizon::params::http_service]/ensure)'\</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line109">109</a> # ' ensure changed \'stopped\' to \'running\'', 'progress' => 1},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line110">110</a> # ]</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line111">111</a> # },</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line112">112</a> # ]</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line113">113</a> # }</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line114">114</a> # Use custom separator if defined.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line115">115</a> separator = pattern_spec['separator']</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line116">116</a> components_list = pattern_spec['components_list']</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line117">117</a> unless components_list</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line118">118</a> Astute.logger.warn("Wrong pattern #{pattern_spec.inspect} defined for calculating progress via logs.")</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line119">119</a> return 0</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> chunk = get_chunk(fo, pos=pattern_spec['file_pos'])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line123">123</a> return 0 unless chunk</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line124">124</a> pos = chunk.rindex(separator)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line125">125</a> chunk = chunk.slice((pos + separator.size)..-1) if pos</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line126">126</a> block = chunk.split("\n")</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line127">127</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line128">128</a> # Update progress of each component.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line129">129</a> while block.any?</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line130">130</a> string = block.pop</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line131">131</a> components_list.each do |component|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line132">132</a> matched_pattern = nil</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line133">133</a> component['patterns'].each do |pattern|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line134">134</a> if pattern['regexp']</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line135">135</a> matched_pattern = pattern if string.match(pattern['pattern'])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line136">136</a> else</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line137">137</a> matched_pattern = pattern if string.include?(pattern['pattern'])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line138">138</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line139">139</a> break if matched_pattern</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line140">140</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line141">141</a> if matched_pattern and</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line142">142</a> (not component['_progress'] or matched_pattern['progress'] > component['_progress'])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line143">143</a> component['_progress'] = matched_pattern['progress']</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line144">144</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line145">145</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line146">146</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line147">147</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line148">148</a> # Calculate integral progress.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line149">149</a> weighted_components = components_list.select{|n| n['weight']}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line150">150</a> weight_sum = 0.0</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line151">151</a> if weighted_components.any?</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line152">152</a> weighted_components.each{|n| weight_sum += n['weight']}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line153">153</a> weight_sum = weight_sum * components_list.length / weighted_components.length</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line154">154</a> raise "Total weight of weighted components equal to zero." if weight_sum == 0</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line155">155</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line156">156</a> nonweighted_delta = 1.0 / components_list.length</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line157">157</a> progress = 0</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line158">158</a> components_list.each do |component|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line159">159</a> component['_progress'] = 0.0 unless component['_progress']</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line160">160</a> weight = component['weight']</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line161">161</a> if weight</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line162">162</a> progress += component['_progress'] * weight / weight_sum</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line163">163</a> else</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line164">164</a> progress += component['_progress'] * nonweighted_delta</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line165">165</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line166">166</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line167">167</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line168">168</a> return progress</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line169">169</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line170">170</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line171">171</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line172">172</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>
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,821 @@
|
|||
<!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/logparser/provision.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/logparser/provision.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-logparser-provision_rb.html">lib/astute/logparser/provision.rb</a></td>
|
||||
<td class='right_align'><tt>254</tt></td>
|
||||
<td class='right_align'><tt>122</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>86.61%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:87px"></div>
|
||||
<div class="uncovered" style="width:13px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>72.13%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:72px"></div>
|
||||
<div class="uncovered" style="width:28px"></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 "License"); 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 "AS IS" 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 'date'</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 LogParser</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line21">21</a> class ParseProvisionLogs <ParseNodeLogs</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line22">22</a> def initialize</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line23">23</a> pattern_spec = Patterns::get_default_pattern('anaconda-log-supposed-time-kvm')</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line24">24</a> super(pattern_spec)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line25">25</a> end</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 progress_calculate(uids_to_calc, nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line28">28</a> # Just create correct pattern for each node and then call parent method.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line29">29</a> uids_to_calc.each do |uid|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line30">30</a> node = nodes.select {|n| n['uid'] == uid}[0]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line31">31</a> unless @nodes_states[uid]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line32">32</a> @nodes_states[uid] = get_pattern_for_node(node)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line33">33</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line34">34</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line35">35</a> super(uids_to_calc, nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line36">36</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line37">37</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line38">38</a> private</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line39">39</a> def calculate(fo, node_pattern_spec)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line40">40</a> case node_pattern_spec['type']</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line41">41</a> when 'pattern-list'</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line42">42</a> progress = simple_pattern_finder(fo, node_pattern_spec)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line43">43</a> when 'supposed-time'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line44">44</a> progress = supposed_time_parser(fo, node_pattern_spec)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line45">45</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line46">46</a> return progress</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line47">47</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line48">48</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line49">49</a> def get_pattern_for_node(node)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line50">50</a> if node['manufacturer'] == 'KVM'</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line51">51</a> pattern_spec = Patterns::get_default_pattern('anaconda-log-supposed-time-kvm')</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line52">52</a> else</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line53">53</a> pattern_spec = Patterns::get_default_pattern('anaconda-log-supposed-time-baremetal')</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line54">54</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line55">55</a> pattern_spec['path_prefix'] ||= PATH_PREFIX.to_s</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line56">56</a> pattern_spec['separator'] ||= SEPARATOR.to_s</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line57">57</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line58">58</a> hdd = node['meta']['disks'].select{|disk| not disk['removable']}[0]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line59">59</a> if hdd</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line60">60</a> # Convert size from bytes to GB</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line61">61</a> hdd_size = hdd['size'] / 10 ** 9</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line62">62</a> else</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line63">63</a> # Default hdd size is 20 GB</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line64">64</a> hdd_size = 20</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="marked">
|
||||
<td><pre><a name="line67">67</a> hdd_pattern = pattern_spec['pattern_list'].select {|el| el['hdd_size_multiplier']}[0]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line68">68</a> hdd_pattern['supposed_time'] = (hdd_pattern['hdd_size_multiplier'] * hdd_size).to_i</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line69">69</a> return pattern_spec</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line70">70</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line71">71</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line72">72</a> def supposed_time_parser(fo, pattern_spec)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line73">73</a> # Pattern specification example:</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line74">74</a> # pattern_spec = {'type' => 'supposed-time',</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line75">75</a> # 'chunk_size' => 10000,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line76">76</a> # 'date_format' => '%Y-%m-%dT%H:%M:%S',</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line77">77</a> # 'date_regexp' => '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}',</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line78">78</a> # 'pattern_list' => [</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line79">79</a> # {'pattern' => 'Running anaconda script', 'supposed_time' => 60},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line80">80</a> # {'pattern' => 'moving (1) to step enablefilesystems', 'supposed_time' => 3},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line81">81</a> # {'pattern' => "notifying kernel of 'change' event on device", 'supposed_time' => 200},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line82">82</a> # {'pattern' => 'Preparing to install packages', 'supposed_time' => 9},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line83">83</a> # {'pattern' => 'Installing glibc-common-2.12', 'supposed_time' => 9},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line84">84</a> # {'pattern' => 'Installing bash-4.1.2', 'supposed_time' => 11},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line85">85</a> # {'pattern' => 'Installing coreutils-8.4-19', 'supposed_time' => 20},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line86">86</a> # {'pattern' => 'Installing centos-release-6-3', 'supposed_time' => 21},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line87">87</a> # {'pattern' => 'Installing attr-2.4.44', 'supposed_time' => 23},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line88">88</a> # {'pattern' => 'leaving (1) step installpackages', 'supposed_time' => 60},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line89">89</a> # {'pattern' => 'moving (1) to step postscripts', 'supposed_time' => 4},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line90">90</a> # {'pattern' => 'leaving (1) step postscripts', 'supposed_time' => 130},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line91">91</a> # ].reverse,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line92">92</a> # 'filename' => 'install/anaconda.log'</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line93">93</a> # }</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line94">94</a> # Use custom separator if defined.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line95">95</a> separator = pattern_spec['separator']</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line96">96</a> log_patterns = pattern_spec['pattern_list']</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line97">97</a> date_format = pattern_spec['date_format']</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line98">98</a> date_regexp = pattern_spec['date_regexp']</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line99">99</a> unless date_regexp and date_format and log_patterns</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line100">100</a> Astute.logger.warn("Wrong pattern_spec #{pattern_spec.inspect} defined for calculating progress via logs.")</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line101">101</a> return 0</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line102">102</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line103">103</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line104">104</a> def self.get_elapsed_time(patterns)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line105">105</a> elapsed_time = 0</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line106">106</a> patterns.each do |p|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line107">107</a> if p['_progress']</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line108">108</a> break</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line109">109</a> else</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line110">110</a> elapsed_time += p['supposed_time']</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line111">111</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line112">112</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line113">113</a> return elapsed_time</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line114">114</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line115">115</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line116">116</a> def self.get_progress(base_progress, elapsed_time, delta_time, supposed_time=nil)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line117">117</a> return 1.0 if elapsed_time.zero?</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line118">118</a> k = (1.0 - base_progress) / elapsed_time</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line119">119</a> supposed_time ? surplus = delta_time - supposed_time : surplus = nil</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line120">120</a> if surplus and surplus > 0</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line121">121</a> progress = supposed_time * k + surplus * k/3 + base_progress</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line122">122</a> else</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line123">123</a> progress = delta_time * k + base_progress</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line124">124</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line125">125</a> progress = 1.0 if progress > 1</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line126">126</a> return progress</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line127">127</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line128">128</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line129">129</a> def self.get_seconds_from_time(date)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line130">130</a> hours, mins, secs, frac = Date::day_fraction_to_time(date)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line131">131</a> return hours*60*60 + mins*60 + secs</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line132">132</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line133">133</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line134">134</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line135">135</a> chunk = get_chunk(fo, pattern_spec['chunk_size'])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line136">136</a> return 0 unless chunk</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line137">137</a> pos = chunk.rindex(separator)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line138">138</a> chunk = chunk.slice((pos + separator.size)..-1) if pos</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line139">139</a> block = chunk.split("\n")</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line140">140</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line141">141</a> now = DateTime.now()</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line142">142</a> prev_time = pattern_spec['_prev_time'] ||= now</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line143">143</a> prev_progress = pattern_spec['_prev_progress'] ||= 0</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line144">144</a> elapsed_time = pattern_spec['_elapsed_time'] ||= get_elapsed_time(log_patterns)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line145">145</a> seconds_since_prev = get_seconds_from_time(now - prev_time)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line146">146</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line147">147</a> until block.empty?</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line148">148</a> string = block.pop</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line149">149</a> log_patterns.each do |pattern|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line150">150</a> if string.include?(pattern['pattern'])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line151">151</a> if pattern['_progress']</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line152">152</a> # We not found any new messages. Calculate progress with old data.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line153">153</a> progress = get_progress(prev_progress, elapsed_time,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line154">154</a> seconds_since_prev, pattern['supposed_time'])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line155">155</a> return progress</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> else</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line158">158</a> # We found message that we never find before. We need to: </pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line159">159</a> # calculate progress for this message;</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line160">160</a> # recalculate control point and elapsed_time;</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line161">161</a> # calculate progress for current time.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line162">162</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line163">163</a> # Trying to find timestamp of message.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line164">164</a> date_string = string.match(date_regexp)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line165">165</a> if date_string</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line166">166</a> # Get relative time when the message realy occured.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line167">167</a> date = DateTime.strptime(date_string[0], date_format) - prev_time.offset</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line168">168</a> real_time = get_seconds_from_time(date - prev_time)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line169">169</a> # Update progress of the message.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line170">170</a> prev_supposed_time = log_patterns.select{|n| n['_progress'] == prev_progress}[0]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line171">171</a> prev_supposed_time = prev_supposed_time['supposed_time'] if prev_supposed_time</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line172">172</a> progress = get_progress(prev_progress, elapsed_time, real_time, prev_supposed_time)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line173">173</a> pattern['_progress'] = progress</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line174">174</a> # Recalculate elapsed time.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line175">175</a> elapsed_time = pattern_spec['_elapsed_time'] = get_elapsed_time(log_patterns)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line176">176</a> # Update time and progress for control point.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line177">177</a> prev_time = pattern_spec['_prev_time'] = date</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line178">178</a> prev_progress = pattern_spec['_prev_progress'] = progress</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line179">179</a> seconds_since_prev = get_seconds_from_time(now - date)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line180">180</a> # Calculate progress for current time.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line181">181</a> progress = get_progress(prev_progress, elapsed_time,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line182">182</a> seconds_since_prev, pattern['supposed_time'])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line183">183</a> return progress</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line184">184</a> else</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line185">185</a> Astute.logger.info("Can't gather date (format: '#{date_regexp}') from string: #{string}")</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line186">186</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line187">187</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line188">188</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line189">189</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line190">190</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line191">191</a> # We found nothing.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line192">192</a> progress = get_progress(prev_progress, elapsed_time, seconds_since_prev, log_patterns[0]['supposed_time'])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line193">193</a> return progress</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="marked">
|
||||
<td><pre><a name="line196">196</a> def simple_pattern_finder(fo, pattern_spec)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line197">197</a> # Pattern specification example:</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line198">198</a> # pattern_spec = {'type' => 'pattern-list', 'separator' => "custom separator\n",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line199">199</a> # 'chunk_size' => 40000,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line200">200</a> # 'pattern_list' => [</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line201">201</a> # {'pattern' => 'Running kickstart %%pre script', 'progress' => 0.08},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line202">202</a> # {'pattern' => 'to step enablefilesystems', 'progress' => 0.09},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line203">203</a> # {'pattern' => 'to step reposetup', 'progress' => 0.13},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line204">204</a> # {'pattern' => 'to step installpackages', 'progress' => 0.16},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line205">205</a> # {'pattern' => 'Installing',</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line206">206</a> # 'number' => 210, # Now it install 205 packets. Add 5 packets for growth in future.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line207">207</a> # 'p_min' => 0.16, # min percent</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line208">208</a> # 'p_max' => 0.87 # max percent</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> # {'pattern' => 'to step postinstallconfig', 'progress' => 0.87},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line211">211</a> # {'pattern' => 'to step dopostaction', 'progress' => 0.92},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line212">212</a> # ]</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line213">213</a> # }</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line214">214</a> # Use custom separator if defined.</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line215">215</a> separator = pattern_spec['separator']</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line216">216</a> log_patterns = pattern_spec['pattern_list']</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line217">217</a> unless log_patterns</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line218">218</a> Astute.logger.warn("Wrong pattern #{pattern_spec.inspect} defined for calculating progress via logs.")</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line219">219</a> return 0</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line220">220</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line221">221</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line222">222</a> chunk = get_chunk(fo, pattern_spec['chunk_size'])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line223">223</a> # NOTE(mihgen): Following line fixes "undefined method `rindex' for nil:NilClass" for empty log file</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line224">224</a> return 0 unless chunk</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line225">225</a> pos = chunk.rindex(separator)</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line226">226</a> chunk = chunk.slice((pos + separator.size)..-1) if pos</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line227">227</a> block = chunk.split("\n")</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line228">228</a> return 0 unless block</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line229">229</a> while true</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line230">230</a> string = block.pop</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line231">231</a> return 0 unless string # If we found nothing</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line232">232</a> log_patterns.each do |pattern|</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line233">233</a> if string.include?(pattern['pattern'])</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line234">234</a> return pattern['progress'] if pattern['progress']</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line235">235</a> if pattern['number']</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line236">236</a> string = block.pop</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line237">237</a> counter = 1</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line238">238</a> while string</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line239">239</a> counter += 1 if string.include?(pattern['pattern'])</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line240">240</a> string = block.pop</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line241">241</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line242">242</a> progress = counter.to_f / pattern['number']</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line243">243</a> progress = 1 if progress > 1</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line244">244</a> progress = pattern['p_min'] + progress * (pattern['p_max'] - pattern['p_min'])</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line245">245</a> return progress</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line246">246</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line247">247</a> Astute.logger.warn("Wrong pattern #{pattern_spec.inspect} defined for calculating progress via log.")</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line248">248</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line249">249</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line250">250</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line251">251</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line252">252</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line253">253</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line254">254</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line255">255</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>
|
|
@ -0,0 +1,503 @@
|
|||
<!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/logparser.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/logparser.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-logparser_rb.html">lib/astute/logparser.rb</a></td>
|
||||
<td class='right_align'><tt>148</tt></td>
|
||||
<td class='right_align'><tt>78</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>91.22%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:91px"></div>
|
||||
<div class="uncovered" style="width:9px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>83.33%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:83px"></div>
|
||||
<div class="uncovered" style="width:17px"></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 "License"); 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 "AS IS" 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="inferred">
|
||||
<td><pre><a name="line17">17</a> # -*- coding: utf-8 -*-</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line18">18</a> module Astute</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line19">19</a> module LogParser</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line20">20</a> LOG_PORTION = 10000</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line21">21</a> # Default values. Can be overrided by pattern_spec.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line22">22</a> # E.g. pattern_spec = {'separator' => 'new_separator', ...}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line23">23</a> PATH_PREFIX = '/var/log/remote/'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line24">24</a> SEPARATOR = "SEPARATOR\n"</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line25">25</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line26">26</a> class NoParsing</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line27">27</a> def initialize(*args)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line28">28</a> end</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> def method_missing(*args)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line31">31</a> # We just eat the call if we don't want to deal with logs</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line32">32</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line33">33</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line34">34</a> def progress_calculate(*args)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line35">35</a> []</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line36">36</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line37">37</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line38">38</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line39">39</a> class ParseNodeLogs</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line40">40</a> attr_reader :pattern_spec</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> def initialize(pattern_spec)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line43">43</a> @nodes_states = {}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line44">44</a> @pattern_spec = pattern_spec</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line45">45</a> @pattern_spec['path_prefix'] ||= PATH_PREFIX.to_s</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line46">46</a> @pattern_spec['separator'] ||= SEPARATOR.to_s</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line47">47</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line48">48</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line49">49</a> def progress_calculate(uids_to_calc, nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line50">50</a> nodes_progress = []</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line51">51</a> uids_to_calc.each do |uid|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line52">52</a> node = nodes.select {|n| n['uid'] == uid}[0] # NOTE: use nodes hash</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line53">53</a> node_pattern_spec = @nodes_states[uid]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line54">54</a> unless node_pattern_spec</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line55">55</a> node_pattern_spec = Marshal.load(Marshal.dump(@pattern_spec))</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line56">56</a> @nodes_states[uid] = node_pattern_spec</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line57">57</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line58">58</a> path = "#{@pattern_spec['path_prefix']}#{node['fqdn']}/#{@pattern_spec['filename']}"</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line59">59</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line60">60</a> begin</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line61">61</a> progress = (get_log_progress(path, node_pattern_spec)*100).to_i # Return percent of progress</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line62">62</a> rescue Exception => e</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line63">63</a> Astute.logger.warn "Some error occurred when calculate progress for node '#{uid}': #{e.message}, trace: #{e.backtrace.inspect}"</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line64">64</a> progress = 0</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> nodes_progress << {</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line68">68</a> 'uid' => uid,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line69">69</a> 'progress' => progress</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line70">70</a> }</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line71">71</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line72">72</a> nodes_progress</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line73">73</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line74">74</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line75">75</a> def prepare(nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line76">76</a> @nodes_states = {}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line77">77</a> nodes.each do |node|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line78">78</a> path = "#{@pattern_spec['path_prefix']}#{node['ip']}/#{@pattern_spec['filename']}"</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line79">79</a> File.open(path, 'a') {|fo| fo.write @pattern_spec['separator'] } if File.writable?(path)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line80">80</a> end</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 pattern_spec= (pattern_spec)</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line84">84</a> initialise(pattern_spec) # NOTE: bug?</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> private</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line88">88</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line89">89</a> def get_log_progress(path, node_pattern_spec)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line90">90</a> unless File.readable?(path)</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line91">91</a> Astute.logger.debug "Can't read file with logs: #{path}"</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line92">92</a> return 0</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line93">93</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line94">94</a> if node_pattern_spec.nil?</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line95">95</a> Astute.logger.warn "Can't parse logs. Pattern_spec is empty."</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line96">96</a> return 0</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line97">97</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line98">98</a> progress = nil</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line99">99</a> File.open(path) do |fo|</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line100">100</a> # Try to find well-known ends of log.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line101">101</a> endlog = find_endlog_patterns(fo, node_pattern_spec)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line102">102</a> return endlog if endlog</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line103">103</a> # Start reading from end of file.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line104">104</a> fo.pos = fo.stat.size</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line105">105</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line106">106</a> # Method 'calculate' should be defined at child classes.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line107">107</a> progress = calculate(fo, node_pattern_spec)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line108">108</a> node_pattern_spec['file_pos'] = fo.pos</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line109">109</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line110">110</a> unless progress</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line111">111</a> Astute.logger.warn("Wrong pattern #{node_pattern_spec.inspect} defined for calculating progress via logs.")</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line112">112</a> return 0</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line113">113</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line114">114</a> progress</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line115">115</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line116">116</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line117">117</a> def find_endlog_patterns(fo, pattern_spec)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line118">118</a> # Pattern example:</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line119">119</a> # pattern_spec = {...,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line120">120</a> # 'endlog_patterns' => [{'pattern' => /Finished catalog run in [0-9]+\.[0-9]* seconds\n/, 'progress' => 1.0}],</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> endlog_patterns = pattern_spec['endlog_patterns']</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line123">123</a> return nil unless endlog_patterns</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line124">124</a> fo.pos = fo.stat.size</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line125">125</a> chunk = get_chunk(fo, 100)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line126">126</a> return nil unless chunk</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line127">127</a> endlog_patterns.each do |pattern|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line128">128</a> return pattern['progress'] if chunk.end_with?(pattern['pattern'])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line129">129</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line130">130</a> nil</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line131">131</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line132">132</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line133">133</a> def get_chunk(fo, size=nil, pos=nil)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line134">134</a> if pos</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line135">135</a> fo.pos = pos</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line136">136</a> return fo.read</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line137">137</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line138">138</a> size = LOG_PORTION unless size</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line139">139</a> return nil if fo.pos == 0</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line140">140</a> size = fo.pos if fo.pos < size</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line141">141</a> next_pos = fo.pos - size</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line142">142</a> fo.pos = next_pos</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line143">143</a> block = fo.read(size)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line144">144</a> fo.pos = next_pos</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line145">145</a> block</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line146">146</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line147">147</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line148">148</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line149">149</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>
|
|
@ -0,0 +1,464 @@
|
|||
<!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/mclient.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/mclient.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-mclient_rb.html">lib/astute/mclient.rb</a></td>
|
||||
<td class='right_align'><tt>135</tt></td>
|
||||
<td class='right_align'><tt>75</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>91.11%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:91px"></div>
|
||||
<div class="uncovered" style="width:9px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>84.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:84px"></div>
|
||||
<div class="uncovered" style="width:16px"></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 "License"); 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 "AS IS" 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 'mcollective'</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> class MClient</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line21">21</a> include MCollective::RPC</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> attr_accessor :retries</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> def initialize(ctx, agent, nodes=nil, check_result=true, timeout=nil)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line26">26</a> @task_id = ctx.task_id</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line27">27</a> @agent = agent</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line28">28</a> @nodes = nodes.map { |n| n.to_s } if nodes</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line29">29</a> @check_result = check_result</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line30">30</a> @retries = Astute.config.MC_RETRIES</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line31">31</a> @timeout = timeout</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line32">32</a> initialize_mclient</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line33">33</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line34">34</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line35">35</a> def on_respond_timeout(&block)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line36">36</a> @on_respond_timeout = block</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line37">37</a> self</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line38">38</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line39">39</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line40">40</a> def method_missing(method, *args)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line41">41</a> @mc_res = mc_send(method, *args)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line42">42</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line43">43</a> if method == :discover</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line44">44</a> @nodes = args[0][:nodes]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line45">45</a> return @mc_res</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="inferred">
|
||||
<td><pre><a name="line48">48</a> # Enable if needed. In normal case it eats the screen pretty fast</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line49">49</a> log_result(@mc_res, method)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line50">50</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line51">51</a> check_results_with_retries(method, args) if @check_result</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line52">52</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line53">53</a> @mc_res</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line54">54</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line55">55</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line56">56</a> private</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line57">57</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line58">58</a> def check_results_with_retries(method, args)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line59">59</a> err_msg = ''</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line60">60</a> # Following error might happen because of misconfiguration, ex. direct_addressing = 1 only on client</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line61">61</a> # or.. could be just some hang? Let's retry if @retries is set</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line62">62</a> if @mc_res.length < @nodes.length</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line63">63</a> # some nodes didn't respond</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line64">64</a> retry_index = 1</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line65">65</a> while retry_index <= @retries</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line66">66</a> sleep rand</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line67">67</a> nodes_responded = @mc_res.map { |n| n.results[:sender] }</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line68">68</a> not_responded = @nodes - nodes_responded</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line69">69</a> Astute.logger.debug "Retry ##{retry_index} to run mcollective agent on nodes: '#{not_responded.join(',')}'"</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line70">70</a> mc_send :discover, :nodes => not_responded</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line71">71</a> @new_res = mc_send(method, *args)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line72">72</a> log_result(@new_res, method)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line73">73</a> # @new_res can have some nodes which finally responded</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line74">74</a> @mc_res += @new_res</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line75">75</a> break if @mc_res.length == @nodes.length</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line76">76</a> retry_index += 1</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line77">77</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line78">78</a> if @mc_res.length < @nodes.length</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line79">79</a> nodes_responded = @mc_res.map { |n| n.results[:sender] }</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line80">80</a> not_responded = @nodes - nodes_responded</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line81">81</a> if @on_respond_timeout</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line82">82</a> @on_respond_timeout.call not_responded</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line83">83</a> else</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line84">84</a> err_msg += "MCollective agents '#{not_responded.join(',')}' didn't respond. \n"</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> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line87">87</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line88">88</a> failed = @mc_res.select{|x| x.results[:statuscode] != 0 }</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line89">89</a> if failed.any?</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line90">90</a> err_msg += "MCollective call failed in agent '#{@agent}', "\</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line91">91</a> "method '#{method}', failed nodes: #{failed.map{|x| x.results[:sender]}.join(',')} \n"</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line92">92</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line93">93</a> unless err_msg.empty?</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line94">94</a> Astute.logger.error err_msg</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line95">95</a> raise "#{@task_id}: #{err_msg}"</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line96">96</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line97">97</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line98">98</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line99">99</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line100">100</a> def mc_send(*args)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line101">101</a> @mc.send(*args)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line102">102</a> rescue => ex</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line103">103</a> case ex</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line104">104</a> when Stomp::Error::NoCurrentConnection</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line105">105</a> # stupid stomp cannot recover severed connection</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line106">106</a> stomp = MCollective::PluginManager["connector_plugin"]</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line107">107</a> stomp.disconnect rescue nil</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line108">108</a> stomp.instance_variable_set :@connection, nil</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line109">109</a> initialize_mclient</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line110">110</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line111">111</a> sleep rand</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line112">112</a> Astute.logger.error "Retrying MCollective call after exception: #{ex}"</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line113">113</a> retry</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line114">114</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line115">115</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line116">116</a> def initialize_mclient</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line117">117</a> @mc = rpcclient(@agent, :exit_on_failure => false)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line118">118</a> @mc.timeout = @timeout if @timeout</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line119">119</a> @mc.progress = false</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line120">120</a> if @nodes</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line121">121</a> @mc.discover :nodes => @nodes</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line122">122</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line123">123</a> rescue => ex</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line124">124</a> Astute.logger.error "Retrying RPC client instantiation after exception: #{ex}"</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line125">125</a> sleep 5</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line126">126</a> retry</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line127">127</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line128">128</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line129">129</a> def log_result(result, method)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line130">130</a> result.each do |node|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line131">131</a> Astute.logger.debug "#{@task_id}: MC agent '#{node.agent}', method '#{method}', "\</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line132">132</a> "results: #{node.results.inspect}"</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line133">133</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line134">134</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line135">135</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line136">136</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>
|
|
@ -0,0 +1,149 @@
|
|||
<!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/metadata.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/metadata.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-metadata_rb.html">lib/astute/metadata.rb</a></td>
|
||||
<td class='right_align'><tt>30</tt></td>
|
||||
<td class='right_align'><tt>9</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>86.67%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:87px"></div>
|
||||
<div class="uncovered" style="width:13px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>55.56%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:56px"></div>
|
||||
<div class="uncovered" style="width:44px"></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 "License"); 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 "AS IS" 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 'json'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line18">18</a> require 'ipaddr'</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line19">19</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line20">20</a> module Astute</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line21">21</a> module Metadata</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line22">22</a> def self.publish_facts(ctx, uid, metadata)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line23">23</a> # This is synchronious RPC call, so we are sure that data were sent and processed remotely</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line24">24</a> Astute.logger.info "#{ctx.task_id}: nailyfact - storing metadata for node uid=#{uid}"</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line25">25</a> Astute.logger.debug "#{ctx.task_id}: nailyfact stores metadata: #{metadata.inspect}"</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line26">26</a> nailyfact = MClient.new(ctx, "nailyfact", [uid])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line27">27</a> # TODO(mihgen) check results!</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line28">28</a> stats = nailyfact.post(:value => metadata.to_json)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line29">29</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line30">30</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line31">31</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>
|
|
@ -0,0 +1,395 @@
|
|||
<!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/network.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/network.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-network_rb.html">lib/astute/network.rb</a></td>
|
||||
<td class='right_align'><tt>112</tt></td>
|
||||
<td class='right_align'><tt>45</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></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 "License"); 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 "AS IS" 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> module Astute</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line18">18</a> module Network</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line19">19</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line20">20</a> def self.check_network(ctx, nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line21">21</a> if nodes.empty?</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line22">22</a> Astute.logger.info(</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line23">23</a> "#{ctx.task_id}: Network checker: nodes list is empty. Nothing to check.")</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line24">24</a> return {</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line25">25</a> 'status' => 'error',</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line26">26</a> 'error' => "Network verification requires a minimum of two nodes."</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line27">27</a> }</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line28">28</a> elsif nodes.length == 1</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line29">29</a> Astute.logger.info(</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line30">30</a> "#{ctx.task_id}: Network checker: nodes list contains one node only. Do nothing.")</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line31">31</a> return {'nodes' => [{</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line32">32</a> 'uid' => nodes[0]['uid'],</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line33">33</a> 'networks' => nodes[0]['networks']</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line34">34</a> }]}</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line35">35</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line36">36</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line37">37</a> uids = nodes.map { |node| node['uid'].to_s }</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line38">38</a> # TODO Everything breakes if agent not found. We have to handle that</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line39">39</a> net_probe = MClient.new(ctx, "net_probe", uids)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line40">40</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line41">41</a> start_frame_listeners(ctx, net_probe, nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line42">42</a> ctx.reporter.report({'progress' => 30})</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line43">43</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line44">44</a> send_probing_frames(ctx, net_probe, nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line45">45</a> ctx.reporter.report({'progress' => 60})</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line46">46</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line47">47</a> net_probe.discover(:nodes => uids)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line48">48</a> stats = net_probe.get_probing_info</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line49">49</a> result = format_result(stats)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line50">50</a> Astute.logger.debug "#{ctx.task_id}: Network checking is done. Results: #{result.inspect}"</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line51">51</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line52">52</a> {'nodes' => result}</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line53">53</a> end</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> private</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line56">56</a> def self.start_frame_listeners(ctx, net_probe, nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line57">57</a> nodes.each do |node|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line58">58</a> data_to_send = make_interfaces_to_send(node['networks'])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line59">59</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line60">60</a> Astute.logger.debug(</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line61">61</a> "#{ctx.task_id}: Network checker listen: node: #{node['uid']} data: #{data_to_send.inspect}")</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line62">62</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line63">63</a> net_probe.discover(:nodes => [node['uid'].to_s])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line64">64</a> net_probe.start_frame_listeners(:interfaces => data_to_send.to_json)</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> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line67">67</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line68">68</a> def self.send_probing_frames(ctx, net_probe, nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line69">69</a> nodes.each do |node|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line70">70</a> data_to_send = make_interfaces_to_send(node['networks'])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line71">71</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line72">72</a> Astute.logger.debug(</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line73">73</a> "#{ctx.task_id}: Network checker send: node: #{node['uid']} data: #{data_to_send.inspect}")</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line74">74</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line75">75</a> net_probe.discover(:nodes => [node['uid'].to_s])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line76">76</a> net_probe.send_probing_frames(:interfaces => data_to_send.to_json)</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> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line79">79</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line80">80</a> def self.make_interfaces_to_send(networks)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line81">81</a> data_to_send = {}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line82">82</a> networks.each do |network|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line83">83</a> data_to_send[network['iface']] = network['vlans'].join(",")</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line84">84</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line85">85</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line86">86</a> data_to_send</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line87">87</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line88">88</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line89">89</a> def self.format_result(stats)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line90">90</a> uids = stats.map{|node| node.results[:sender]}.sort</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line91">91</a> stats.map do |node|</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line92">92</a> {</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line93">93</a> 'uid' => node.results[:sender],</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line94">94</a> 'networks' => check_vlans_by_traffic(</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line95">95</a> uids,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line96">96</a> node.results[:data][:neighbours])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line97">97</a> }</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line98">98</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line99">99</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line100">100</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line101">101</a> def self.check_vlans_by_traffic(uids, data)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line102">102</a> data.map do |iface, vlans|</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line103">103</a> {</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line104">104</a> 'iface' => iface,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line105">105</a> 'vlans' => vlans.reject{ |k, v|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line106">106</a> v.keys.sort != uids</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line107">107</a> }.keys.map(&:to_i)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line108">108</a> }</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line109">109</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line110">110</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line111">111</a> </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> 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>
|
|
@ -0,0 +1,338 @@
|
|||
<!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/node.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/node.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-node_rb.html">lib/astute/node.rb</a></td>
|
||||
<td class='right_align'><tt>93</tt></td>
|
||||
<td class='right_align'><tt>44</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></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 "License"); 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 "AS IS" 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 'active_support/core_ext/hash/indifferent_access'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line18">18</a> require 'ostruct'</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line19">19</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line20">20</a> module Astute</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line21">21</a> class Node < OpenStruct</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line22">22</a> def initialize(hash=nil)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line23">23</a> if hash && (uid = hash['uid'])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line24">24</a> hash = hash.dup</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line25">25</a> hash['uid'] = uid.to_s</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line26">26</a> else</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line27">27</a> raise TypeError.new("Invalid data: #{hash.inspect}")</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line28">28</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line29">29</a> super hash</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line30">30</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line31">31</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line32">32</a> def [](key)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line33">33</a> send key</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line34">34</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line35">35</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line36">36</a> def []=(key, value)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line37">37</a> send "#{key}=", value</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line38">38</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line39">39</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line40">40</a> def uid</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line41">41</a> @table[:uid]</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line42">42</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line43">43</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line44">44</a> def uid=(_)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line45">45</a> raise TypeError.new('Read-only attribute')</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 to_hash</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line49">49</a> @table.with_indifferent_access</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line50">50</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line51">51</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line52">52</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line53">53</a> class NodesHash < Hash</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line54">54</a> alias uids keys</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line55">55</a> alias nodes values</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line56">56</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line57">57</a> def self.build(nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line58">58</a> return nodes if nodes.kind_of? self</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line59">59</a> nodes.inject(self.new) do |hash, node|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line60">60</a> hash << node</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line61">61</a> hash</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line62">62</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line63">63</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line64">64</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line65">65</a> def <<(node)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line66">66</a> node = normalize_value(node)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line67">67</a> self[node.uid] = node</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line68">68</a> self</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line69">69</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line70">70</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line71">71</a> def push(*nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line72">72</a> nodes.each{|node| self.<< node }</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line73">73</a> self</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line74">74</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line75">75</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line76">76</a> def [](key)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line77">77</a> super key.to_s</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line78">78</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line79">79</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line80">80</a> private</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line81">81</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line82">82</a> def []=(*args)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line83">83</a> super</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line84">84</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line85">85</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line86">86</a> def normalize_value(node)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line87">87</a> if node.kind_of? Node</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line88">88</a> node</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line89">89</a> else</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line90">90</a> Node.new(node.to_hash)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line91">91</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line92">92</a> end</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> 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>
|
|
@ -0,0 +1,374 @@
|
|||
<!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/nodes_remover.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/nodes_remover.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-nodes_remover_rb.html">lib/astute/nodes_remover.rb</a></td>
|
||||
<td class='right_align'><tt>105</tt></td>
|
||||
<td class='right_align'><tt>53</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>98.10%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:98px"></div>
|
||||
<div class="uncovered" style="width:2px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>96.23%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:96px"></div>
|
||||
<div class="uncovered" style="width:4px"></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 "License"); 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 "AS IS" 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> module Astute</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line18">18</a> class NodesRemover</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line19">19</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line20">20</a> def initialize(ctx, nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line21">21</a> @ctx = ctx</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line22">22</a> @nodes = NodesHash.build(nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line23">23</a> end</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> def remove</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line26">26</a> # TODO(mihgen): 1. Nailgun should process node error message</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line27">27</a> # 2. Should we rename nodes -> removed_nodes array?</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line28">28</a> # 3. If exception is raised here, we should not fully fall into error, but only failed node</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line29">29</a> erased_nodes, error_nodes, inaccessible_nodes = remove_nodes(@nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line30">30</a> retry_remove_nodes(error_nodes, erased_nodes,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line31">31</a> Astute.config[:MC_RETRIES], Astute.config[:MC_RETRY_INTERVAL])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line32">32</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line33">33</a> retry_remove_nodes(inaccessible_nodes, erased_nodes,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line34">34</a> Astute.config[:MC_RETRIES], Astute.config[:MC_RETRY_INTERVAL])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line35">35</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line36">36</a> answer = {'nodes' => serialize_nodes(erased_nodes)}</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line37">37</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line38">38</a> unless inaccessible_nodes.empty?</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line39">39</a> serialized_inaccessible_nodes = serialize_nodes(inaccessible_nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line40">40</a> answer.merge!({'inaccessible_nodes' => serialized_inaccessible_nodes})</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.warn "#{@ctx.task_id}: Removing of nodes #{@nodes.uids.inspect} finished " \</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line43">43</a> "with errors. Nodes #{serialized_inaccessible_nodes.inspect} are inaccessible"</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line44">44</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line45">45</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line46">46</a> unless error_nodes.empty?</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line47">47</a> serialized_error_nodes = serialize_nodes(error_nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line48">48</a> answer.merge!({'status' => 'error', 'error_nodes' => serialized_error_nodes})</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line49">49</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line50">50</a> Astute.logger.error "#{@ctx.task_id}: Removing of nodes #{@nodes.uids.inspect} finished " \</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line51">51</a> "with errors: #{serialized_error_nodes.inspect}"</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line52">52</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line53">53</a> Astute.logger.info "#{@ctx.task_id}: Finished removing of nodes: #{@nodes.uids.inspect}"</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> answer</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line56">56</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line57">57</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line58">58</a> private</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line59">59</a> def serialize_nodes(nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line60">60</a> nodes.nodes.map(&:to_hash)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line61">61</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line62">62</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line63">63</a> def remove_nodes(nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line64">64</a> if nodes.empty?</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line65">65</a> Astute.logger.info "#{@ctx.task_id}: Nodes to remove are not provided. Do nothing."</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line66">66</a> return Array.new(3){ NodesHash.new }</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line67">67</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line68">68</a> Astute.logger.info "#{@ctx.task_id}: Starting removing of nodes: #{nodes.uids.inspect}"</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line69">69</a> remover = MClient.new(@ctx, "erase_node", nodes.uids.sort, check_result=false)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line70">70</a> responses = remover.erase_node(:reboot => true)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line71">71</a> Astute.logger.debug "#{@ctx.task_id}: Data received from nodes: #{responses.inspect}"</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line72">72</a> inaccessible_uids = nodes.uids - responses.map{|response| response.results[:sender] }</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line73">73</a> inaccessible_nodes = NodesHash.build(inaccessible_uids.map do |uid|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line74">74</a> {'uid' => uid, 'error' => 'Node not answered by RPC.'}</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line75">75</a> end)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line76">76</a> error_nodes = NodesHash.new</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line77">77</a> erased_nodes = NodesHash.new</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line78">78</a> responses.each do |response|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line79">79</a> node = Node.new('uid' => response.results[:sender])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line80">80</a> if response.results[:statuscode] != 0</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line81">81</a> node['error'] = "RPC agent 'erase_node' failed. Result: #{response.results.inspect}"</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line82">82</a> error_nodes << node</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line83">83</a> elsif not response.results[:data][:rebooted]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line84">84</a> node['error'] = "RPC method 'erase_node' failed with message: #{response.results[:data][:error_msg]}"</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line85">85</a> error_nodes << node</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line86">86</a> else</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line87">87</a> erased_nodes << node</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line88">88</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line89">89</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line90">90</a> [erased_nodes, error_nodes, inaccessible_nodes]</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line91">91</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line92">92</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line93">93</a> def retry_remove_nodes(error_nodes, erased_nodes, retries=3, interval=1)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line94">94</a> retries.times do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line95">95</a> retried_erased_nodes = remove_nodes(error_nodes)[0]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line96">96</a> retried_erased_nodes.each do |uid, node|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line97">97</a> error_nodes.delete uid</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line98">98</a> erased_nodes << node</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line99">99</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line100">100</a> return if error_nodes.empty?</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line101">101</a> sleep(interval) if interval > 0</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line102">102</a> end</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="inferred">
|
||||
<td><pre><a name="line105">105</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line106">106</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>
|
|
@ -0,0 +1,827 @@
|
|||
<!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/orchestrator.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/orchestrator.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-orchestrator_rb.html">lib/astute/orchestrator.rb</a></td>
|
||||
<td class='right_align'><tt>256</tt></td>
|
||||
<td class='right_align'><tt>141</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>90.23%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:90px"></div>
|
||||
<div class="uncovered" style="width:10px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>82.27%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:82px"></div>
|
||||
<div class="uncovered" style="width:18px"></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 "License"); 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 "AS IS" 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="marked">
|
||||
<td><pre><a name="line16">16</a> module Astute</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line17">17</a> class Orchestrator</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line18">18</a> def initialize(deploy_engine=nil, log_parsing=false)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line19">19</a> @deploy_engine = deploy_engine || Astute::DeploymentEngine::NailyFact</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line20">20</a> @log_parser = log_parsing ? LogParser::ParseDeployLogs.new : LogParser::NoParsing.new</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line21">21</a> 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> def node_type(reporter, task_id, nodes, timeout=nil)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line24">24</a> context = Context.new(task_id, reporter)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line25">25</a> uids = nodes.map {|n| n['uid']}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line26">26</a> systemtype = MClient.new(context, "systemtype", uids, check_result=false, timeout)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line27">27</a> systems = systemtype.get_type</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line28">28</a> systems.map do |n|</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line29">29</a> {</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line30">30</a> 'uid' => n.results[:sender],</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line31">31</a> 'node_type' => n.results[:data][:node_type].chomp</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line32">32</a> }</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line33">33</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line34">34</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line35">35</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line36">36</a> def deploy(up_reporter, task_id, nodes, attrs)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line37">37</a> raise "Nodes to deploy are not provided!" if nodes.empty?</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line38">38</a> # Following line fixes issues with uids: it should always be string</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line39">39</a> nodes.map { |x| x['uid'] = x['uid'].to_s } # NOTE: perform that on environment['nodes'] initialization</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line40">40</a> proxy_reporter = ProxyReporter.new(up_reporter)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line41">41</a> context = Context.new(task_id, proxy_reporter, @log_parser)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line42">42</a> deploy_engine_instance = @deploy_engine.new(context)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line43">43</a> Astute.logger.info "Using #{deploy_engine_instance.class} for deployment."</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line44">44</a> begin</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line45">45</a> @log_parser.prepare(nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line46">46</a> rescue Exception => e</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line47">47</a> Astute.logger.warn "Some error occurred when prepare LogParser: #{e.message}, trace: #{e.backtrace.inspect}"</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line48">48</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line49">49</a> deploy_engine_instance.deploy(nodes, attrs)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line50">50</a> return SUCCESS</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line51">51</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line52">52</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line53">53</a> def fast_provision(reporter, engine_attrs, nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line54">54</a> raise "Nodes to provision are not provided!" if nodes.empty?</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line55">55</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line56">56</a> engine = create_engine(engine_attrs, reporter)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line57">57</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line58">58</a> begin</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line59">59</a> reboot_events = reboot_nodes(engine, nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line60">60</a> failed_nodes = check_reboot_nodes(engine, reboot_events)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line61">61</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line62">62</a> rescue RuntimeError => e</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line63">63</a> Astute.logger.error("Error occured while provisioning: #{e.inspect}")</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line64">64</a> reporter.report({</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line65">65</a> 'status' => 'error',</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line66">66</a> 'error' => 'Cobbler error',</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line67">67</a> 'progress' => 100</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line68">68</a> })</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line69">69</a> raise StopIteration</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line70">70</a> ensure</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line71">71</a> engine.sync</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="marked">
|
||||
<td><pre><a name="line74">74</a> if failed_nodes.empty?</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line75">75</a> report_result({}, reporter)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line76">76</a> return SUCCESS</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line77">77</a> else</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line78">78</a> Astute.logger.error("Nodes failed to reboot: #{failed_nodes.inspect}")</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line79">79</a> reporter.report({</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line80">80</a> 'status' => 'error',</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line81">81</a> 'error' => "Nodes failed to reboot: #{failed_nodes.inspect}",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line82">82</a> 'progress' => 100</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line83">83</a> })</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line84">84</a> raise StopIteration</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> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line87">87</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line88">88</a> def provision(reporter, task_id, nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line89">89</a> raise "Nodes to provision are not provided!" if nodes.empty?</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line90">90</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line91">91</a> # Following line fixes issues with uids: it should always be string</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line92">92</a> nodes.map { |x| x['uid'] = x['uid'].to_s } # NOTE: perform that on environment['nodes'] initialization</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line93">93</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line94">94</a> nodes_uids = nodes.map { |n| n['uid'] }</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line95">95</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line96">96</a> provisionLogParser = LogParser::ParseProvisionLogs.new</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line97">97</a> proxy_reporter = ProxyReporter.new(reporter)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line98">98</a> sleep_not_greater_than(10) do # Wait while nodes going to reboot</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line99">99</a> Astute.logger.info "Starting OS provisioning for nodes: #{nodes_uids.join(',')}"</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line100">100</a> begin</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line101">101</a> provisionLogParser.prepare(nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line102">102</a> rescue => e</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line103">103</a> Astute.logger.warn "Some error occurred when prepare LogParser: #{e.message}, trace: #{e.backtrace.inspect}"</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line104">104</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line105">105</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line106">106</a> nodes_not_booted = nodes_uids.clone</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line107">107</a> begin</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line108">108</a> Timeout.timeout(Astute.config.PROVISIONING_TIMEOUT) do # Timeout for booting target OS</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line109">109</a> catch :done do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line110">110</a> while true</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line111">111</a> sleep_not_greater_than(5) do </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line112">112</a> types = node_type(proxy_reporter, task_id, nodes, 2)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line113">113</a> types.each { |t| Astute.logger.debug("Got node types: uid=#{t['uid']} type=#{t['node_type']}") }</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line114">114</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line115">115</a> Astute.logger.debug("Not target nodes will be rejected")</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line116">116</a> target_uids = types.reject{|n| n['node_type'] != 'target'}.map{|n| n['uid']}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line117">117</a> nodes_not_booted -= types.map { |n| n['uid'] }</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line118">118</a> Astute.logger.debug "Not provisioned: #{nodes_not_booted.join(',')}, got target OSes: #{target_uids.join(',')}"</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line119">119</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line120">120</a> if nodes.length == target_uids.length</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line121">121</a> Astute.logger.info "All nodes #{target_uids.join(',')} are provisioned."</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line122">122</a> throw :done</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line123">123</a> else</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line124">124</a> Astute.logger.debug("Nodes list length is not equal to target nodes list length: #{nodes.length} != #{target_uids.length}")</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line125">125</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line126">126</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line127">127</a> report_about_progress(proxy_reporter, provisionLogParser, nodes_uids, target_uids, nodes) </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> end</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> # We are here if jumped by throw from while cycle </pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line132">132</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line133">133</a> rescue Timeout::Error</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line134">134</a> msg = "Timeout of provisioning is exceeded."</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line135">135</a> Astute.logger.error msg</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line136">136</a> error_nodes = nodes_not_booted.map { |n| {'uid' => n,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line137">137</a> 'status' => 'error',</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line138">138</a> 'error_msg' => msg,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line139">139</a> 'progress' => 100,</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line140">140</a> 'error_type' => 'provision'} }</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line141">141</a> proxy_reporter.report({'status' => 'error', 'error' => msg, 'nodes' => error_nodes})</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line142">142</a> return FAIL</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line143">143</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line144">144</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line145">145</a> nodes_progress = nodes.map do |n|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line146">146</a> {'uid' => n['uid'], 'progress' => 100, 'status' => 'provisioned'}</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line147">147</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line148">148</a> proxy_reporter.report({'nodes' => nodes_progress})</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line149">149</a> return SUCCESS</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line150">150</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line151">151</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line152">152</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line153">153</a> def remove_nodes(reporter, task_id, nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line154">154</a> NodesRemover.new(Context.new(task_id, reporter), nodes).remove</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line155">155</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line156">156</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line157">157</a> def verify_networks(reporter, task_id, nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line158">158</a> Network.check_network(Context.new(task_id, reporter), nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line159">159</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line160">160</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line161">161</a> private</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line162">162</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line163">163</a> def report_result(result, reporter)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line164">164</a> default_result = {'status' => 'ready', 'progress' => 100}</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line165">165</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line166">166</a> result = {} unless result.instance_of?(Hash)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line167">167</a> status = default_result.merge(result)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line168">168</a> reporter.report(status)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line169">169</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line170">170</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line171">171</a> def sleep_not_greater_than(sleep_time, &block)</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line172">172</a> time = Time.now.to_f</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line173">173</a> block.call</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line174">174</a> time = time + sleep_time - Time.now.to_f</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line175">175</a> sleep (time) if time > 0</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line176">176</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line177">177</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line178">178</a> def create_engine(engine_attrs, reporter)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line179">179</a> begin</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line180">180</a> Astute.logger.info("Trying to instantiate cobbler engine: #{engine_attrs.inspect}")</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line181">181</a> Astute::Provision::Cobbler.new(engine_attrs)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line182">182</a> rescue</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line183">183</a> Astute.logger.error("Error occured during cobbler initializing")</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line184">184</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line185">185</a> reporter.report({</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line186">186</a> 'status' => 'error',</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line187">187</a> 'error' => 'Cobbler can not be initialized',</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line188">188</a> 'progress' => 100</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line189">189</a> })</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line190">190</a> raise StopIteration</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line191">191</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line192">192</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line193">193</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line194">194</a> def reboot_nodes(engine, nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line195">195</a> reboot_events = {}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line196">196</a> nodes.each do |node|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line197">197</a> begin</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line198">198</a> Astute.logger.info("Adding #{node['name']} into cobbler")</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line199">199</a> engine.item_from_hash('system', node['name'], node,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line200">200</a> :item_preremove => true)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line201">201</a> rescue RuntimeError => e</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line202">202</a> Astute.logger.error("Error occured while adding system #{node['name']} to cobbler")</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line203">203</a> raise e</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line204">204</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line205">205</a> Astute.logger.debug("Trying to reboot node: #{node['name']}")</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line206">206</a> reboot_events[node['name']] = engine.power_reboot(node['name'])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line207">207</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line208">208</a> reboot_events</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line209">209</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line210">210</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line211">211</a> def check_reboot_nodes(engine, reboot_events)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line212">212</a> begin</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line213">213</a> Astute.logger.debug("Waiting for reboot to be complete: nodes: #{reboot_events.keys}")</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line214">214</a> failed_nodes = []</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line215">215</a> Timeout::timeout(Astute.config.REBOOT_TIMEOUT) do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line216">216</a> while not reboot_events.empty?</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line217">217</a> reboot_events.each do |node_name, event_id|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line218">218</a> event_status = engine.event_status(event_id)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line219">219</a> Astute.logger.debug("Reboot task status: node: #{node_name} status: #{event_status}")</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line220">220</a> if event_status[2] =~ /^failed$/</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line221">221</a> Astute.logger.error("Error occured while trying to reboot: #{node_name}")</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line222">222</a> reboot_events.delete(node_name)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line223">223</a> failed_nodes << node_name</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line224">224</a> elsif event_status[2] =~ /^complete$/</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line225">225</a> Astute.logger.debug("Successfully rebooted: #{node_name}")</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line226">226</a> reboot_events.delete(node_name)</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="marked">
|
||||
<td><pre><a name="line229">229</a> sleep(5)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line230">230</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line231">231</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line232">232</a> rescue Timeout::Error => e</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line233">233</a> Astute.logger.debug("Reboot timeout: reboot tasks not completed for nodes #{reboot_events.keys}")</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line234">234</a> raise e</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line235">235</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line236">236</a> failed_nodes</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line237">237</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line238">238</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line239">239</a> def report_about_progress(reporter, provisionLogParser, nodes_uids, target_uids, nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line240">240</a> begin</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line241">241</a> nodes_progress = provisionLogParser.progress_calculate(nodes_uids, nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line242">242</a> nodes_progress.each do |n|</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line243">243</a> if target_uids.include?(n['uid'])</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line244">244</a> n['progress'] = 100</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line245">245</a> n['status'] = 'provisioned'</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line246">246</a> else</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line247">247</a> n['status'] = 'provisioning'</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line248">248</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line249">249</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line250">250</a> reporter.report({'nodes' => nodes_progress})</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line251">251</a> rescue => e</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line252">252</a> Astute.logger.warn "Some error occurred when parse logs for nodes progress: #{e.message}, trace: #{e.backtrace.inspect}"</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line253">253</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line254">254</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line255">255</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line256">256</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line257">257</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>
|
|
@ -0,0 +1,569 @@
|
|||
<!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/puppetd.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/puppetd.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-puppetd_rb.html">lib/astute/puppetd.rb</a></td>
|
||||
<td class='right_align'><tt>170</tt></td>
|
||||
<td class='right_align'><tt>86</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>95.88%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:96px"></div>
|
||||
<div class="uncovered" style="width:4px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>91.86%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:92px"></div>
|
||||
<div class="uncovered" style="width:8px"></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 "License"); 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 "AS IS" 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 'json'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line18">18</a> require 'timeout'</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line19">19</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line20">20</a> module Astute</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line21">21</a> module PuppetdDeployer</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line22">22</a> # As I (Andrey Danin) understand, Puppet agent goes through these steps:</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line23">23</a> # * Puppetd has 'stopped' state.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line24">24</a> # * We run it as a run_once, and puppetd goes to 'idling' state - it trying to</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line25">25</a> # retrieve catalog.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line26">26</a> # * If it can't retrieve catalog, it goes back to 'stopped' state without</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line27">27</a> # any update of last_run_summary file.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line28">28</a> # * If puppetd retrieve catalog, it goes to 'running' state, which means</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line29">29</a> # it appying catalog to system.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line30">30</a> # * When puppetd finished catalog run, it updates last_run_summary file</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line31">31</a> # but stays in 'running' state for a while.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line32">32</a> # * After puppetd finished all internal jobs connected with finished catalog,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line33">33</a> # it goes to 'idling' state.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line34">34</a> # * After a short time it goes to 'stopped' state because we ran it as a run_once.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line35">35</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line36">36</a> private</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line37">37</a> # Runs puppetd.runonce only if puppet is stopped on the host at the time</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line38">38</a> # If it isn't stopped, we wait a bit and try again.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line39">39</a> # Returns list of nodes uids which appear to be with hung puppet.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line40">40</a> def self.puppetd_runonce(puppetd, uids)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line41">41</a> started = Time.now.to_i</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line42">42</a> while Time.now.to_i - started < Astute.config.PUPPET_FADE_TIMEOUT</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line43">43</a> puppetd.discover(:nodes => uids)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line44">44</a> last_run = puppetd.last_run_summary</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line45">45</a> running_uids = last_run.select {|x| x.results[:data][:status] != 'stopped'}.map {|n| n.results[:sender]}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line46">46</a> stopped_uids = uids - running_uids</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line47">47</a> if stopped_uids.any?</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line48">48</a> puppetd.discover(:nodes => stopped_uids)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line49">49</a> puppetd.runonce</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line50">50</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line51">51</a> uids = running_uids</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line52">52</a> break if uids.empty?</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line53">53</a> sleep Astute.config.PUPPET_FADE_INTERVAL</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line54">54</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line55">55</a> Astute.logger.debug "puppetd_runonce completed within #{Time.now.to_i - started} seconds."</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line56">56</a> Astute.logger.debug "Following nodes have puppet hung: '#{running_uids.join(',')}'" if running_uids.any?</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line57">57</a> running_uids</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line58">58</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line59">59</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line60">60</a> def self.calc_nodes_status(last_run, prev_run)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line61">61</a> # Finished are those which are not in running state,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line62">62</a> # and changed their last_run time, which is changed after application of catalog,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line63">63</a> # at the time of updating last_run_summary file. At that particular time puppet is</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line64">64</a> # still running, and will finish in a couple of seconds.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line65">65</a> # If Puppet had crashed before it got a catalog (e.g. certificate problems),</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line66">66</a> # it didn't update last_run_summary file and switched to 'stopped' state.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line67">67</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line68">68</a> stopped = last_run.select {|x| x.results[:data][:status] == 'stopped'}</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line69">69</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line70">70</a> # Select all finished nodes which not failed and changed last_run time.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line71">71</a> succeed_nodes = stopped.select { |n|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line72">72</a> prev_n = prev_run.find{|ps| ps.results[:sender] == n.results[:sender] }</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line73">73</a> n.results[:data][:resources]['failed'].to_i == 0 &&</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line74">74</a> n.results[:data][:resources]['failed_to_restart'].to_i == 0 &&</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line75">75</a> n.results[:data][:time]['last_run'] != (prev_n && prev_n.results[:data][:time]['last_run'])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line76">76</a> }.map{|x| x.results[:sender] }</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line77">77</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line78">78</a> stopped_nodes = stopped.map {|x| x.results[:sender]}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line79">79</a> error_nodes = stopped_nodes - succeed_nodes</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line80">80</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line81">81</a> # Running are all which didn't appear in finished</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line82">82</a> running_nodes = last_run.map {|n| n.results[:sender]} - stopped_nodes</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line83">83</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line84">84</a> nodes_to_check = running_nodes + succeed_nodes + error_nodes</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line85">85</a> unless nodes_to_check.size == last_run.size</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line86">86</a> raise "Shoud never happen. Internal error in nodes statuses calculation. Statuses calculated for: #{nodes_to_check.inspect},"</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line87">87</a> "nodes passed to check statuses of: #{last_run.map {|n| n.results[:sender]}}"</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line88">88</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line89">89</a> {'succeed' => succeed_nodes, 'error' => error_nodes, 'running' => running_nodes}</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line90">90</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line91">91</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line92">92</a> public</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line93">93</a> def self.deploy(ctx, nodes, retries=2, change_node_status=true)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line94">94</a> # TODO: can we hide retries, ignore_failure into @ctx ?</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line95">95</a> uids = nodes.map {|n| n['uid']}</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line96">96</a> # Keep info about retries for each node</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line97">97</a> node_retries = {}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line98">98</a> uids.each {|x| node_retries.merge!({x => retries}) }</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line99">99</a> Astute.logger.debug "Waiting for puppet to finish deployment on all nodes (timeout = #{Astute.config.PUPPET_TIMEOUT} sec)..."</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line100">100</a> time_before = Time.now</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line101">101</a> Timeout::timeout(Astute.config.PUPPET_TIMEOUT) do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line102">102</a> puppetd = MClient.new(ctx, "puppetd", uids)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line103">103</a> puppetd.on_respond_timeout do |uids|</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line104">104</a> ctx.reporter.report('nodes' => uids.map{|uid| {'uid' => uid, 'status' => 'error', 'error_type' => 'deploy'}})</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line105">105</a> end if change_node_status</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line106">106</a> prev_summary = puppetd.last_run_summary</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line107">107</a> puppetd_runonce(puppetd, uids)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line108">108</a> nodes_to_check = uids</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line109">109</a> last_run = puppetd.last_run_summary</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line110">110</a> while nodes_to_check.any?</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line111">111</a> calc_nodes = calc_nodes_status(last_run, prev_summary)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line112">112</a> Astute.logger.debug "Nodes statuses: #{calc_nodes.inspect}"</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line113">113</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line114">114</a> # At least we will report about successfully deployed nodes</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line115">115</a> nodes_to_report = []</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line116">116</a> nodes_to_report.concat(calc_nodes['succeed'].map { |n| {'uid' => n, 'status' => 'ready'} }) if change_node_status</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line117">117</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line118">118</a> # Process retries</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line119">119</a> nodes_to_retry = []</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line120">120</a> calc_nodes['error'].each do |uid|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line121">121</a> if node_retries[uid] > 0</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line122">122</a> node_retries[uid] -= 1</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line123">123</a> Astute.logger.debug "Puppet on node #{uid.inspect} will be restarted. "\</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line124">124</a> "#{node_retries[uid]} retries remained."</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line125">125</a> nodes_to_retry << uid</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line126">126</a> else</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line127">127</a> Astute.logger.debug "Node #{uid.inspect} has failed to deploy. There is no more retries for puppet run."</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line128">128</a> nodes_to_report << {'uid' => uid, 'status' => 'error', 'error_type' => 'deploy'} if change_node_status</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line129">129</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line130">130</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line131">131</a> if nodes_to_retry.any?</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line132">132</a> Astute.logger.info "Retrying to run puppet for following error nodes: #{nodes_to_retry.join(',')}"</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line133">133</a> puppetd_runonce(puppetd, nodes_to_retry)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line134">134</a> # We need this magic with prev_summary to reflect new puppetd run statuses..</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line135">135</a> prev_summary.delete_if { |x| nodes_to_retry.include?(x.results[:sender]) }</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line136">136</a> prev_summary += last_run.select { |x| nodes_to_retry.include?(x.results[:sender]) }</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line137">137</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line138">138</a> # /end of processing retries</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line139">139</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line140">140</a> if calc_nodes['running'].any?</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line141">141</a> begin</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line142">142</a> # Pass nodes because logs calculation needs IP address of node, not just uid</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line143">143</a> nodes_progress = ctx.deploy_log_parser.progress_calculate(calc_nodes['running'], nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line144">144</a> if nodes_progress.any?</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line145">145</a> Astute.logger.debug "Got progress for nodes: #{nodes_progress.inspect}"</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line146">146</a> # Nodes with progress are running, so they are not included in nodes_to_report yet</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line147">147</a> nodes_progress.map! {|x| x.merge!({'status' => 'deploying'})}</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line148">148</a> nodes_to_report += nodes_progress</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line149">149</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line150">150</a> rescue Exception => e</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line151">151</a> Astute.logger.warn "Some error occurred when parse logs for nodes progress: #{e.message}, "\</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line152">152</a> "trace: #{e.backtrace.inspect}"</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line153">153</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line154">154</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line155">155</a> ctx.reporter.report('nodes' => nodes_to_report) if nodes_to_report.any?</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> # we will iterate only over running nodes and those that we restart deployment for</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line158">158</a> nodes_to_check = calc_nodes['running'] + nodes_to_retry</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line159">159</a> break if nodes_to_check.empty?</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line160">160</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line161">161</a> sleep Astute.config.PUPPET_DEPLOY_INTERVAL</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line162">162</a> puppetd.discover(:nodes => nodes_to_check)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line163">163</a> last_run = puppetd.last_run_summary</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line164">164</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line165">165</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line166">166</a> time_spent = Time.now - time_before</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line167">167</a> Astute.logger.info "#{ctx.task_id}: Spent #{time_spent} seconds on puppet run "\</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line168">168</a> "for following nodes(uids): #{nodes.map {|n| n['uid']}.join(',')}"</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line169">169</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line170">170</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line171">171</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>
|
|
@ -0,0 +1,431 @@
|
|||
<!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/reporter.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/reporter.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-reporter_rb.html">lib/astute/reporter.rb</a></td>
|
||||
<td class='right_align'><tt>124</tt></td>
|
||||
<td class='right_align'><tt>57</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>99.19%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:99px"></div>
|
||||
<div class="uncovered" style="width:1px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>98.25%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:98px"></div>
|
||||
<div class="uncovered" style="width:2px"></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 "License"); 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 "AS IS" 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 'set'</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> STATES = {</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line20">20</a> 'offline' => 0,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line21">21</a> 'discover' => 10,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line22">22</a> 'provisioning' => 30,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line23">23</a> 'provisioned' => 40,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line24">24</a> 'deploying' => 50,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line25">25</a> 'ready' => 60,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line26">26</a> 'error' => 70</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line27">27</a> }</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line28">28</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line29">29</a> module Astute</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line30">30</a> class ProxyReporter</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line31">31</a> def initialize(up_reporter)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line32">32</a> @up_reporter = up_reporter</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line33">33</a> @nodes = []</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line34">34</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line35">35</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line36">36</a> def report(data)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line37">37</a> nodes_to_report = []</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line38">38</a> nodes = (data['nodes'] or [])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line39">39</a> nodes.each do |node|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line40">40</a> node = node_validate(node)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line41">41</a> nodes_to_report << node if node</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line42">42</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line43">43</a> # Let's report only if nodes updated</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line44">44</a> if nodes_to_report.any?</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line45">45</a> data['nodes'] = nodes_to_report</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line46">46</a> @up_reporter.report(data)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line47">47</a> # Update nodes attributes in @nodes.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line48">48</a> nodes_to_report.each do |node|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line49">49</a> saved_node = @nodes.select {|x| x['uid'] == node['uid']}.first # NOTE: use nodes hash</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line50">50</a> if saved_node</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line51">51</a> node.each {|k, v| saved_node[k] = v}</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line52">52</a> else</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line53">53</a> @nodes << node</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line54">54</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line55">55</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line56">56</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line57">57</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line58">58</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line59">59</a> private</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line60">60</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line61">61</a> def node_validate(node)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line62">62</a> # Validate basic correctness of attributes.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line63">63</a> err = []</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line64">64</a> if node['status'].nil?</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line65">65</a> err << "progress value provided, but no status" unless node['progress'].nil?</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line66">66</a> else</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line67">67</a> err << "Status provided #{node['status']} is not supported" if STATES[node['status']].nil?</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line68">68</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line69">69</a> unless node['uid']</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line70">70</a> err << "Node uid is not provided"</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line71">71</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line72">72</a> if err.any?</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line73">73</a> msg = "Validation of node: #{node.inspect} for report failed: #{err.join('; ')}."</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line74">74</a> Astute.logger.error(msg)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line75">75</a> raise msg</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line76">76</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line77">77</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line78">78</a> # Validate progress field.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line79">79</a> unless node['progress'].nil?</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line80">80</a> if node['progress'] > 100</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line81">81</a> Astute.logger.warn("Passed report for node with progress > 100: "\</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line82">82</a> "#{node.inspect}. Adjusting progress to 100.")</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line83">83</a> node['progress'] = 100</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line84">84</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line85">85</a> if node['progress'] < 0</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line86">86</a> Astute.logger.warn("Passed report for node with progress < 0: "\</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line87">87</a> "#{node.inspect}. Adjusting progress to 0.")</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line88">88</a> node['progress'] = 0</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> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line91">91</a> if not node['status'].nil? and ['provisioned', 'ready'].include?(node['status']) and node['progress'] != 100</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line92">92</a> Astute.logger.warn("In #{node['status']} state node should have progress 100, "\</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line93">93</a> "but node passed: #{node.inspect}. Setting it to 100")</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line94">94</a> node['progress'] = 100</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line95">95</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line96">96</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line97">97</a> # Comparison with previous state.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line98">98</a> saved_node = @nodes.select {|x| x['uid'] == node['uid']}.first</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line99">99</a> unless saved_node.nil?</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line100">100</a> saved_status = (STATES[saved_node['status']] or 0)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line101">101</a> node_status = (STATES[node['status']] or saved_status)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line102">102</a> saved_progress = (saved_node['progress'] or 0)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line103">103</a> node_progress = (node['progress'] or saved_progress)</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> if node_status < saved_status</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line106">106</a> Astute.logger.warn("Attempt to assign lower status detected: "\</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line107">107</a> "Status was: #{saved_status}, attempted to "\</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line108">108</a> "assign: #{node_status}. Skipping this node (id=#{node['uid']})")</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line109">109</a> return</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line110">110</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line111">111</a> if node_progress < saved_progress and node_status == saved_status</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line112">112</a> Astute.logger.warn("Attempt to assign lesser progress detected: "\</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line113">113</a> "Progress was: #{saved_progress}, attempted to "\</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line114">114</a> "assign: #{node_progress}. Skipping this node (id=#{node['uid']})")</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line115">115</a> return</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="inferred">
|
||||
<td><pre><a name="line118">118</a> # We need to update node here only if progress is greater, or status changed</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line119">119</a> return if node.select{|k, v| not saved_node[k].eql?(v)}.empty?</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> node</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line123">123</a> end</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> 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>
|
|
@ -0,0 +1,185 @@
|
|||
<!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/rpuppet.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/rpuppet.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-rpuppet_rb.html">lib/astute/rpuppet.rb</a></td>
|
||||
<td class='right_align'><tt>42</tt></td>
|
||||
<td class='right_align'><tt>17</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>71.43%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:71px"></div>
|
||||
<div class="uncovered" style="width:29px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>29.41%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:29px"></div>
|
||||
<div class="uncovered" style="width:71px"></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 "License"); 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 "AS IS" 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 'json'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line18">18</a> require 'timeout'</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line19">19</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line20">20</a> module Astute</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line21">21</a> module RpuppetDeployer</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line22">22</a> def self.rpuppet_deploy(ctx, nodes, parameters, classes, env="production")</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line23">23</a> if nodes.empty?</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line24">24</a> Astute.logger.info "#{ctx.task_id}: Nodes to deploy are not provided. Do nothing."</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line25">25</a> return false</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line26">26</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line27">27</a> uids = nodes.map {|n| n['uid']}</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line28">28</a> data = {</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line29">29</a> "parameters" => parameters,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line30">30</a> "classes" => classes,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line31">31</a> "environment" => env</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line32">32</a> }</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line33">33</a> Astute.logger.debug "Waiting for puppet to finish deployment on all nodes (timeout = #{Astute.config.PUPPET_TIMEOUT} sec)..."</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line34">34</a> time_before = Time.now</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line35">35</a> Timeout::timeout(Astute.config.PUPPET_TIMEOUT) do</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line36">36</a> rpuppet = MClient.new(ctx, "rpuppet", uids)</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line37">37</a> rpuppet.run(:data => data.to_json)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line38">38</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line39">39</a> time_spent = Time.now - time_before</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line40">40</a> Astute.logger.info "#{ctx.task_id}: Spent #{time_spent} seconds on puppet run for following nodes(uids): #{nodes.map {|n| n['uid']}.join(',')}"</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line41">41</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line42">42</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line43">43</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>
|
|
@ -0,0 +1,128 @@
|
|||
<!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/ruby_removed_functions.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/ruby_removed_functions.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-ruby_removed_functions_rb.html">lib/astute/ruby_removed_functions.rb</a></td>
|
||||
<td class='right_align'><tt>23</tt></td>
|
||||
<td class='right_align'><tt>6</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></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 "License"); 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 "AS IS" 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> class Date</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line18">18</a> def self.day_fraction_to_time(fr)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line19">19</a> ss, fr = fr.divmod(Rational(1, 86400))</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line20">20</a> h, ss = ss.divmod(3600)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line21">21</a> min, s = ss.divmod(60)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line22">22</a> return h, min, s, fr</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line23">23</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line24">24</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>
|
|
@ -0,0 +1,248 @@
|
|||
<!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.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.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_rb.html">lib/astute.rb</a></td>
|
||||
<td class='right_align'><tt>63</tt></td>
|
||||
<td class='right_align'><tt>37</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>93.65%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:94px"></div>
|
||||
<div class="uncovered" style="width:6px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>89.19%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:89px"></div>
|
||||
<div class="uncovered" style="width:11px"></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 "License"); 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 "AS IS" 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="marked">
|
||||
<td><pre><a name="line16">16</a> require 'astute/ruby_removed_functions'</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line17">17</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line18">18</a> require 'json'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line19">19</a> require 'logger'</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line20">20</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line21">21</a> require 'astute/config'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line22">22</a> require 'astute/logparser'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line23">23</a> require 'astute/orchestrator'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line24">24</a> require 'astute/metadata'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line25">25</a> require 'astute/deployment_engine'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line26">26</a> require 'astute/network'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line27">27</a> require 'astute/puppetd'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line28">28</a> require 'astute/rpuppet'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line29">29</a> require 'astute/deployment_engine/simple_puppet'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line30">30</a> require 'astute/deployment_engine/nailyfact'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line31">31</a> require 'astute/cobbler'</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line32">32</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line33">33</a> module Astute</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line34">34</a> autoload 'Context', 'astute/context'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line35">35</a> autoload 'MClient', 'astute/mclient'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line36">36</a> autoload 'ProxyReporter', 'astute/reporter'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line37">37</a> autoload 'NodesRemover', 'astute/nodes_remover'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line38">38</a> autoload 'Node', 'astute/node'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line39">39</a> autoload 'NodesHash', 'astute/node'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line40">40</a> LogParser.autoload :ParseDeployLogs, 'astute/logparser/deployment'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line41">41</a> LogParser.autoload :ParseProvisionLogs, 'astute/logparser/provision'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line42">42</a> LogParser.autoload :Patterns, 'astute/logparser/parser_patterns'</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line43">43</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line44">44</a> SUCCESS = 0</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line45">45</a> FAIL = 1</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line46">46</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line47">47</a> def self.logger</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line48">48</a> unless @logger</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line49">49</a> @logger = Logger.new('/var/log/astute.log')</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line50">50</a> @logger.formatter = proc do |severity, datetime, progname, msg|</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line51">51</a> severity_map = {'DEBUG' => 'debug', 'INFO' => 'info', 'WARN' => 'warning', 'ERROR' => 'err', 'FATAL' => 'crit'}</pre></td>
|
||||
</tr>
|
||||
<tr class="uncovered">
|
||||
<td><pre><a name="line52">52</a> "#{datetime.strftime("%Y-%m-%dT%H:%M:%S")} #{severity_map[severity]}: [#{Process.pid}] #{msg}\n"</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line53">53</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line54">54</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line55">55</a> @logger</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line56">56</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line57">57</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line58">58</a> def self.logger=(logger)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line59">59</a> @logger = logger</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line60">60</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line61">61</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line62">62</a> config_file = '/opt/astute/astute.conf'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line63">63</a> Astute.config.update(YAML.load(File.read(config_file))) if File.exists?(config_file)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line64">64</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>
|
|
@ -0,0 +1,893 @@
|
|||
<!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>spec/unit/logparser_spec.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>spec/unit/logparser_spec.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="spec-unit-logparser_spec_rb.html">spec/unit/logparser_spec.rb</a></td>
|
||||
<td class='right_align'><tt>278</tt></td>
|
||||
<td class='right_align'><tt>153</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></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 "License"); 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 "AS IS" 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 File.join(File.dirname(__FILE__), '../spec_helper')</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> include Astute</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line20">20</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line21">21</a> describe LogParser do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line22">22</a> def get_statistics_variables(progress_table)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line23">23</a> # Calculate some statistics variables: expectancy, standart deviation and</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line24">24</a> # correlation coefficient between real and ideal progress calculation.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line25">25</a> total_time = 0</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line26">26</a> real_expectancy = 0</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line27">27</a> real_sqr_expectancy = 0</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line28">28</a> prev_event_date = nil</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line29">29</a> progress_table.each do |el|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line30">30</a> date = el[:date]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line31">31</a> prev_event_date = date unless prev_event_date</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line32">32</a> progress = el[:progress].to_f</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line33">33</a> period = date - prev_event_date</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line34">34</a> hours, mins, secs, frac = Date::day_fraction_to_time(period)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line35">35</a> period_in_sec = hours * 60 * 60 + mins * 60 + secs</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line36">36</a> total_time += period_in_sec</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line37">37</a> real_expectancy += period_in_sec * progress</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line38">38</a> real_sqr_expectancy += period_in_sec * progress ** 2</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line39">39</a> el[:time_delta] = period_in_sec</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line40">40</a> prev_event_date = date</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line41">41</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line42">42</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line43">43</a> # Calculate standart deviation for real progress distibution.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line44">44</a> real_expectancy = real_expectancy.to_f / total_time</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line45">45</a> real_sqr_expectancy = real_sqr_expectancy.to_f / total_time</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line46">46</a> real_standart_deviation = Math.sqrt(real_sqr_expectancy - real_expectancy ** 2)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line47">47</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line48">48</a> # Calculate PCC (correlation coefficient).</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line49">49</a> ideal_sqr_expectancy = 0</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line50">50</a> ideal_expectancy = 0</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line51">51</a> t = 0</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line52">52</a> ideal_delta = 100.0 / total_time</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line53">53</a> mixed_expectancy = 0</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line54">54</a> progress_table.each do |el|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line55">55</a> t += el[:time_delta]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line56">56</a> ideal_progress = t * ideal_delta</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line57">57</a> ideal_expectancy += ideal_progress * el[:time_delta]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line58">58</a> ideal_sqr_expectancy += ideal_progress ** 2 * el[:time_delta]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line59">59</a> el[:ideal_progress] = ideal_progress</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line60">60</a> mixed_expectancy += el[:progress] * ideal_progress * el[:time_delta]</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line61">61</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line62">62</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line63">63</a> ideal_expectancy = ideal_expectancy / total_time</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line64">64</a> ideal_sqr_expectancy = ideal_sqr_expectancy / total_time</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line65">65</a> mixed_expectancy = mixed_expectancy / total_time</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line66">66</a> ideal_standart_deviation = Math.sqrt(ideal_sqr_expectancy - ideal_expectancy ** 2)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line67">67</a> covariance = mixed_expectancy - ideal_expectancy * real_expectancy</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line68">68</a> pcc = covariance / (ideal_standart_deviation * real_standart_deviation)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line69">69</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line70">70</a> statistics = {</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line71">71</a> 'real_expectancy' => real_expectancy,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line72">72</a> 'real_sqr_expectancy' => real_sqr_expectancy,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line73">73</a> 'real_standart_deviation' => real_standart_deviation,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line74">74</a> 'ideal_expectancy' => ideal_expectancy,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line75">75</a> 'ideal_sqr_expectancy' => ideal_sqr_expectancy,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line76">76</a> 'ideal_standart_deviation' => ideal_standart_deviation,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line77">77</a> 'mixed_expectancy' => mixed_expectancy,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line78">78</a> 'covariance' => covariance,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line79">79</a> 'pcc' => pcc,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line80">80</a> 'total_time' => total_time,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line81">81</a> }</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> return statistics</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line84">84</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line85">85</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line86">86</a> def get_next_line(fo, date_regexp, date_format)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line87">87</a> until fo.eof?</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line88">88</a> line = fo.readline</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line89">89</a> date_string = line.match(date_regexp)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line90">90</a> if date_string</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line91">91</a> date = DateTime.strptime(date_string[0], date_format)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line92">92</a> return line, date</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> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line95">95</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line96">96</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line97">97</a> def get_next_lines_by_date(fo, now, date_regexp, date_format)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line98">98</a> lines = ''</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line99">99</a> until fo.eof?</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line100">100</a> pos = fo.pos</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line101">101</a> line, date = get_next_line(fo, date_regexp, date_format)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line102">102</a> if date <= now</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line103">103</a> lines += line</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line104">104</a> else</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line105">105</a> fo.pos = pos</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line106">106</a> return lines</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> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line109">109</a> return lines</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line110">110</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line111">111</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line112">112</a> context "Correlation coeff. (PCC) of Provisioning progress bar calculation" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line113">113</a> def provision_parser_wrapper(node)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line114">114</a> uids = [node['uid']]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line115">115</a> nodes = [node]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line116">116</a> time_delta = 5.0/24/60/60</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line117">117</a> log_delay = 6*time_delta</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line118">118</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line119">119</a> deploy_parser = Astute::LogParser::ParseProvisionLogs.new</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line120">120</a> pattern_spec = deploy_parser.pattern_spec</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line121">121</a> date_regexp = '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line122">122</a> date_format = '%Y-%m-%dT%H:%M:%S'</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line123">123</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line124">124</a> Dir.mktmpdir do |dir|</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line125">125</a> # Create temp log files and structures.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line126">126</a> pattern_spec['path_prefix'] = "#{dir}/"</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line127">127</a> path = "#{pattern_spec['path_prefix']}#{node['fqdn']}/#{pattern_spec['filename']}"</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line128">128</a> Dir.mkdir(File.dirname(File.dirname(path)))</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line129">129</a> Dir.mkdir(File.dirname(path))</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line130">130</a> node['file'] = File.open(path, 'w')</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line131">131</a> src_filename = File.join(File.dirname(__FILE__), "..", "example-logs", node['src_filename'])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line132">132</a> node['src'] = File.open(src_filename)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line133">133</a> line, date = get_next_line(node['src'], date_regexp, date_format)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line134">134</a> node['src'].pos = 0</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line135">135</a> node['now'] = date - log_delay</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line136">136</a> node['progress_table'] ||= []</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> # End 'while' cycle if reach EOF at all src files.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line139">139</a> until node['src'].eof?</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line140">140</a> # Copy logs line by line from example logfile to tempfile and collect progress for each step.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line141">141</a> lines, date = get_next_lines_by_date(node['src'], node['now'], date_regexp, date_format)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line142">142</a> node['file'].write(lines)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line143">143</a> node['file'].flush</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line144">144</a> node['last_lines'] = lines</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line145">145</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line146">146</a> DateTime.stubs(:now).returns(node['now'])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line147">147</a> node_progress = deploy_parser.progress_calculate(uids, nodes)[0]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line148">148</a> node['progress_table'] << {:date => node['now'], :progress => node_progress['progress']}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line149">149</a> node['now'] += time_delta</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line150">150</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line151">151</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line152">152</a> nodes.each do |node|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line153">153</a> node['statistics'] = get_statistics_variables(node['progress_table'])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line154">154</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line155">155</a> # Clear temp files.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line156">156</a> node['file'].close</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line157">157</a> File.unlink(node['file'].path)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line158">158</a> Dir.unlink(File.dirname(node['file'].path))</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line159">159</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line160">160</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line161">161</a> return node</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line162">162</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line163">163</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line164">164</a> it "should be greather than 0.96" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line165">165</a> node = {'uid' => '1', 'ip' => '1.0.0.1', 'fqdn' => 'slave-1.domain.tld', 'role' => 'controller', 'src_filename' => 'anaconda.log_',</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line166">166</a> 'meta' => { 'disks' =></pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line167">167</a> [</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line168">168</a> {'name' => 'flash drive', 'removable' => true, 'size' => 1000},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line169">169</a> {'name' => 'sda', 'removable'=> false, 'size' => 32*1000*1000*1000},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line170">170</a> ]</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line171">171</a> }</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line172">172</a> }</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line173">173</a> calculated_node = provision_parser_wrapper(node)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line174">174</a> calculated_node['statistics']['pcc'].should > 0.96</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line175">175</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line176">176</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line177">177</a> it "it must be updated at least 5 times" do</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line178">178</a> # Otherwise progress bar has no meaning I guess...</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line179">179</a> pending('Not yet implemented')</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line180">180</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line181">181</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line182">182</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line183">183</a> context "Correlation coeff. (PCC) of Deploying progress bar calculation" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line184">184</a> def deployment_parser_wrapper(cluster_type, nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line185">185</a> uids = nodes.map{|n| n['uid']}</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line186">186</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line187">187</a> deploy_parser = Astute::LogParser::ParseDeployLogs.new(cluster_type)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line188">188</a> pattern_spec = deploy_parser.pattern_spec</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line189">189</a> date_regexp = '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line190">190</a> date_format = '%Y-%m-%dT%H:%M:%S'</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line191">191</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line192">192</a> Dir.mktmpdir do |dir|</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line193">193</a> # Create temp log files and structures.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line194">194</a> pattern_spec['path_prefix'] = "#{dir}/"</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line195">195</a> nodes.each do |node|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line196">196</a> path = "#{pattern_spec['path_prefix']}#{node['fqdn']}/#{pattern_spec['filename']}"</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line197">197</a> Dir.mkdir(File.dirname(path))</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line198">198</a> node['file'] = File.open(path, 'w')</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line199">199</a> src_filename = File.join(File.dirname(__FILE__), "..", "example-logs", node['src_filename'])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line200">200</a> node['src'] = File.open(src_filename)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line201">201</a> node['progress_table'] ||= []</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line202">202</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line203">203</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line204">204</a> # End 'while' cycle if reach EOF at all src files.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line205">205</a> while nodes.index{|n| not n['src'].eof?}</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line206">206</a> # Copy logs line by line from example logfile to tempfile and collect progress for each step.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line207">207</a> nodes.each do |node|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line208">208</a> unless node['src'].eof?</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line209">209</a> line = node['src'].readline</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line210">210</a> node['file'].write(line)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line211">211</a> node['file'].flush</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line212">212</a> node['last_line'] = line</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line213">213</a> else</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line214">214</a> node['last_line'] = ''</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line215">215</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line216">216</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line217">217</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line218">218</a> nodes_progress = deploy_parser.progress_calculate(uids, nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line219">219</a> nodes_progress.each do |progress|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line220">220</a> node = nodes.at(nodes.index{|n| n['uid'] == progress['uid']})</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line221">221</a> date_string = node['last_line'].match(date_regexp)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line222">222</a> if date_string</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line223">223</a> date = DateTime.strptime(date_string[0], date_format)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line224">224</a> node['progress_table'] << {:date => date, :progress => progress['progress']}</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line225">225</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line226">226</a> end</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> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line229">229</a> nodes.each do |node|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line230">230</a> node['statistics'] = get_statistics_variables(node['progress_table'])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line231">231</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line232">232</a> # Clear temp files.</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line233">233</a> nodes.each do |n|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line234">234</a> n['file'].close</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line235">235</a> File.unlink(n['file'].path)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line236">236</a> Dir.unlink(File.dirname(n['file'].path))</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line237">237</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line238">238</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line239">239</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line240">240</a> return nodes</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> it "should be greather than 0.85 for HA deployment" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line244">244</a> nodes = [</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line245">245</a> {'uid' => '1', 'ip' => '1.0.0.1', 'fqdn' => 'slave-1.domain.tld', 'role' => 'controller', 'src_filename' => 'puppet-agent.log.ha.contr.2'},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line246">246</a> {'uid' => '2', 'ip' => '1.0.0.2', 'fqdn' => 'slave-2.domain.tld', 'role' => 'compute', 'src_filename' => 'puppet-agent.log.ha.compute'},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line247">247</a> ]</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> calculated_nodes = deployment_parser_wrapper('ha', nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line250">250</a> calculated_nodes.each {|node| node['statistics']['pcc'].should > 0.85}</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line251">251</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line252">252</a> # For debug purposes.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line253">253</a> # print "\n"</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line254">254</a> # calculated_nodes.each do |node|</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line255">255</a> # print node['statistics'].inspect, "\n", node['statistics']['pcc'], "\n", node['progress_table'][-1][:progress], "\n"</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line256">256</a> # end</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> it "should be greather than 0.97 for singlenode deployment" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line260">260</a> nodes = [</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line261">261</a> {'uid' => '1', 'ip' => '1.0.0.1', 'fqdn' => 'slave-1.domain.tld', 'role' => 'controller', 'src_filename' => 'puppet-agent.log.singlenode'},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line262">262</a> ]</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> calculated_nodes = deployment_parser_wrapper('singlenode', nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line265">265</a> calculated_nodes.each {|node| node['statistics']['pcc'].should > 0.97}</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> it "should be greather than 0.94 for multinode deployment" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line269">269</a> nodes = [</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line270">270</a> {'uid' => '1', 'ip' => '1.0.0.1', 'fqdn' => 'slave-1.domain.tld', 'role' => 'controller', 'src_filename' => 'puppet-agent.log.multi.contr'},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line271">271</a> {'uid' => '2', 'ip' => '1.0.0.2', 'fqdn' => 'slave-2.domain.tld', 'role' => 'compute', 'src_filename' => 'puppet-agent.log.multi.compute'},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line272">272</a> ]</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line273">273</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line274">274</a> calculated_nodes = deployment_parser_wrapper('multinode', nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line275">275</a> calculated_nodes.each {|node| node['statistics']['pcc'].should > 0.94}</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line276">276</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line277">277</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line278">278</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line279">279</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>
|
|
@ -0,0 +1,344 @@
|
|||
<!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>spec/unit/mclient_spec.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>spec/unit/mclient_spec.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="spec-unit-mclient_spec_rb.html">spec/unit/mclient_spec.rb</a></td>
|
||||
<td class='right_align'><tt>95</tt></td>
|
||||
<td class='right_align'><tt>51</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></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 "License"); 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 "AS IS" 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 File.join(File.dirname(__FILE__), '../spec_helper')</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> include Astute</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line20">20</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line21">21</a> describe MClient do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line22">22</a> include SpecHelpers</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line23">23</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line24">24</a> before(:each) do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line25">25</a> @ctx = mock('context')</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line26">26</a> @ctx.stubs(:task_id)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line27">27</a> @ctx.stubs(:reporter)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line28">28</a> end</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> it "should receive method call and process valid result correctly" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line31">31</a> nodes = [{'uid' => 1}, {'uid' => 2}, {'uid' => 3}]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line32">32</a> rpcclient = mock_rpcclient(nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line33">33</a> mc_valid_result = mock_mc_result</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line34">34</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line35">35</a> rpcclient.expects(:echo).with(:msg => 'hello world').once.returns([mc_valid_result]*3)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line36">36</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line37">37</a> mclient = MClient.new(@ctx, "faketest", nodes.map {|x| x['uid']})</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line38">38</a> stats = mclient.echo(:msg => 'hello world')</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line39">39</a> stats.should eql([mc_valid_result]*3)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line40">40</a> end</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> it "should return even bad result if check_result=false" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line43">43</a> nodes = [{'uid' => 1}, {'uid' => 2}, {'uid' => 3}]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line44">44</a> rpcclient = mock_rpcclient(nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line45">45</a> mc_valid_result = mock_mc_result</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line46">46</a> mc_error_result = mock_mc_result({:statuscode => 1, :sender => '2'})</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> rpcclient.expects(:echo).with(:msg => 'hello world').once.\</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line49">49</a> returns([mc_valid_result, mc_error_result])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line50">50</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line51">51</a> mclient = MClient.new(@ctx, "faketest", nodes.map {|x| x['uid']}, check_result=false)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line52">52</a> stats = mclient.echo(:msg => 'hello world')</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line53">53</a> stats.should eql([mc_valid_result, mc_error_result])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line54">54</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line55">55</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line56">56</a> it "should try to retry for non-responded nodes" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line57">57</a> nodes = [{'uid' => 1}, {'uid' => 2}, {'uid' => 3}]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line58">58</a> rpcclient = mock('rpcclient') do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line59">59</a> stubs(:progress=)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line60">60</a> expects(:discover).with(:nodes => ['1','2','3'])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line61">61</a> expects(:discover).with(:nodes => ['2','3'])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line62">62</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line63">63</a> Astute::MClient.any_instance.stubs(:rpcclient).returns(rpcclient)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line64">64</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line65">65</a> mc_valid_result = mock_mc_result</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line66">66</a> mc_valid_result2 = mock_mc_result({:sender => '2'})</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line67">67</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line68">68</a> rpcclient.stubs(:echo).returns([mc_valid_result]).then.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line69">69</a> returns([mc_valid_result2]).then</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line70">70</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line71">71</a> mclient = MClient.new(@ctx, "faketest", nodes.map {|x| x['uid']})</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line72">72</a> mclient.retries = 1</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line73">73</a> expect { mclient.echo(:msg => 'hello world') }.to raise_error(/MCollective agents '3' didn't respond./)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line74">74</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line75">75</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line76">76</a> it "should raise error if agent returns statuscode != 0" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line77">77</a> nodes = [{'uid' => 1}, {'uid' => 2}, {'uid' => 3}]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line78">78</a> rpcclient = mock('rpcclient') do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line79">79</a> stubs(:progress=)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line80">80</a> expects(:discover).with(:nodes => ['1','2','3'])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line81">81</a> expects(:discover).with(:nodes => ['2','3'])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line82">82</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line83">83</a> Astute::MClient.any_instance.stubs(:rpcclient).returns(rpcclient)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line84">84</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line85">85</a> mc_valid_result = mock_mc_result</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line86">86</a> mc_failed_result = mock_mc_result({:sender => '2', :statuscode => 1})</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line87">87</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line88">88</a> rpcclient.stubs(:echo).returns([mc_valid_result]).then.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line89">89</a> returns([mc_failed_result]).then</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> mclient = MClient.new(@ctx, "faketest", nodes.map {|x| x['uid']})</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line92">92</a> mclient.retries = 1</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line93">93</a> expect { mclient.echo(:msg => 'hello world') }.to \</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line94">94</a> raise_error(/MCollective agents '3' didn't respond. \n.* failed nodes: 2/)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line95">95</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line96">96</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>
|
|
@ -0,0 +1,917 @@
|
|||
<!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>spec/unit/nailyfact_deploy_spec.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>spec/unit/nailyfact_deploy_spec.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="spec-unit-nailyfact_deploy_spec_rb.html">spec/unit/nailyfact_deploy_spec.rb</a></td>
|
||||
<td class='right_align'><tt>286</tt></td>
|
||||
<td class='right_align'><tt>70</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></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 "License"); 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 "AS IS" 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 File.join(File.dirname(__FILE__), '../spec_helper')</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> describe "NailyFact DeploymentEngine" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line20">20</a> context "When deploy is called, " do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line21">21</a> before(:each) do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line22">22</a> @ctx = mock</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line23">23</a> @ctx.stubs(:task_id)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line24">24</a> @ctx.stubs(:deploy_log_parser).returns(Astute::LogParser::NoParsing.new)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line25">25</a> reporter = mock</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line26">26</a> @ctx.stubs(:reporter).returns(reporter)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line27">27</a> reporter.stubs(:report)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line28">28</a> @deploy_engine = Astute::DeploymentEngine::NailyFact.new(@ctx)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line29">29</a> meta = {</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line30">30</a> 'interfaces' => [</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line31">31</a> {</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line32">32</a> 'name' => 'eth1',</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line33">33</a> }, {</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line34">34</a> 'name' => 'eth0',</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line35">35</a> }</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line36">36</a> ]</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line37">37</a> }</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line38">38</a> @data = {"args" =></pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line39">39</a> {"attributes" =></pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line40">40</a> {"storage_network_range" => "172.16.0.0/24", "auto_assign_floating_ip" => false,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line41">41</a> "mysql" => {"root_password" => "Z2EqsZo5"},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line42">42</a> "keystone" => {"admin_token" => "5qKy0i63", "db_password" => "HHQ86Rym", "admin_tenant" => "admin"},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line43">43</a> "nova" => {"user_password" => "h8RY8SE7", "db_password" => "Xl9I51Cb"},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line44">44</a> "glance" => {"user_password" => "nDlUxuJq", "db_password" => "V050pQAn"},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line45">45</a> "rabbit" => {"user" => "nova", "password" => "FLF3txKC"},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line46">46</a> "management_network_range" => "192.168.0.0/24",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line47">47</a> "public_network_range" => "240.0.1.0/24",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line48">48</a> "fixed_network_range" => "10.0.0.0/24",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line49">49</a> "floating_network_range" => "240.0.0.0/24"},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line50">50</a> "task_uuid" => "19d99029-350a-4c9c-819c-1f294cf9e741",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line51">51</a> "nodes" => [{"mac" => "52:54:00:0E:B8:F5", "status" => "provisioning",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line52">52</a> "uid" => "devnailgun.mirantis.com", "error_type" => nil,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line53">53</a> "fqdn" => "devnailgun.mirantis.com",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line54">54</a> "network_data" => [{"gateway" => "192.168.0.1",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line55">55</a> "name" => "management", "dev" => "eth0",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line56">56</a> "brd" => "192.168.0.255", "netmask" => "255.255.255.0",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line57">57</a> "vlan" => 102, "ip" => "192.168.0.2/24"},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line58">58</a> {"gateway" => "240.0.1.1",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line59">59</a> "name" => "public", "dev" => "eth0",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line60">60</a> "brd" => "240.0.1.255", "netmask" => "255.255.255.0",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line61">61</a> "vlan" => 101, "ip" => "240.0.1.2/24"},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line62">62</a> {"name" => "floating", "dev" => "eth0", "vlan" => 120},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line63">63</a> {"name" => "fixed", "dev" => "eth0", "vlan" => 103},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line64">64</a> {"name" => "storage", "dev" => "eth0", "vlan" => 104,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line65">65</a> "ip" => "172.16.1.2/24", "netmask" => "255.255.255.0",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line66">66</a> "brd" => "172.16.1.255"}],</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line67">67</a> "id" => 1,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line68">68</a> "ip" => "10.20.0.200",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line69">69</a> "role" => "controller",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line70">70</a> 'meta' => meta},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line71">71</a> {"mac" => "52:54:00:50:91:DD", "status" => "provisioning",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line72">72</a> "uid" => 2, "error_type" => nil,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line73">73</a> "fqdn" => "slave-2.mirantis.com",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line74">74</a> "network_data" => [{"gateway" => "192.168.0.1",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line75">75</a> "name" => "management", "dev" => "eth0",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line76">76</a> "brd" => "192.168.0.255", "netmask" => "255.255.255.0",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line77">77</a> "vlan" => 102, "ip" => "192.168.0.3/24"},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line78">78</a> {"gateway" => "240.0.1.1",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line79">79</a> "name" => "public", "dev" => "eth0",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line80">80</a> "brd" => "240.0.1.255", "netmask" => "255.255.255.0",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line81">81</a> "vlan" => 101, "ip" => "240.0.1.3/24"},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line82">82</a> {"name" => "floating", "dev" => "eth0", "vlan" => 120},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line83">83</a> {"name" => "fixed", "dev" => "eth0", "vlan" => 103},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line84">84</a> {"name" => "storage", "dev" => "eth0", "vlan" => 104,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line85">85</a> "ip" => "172.16.1.3/24", "netmask" => "255.255.255.0",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line86">86</a> "brd" => "172.16.1.255"}],</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line87">87</a> "id" => 2,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line88">88</a> "ip" => "10.20.0.221",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line89">89</a> "role" => "compute",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line90">90</a> 'meta' => meta},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line91">91</a> {"mac" => "52:54:00:C3:2C:28", "status" => "provisioning",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line92">92</a> "uid" => 3, "error_type" => nil,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line93">93</a> "fqdn" => "slave-3.mirantis.com",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line94">94</a> "network_data" => [{"gateway" => "192.168.0.1",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line95">95</a> "name" => "management", "dev" => "eth0",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line96">96</a> "brd" => "192.168.0.255", "netmask" => "255.255.255.0",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line97">97</a> "vlan" => 102, "ip" => "192.168.0.4/24"},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line98">98</a> {"gateway" => "240.0.1.1",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line99">99</a> "name" => "public", "dev" => "eth0",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line100">100</a> "brd" => "240.0.1.255", "netmask" => "255.255.255.0",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line101">101</a> "vlan" => 101, "ip" => "240.0.1.4/24"},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line102">102</a> {"name" => "floating", "dev" => "eth0", "vlan" => 120},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line103">103</a> {"name" => "fixed", "dev" => "eth0", "vlan" => 103},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line104">104</a> {"name" => "storage", "dev" => "eth0", "vlan" => 104,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line105">105</a> "ip" => "172.16.1.4/24", "netmask" => "255.255.255.0",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line106">106</a> "brd" => "172.16.1.255"}],</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line107">107</a> "id" => 3,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line108">108</a> "ip" => "10.20.0.68",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line109">109</a> "role" => "compute",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line110">110</a> 'meta' => meta}]},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line111">111</a> "method" => "deploy",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line112">112</a> "respond_to" => "deploy_resp"}</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> @data['args']['attributes']['controller_nodes'] = @data['args']['nodes'].</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line115">115</a> select { |node| node['role'] == 'controller'}</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line116">116</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line117">117</a> ha_nodes = @data['args']['nodes'] +</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line118">118</a> [{"mac" => "52:54:00:0E:88:88", "status" => "provisioned",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line119">119</a> "uid" => "4", "error_type" => nil,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line120">120</a> "fqdn" => "controller-4.mirantis.com",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line121">121</a> "network_data" => [{"gateway" => "192.168.0.1",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line122">122</a> "name" => "management", "dev" => "eth0",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line123">123</a> "brd" => "192.168.0.255", "netmask" => "255.255.255.0",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line124">124</a> "vlan" => 102, "ip" => "192.168.0.5/24"},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line125">125</a> {"gateway" => "240.0.1.1",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line126">126</a> "name" => "public", "dev" => "eth0",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line127">127</a> "brd" => "240.0.1.255", "netmask" => "255.255.255.0",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line128">128</a> "vlan" => 101, "ip" => "240.0.1.5/24"},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line129">129</a> {"name" => "floating", "dev" => "eth0", "vlan" => 120},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line130">130</a> {"name" => "fixed", "dev" => "eth0", "vlan" => 103},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line131">131</a> {"name" => "storage", "dev" => "eth0", "vlan" => 104,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line132">132</a> "ip" => "172.16.1.5/24", "netmask" => "255.255.255.0",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line133">133</a> "brd" => "172.16.1.255"}],</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line134">134</a> "id" => 4,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line135">135</a> "ip" => "10.20.0.205",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line136">136</a> "role" => "controller",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line137">137</a> 'meta' => meta},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line138">138</a> {"mac" => "52:54:00:0E:99:99", "status" => "provisioned",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line139">139</a> "uid" => "5", "error_type" => nil,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line140">140</a> "fqdn" => "controller-5.mirantis.com",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line141">141</a> "network_data" => [{"gateway" => "192.168.0.1",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line142">142</a> "name" => "management", "dev" => "eth0",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line143">143</a> "brd" => "192.168.0.255", "netmask" => "255.255.255.0",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line144">144</a> "vlan" => 102, "ip" => "192.168.0.6/24"},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line145">145</a> {"gateway" => "240.0.1.1",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line146">146</a> "name" => "public", "dev" => "eth0",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line147">147</a> "brd" => "240.0.1.255", "netmask" => "255.255.255.0",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line148">148</a> "vlan" => 101, "ip" => "240.0.1.6/24"},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line149">149</a> {"name" => "floating", "dev" => "eth0", "vlan" => 120},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line150">150</a> {"name" => "fixed", "dev" => "eth0", "vlan" => 103},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line151">151</a> {"name" => "storage", "dev" => "eth0", "vlan" => 104,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line152">152</a> "ip" => "172.16.1.6/24", "netmask" => "255.255.255.0",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line153">153</a> "brd" => "172.16.1.255"}],</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line154">154</a> "id" => 5,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line155">155</a> "ip" => "10.20.0.206",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line156">156</a> "role" => "controller",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line157">157</a> 'meta' => meta}]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line158">158</a> @data_ha = Marshal.load(Marshal.dump(@data))</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line159">159</a> @data_ha['args']['nodes'] = ha_nodes</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line160">160</a> @data_ha['args']['attributes']['deployment_mode'] = "ha"</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line161">161</a> # VIPs are required for HA mode and should be passed from Nailgun (only in HA)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line162">162</a> @data_ha['args']['attributes']['management_vip'] = "192.168.0.111"</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line163">163</a> @data_ha['args']['attributes']['public_vip'] = "240.0.1.111"</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line164">164</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line165">165</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line166">166</a> it "it should call valid method depends on attrs" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line167">167</a> nodes = [{'uid' => 1}]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line168">168</a> attrs = {'deployment_mode' => 'ha'}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line169">169</a> attrs_modified = attrs.merge({'some' => 'somea'})</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line170">170</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line171">171</a> @deploy_engine.expects(:attrs_ha).with(nodes, attrs).returns(attrs_modified)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line172">172</a> @deploy_engine.expects(:deploy_ha).with(nodes, attrs_modified)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line173">173</a> # All implementations of deploy_piece go to subclasses</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line174">174</a> @deploy_engine.respond_to?(:deploy_piece).should be_true</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line175">175</a> @deploy_engine.deploy(nodes, attrs)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line176">176</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line177">177</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line178">178</a> it "it should raise an exception if deployment mode is unsupported" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line179">179</a> nodes = [{'uid' => 1}]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line180">180</a> attrs = {'deployment_mode' => 'unknown'}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line181">181</a> expect {@deploy_engine.deploy(nodes, attrs)}.to raise_exception(/Method attrs_unknown is not implemented/)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line182">182</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line183">183</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line184">184</a> it "multinode deploy should not raise any exception" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line185">185</a> @data['args']['attributes']['deployment_mode'] = "multinode"</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line186">186</a> Astute::Metadata.expects(:publish_facts).times(@data['args']['nodes'].size)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line187">187</a> # we got two calls, one for controller, and another for all computes</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line188">188</a> controller_nodes = @data['args']['nodes'].select{|n| n['role'] == 'controller'}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line189">189</a> compute_nodes = @data['args']['nodes'].select{|n| n['role'] == 'compute'}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line190">190</a> Astute::PuppetdDeployer.expects(:deploy).with(@ctx, controller_nodes, instance_of(Fixnum), true).once</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line191">191</a> Astute::PuppetdDeployer.expects(:deploy).with(@ctx, compute_nodes, instance_of(Fixnum), true).once</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line192">192</a> @deploy_engine.deploy(@data['args']['nodes'], @data['args']['attributes'])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line193">193</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line194">194</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line195">195</a> it "ha deploy should not raise any exception" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line196">196</a> Astute::Metadata.expects(:publish_facts).at_least_once</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line197">197</a> controller_nodes = @data_ha['args']['nodes'].select{|n| n['role'] == 'controller'}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line198">198</a> primary_nodes = [controller_nodes.shift]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line199">199</a> compute_nodes = @data_ha['args']['nodes'].select{|n| n['role'] == 'compute'}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line200">200</a> Astute::PuppetdDeployer.expects(:deploy).with(@ctx, primary_nodes, 0, false).once</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line201">201</a> controller_nodes.each do |n|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line202">202</a> Astute::PuppetdDeployer.expects(:deploy).with(@ctx, [n], 2, true).once</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line203">203</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line204">204</a> Astute::PuppetdDeployer.expects(:deploy).with(@ctx, primary_nodes, 2, true).once</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line205">205</a> Astute::PuppetdDeployer.expects(:deploy).with(@ctx, compute_nodes, instance_of(Fixnum), true).once</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line206">206</a> @deploy_engine.deploy(@data_ha['args']['nodes'], @data_ha['args']['attributes'])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line207">207</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line208">208</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line209">209</a> it "ha deploy should not raise any exception if there are only one controller" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line210">210</a> Astute::Metadata.expects(:publish_facts).at_least_once</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line211">211</a> Astute::PuppetdDeployer.expects(:deploy).once</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line212">212</a> ctrl = @data_ha['args']['nodes'].select {|n| n['role'] == 'controller'}[0]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line213">213</a> @deploy_engine.deploy([ctrl], @data_ha['args']['attributes'])</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="marked">
|
||||
<td><pre><a name="line216">216</a> it "singlenode deploy should not raise any exception" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line217">217</a> @data['args']['attributes']['deployment_mode'] = "singlenode"</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line218">218</a> @data['args']['nodes'] = [@data['args']['nodes'][0]] # We have only one node in singlenode</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line219">219</a> Astute::Metadata.expects(:publish_facts).times(@data['args']['nodes'].size)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line220">220</a> Astute::PuppetdDeployer.expects(:deploy).with(@ctx, @data['args']['nodes'], instance_of(Fixnum), true).once</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line221">221</a> @deploy_engine.deploy(@data['args']['nodes'], @data['args']['attributes'])</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> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line224">224</a> describe 'Vlan manager' do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line225">225</a> it 'Should set fixed_interface value' do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line226">226</a> node = {</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line227">227</a> 'role' => 'controller',</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line228">228</a> 'uid' => 1,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line229">229</a> 'vlan_interface' => 'eth2',</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line230">230</a> 'network_data' => [</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line231">231</a> {</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line232">232</a> "gateway" => "192.168.0.1",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line233">233</a> "name" => "management", "dev" => "eth0",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line234">234</a> "brd" => "192.168.0.255", "netmask" => "255.255.255.0",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line235">235</a> "vlan" => 102, "ip" => "192.168.0.2/24"</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> ],</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line238">238</a> 'meta' => {</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line239">239</a> 'interfaces' => [</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line240">240</a> {</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line241">241</a> 'name' => 'eth1',</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line242">242</a> }, {</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line243">243</a> 'name' => 'eth0',</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line244">244</a> }</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line245">245</a> ]</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line246">246</a> }</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line247">247</a> }</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line248">248</a> attrs = {</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line249">249</a> 'network_manager' => 'VlanManager'</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line250">250</a> }</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line251">251</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line252">252</a> expect = {</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line253">253</a> "role" => "controller",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line254">254</a> "uid"=>1,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line255">255</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line256">256</a> "network_data" => {"eth0.102" =></pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line257">257</a> {</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line258">258</a> "interface" => "eth0.102",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line259">259</a> "ipaddr" => ["192.168.0.2/24"]</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line260">260</a> },</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line261">261</a> "lo" => {</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line262">262</a> "interface" => "lo",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line263">263</a> "ipaddr" => ["127.0.0.1/8"]</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line264">264</a> },</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line265">265</a> 'eth1' => {</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line266">266</a> 'interface' => 'eth1',</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line267">267</a> 'ipaddr' => 'none'</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line268">268</a> },</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line269">269</a> 'eth0' => {</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line270">270</a> 'interface' =>'eth0',</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line271">271</a> 'ipaddr' => 'none'</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line272">272</a> },</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line273">273</a> }.to_json,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line274">274</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line275">275</a> "fixed_interface" => "eth2",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line276">276</a> "network_manager" => "VlanManager",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line277">277</a> "management_interface" => "eth0.102",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line278">278</a> "internal_address" => "192.168.0.2",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line279">279</a> 'management_address' => '192.168.0.2'</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line280">280</a> }</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line281">281</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line282">282</a> Astute::Metadata.expects(:publish_facts).with(@ctx, node['uid'], expect)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line283">283</a> @deploy_engine.create_facts(node, attrs)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line284">284</a> end</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> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line287">287</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>
|
|
@ -0,0 +1,344 @@
|
|||
<!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>spec/unit/node_spec.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>spec/unit/node_spec.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="spec-unit-node_spec_rb.html">spec/unit/node_spec.rb</a></td>
|
||||
<td class='right_align'><tt>95</tt></td>
|
||||
<td class='right_align'><tt>52</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></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 "License"); 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 "AS IS" 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 File.join(File.dirname(__FILE__), '../spec_helper')</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> describe Astute::Node do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line20">20</a> it "accepts hash for initialization" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line21">21</a> node = Astute::Node.new('uid' => 'abc', 'info' => 'blabla')</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line22">22</a> node.uid.should == 'abc'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line23">23</a> node.info.should == 'blabla'</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line24">24</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line25">25</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line26">26</a> it "requires uid" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line27">27</a> expect{ Astute::Node.new({}) }.to raise_error(TypeError)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line28">28</a> end</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> it "stringifies uid" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line31">31</a> node = Astute::Node.new('uid' => :abc)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line32">32</a> node.uid.should == 'abc'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line33">33</a> node = Astute::Node.new('uid' => 123)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line34">34</a> node.uid.should == '123'</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line35">35</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line36">36</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line37">37</a> it "denies uid changes" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line38">38</a> node = Astute::Node.new('uid' => 1)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line39">39</a> expect{ node.uid = 2 }.to raise_error(TypeError)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line40">40</a> expect{ node['uid'] = 2 }.to raise_error(TypeError)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line41">41</a> expect{ node[:uid] = 2 }.to raise_error(TypeError)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line42">42</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line43">43</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line44">44</a> it "allows [] accessors" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line45">45</a> node = Astute::Node.new('uid' => 123, 'info' => 'abc')</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line46">46</a> node['info'].should == 'abc'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line47">47</a> node[:info].should == 'abc'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line48">48</a> node['info'] = 'cba'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line49">49</a> node['info'].should == 'cba'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line50">50</a> node[:info] = 'dcb'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line51">51</a> node[:info].should == 'dcb'</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line52">52</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line53">53</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line54">54</a> it "unwraps to hash" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line55">55</a> hash = {'uid' => '123', 'info' => 'abc'}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line56">56</a> node = Astute::Node.new(hash)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line57">57</a> node.to_hash.should == hash</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line58">58</a> node.to_hash.should_not === node.instance_variable_get(:@table)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line59">59</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line60">60</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line61">61</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line62">62</a> describe Astute::NodesHash do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line63">63</a> it "accepts array of hashes or nodes for initialization and allows accessing by uid" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line64">64</a> nodes = Astute::NodesHash.build(</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line65">65</a> [{'uid' => 123, 'info' => 'blabla1'},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line66">66</a> Astute::Node.new({'uid' => 'abc', 'info' => 'blabla2'})])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line67">67</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line68">68</a> nodes['123'].info.should == 'blabla1'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line69">69</a> nodes['abc'].info.should == 'blabla2'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line70">70</a> nodes[123].info.should == 'blabla1'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line71">71</a> nodes[:abc].info.should == 'blabla2'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line72">72</a> nodes['123'].uid.should == '123'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line73">73</a> nodes.values.map(&:class).uniq.should == [Astute::Node]</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line74">74</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line75">75</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line76">76</a> it "allows easy elements addition and normalizes data" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line77">77</a> nodes = Astute::NodesHash.new</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line78">78</a> nodes << {'uid' => 1} << {'uid' => 2}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line79">79</a> nodes.push({'uid' => 3}, {'uid' => 4}, {'uid' => 5})</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line80">80</a> nodes.keys.sort.should == %w(1 2 3 4 5)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line81">81</a> nodes.values.map(&:class).uniq.should == [Astute::Node]</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line82">82</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line83">83</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line84">84</a> it "introduces meaningful aliases" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line85">85</a> nodes = Astute::NodesHash.build(</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line86">86</a> [{'uid' => 123, 'info' => 'blabla1'},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line87">87</a> Astute::Node.new({'uid' => 'abc', 'info' => 'blabla2'})])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line88">88</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line89">89</a> nodes.uids.should == nodes.keys</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line90">90</a> nodes.nodes.should == nodes.values</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line91">91</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line92">92</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line93">93</a> it "denies direct accessors" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line94">94</a> expect{ Astute::NodesHash.new['fake-uid'] = {'bla' => 'bla'} }.to raise_error(NoMethodError)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line95">95</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line96">96</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>
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,758 @@
|
|||
<!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>spec/unit/puppetd_spec.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>spec/unit/puppetd_spec.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="spec-unit-puppetd_spec_rb.html">spec/unit/puppetd_spec.rb</a></td>
|
||||
<td class='right_align'><tt>233</tt></td>
|
||||
<td class='right_align'><tt>105</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></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 "License"); 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 "AS IS" 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 File.join(File.dirname(__FILE__), '../spec_helper')</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> include Astute</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line20">20</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line21">21</a> describe "Puppetd" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line22">22</a> include SpecHelpers</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line23">23</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line24">24</a> context "PuppetdDeployer" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line25">25</a> before :each do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line26">26</a> @ctx = mock</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line27">27</a> @ctx.stubs(:task_id)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line28">28</a> @reporter = mock('reporter')</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line29">29</a> @ctx.stubs(:reporter).returns(ProxyReporter.new(@reporter))</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line30">30</a> @ctx.stubs(:deploy_log_parser).returns(Astute::LogParser::NoParsing.new)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line31">31</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line32">32</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line33">33</a> it "reports ready status for node if puppet deploy finished successfully" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line34">34</a> @reporter.expects(:report).with('nodes' => [{'uid' => '1', 'status' => 'ready', 'progress' => 100}])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line35">35</a> last_run_result = {:data=></pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line36">36</a> {:time=>{"last_run"=>1358425701},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line37">37</a> :status => "running", :resources => {'failed' => 0},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line38">38</a> :running => 1, :idling => 0},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line39">39</a> :sender=>"1"}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line40">40</a> last_run_result_new = Marshal.load(Marshal.dump(last_run_result))</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line41">41</a> last_run_result_new[:data][:time]['last_run'] = 1358426000</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line42">42</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line43">43</a> last_run_result_finished = Marshal.load(Marshal.dump(last_run_result))</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line44">44</a> last_run_result_finished[:data][:status] = 'stopped'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line45">45</a> last_run_result_finished[:data][:time]['last_run'] = 1358427000</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line46">46</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line47">47</a> nodes = [{'uid' => '1'}]</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line48">48</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line49">49</a> rpcclient = mock_rpcclient(nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line50">50</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line51">51</a> rpcclient_valid_result = mock_mc_result(last_run_result)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line52">52</a> rpcclient_new_res = mock_mc_result(last_run_result_new)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line53">53</a> rpcclient_finished_res = mock_mc_result(last_run_result_finished)</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> rpcclient.stubs(:last_run_summary).returns([rpcclient_valid_result]).then.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line56">56</a> returns([rpcclient_valid_result]).then.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line57">57</a> returns([rpcclient_new_res]).then.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line58">58</a> returns([rpcclient_finished_res])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line59">59</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line60">60</a> rpcclient.expects(:runonce).at_least_once.returns([rpcclient_valid_result])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line61">61</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line62">62</a> Astute::PuppetdDeployer.deploy(@ctx, nodes, retries=0)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line63">63</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line64">64</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line65">65</a> it "doesn't report ready status for node if change_node_status disabled" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line66">66</a> @reporter.expects(:report).never</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line67">67</a> last_run_result = {:data=></pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line68">68</a> {:time=>{"last_run"=>1358425701},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line69">69</a> :status => "running", :resources => {'failed' => 0},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line70">70</a> :running => 1, :idling => 0},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line71">71</a> :sender=>"1"}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line72">72</a> last_run_result_new = Marshal.load(Marshal.dump(last_run_result))</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line73">73</a> last_run_result_new[:data][:time]['last_run'] = 1358426000</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line74">74</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line75">75</a> last_run_result_finished = Marshal.load(Marshal.dump(last_run_result))</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line76">76</a> last_run_result_finished[:data][:status] = 'stopped'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line77">77</a> last_run_result_finished[:data][:time]['last_run'] = 1358427000</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> nodes = [{'uid' => '1'}]</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line80">80</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line81">81</a> rpcclient = mock_rpcclient(nodes)</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> rpcclient_valid_result = mock_mc_result(last_run_result)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line84">84</a> rpcclient_new_res = mock_mc_result(last_run_result_new)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line85">85</a> rpcclient_finished_res = mock_mc_result(last_run_result_finished)</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> rpcclient.stubs(:last_run_summary).returns([rpcclient_valid_result]).then.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line88">88</a> returns([rpcclient_valid_result]).then.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line89">89</a> returns([rpcclient_new_res]).then.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line90">90</a> returns([rpcclient_finished_res])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line91">91</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line92">92</a> rpcclient.expects(:runonce).at_least_once.returns([rpcclient_valid_result])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line93">93</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line94">94</a> Astute::PuppetdDeployer.deploy(@ctx, nodes, retries=0, change_node_status=false)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line95">95</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line96">96</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line97">97</a> it "publishes error status for node if puppet failed" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line98">98</a> @reporter.expects(:report).with('nodes' => [{'status' => 'error',</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line99">99</a> 'error_type' => 'deploy', 'uid' => '1'}])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line100">100</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line101">101</a> last_run_result = {:statuscode=>0, :data=></pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line102">102</a> {:changes=>{"total"=>1}, :time=>{"last_run"=>1358425701},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line103">103</a> :resources=>{"failed"=>0}, :status => "stopped", :enabled => 1,</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line104">104</a> :stopped => 1, :idling => 0, :running => 0, :runtime => 1358425701},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line105">105</a> :sender=>"1"}</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line106">106</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line107">107</a> last_run_result_idle_pre = Marshal.load(Marshal.dump(last_run_result))</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line108">108</a> last_run_result_idle_pre[:data].update(</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line109">109</a> {:status => 'idling', :idling => 1, :stopped => 0}</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line110">110</a> )</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line111">111</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line112">112</a> last_run_result_running = Marshal.load(Marshal.dump(last_run_result))</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line113">113</a> last_run_result_running[:data].update(</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line114">114</a> {:status => 'running', :running => 1, :stopped => 0}</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line115">115</a> )</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line116">116</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line117">117</a> last_run_result_finishing = Marshal.load(Marshal.dump(last_run_result_running))</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line118">118</a> last_run_result_finishing[:data].update(</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line119">119</a> {</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line120">120</a> :runtime => 1358426000, :time => {"last_run" => 1358426000},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line121">121</a> :resources => {"failed" => 1}</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line122">122</a> }</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line123">123</a> )</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line124">124</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line125">125</a> last_run_result_idle_post = Marshal.load(Marshal.dump(last_run_result_finishing))</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line126">126</a> last_run_result_idle_post[:data].update(</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line127">127</a> {:status => 'idling', :idling => 1, :running => 0}</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line128">128</a> )</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line129">129</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line130">130</a> last_run_result_finished = Marshal.load(Marshal.dump(last_run_result_finishing))</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line131">131</a> last_run_result_finished[:data].update(</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line132">132</a> {:status => 'stopped', :stopped => 1, :running => 0}</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line133">133</a> )</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line134">134</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line135">135</a> nodes = [{'uid' => '1'}]</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line136">136</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line137">137</a> rpcclient = mock_rpcclient(nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line138">138</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line139">139</a> rpcclient.stubs(:last_run_summary).times(9).</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line140">140</a> returns([ mock_mc_result(last_run_result) ]).then.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line141">141</a> returns([ mock_mc_result(last_run_result) ]).then.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line142">142</a> returns([ mock_mc_result(last_run_result_idle_pre) ]).then.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line143">143</a> returns([ mock_mc_result(last_run_result_idle_pre) ]).then.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line144">144</a> returns([ mock_mc_result(last_run_result_running) ]).then.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line145">145</a> returns([ mock_mc_result(last_run_result_running) ]).then.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line146">146</a> returns([ mock_mc_result(last_run_result_finishing) ]).then.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line147">147</a> returns([ mock_mc_result(last_run_result_idle_post) ]).then.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line148">148</a> returns([ mock_mc_result(last_run_result_finished) ])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line149">149</a> rpcclient.expects(:runonce).once.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line150">150</a> returns([ mock_mc_result(last_run_result) ])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line151">151</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line152">152</a> MClient.any_instance.stubs(:rpcclient).returns(rpcclient)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line153">153</a> Astute::PuppetdDeployer.deploy(@ctx, nodes, 0)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line154">154</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line155">155</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line156">156</a> it "doesn't publish error status for node if change_node_status disabled" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line157">157</a> @reporter.expects(:report).never</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line158">158</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line159">159</a> last_run_result = {:statuscode=>0, :data=></pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line160">160</a> {:changes=>{"total"=>1}, :time=>{"last_run"=>1358425701},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line161">161</a> :resources=>{"failed"=>0}, :status => "running",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line162">162</a> :running => 1, :idling => 0, :runtime => 100},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line163">163</a> :sender=>"1"}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line164">164</a> last_run_result_new = Marshal.load(Marshal.dump(last_run_result))</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line165">165</a> last_run_result_new[:data][:time]['last_run'] = 1358426000</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line166">166</a> last_run_result_new[:data][:resources]['failed'] = 1</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line167">167</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line168">168</a> nodes = [{'uid' => '1'}]</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line169">169</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line170">170</a> last_run_result_finished = Marshal.load(Marshal.dump(last_run_result))</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line171">171</a> last_run_result_finished[:data][:status] = 'stopped'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line172">172</a> last_run_result_finished[:data][:time]['last_run'] = 1358427000</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line173">173</a> last_run_result_finished[:data][:resources]['failed'] = 1</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line174">174</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line175">175</a> rpcclient = mock_rpcclient(nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line176">176</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line177">177</a> rpcclient_valid_result = mock_mc_result(last_run_result)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line178">178</a> rpcclient_new_res = mock_mc_result(last_run_result_new)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line179">179</a> rpcclient_finished_res = mock_mc_result(last_run_result_finished)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line180">180</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line181">181</a> rpcclient.stubs(:last_run_summary).returns([rpcclient_valid_result]).then.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line182">182</a> returns([rpcclient_valid_result]).then.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line183">183</a> returns([rpcclient_new_res]).then.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line184">184</a> returns([rpcclient_finished_res])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line185">185</a> rpcclient.expects(:runonce).at_least_once.returns([rpcclient_valid_result])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line186">186</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line187">187</a> MClient.any_instance.stubs(:rpcclient).returns(rpcclient)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line188">188</a> Astute::PuppetdDeployer.deploy(@ctx, nodes, retries=0, change_node_status=false)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line189">189</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line190">190</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line191">191</a> it "retries to run puppet if it fails" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line192">192</a> @reporter.expects(:report).with('nodes' => [{'uid' => '1', 'status' => 'ready', 'progress' => 100}])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line193">193</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line194">194</a> last_run_result = {:statuscode=>0, :data=></pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line195">195</a> {:changes=>{"total"=>1}, :time=>{"last_run"=>1358425701},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line196">196</a> :resources=>{"failed"=>0}, :status => "running",</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line197">197</a> :running => 1, :idling => 0, :runtime => 100},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line198">198</a> :sender=>"1"}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line199">199</a> last_run_failed = Marshal.load(Marshal.dump(last_run_result))</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line200">200</a> last_run_failed[:data][:time]['last_run'] = 1358426000</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line201">201</a> last_run_failed[:data][:resources]['failed'] = 1</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line202">202</a> last_run_failed[:data][:status] = 'stopped'</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line203">203</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line204">204</a> last_run_fixing = Marshal.load(Marshal.dump(last_run_result))</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line205">205</a> last_run_fixing[:data][:time]['last_run'] = 1358426000</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line206">206</a> last_run_fixing[:data][:resources]['failed'] = 1</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line207">207</a> last_run_fixing[:data][:status] = 'running'</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line208">208</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line209">209</a> last_run_success = Marshal.load(Marshal.dump(last_run_result))</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line210">210</a> last_run_success[:data][:time]['last_run'] = 1358428000</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line211">211</a> last_run_success[:data][:status] = 'stopped'</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line212">212</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line213">213</a> nodes = [{'uid' => '1'}]</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line214">214</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line215">215</a> rpcclient = mock_rpcclient(nodes)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line216">216</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line217">217</a> rpcclient_valid_result = mock_mc_result(last_run_result)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line218">218</a> rpcclient_failed = mock_mc_result(last_run_failed)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line219">219</a> rpcclient_fixing = mock_mc_result(last_run_fixing)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line220">220</a> rpcclient_succeed = mock_mc_result(last_run_success)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line221">221</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line222">222</a> rpcclient.stubs(:last_run_summary).returns([rpcclient_valid_result]).then.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line223">223</a> returns([rpcclient_valid_result]).then.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line224">224</a> returns([rpcclient_failed]).then.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line225">225</a> returns([rpcclient_failed]).then.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line226">226</a> returns([rpcclient_fixing]).then.</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line227">227</a> returns([rpcclient_succeed])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line228">228</a> rpcclient.expects(:runonce).at_least_once.returns([rpcclient_valid_result])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line229">229</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line230">230</a> MClient.any_instance.stubs(:rpcclient).returns(rpcclient)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line231">231</a> Astute::PuppetdDeployer.deploy(@ctx, nodes, retries=1)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line232">232</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line233">233</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line234">234</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>
|
|
@ -0,0 +1,674 @@
|
|||
<!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>spec/unit/reporter_spec.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>spec/unit/reporter_spec.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="spec-unit-reporter_spec_rb.html">spec/unit/reporter_spec.rb</a></td>
|
||||
<td class='right_align'><tt>205</tt></td>
|
||||
<td class='right_align'><tt>126</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></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 "License"); 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 "AS IS" 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 File.join(File.dirname(__FILE__), '../spec_helper')</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> include Astute</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line20">20</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line21">21</a> describe "ProxyReporter" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line22">22</a> context "Instance of ProxyReporter class" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line23">23</a> before :each do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line24">24</a> @msg = {'nodes' => [{'status' => 'ready', 'uid' => '1'}]}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line25">25</a> @msg_pr = {'nodes' => [@msg['nodes'][0],</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line26">26</a> {'status' => 'deploying', 'uid' => '2',</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line27">27</a> 'progress' => 54}]}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line28">28</a> @up_reporter = mock('up_reporter')</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line29">29</a> @reporter = ProxyReporter.new(@up_reporter)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line30">30</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line31">31</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line32">32</a> it "reports first-come data" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line33">33</a> @up_reporter.expects(:report).with(@msg)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line34">34</a> @reporter.report(@msg)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line35">35</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line36">36</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line37">37</a> it "does not report the same message" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line38">38</a> @up_reporter.expects(:report).with(@msg).once</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line39">39</a> 5.times { @reporter.report(@msg) }</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line40">40</a> end</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> it "reports only updated node" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line43">43</a> updated_node = @msg_pr['nodes'][1]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line44">44</a> expected_msg = {'nodes' => [updated_node]}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line45">45</a> @up_reporter.expects(:report).with(@msg)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line46">46</a> @up_reporter.expects(:report).with(expected_msg)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line47">47</a> @reporter.report(@msg)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line48">48</a> @reporter.report(@msg_pr)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line49">49</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line50">50</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line51">51</a> it "reports only if progress value is greater" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line52">52</a> msg1 = {'nodes' => [{'status' => 'deploying', 'uid' => '1', 'progress' => 54},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line53">53</a> {'status' => 'deploying', 'uid' => '2', 'progress' => 54}]}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line54">54</a> msg2 = Marshal.load(Marshal.dump(msg1))</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line55">55</a> msg2['nodes'][1]['progress'] = 100</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line56">56</a> msg2['nodes'][1]['status'] = 'ready'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line57">57</a> updated_node = msg2['nodes'][1]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line58">58</a> expected_msg = {'nodes' => [updated_node]}</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line59">59</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line60">60</a> @up_reporter.expects(:report).with(msg1)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line61">61</a> @up_reporter.expects(:report).with(expected_msg)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line62">62</a> @reporter.report(msg1)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line63">63</a> @reporter.report(msg2)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line64">64</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line65">65</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line66">66</a> it "raises exception if wrong key passed" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line67">67</a> @msg['nodes'][0]['ups'] = 'some_value'</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line68">68</a> lambda {@reporter.report(@msg)}.should raise_error</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line69">69</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line70">70</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line71">71</a> it "adjusts progress to 100 if passed greater" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line72">72</a> input_msg = {'nodes' => [{'uid' => 1, 'status' => 'deploying', 'progress' => 120}]}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line73">73</a> expected_msg = {'nodes' => [{'uid' => 1, 'status' => 'deploying', 'progress' => 100}]}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line74">74</a> @up_reporter.expects(:report).with(expected_msg)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line75">75</a> @reporter.report(input_msg)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line76">76</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line77">77</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line78">78</a> it "adjusts progress to 0 if passed less" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line79">79</a> input_msg = {'nodes' => [{'uid' => 1, 'status' => 'deploying', 'progress' => -20}]}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line80">80</a> expected_msg = {'nodes' => [{'uid' => 1, 'status' => 'deploying', 'progress' => 0}]}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line81">81</a> @up_reporter.expects(:report).with(expected_msg)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line82">82</a> @reporter.report(input_msg)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line83">83</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line84">84</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line85">85</a> it "adjusts progress to 100 if status provisioned and no progress given" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line86">86</a> input_msg = {'nodes' => [{'uid' => 1, 'status' => 'provisioned'}]}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line87">87</a> expected_msg = {'nodes' => [{'uid' => 1, 'status' => 'provisioned', 'progress' => 100}]}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line88">88</a> @up_reporter.expects(:report).with(expected_msg)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line89">89</a> @reporter.report(input_msg)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line90">90</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line91">91</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line92">92</a> it "adjusts progress to 100 if status ready and no progress given" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line93">93</a> input_msg = {'nodes' => [{'uid' => 1, 'status' => 'ready'}]}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line94">94</a> expected_msg = {'nodes' => [{'uid' => 1, 'status' => 'ready', 'progress' => 100}]}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line95">95</a> @up_reporter.expects(:report).with(expected_msg)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line96">96</a> @reporter.report(input_msg)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line97">97</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line98">98</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line99">99</a> it "adjusts progress to 100 if status provisioned with progress" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line100">100</a> input_msg = {'nodes' => [{'uid' => 1, 'status' => 'provisioned', 'progress' => 50}]}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line101">101</a> expected_msg = {'nodes' => [{'uid' => 1, 'status' => 'provisioned', 'progress' => 100}]}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line102">102</a> @up_reporter.expects(:report).with(expected_msg)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line103">103</a> @reporter.report(input_msg)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line104">104</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line105">105</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line106">106</a> it "adjusts progress to 100 if status ready with progress" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line107">107</a> input_msg = {'nodes' => [{'uid' => 1, 'status' => 'ready', 'progress' => 50}]}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line108">108</a> expected_msg = {'nodes' => [{'uid' => 1, 'status' => 'ready', 'progress' => 100}]}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line109">109</a> @up_reporter.expects(:report).with(expected_msg)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line110">110</a> @reporter.report(input_msg)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line111">111</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line112">112</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line113">113</a> it "does not report if node was in ready, and trying to set is deploying" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line114">114</a> msg1 = {'nodes' => [{'uid' => 1, 'status' => 'ready'}]}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line115">115</a> msg2 = {'nodes' => [{'uid' => 2, 'status' => 'ready'}]}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line116">116</a> msg3 = {'nodes' => [{'uid' => 1, 'status' => 'deploying', 'progress' => 100}]}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line117">117</a> @up_reporter.expects(:report).with(msg1)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line118">118</a> @up_reporter.expects(:report).with(msg2)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line119">119</a> @up_reporter.expects(:report).never</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line120">120</a> @reporter.report(msg1)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line121">121</a> @reporter.report(msg2)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line122">122</a> 5.times { @reporter.report(msg3) }</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line123">123</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line124">124</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line125">125</a> it "reports even not all keys provided" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line126">126</a> msg1 = {'nodes' => [{'uid' => 1, 'status' => 'deploying'}]}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line127">127</a> msg2 = {'nodes' => [{'uid' => 2, 'status' => 'ready'}]}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line128">128</a> @up_reporter.expects(:report).with(msg1)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line129">129</a> @up_reporter.expects(:report).with(msg2)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line130">130</a> @reporter.report(msg1)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line131">131</a> @reporter.report(msg2)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line132">132</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line133">133</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line134">134</a> it "raises exception if progress provided and no status" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line135">135</a> msg1 = {'nodes' => [{'uid' => 1, 'status' => 'ready'}]}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line136">136</a> msg2 = {'nodes' => [{'uid' => 1, 'progress' => 100}]}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line137">137</a> @up_reporter.expects(:report).with(msg1)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line138">138</a> @up_reporter.expects(:report).never</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line139">139</a> @reporter.report(msg1)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line140">140</a> lambda {@reporter.report(msg2)}.should raise_error</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line141">141</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line142">142</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line143">143</a> it "raises exception if status of node is not supported" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line144">144</a> msg1 = {'nodes' => [{'uid' => 1, 'status' => 'hah'}]}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line145">145</a> @up_reporter.expects(:report).never</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line146">146</a> lambda {@reporter.report(msg1)}.should raise_error</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line147">147</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line148">148</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line149">149</a> it "some other attrs are valid and passed" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line150">150</a> msg1 = {'nodes' => [{'uid' => 1, 'status' => 'deploying'}]}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line151">151</a> msg2 = {'status' => 'error', 'error_type' => 'deploy',</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line152">152</a> 'nodes' => [{'uid' => 2, 'status' => 'error', 'message' => 'deploy'}]}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line153">153</a> @up_reporter.expects(:report).with(msg1)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line154">154</a> @up_reporter.expects(:report).with(msg2)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line155">155</a> @reporter.report(msg1)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line156">156</a> @reporter.report(msg2)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line157">157</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line158">158</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line159">159</a> it "reports if status is greater" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line160">160</a> msgs = [{'nodes' => [{'uid' => 1, 'status' => 'provisioned'}]},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line161">161</a> {'nodes' => [{'uid' => 1, 'status' => 'provisioning'}]},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line162">162</a> {'nodes' => [{'uid' => 1, 'status' => 'ready'}]},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line163">163</a> {'nodes' => [{'uid' => 1, 'status' => 'error'}]}]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line164">164</a> @up_reporter.expects(:report).with(msgs[0])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line165">165</a> @up_reporter.expects(:report).with(msgs[2])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line166">166</a> @up_reporter.expects(:report).with(msgs[3])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line167">167</a> msgs.each {|msg| @reporter.report(msg)}</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line168">168</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line169">169</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line170">170</a> it "doesn't update progress if it less than previous progress with same status" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line171">171</a> msgs = [{'nodes' => [{'uid' => 1, 'status' => 'provisioning', 'progress' => 50}]},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line172">172</a> {'nodes' => [{'uid' => 1, 'status' => 'provisioning', 'progress' => 10}]},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line173">173</a> {'nodes' => [{'uid' => 1, 'status' => 'deploying', 'progress' => 50}]},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line174">174</a> {'nodes' => [{'uid' => 1, 'status' => 'deploying', 'progress' => 10}]}]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line175">175</a> @up_reporter.expects(:report).with(msgs[0])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line176">176</a> @up_reporter.expects(:report).with(msgs[2])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line177">177</a> @up_reporter.expects(:report).never</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line178">178</a> msgs.each {|msg| @reporter.report(msg)}</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line179">179</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line180">180</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line181">181</a> it "updates progress if it less than previous progress when changing status" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line182">182</a> msgs = [{'nodes' => [{'uid' => 1, 'status' => 'provisioning', 'progress' => 50}]},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line183">183</a> {'nodes' => [{'uid' => 1, 'status' => 'provisioned'}]},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line184">184</a> {'nodes' => [{'uid' => 1, 'status' => 'provisioned', 'progress' => 100}]},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line185">185</a> {'nodes' => [{'uid' => 1, 'status' => 'deploying', 'progress' => 0}]}]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line186">186</a> @up_reporter.expects(:report).with(msgs[0])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line187">187</a> @up_reporter.expects(:report).with(msgs[2])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line188">188</a> @up_reporter.expects(:report).with(msgs[3])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line189">189</a> @up_reporter.expects(:report).never</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line190">190</a> msgs.each {|msg| @reporter.report(msg)}</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line191">191</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line192">192</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line193">193</a> it "doesn't forget previously reported attributes" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line194">194</a> msgs = [{'nodes' => [{'uid' => 1, 'status' => 'provisioning', 'progress' => 50}]},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line195">195</a> {'nodes' => [{'uid' => 1, 'status' => 'provisioning'}]},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line196">196</a> {'nodes' => [{'uid' => 1, 'status' => 'provisioning', 'key' => 'value'}]},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line197">197</a> {'nodes' => [{'uid' => 1, 'status' => 'provisioning', 'progress' => 0}]},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line198">198</a> ]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line199">199</a> @up_reporter.expects(:report).with(msgs[0])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line200">200</a> @up_reporter.expects(:report).with(msgs[2])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line201">201</a> @up_reporter.expects(:report).never</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line202">202</a> msgs.each {|msg| @reporter.report(msg)}</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line203">203</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line204">204</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line205">205</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line206">206</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>
|
|
@ -0,0 +1,425 @@
|
|||
<!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>spec/unit/simplepuppet_deploy_spec.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>spec/unit/simplepuppet_deploy_spec.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="spec-unit-simplepuppet_deploy_spec_rb.html">spec/unit/simplepuppet_deploy_spec.rb</a></td>
|
||||
<td class='right_align'><tt>122</tt></td>
|
||||
<td class='right_align'><tt>73</tt></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></div>
|
||||
</div></td>
|
||||
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
||||
<div class="percent_graph">
|
||||
<div class="covered" style="width:100px"></div>
|
||||
<div class="uncovered" style="width:0px"></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 "License"); 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 "AS IS" 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 File.join(File.dirname(__FILE__), '../spec_helper')</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> describe "SimplePuppet DeploymentEngine" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line20">20</a> context "When deploy is called, " do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line21">21</a> before(:each) do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line22">22</a> @ctx = mock</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line23">23</a> @ctx.stubs(:task_id)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line24">24</a> @ctx.stubs(:deploy_log_parser).returns(Astute::LogParser::NoParsing.new)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line25">25</a> @reporter = mock('reporter')</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line26">26</a> @reporter.stub_everything</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line27">27</a> @ctx.stubs(:reporter).returns(Astute::ProxyReporter.new(@reporter))</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line28">28</a> @deploy_engine = Astute::DeploymentEngine::SimplePuppet.new(@ctx)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line29">29</a> @env = YAML.load_file(File.join(File.dirname(__FILE__), "..", "..", "examples", "no_attrs.yaml"))</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line30">30</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line31">31</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line32">32</a> it "it should call valid method depends on attrs" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line33">33</a> nodes = [{'uid' => 1}]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line34">34</a> attrs = {'deployment_mode' => 'ha'}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line35">35</a> @deploy_engine.expects(:attrs_ha).never # It is not supported in SimplePuppet</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line36">36</a> @deploy_engine.expects(:deploy_ha).with(nodes, attrs)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line37">37</a> # All implementations of deploy_piece go to subclasses</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line38">38</a> @deploy_engine.respond_to?(:deploy_piece).should be_true</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line39">39</a> @deploy_engine.deploy(nodes, attrs)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line40">40</a> end</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> it "it should raise an exception if deployment mode is unsupported" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line43">43</a> nodes = [{'uid' => 1}]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line44">44</a> attrs = {'deployment_mode' => 'unknown'}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line45">45</a> expect {@deploy_engine.deploy(nodes, attrs)}.to raise_exception(</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line46">46</a> /Method deploy_unknown is not implemented/)</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line47">47</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line48">48</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line49">49</a> it "multinode deploy should not raise any exception" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line50">50</a> @env['attributes']['deployment_mode'] = "multinode"</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line51">51</a> Astute::Metadata.expects(:publish_facts).never # It is not supported in SimplePuppet</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line52">52</a> # we got two calls, one for controller, and another for all computes</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line53">53</a> Astute::PuppetdDeployer.expects(:deploy).twice</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line54">54</a> @deploy_engine.deploy(@env['nodes'], @env['attributes'])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line55">55</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line56">56</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line57">57</a> it "ha deploy should not raise any exception" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line58">58</a> @env['attributes']['deployment_mode'] = "ha"</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line59">59</a> Astute::Metadata.expects(:publish_facts).never</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line60">60</a> Astute::PuppetdDeployer.expects(:deploy).times(2)</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line61">61</a> @deploy_engine.deploy(@env['nodes'], @env['attributes'])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line62">62</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line63">63</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line64">64</a> it "singlenode deploy should not raise any exception" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line65">65</a> @env['attributes']['deployment_mode'] = "singlenode"</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line66">66</a> @env['nodes'] = [@env['nodes'][0]] # We have only one node in singlenode</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line67">67</a> Astute::Metadata.expects(:publish_facts).never</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line68">68</a> Astute::PuppetdDeployer.expects(:deploy).once # one call for one node</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line69">69</a> @deploy_engine.deploy(@env['nodes'], @env['attributes'])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line70">70</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line71">71</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line72">72</a> it "ha_compact deploy should not raise any exception" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line73">73</a> @env['attributes']['deployment_mode'] = "ha_compact"</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line74">74</a> @env['nodes'].concat([{'uid'=>'c1', 'role'=>'controller'},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line75">75</a> {'uid'=>'c2', 'role'=>'controller'},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line76">76</a> {'uid'=>'o1', 'role'=>'other'}])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line77">77</a> controller_nodes = @env['nodes'].select{|n| n['role'] == 'controller'}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line78">78</a> compute_nodes = @env['nodes'].select{|n| n['role'] == 'compute'}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line79">79</a> other_nodes = @env['nodes'] - controller_nodes</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line80">80</a> primary_ctrl_nodes = [controller_nodes.shift]</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line81">81</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line82">82</a> Astute::Metadata.expects(:publish_facts).never</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line83">83</a> Astute::PuppetdDeployer.expects(:deploy).with(@ctx, primary_ctrl_nodes, 0, false).once</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line84">84</a> controller_nodes.each do |n|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line85">85</a> Astute::PuppetdDeployer.expects(:deploy).with(@ctx, [n], 2, true).once</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line86">86</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line87">87</a> Astute::PuppetdDeployer.expects(:deploy).with(@ctx, primary_ctrl_nodes, 2, true).once</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line88">88</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line89">89</a> Astute::PuppetdDeployer.expects(:deploy).with(@ctx, other_nodes, instance_of(Fixnum), true).once</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line90">90</a> @deploy_engine.deploy(@env['nodes'], @env['attributes'])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line91">91</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line92">92</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line93">93</a> it "ha_full deploy should not raise any exception" do</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line94">94</a> @env['attributes']['deployment_mode'] = "ha_full"</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line95">95</a> @env['nodes'].concat([{'uid'=>'c1', 'role'=>'controller'}, {'uid'=>'c2', 'role'=>'controller'},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line96">96</a> {'uid'=>'q1', 'role'=>'quantum'}, {'uid'=>'q2', 'role'=>'quantum'},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line97">97</a> {'uid'=>'st1', 'role'=>'storage'}, {'uid'=>'st2', 'role'=>'storage'},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line98">98</a> {'uid'=>'sw1', 'role'=>'primary-swift-proxy'}, {'uid'=>'sw2', 'role'=>'swift-proxy'},</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line99">99</a> {'uid'=>'o1', 'role'=>'other'}])</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line100">100</a> controller_nodes = @env['nodes'].select{|n| n['role'] == 'controller'}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line101">101</a> primary_ctrl_nodes = [controller_nodes.shift]</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line102">102</a> compute_nodes = @env['nodes'].select{|n| n['role'] == 'compute'}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line103">103</a> quantum_nodes = @env['nodes'].select {|n| n['role'] == 'quantum'}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line104">104</a> storage_nodes = @env['nodes'].select {|n| n['role'] == 'storage'}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line105">105</a> proxy_nodes = @env['nodes'].select {|n| n['role'] == 'swift-proxy'}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line106">106</a> primary_proxy_nodes = @env['nodes'].select {|n| n['role'] == 'primary-swift-proxy'}</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line107">107</a> primary_nodes = primary_ctrl_nodes + primary_proxy_nodes</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line108">108</a> other_nodes = @env['nodes'] - controller_nodes - primary_nodes - quantum_nodes</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line109">109</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line110">110</a> Astute::Metadata.expects(:publish_facts).never</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line111">111</a> Astute::PuppetdDeployer.expects(:deploy).with(@ctx, primary_ctrl_nodes, 0, false).once</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line112">112</a> controller_nodes.each do |n|</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line113">113</a> Astute::PuppetdDeployer.expects(:deploy).with(@ctx, [n], 2, true).once</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line114">114</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line115">115</a> Astute::PuppetdDeployer.expects(:deploy).with(@ctx, primary_nodes, 2, true).once</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line116">116</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line117">117</a> Astute::PuppetdDeployer.expects(:deploy).with(@ctx, quantum_nodes, 2, true).once</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line118">118</a> </pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line119">119</a> Astute::PuppetdDeployer.expects(:deploy).with(@ctx, other_nodes, instance_of(Fixnum), true).once</pre></td>
|
||||
</tr>
|
||||
<tr class="marked">
|
||||
<td><pre><a name="line120">120</a> @deploy_engine.deploy(@env['nodes'], @env['attributes'])</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line121">121</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line122">122</a> end</pre></td>
|
||||
</tr>
|
||||
<tr class="inferred">
|
||||
<td><pre><a name="line123">123</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>
|
|
@ -1,44 +1,71 @@
|
|||
node_01:
|
||||
mac: 64:43:7B:CA:56:DD
|
||||
name: controller-01
|
||||
ip: 10.20.0.94
|
||||
profile: centos-x86_64
|
||||
fqdn: controller-01.domain.tld
|
||||
# Base config
|
||||
task_uuid: deployment_task
|
||||
engine:
|
||||
url: http://localhost/cobbler_api
|
||||
username: cobbler
|
||||
password: cobbler
|
||||
|
||||
power_info: &power_info
|
||||
power_type: ssh
|
||||
power_user: root
|
||||
power_pass: /root/.ssh/bootstrap.rsa
|
||||
power_address: 10.20.0.94
|
||||
netboot_enabled: '1'
|
||||
name_servers: ! '"10.20.0.2"'
|
||||
power_pass: /root/.ssh/bootstrap.rsa
|
||||
netboot_enabled: '1'
|
||||
|
||||
ks_meta: &ks_meta
|
||||
mco_enable: 1
|
||||
mco_vhost: mcollective
|
||||
mco_pskey: unset
|
||||
mco_user: mcollective
|
||||
puppet_enable: 0
|
||||
install_log_2_syslog: 1
|
||||
mco_password: marionette
|
||||
puppet_auto_setup: 1
|
||||
puppet_master: fuelweb.domain.tld
|
||||
mco_auto_setup: 1
|
||||
auth_key: ! '""'
|
||||
puppet_version: 2.7.19
|
||||
mco_connector: rabbitmq
|
||||
mco_host: 10.20.0.2
|
||||
|
||||
node_01: &node1
|
||||
name: controller-5
|
||||
hostname: controller-5.domain.tld
|
||||
profile: centos-x86_64
|
||||
# fqdn: &fqdn controller-5.domain.tld
|
||||
# id: &id 5
|
||||
# uid: *id
|
||||
# mac: &mac 08:00:27:E3:BC:28
|
||||
# ip: &ip 10.20.0.41
|
||||
# power_address: *ip
|
||||
<<: *power_info
|
||||
#Write size in megabytes
|
||||
ks_meta:
|
||||
ks_spaces: '"[{\"type\": \"disk\", \"id\": \"disk/by-path/pci-0000:00:06.0-virtio-pci-virtio3\",
|
||||
\"volumes\": [{\"mount\": \"/boot\", \"type\": \"partition\", \"size\": 200},
|
||||
{\"type\": \"mbr\"}, {\"size\": 20000, \"type\": \"pv\", \"vg\": \"os\"}],
|
||||
\"size\": 20480}, {\"type\": \"vg\", \"id\": \"os\", \"volumes\": [{\"mount\":
|
||||
\"/\", \"type\": \"lv\", \"name\": \"root\", \"size\": 10240 }, {\"mount\":
|
||||
\"swap\", \"type\": \"lv\", \"name\": \"swap\", \"size\": 2048}]}]"'
|
||||
mco_enable: 1
|
||||
mco_vhost: mcollective
|
||||
mco_pskey: unset
|
||||
mco_user: mcollective
|
||||
puppet_enable: 0
|
||||
install_log_2_syslog: 1
|
||||
mco_password: marionette
|
||||
puppet_auto_setup: 1
|
||||
puppet_master: fuelweb.domain.tld
|
||||
mco_auto_setup: 1
|
||||
auth_key: ! '""'
|
||||
puppet_version: 2.7.19
|
||||
mco_connector: rabbitmq
|
||||
mco_host: 10.20.0.2
|
||||
ks_meta:
|
||||
<<: *ks_meta
|
||||
ks_spaces: ! '"[{\"type\": \"disk\", \"id\": \"disk/by-path/pci-0000:00:0d.0-scsi-0:0:0:0\",
|
||||
\"volumes\": [{\"mount\": \"/boot\", \"type\": \"partition\", \"size\": 209715200},
|
||||
{\"type\": \"mbr\"}, {\"size\": 16959668224, \"type\": \"pv\", \"vg\": \"os\"}],
|
||||
\"size\": 17179869184}, {\"type\": \"disk\", \"id\": \"disk/by-path/pci-0000:00:0d.0-scsi-1:0:0:0\",
|
||||
\"volumes\": [{\"size\": 536860426240, \"type\": \"pv\", \"vg\": \"os\"}], \"size\":
|
||||
536870912000}, {\"type\": \"disk\", \"id\": \"disk/by-path/pci-0000:00:0d.0-scsi-2:0:0:0\",
|
||||
\"volumes\": [{\"size\": 2411714314240, \"type\": \"pv\", \"vg\": \"os\"}],
|
||||
\"size\": 2411724800000}, {\"type\": \"vg\", \"id\": \"os\", \"volumes\": [{\"mount\":
|
||||
\"/\", \"type\": \"lv\", \"name\": \"root\", \"size\": 2963243016192}, {\"mount\":
|
||||
\"swap\", \"type\": \"lv\", \"name\": \"swap\", \"size\": 2090065920}]}]"'
|
||||
|
||||
interfaces:
|
||||
eth0:
|
||||
ip_address: 10.20.0.94
|
||||
ip_address: 10.20.0.41
|
||||
netmask: 255.255.255.0
|
||||
dns_name: controller-01.domain.tld
|
||||
dns_name: controller-5.domain.tld
|
||||
static: '1'
|
||||
mac_address: 64:43:7B:CA:56:DD
|
||||
mac_address: 08:00:27:E3:BC:28
|
||||
use_for_provision: true # ip, power_address, mac, fqdn
|
||||
eth1:
|
||||
mac_address: 08:00:27:0D:5C:B9
|
||||
use_for_provision: false # ip, power_address, mac, fqdn
|
||||
eth2:
|
||||
mac_address: 08:00:27:D3:4F:6C
|
||||
interfaces_extra:
|
||||
eth2:
|
||||
onboot: 'no'
|
||||
|
@ -49,8 +76,6 @@ node_01:
|
|||
eth0:
|
||||
onboot: 'yes'
|
||||
peerdns: 'no'
|
||||
|
||||
engine:
|
||||
url: http://localhost/cobbler_api
|
||||
username: cobbler
|
||||
password: cobbler
|
||||
|
||||
nodes:
|
||||
- <<: *node1
|
||||
|
|
|
@ -0,0 +1,74 @@
|
|||
# Copyright 2013 Mirantis, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
require 'yaml'
|
||||
require 'rest-client'
|
||||
require 'json'
|
||||
|
||||
module Astute
|
||||
class Enviroment
|
||||
|
||||
def self.load_file(file)
|
||||
env = YAML.load_file(file)
|
||||
expand_data(env)
|
||||
end
|
||||
|
||||
def self.expand_data(env)
|
||||
|
||||
|
||||
|
||||
env['nodes'].each do |node|
|
||||
net_data = node['interfaces'].values.select { |value| value if value['use_for_provision'] } rescue []
|
||||
id = api_data.find{ |v| v['id'] if v['mac'] == net_data[0]['mac_address'] }['id']
|
||||
if net_data.size == 1
|
||||
node.merge!({
|
||||
'ip' => net_data[0]['ip_address'],
|
||||
'power_address' => net_data[0]['ip_address'],
|
||||
'fqdn' => net_data[0]['dns_name'],
|
||||
'mac' => net_data[0]['mac_address'],
|
||||
'id' => id,
|
||||
'uid' => id
|
||||
})
|
||||
p "== 123 ==="
|
||||
p node['ip']
|
||||
p node['mac']
|
||||
p "=== end ==="
|
||||
else
|
||||
Astute.logger.error "Not find use_for_provision in #{node[:name]}"
|
||||
end
|
||||
|
||||
end
|
||||
env
|
||||
end
|
||||
|
||||
def get_data_from_nailgun
|
||||
# Get additional data from FuelWeb
|
||||
begin
|
||||
response = RestClient.get 'http://localhost:8000/api/nodes'
|
||||
rescue => e
|
||||
e.response
|
||||
end
|
||||
|
||||
if response.
|
||||
api_data = JSON.parse(response)
|
||||
end
|
||||
|
||||
|
||||
def set_param(env, param, new)
|
||||
env[param]
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
end
|
|
@ -46,7 +46,7 @@ module Astute
|
|||
{'pattern' => 'wait while node rebooting', 'supposed_time' => 20},
|
||||
].reverse,
|
||||
'filename' => 'install/anaconda.log',
|
||||
'path_format' => "<%= @pattern_spec['path_prefix'] %><%= node['fqdn'] %>/<%= @pattern_spec['filename'] %>",
|
||||
'path_format' => "<%= @pattern_spec['path_prefix'] %><%= node['ip'] %>/<%= @pattern_spec['filename'] %>",
|
||||
},
|
||||
|
||||
'anaconda-log-supposed-time-kvm' => # key for default kvm provision pattern
|
||||
|
@ -70,7 +70,7 @@ module Astute
|
|||
{'pattern' => 'wait while node rebooting', 'supposed_time' => 20},
|
||||
].reverse,
|
||||
'filename' => 'install/anaconda.log',
|
||||
'path_format' => "<%= @pattern_spec['path_prefix'] %><%= node['fqdn'] %>/<%= @pattern_spec['filename'] %>",
|
||||
'path_format' => "<%= @pattern_spec['path_prefix'] %><%= node['ip'] %>/<%= @pattern_spec['filename'] %>",
|
||||
},
|
||||
|
||||
'puppet-log-components-list-ha-controller' => # key for default HA deploy pattern
|
||||
|
@ -78,7 +78,7 @@ module Astute
|
|||
'endlog_patterns' => [{'pattern' => /Finished catalog run in [0-9]+\.[0-9]* seconds\n/, 'progress' => 1.0}],
|
||||
'chunk_size' => 40000,
|
||||
'filename' => 'puppet-agent.log',
|
||||
'path_format' => "<%= @pattern_spec['path_prefix'] %><%= node['fqdn'] %>/<%= @pattern_spec['filename'] %>",
|
||||
'path_format' => "<%= @pattern_spec['path_prefix'] %><%= node['ip'] %>/<%= @pattern_spec['filename'] %>",
|
||||
'components_list' => [
|
||||
{'name' => 'Galera', 'weight' => 5, 'patterns' => [
|
||||
{'pattern' => '/Stage[main]/Galera/File[/etc/mysql]/ensure) created', 'progress' => 0.1},
|
||||
|
@ -243,7 +243,7 @@ module Astute
|
|||
'endlog_patterns' => [{'pattern' => /Finished catalog run in [0-9]+\.[0-9]* seconds\n/, 'progress' => 1.0}],
|
||||
'chunk_size' => 40000,
|
||||
'filename' => 'puppet-agent.log',
|
||||
'path_format' => "<%= @pattern_spec['path_prefix'] %><%= node['fqdn'] %>/<%= @pattern_spec['filename'] %>",
|
||||
'path_format' => "<%= @pattern_spec['path_prefix'] %><%= node['ip'] %>/<%= @pattern_spec['filename'] %>",
|
||||
'components_list' => [
|
||||
{'name' => 'Keystone', 'weight' => 10, 'patterns' => [
|
||||
{'pattern' => '/Stage[main]/Keystone::Python/Package[python-keystone]/ensure) created', 'progress' => 1},
|
||||
|
@ -296,7 +296,7 @@ module Astute
|
|||
'endlog_patterns' => [{'pattern' => /Finished catalog run in [0-9]+\.[0-9]* seconds\n/, 'progress' => 1.0}],
|
||||
'chunk_size' => 40000,
|
||||
'filename' => 'puppet-agent.log',
|
||||
'path_format' => "<%= @pattern_spec['path_prefix'] %><%= node['fqdn'] %>/<%= @pattern_spec['filename'] %>",
|
||||
'path_format' => "<%= @pattern_spec['path_prefix'] %><%= node['ip'] %>/<%= @pattern_spec['filename'] %>",
|
||||
'components_list' => [
|
||||
{'name' => 'Glance', 'weight' => 10, 'patterns' => [
|
||||
{'pattern' => '/Stage[main]/Glance/Package[glance]/ensure) created', 'progress' => 0.1},
|
||||
|
@ -383,7 +383,7 @@ module Astute
|
|||
'endlog_patterns' => [{'pattern' => /Finished catalog run in [0-9]+\.[0-9]* seconds\n/, 'progress' => 1.0}],
|
||||
'chunk_size' => 40000,
|
||||
'filename' => 'puppet-agent.log',
|
||||
'path_format' => "<%= @pattern_spec['path_prefix'] %><%= node['fqdn'] %>/<%= @pattern_spec['filename'] %>",
|
||||
'path_format' => "<%= @pattern_spec['path_prefix'] %><%= node['ip'] %>/<%= @pattern_spec['filename'] %>",
|
||||
'components_list' => [
|
||||
{'name' => 'Glance', 'weight' => 10, 'patterns' => [
|
||||
{'pattern' => '/Stage[main]/Glance/Package[glance]/ensure) created', 'progress' => 0.1},
|
||||
|
@ -470,7 +470,7 @@ module Astute
|
|||
'endlog_patterns' => [{'pattern' => /Finished catalog run in [0-9]+\.[0-9]* seconds\n/, 'progress' => 1.0}],
|
||||
'chunk_size' => 40000,
|
||||
'filename' => 'puppet-agent.log',
|
||||
'path_format' => "<%= @pattern_spec['path_prefix'] %><%= node['fqdn'] %>/<%= @pattern_spec['filename'] %>",
|
||||
'path_format' => "<%= @pattern_spec['path_prefix'] %><%= node['ip'] %>/<%= @pattern_spec['filename'] %>",
|
||||
'components_list' => [
|
||||
{'name' => 'Keystone', 'weight' => 10, 'patterns' => [
|
||||
{'pattern' => '/Stage[main]/Keystone::Python/Package[python-keystone]/ensure) created', 'progress' => 1},
|
||||
|
|
|
@ -54,7 +54,7 @@ module Astute
|
|||
pattern_spec['path_prefix'] ||= PATH_PREFIX.to_s
|
||||
pattern_spec['separator'] ||= SEPARATOR.to_s
|
||||
|
||||
hdd = node['meta']['disks'].select{|disk| not disk['removable']}[0]
|
||||
hdd = node['meta']['disks'].select{|disk| not disk['removable']}[0] if node['meta'] && node['meta']['disks']
|
||||
if hdd
|
||||
# Convert size from bytes to GB
|
||||
hdd_size = hdd['size'] / 10 ** 9
|
||||
|
|
Loading…
Reference in New Issue