Remove old deploy method 'deploy'. Do not use since 6.1.
Also remove old tests and some garbage of old provision method. Change-Id: Idb340f7d917592c0c764f7bc25bb124fd2f014c2
This commit is contained in:
parent
fa254cf7ca
commit
74f27bef35
|
@ -33,7 +33,6 @@ require 'astute/deployment_engine'
|
|||
require 'astute/network'
|
||||
require 'astute/puppetd'
|
||||
require 'astute/provision'
|
||||
require 'astute/deployment_engine/nailyfact'
|
||||
require 'astute/deployment_engine/granular_deployment'
|
||||
require 'astute/cobbler'
|
||||
require 'astute/cobbler_manager'
|
||||
|
|
|
@ -1,82 +0,0 @@
|
|||
# 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.
|
||||
|
||||
class Astute::DeploymentEngine::NailyFact < Astute::DeploymentEngine
|
||||
|
||||
def deploy_piece(nodes, retries=1)
|
||||
return false unless validate_nodes(nodes)
|
||||
|
||||
@ctx.reporter.report(nodes_status(nodes, 'deploying', {'progress' => 0}))
|
||||
|
||||
begin
|
||||
@ctx.deploy_log_parser.prepare(nodes)
|
||||
rescue => e
|
||||
Astute.logger.warn "Some error occurred when prepare LogParser: #{e.message}, trace: #{e.format_backtrace}"
|
||||
end
|
||||
|
||||
Astute.logger.info "#{@ctx.task_id}: Starting deployment"
|
||||
|
||||
Astute::PuppetdDeployer.deploy(
|
||||
@ctx,
|
||||
nodes,
|
||||
retries,
|
||||
puppet_manifest=nil,
|
||||
puppet_modules=nil,
|
||||
cwd=nil,
|
||||
puppet_debug=nodes.first.fetch('puppet_debug', true)
|
||||
)
|
||||
nodes_roles = nodes.map { |n| {n['uid'] => n['role']} }
|
||||
Astute.logger.info "#{@ctx.task_id}: Finished deployment of nodes => roles:\n#{nodes_roles.pretty_inspect}"
|
||||
end
|
||||
|
||||
def pre_deployment_actions(deployment_info, pre_deployment)
|
||||
Astute::PreDeploymentActions.new(deployment_info, @ctx).process
|
||||
Astute::NailgunHooks.new(pre_deployment, @ctx).process
|
||||
end
|
||||
|
||||
def pre_node_actions(part)
|
||||
@action ||= Astute::PreNodeActions.new(@ctx)
|
||||
@action.process(part)
|
||||
end
|
||||
|
||||
def pre_deploy_actions(part)
|
||||
Astute::PreDeployActions.new(part, @ctx).process
|
||||
end
|
||||
|
||||
def post_deploy_actions(part)
|
||||
Astute::PostDeployActions.new(part, @ctx).process
|
||||
end
|
||||
|
||||
def post_deployment_actions(deployment_info, post_deployment)
|
||||
begin
|
||||
Astute::NailgunHooks.new(post_deployment, @ctx).process
|
||||
rescue => e
|
||||
# We should fail all nodes in case of post deployment
|
||||
# process. In other case they will not sending back
|
||||
# for redeploy
|
||||
nodes = deployment_info.uniq {|n| n['uid']}.map do |node|
|
||||
{ 'uid' => node['uid'],
|
||||
'status' => 'error',
|
||||
'role' => 'hook',
|
||||
'error_type' => 'deploy',
|
||||
}
|
||||
end
|
||||
@ctx.report_and_update_status('nodes' => nodes)
|
||||
raise e
|
||||
end
|
||||
|
||||
Astute::PostDeploymentActions.new(deployment_info, @ctx).process
|
||||
end
|
||||
|
||||
end
|
|
@ -30,22 +30,8 @@ module Astute
|
|||
report_result({}, up_reporter)
|
||||
end
|
||||
|
||||
|
||||
# Deprecated deploy method. Use monolitic site.pp. Do not use from 7.1.
|
||||
# Report progress based on puppet logs
|
||||
def deploy(up_reporter, task_id, deployment_info, pre_deployment=[], post_deployment=[])
|
||||
deploy_cluster(
|
||||
up_reporter,
|
||||
task_id,
|
||||
deployment_info,
|
||||
Astute::DeploymentEngine::NailyFact,
|
||||
pre_deployment,
|
||||
post_deployment
|
||||
)
|
||||
end
|
||||
|
||||
# Deploy method which use small tasks, but run block of tasks for role
|
||||
# instead of run it using full graph. Use from 7.1 to 8.0. Report progress
|
||||
# instead of run it using full graph. Use from 6.1 to 8.0. Report progress
|
||||
# based on puppet logs
|
||||
def granular_deploy(up_reporter, task_id, deployment_info, pre_deployment=[], post_deployment=[])
|
||||
time_start = Time.now.to_i
|
||||
|
@ -81,7 +67,7 @@ module Astute
|
|||
"#{time_summary(time_start)}"
|
||||
end
|
||||
|
||||
def provision(up_reporter, task_id, provisioning_info, provision_method)
|
||||
def provision(up_reporter, task_id, provisioning_info)
|
||||
time_start = Time.now.to_i
|
||||
proxy_reporter = ProxyReporter::ProvisiningProxyReporter.new(
|
||||
up_reporter,
|
||||
|
@ -124,8 +110,7 @@ module Astute
|
|||
provisioner.provision(
|
||||
proxy_reporter,
|
||||
task_id,
|
||||
provisioning_info,
|
||||
provision_method
|
||||
provisioning_info
|
||||
)
|
||||
ensure
|
||||
Astute.logger.info "Provision summary: time was spent " \
|
||||
|
|
|
@ -37,7 +37,7 @@ module Astute
|
|||
end
|
||||
end
|
||||
|
||||
def provision(reporter, task_id, provisioning_info, provision_method)
|
||||
def provision(reporter, task_id, provisioning_info)
|
||||
engine_attrs = provisioning_info['engine']
|
||||
nodes = provisioning_info['nodes']
|
||||
|
||||
|
@ -53,7 +53,6 @@ module Astute
|
|||
task_id,
|
||||
Array.new(nodes),
|
||||
engine_attrs,
|
||||
provision_method,
|
||||
fault_tolerance)
|
||||
rescue => e
|
||||
Astute.logger.error("Error occured while provisioning:\n#{e.pretty_inspect}")
|
||||
|
@ -102,7 +101,6 @@ module Astute
|
|||
task_id,
|
||||
nodes_to_provision,
|
||||
engine_attrs,
|
||||
provision_method,
|
||||
fault_tolerance)
|
||||
raise "Nodes to provision are not provided!" if nodes_to_provision.empty?
|
||||
|
||||
|
@ -125,7 +123,7 @@ module Astute
|
|||
new_nodes = nodes_to_provision.shift(max_nodes - nodes_not_booted.count)
|
||||
|
||||
Astute.logger.debug("Provisioning nodes: #{new_nodes}")
|
||||
failed_uids += provision_piece(reporter, task_id, engine_attrs, new_nodes, provision_method)
|
||||
failed_uids += provision_piece(reporter, task_id, engine_attrs, new_nodes)
|
||||
Astute.logger.info "Nodes failed to reboot: #{failed_uids} "
|
||||
|
||||
nodes_not_booted += new_nodes.map{ |n| n['uid'] }
|
||||
|
@ -215,7 +213,7 @@ module Astute
|
|||
result
|
||||
end
|
||||
|
||||
def provision_piece(reporter, task_id, engine_attrs, nodes, provision_method)
|
||||
def provision_piece(reporter, task_id, engine_attrs, nodes)
|
||||
cobbler = CobblerManager.new(engine_attrs, reporter)
|
||||
failed_uids = []
|
||||
# TODO(kozhukalov): do not forget about execute_shell_command timeout which is 3600
|
||||
|
|
|
@ -34,15 +34,10 @@ module Astute
|
|||
#
|
||||
|
||||
def image_provision(data)
|
||||
provision(data, 'image')
|
||||
provision(data)
|
||||
end
|
||||
|
||||
def native_provision(data)
|
||||
provision(data, 'native')
|
||||
end
|
||||
|
||||
def provision(data, provision_method)
|
||||
|
||||
def provision(data)
|
||||
Astute.logger.debug("'provision' method called with data:\n"\
|
||||
"#{data.pretty_inspect}")
|
||||
|
||||
|
@ -51,8 +46,7 @@ module Astute
|
|||
result = @orchestrator.provision(
|
||||
reporter,
|
||||
data['args']['task_uuid'],
|
||||
data['args']['provisioning_info'],
|
||||
provision_method
|
||||
data['args']['provisioning_info']
|
||||
)
|
||||
rescue => e
|
||||
Astute.logger.error("Error running provisioning: #{e.message}, "\
|
||||
|
@ -62,27 +56,6 @@ module Astute
|
|||
raise StopIteration if result && result['status'] == 'error'
|
||||
end
|
||||
|
||||
def deploy(data)
|
||||
Astute.logger.debug("'deploy' method called with data:\n"\
|
||||
"#{data.pretty_inspect}")
|
||||
|
||||
reporter = create_reporter(data)
|
||||
begin
|
||||
@orchestrator.deploy(
|
||||
reporter,
|
||||
data['args']['task_uuid'],
|
||||
data['args']['deployment_info'],
|
||||
data['args']['pre_deployment'] || [],
|
||||
data['args']['post_deployment'] || []
|
||||
)
|
||||
reporter.report('status' => 'ready', 'progress' => 100)
|
||||
rescue Timeout::Error
|
||||
msg = "Timeout of deployment is exceeded."
|
||||
Astute.logger.error(msg)
|
||||
reporter.report('status' => 'error', 'error' => msg)
|
||||
end
|
||||
end
|
||||
|
||||
def granular_deploy(data)
|
||||
Astute.logger.debug("'granular_deploy' method called with data:\n"\
|
||||
"#{data.pretty_inspect}")
|
||||
|
|
|
@ -684,7 +684,7 @@ describe Astute::NailgunHooks do
|
|||
|
||||
expect {
|
||||
hooks.process
|
||||
}.not_to raise_error(Astute::DeploymentEngineError)
|
||||
}.not_to raise_error
|
||||
end
|
||||
|
||||
it 'should fail if it still raise error after retries' do
|
||||
|
|
|
@ -1,260 +0,0 @@
|
|||
# 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 File.join(File.dirname(__FILE__), '../spec_helper')
|
||||
|
||||
describe "NailyFact DeploymentEngine" do
|
||||
include SpecHelpers
|
||||
|
||||
context "When deploy is called, " do
|
||||
let(:ctx) do
|
||||
ctx = mock
|
||||
ctx.stubs(:task_id)
|
||||
ctx.stubs(:deploy_log_parser).returns(Astute::LogParser::NoParsing.new)
|
||||
ctx.stubs(:status).returns({})
|
||||
reporter = mock
|
||||
reporter.stubs(:report)
|
||||
up_reporter = Astute::ProxyReporter::DeploymentProxyReporter.new(reporter, deploy_data)
|
||||
ctx.stubs(:reporter).returns(up_reporter)
|
||||
ctx
|
||||
end
|
||||
|
||||
let(:deploy_engine) do
|
||||
Astute::DeploymentEngine::NailyFact.new(ctx)
|
||||
end
|
||||
|
||||
let(:controller_nodes) do
|
||||
nodes_with_role(deploy_data, 'controller')
|
||||
end
|
||||
|
||||
let(:compute_nodes) do
|
||||
nodes_with_role(deploy_data, 'compute')
|
||||
end
|
||||
|
||||
let(:cinder_nodes) do
|
||||
nodes_with_role(deploy_data, 'cinder')
|
||||
end
|
||||
|
||||
before(:each) do
|
||||
uniq_nodes_uid = deploy_data.map {|n| n['uid'] }.uniq
|
||||
Astute::PreDeploymentActions.any_instance.stubs(:process).returns(nil)
|
||||
Astute::PostDeploymentActions.any_instance.stubs(:process).returns(nil)
|
||||
Astute::PreDeployActions.any_instance.stubs(:process).returns(nil)
|
||||
Astute::PreNodeActions.any_instance.stubs(:process).returns(nil)
|
||||
Astute::PreDeployActions.any_instance.stubs(:process).returns(nil)
|
||||
end
|
||||
|
||||
context 'log parsing' do
|
||||
let(:deploy_data) do
|
||||
[{
|
||||
'uid' => 1,
|
||||
'role' => 'controller',
|
||||
'deployment_mode' => 'unknown',
|
||||
'deployment_id' => '123',
|
||||
'puppet_debug' => true
|
||||
}]
|
||||
end
|
||||
|
||||
it "it should not raise an exception if deployment mode is unknown" do
|
||||
Astute::PuppetdDeployer.stubs(:deploy).with(
|
||||
ctx,
|
||||
deploy_data,
|
||||
instance_of(Fixnum),
|
||||
nil,
|
||||
nil,
|
||||
nil,
|
||||
true
|
||||
).once
|
||||
|
||||
deploy_engine.stubs(:remove_failed_nodes).returns([deploy_data, [], []])
|
||||
|
||||
expect {deploy_engine.deploy(deploy_data)}.to_not raise_exception
|
||||
end
|
||||
end
|
||||
|
||||
context 'multinode deploy ' do
|
||||
let(:deploy_data) do
|
||||
Fixtures.multi_deploy
|
||||
end
|
||||
|
||||
it "should not raise any exception" do
|
||||
# we got two calls, one for controller (high priority), and another for all computes (same low priority)
|
||||
Astute::PuppetdDeployer.expects(:deploy).with(
|
||||
ctx,
|
||||
controller_nodes,
|
||||
instance_of(Fixnum),
|
||||
nil,
|
||||
nil,
|
||||
nil,
|
||||
true
|
||||
).once
|
||||
Astute::PuppetdDeployer.expects(:deploy).with(
|
||||
ctx,
|
||||
compute_nodes,
|
||||
instance_of(Fixnum),
|
||||
nil,
|
||||
nil,
|
||||
nil,
|
||||
true
|
||||
).once
|
||||
|
||||
deploy_engine.stubs(:remove_failed_nodes).returns([deploy_data, [], []])
|
||||
|
||||
expect {deploy_engine.deploy(deploy_data)}.to_not raise_exception
|
||||
end
|
||||
end
|
||||
|
||||
context 'multiroles support' do
|
||||
let(:deploy_data) do
|
||||
data = Fixtures.multi_deploy
|
||||
compute_node = deep_copy(data.last)
|
||||
cinder_node = deep_copy(data.last)
|
||||
cinder_node['role'] = 'cinder'
|
||||
[compute_node, cinder_node]
|
||||
end
|
||||
|
||||
let(:node_amount) { deploy_data.size }
|
||||
|
||||
it "should prepare log parsing for every deploy call because node may be deployed several times" do
|
||||
ctx.deploy_log_parser.expects(:prepare).with(compute_nodes).once
|
||||
ctx.deploy_log_parser.expects(:prepare).with(cinder_nodes).once
|
||||
|
||||
deploy_engine.stubs(:remove_failed_nodes).returns([deploy_data, [], []])
|
||||
|
||||
Astute::PuppetdDeployer.expects(:deploy).times(2)
|
||||
|
||||
deploy_engine.deploy(deploy_data)
|
||||
end
|
||||
|
||||
it "should generate and publish facts for every deploy call because node may be deployed several times" do
|
||||
ctx.deploy_log_parser.expects(:prepare).with(compute_nodes).once
|
||||
ctx.deploy_log_parser.expects(:prepare).with(cinder_nodes).once
|
||||
|
||||
deploy_engine.stubs(:remove_failed_nodes).returns([deploy_data, [], []])
|
||||
|
||||
Astute::PuppetdDeployer.expects(:deploy).times(2)
|
||||
|
||||
deploy_engine.deploy(deploy_data)
|
||||
end
|
||||
end
|
||||
|
||||
context 'ha deploy' do
|
||||
let(:deploy_data) do
|
||||
Fixtures.ha_deploy
|
||||
end
|
||||
|
||||
it "ha deploy should not raise any exception" do
|
||||
primary_controller = deploy_data.find { |n| n['role'] == 'primary-controller' }
|
||||
Astute::PuppetdDeployer.expects(:deploy).with(
|
||||
ctx,
|
||||
[primary_controller],
|
||||
1,
|
||||
nil,
|
||||
nil,
|
||||
nil,
|
||||
true
|
||||
).once
|
||||
|
||||
controller_nodes.each do |n|
|
||||
Astute::PuppetdDeployer.expects(:deploy).with(
|
||||
ctx,
|
||||
[n],
|
||||
1,
|
||||
nil,
|
||||
nil,
|
||||
nil,
|
||||
true
|
||||
).once
|
||||
end
|
||||
Astute::PuppetdDeployer.expects(:deploy).with(
|
||||
ctx,
|
||||
compute_nodes,
|
||||
instance_of(Fixnum),
|
||||
nil,
|
||||
nil,
|
||||
nil,
|
||||
true
|
||||
).once
|
||||
|
||||
deploy_engine.stubs(:remove_failed_nodes).returns([deploy_data, [], []])
|
||||
|
||||
deploy_engine.deploy(deploy_data)
|
||||
end
|
||||
|
||||
context 'exception case' do
|
||||
let(:deploy_data) do
|
||||
[Fixtures.ha_deploy.find { |n| n['role'] == 'controller' }]
|
||||
end
|
||||
|
||||
it "ha deploy should not raise any exception if there are only one controller" do
|
||||
Astute::PuppetdDeployer.expects(:deploy).once
|
||||
|
||||
deploy_engine.stubs(:remove_failed_nodes).returns([deploy_data, [], []])
|
||||
|
||||
deploy_engine.deploy(deploy_data)
|
||||
end
|
||||
end
|
||||
end # 'ha deploy'
|
||||
|
||||
context 'puppet debug' do
|
||||
|
||||
let(:deploy_data) do
|
||||
[{
|
||||
'uid' => 1,
|
||||
'role' => 'controller',
|
||||
'deployment_mode' => 'unknown',
|
||||
'deployment_id' => '123',
|
||||
'puppet_debug' => true
|
||||
}]
|
||||
end
|
||||
|
||||
it 'should run puppet with puppet debug settings' do
|
||||
deploy_data.first['puppet_debug'] = false
|
||||
Astute::PuppetdDeployer.expects(:deploy).with(
|
||||
ctx,
|
||||
deploy_data,
|
||||
instance_of(Fixnum),
|
||||
nil,
|
||||
nil,
|
||||
nil,
|
||||
false
|
||||
).once
|
||||
|
||||
deploy_engine.stubs(:remove_failed_nodes).returns([deploy_data, [], []])
|
||||
|
||||
deploy_engine.deploy(deploy_data)
|
||||
end
|
||||
|
||||
it 'should run puppet with default puppet debug settings if missing' do
|
||||
deploy_data.first.delete('puppet_debug')
|
||||
Astute::PuppetdDeployer.expects(:deploy).with(
|
||||
ctx,
|
||||
deploy_data,
|
||||
instance_of(Fixnum),
|
||||
nil,
|
||||
nil,
|
||||
nil,
|
||||
true
|
||||
).once
|
||||
|
||||
deploy_engine.stubs(:remove_failed_nodes).returns([deploy_data, [], []])
|
||||
|
||||
deploy_engine.deploy(deploy_data)
|
||||
end
|
||||
|
||||
end # puppet debug
|
||||
|
||||
end
|
||||
end
|
|
@ -133,29 +133,6 @@ describe Astute::Orchestrator do
|
|||
end
|
||||
end
|
||||
|
||||
describe '#deploy' do
|
||||
it "calls with valid arguments without nailgun hooks" do
|
||||
nodes = [{'uid' => 1, 'role' => 'controller'}]
|
||||
Astute::DeploymentEngine::NailyFact.any_instance.expects(:deploy).
|
||||
with(nodes, [], [])
|
||||
@orchestrator.deploy(@reporter, 'task_uuid', nodes)
|
||||
end
|
||||
|
||||
it "calls with valid arguments including nailgun hooks" do
|
||||
nodes = [{'uid' => 1, 'role' => 'controller'}]
|
||||
pre_deployment = [{'type' => 'upload_file', 'uids' =>['1', '2', '3' ]}]
|
||||
post_deployment = [{'type' => 'sync', 'uids' =>['3', '2', '1' ]}]
|
||||
Astute::DeploymentEngine::NailyFact.any_instance.expects(:deploy).
|
||||
with(nodes, pre_deployment, post_deployment)
|
||||
@orchestrator.deploy(@reporter, 'task_uuid', nodes, pre_deployment, post_deployment)
|
||||
end
|
||||
|
||||
it "deploy method raises error if nodes list is empty" do
|
||||
expect {@orchestrator.deploy(@reporter, 'task_uuid', [])}.
|
||||
to raise_error(/Deployment info are not provided!/)
|
||||
end
|
||||
end
|
||||
|
||||
let(:data) do
|
||||
{
|
||||
"engine"=>{
|
||||
|
@ -422,15 +399,14 @@ describe Astute::Orchestrator do
|
|||
Astute::Provisioner.any_instance.expects(:provision).with(
|
||||
instance_of(Astute::ProxyReporter::ProvisiningProxyReporter),
|
||||
'task_id',
|
||||
provisioning_info,
|
||||
'image'
|
||||
provisioning_info
|
||||
)
|
||||
|
||||
@orchestrator.provision(
|
||||
@reporter,
|
||||
'task_id',
|
||||
provisioning_info,
|
||||
'image')
|
||||
provisioning_info
|
||||
)
|
||||
end
|
||||
|
||||
it 'should pre provision if pre provision tasks present' do
|
||||
|
@ -445,7 +421,7 @@ describe Astute::Orchestrator do
|
|||
@reporter,
|
||||
'task_id',
|
||||
provisioning_info,
|
||||
'image')
|
||||
)
|
||||
end
|
||||
|
||||
it 'should not pre provision if no pre provision tasks present' do
|
||||
|
@ -461,7 +437,7 @@ describe Astute::Orchestrator do
|
|||
@reporter,
|
||||
'task_id',
|
||||
provisioning_info,
|
||||
'image')
|
||||
)
|
||||
end
|
||||
|
||||
it 'should raise informative error if pre provision tasks failed' do
|
||||
|
@ -477,7 +453,7 @@ describe Astute::Orchestrator do
|
|||
@reporter,
|
||||
'task_id',
|
||||
provisioning_info,
|
||||
'image')}.to raise_error(Astute::DeploymentEngineError,
|
||||
)}.to raise_error(Astute::DeploymentEngineError,
|
||||
/Image build task failed/)
|
||||
end
|
||||
|
||||
|
|
|
@ -192,7 +192,7 @@ describe Astute::Provisioner do
|
|||
@provisioner.stubs(:provision_and_watch_progress).returns([[],[]])
|
||||
data['engine'] = {}
|
||||
Astute::Rsyslogd.stubs(:send_sighup).once
|
||||
expect {@provisioner.provision(@reporter, data['task_uuid'], data, 'image')}.
|
||||
expect {@provisioner.provision(@reporter, data['task_uuid'], data)}.
|
||||
to raise_error(/Settings for Cobbler must be set/)
|
||||
end
|
||||
|
||||
|
@ -200,7 +200,7 @@ describe Astute::Provisioner do
|
|||
@provisioner.stubs(:provision_and_watch_progress).returns([[],[]])
|
||||
data['engine'] = {}
|
||||
Astute::Rsyslogd.expects(:send_sighup).once
|
||||
expect {@provisioner.provision(@reporter, data['task_uuid'], data, 'image')}.
|
||||
expect {@provisioner.provision(@reporter, data['task_uuid'], data)}.
|
||||
to raise_error(/Settings for Cobbler must be set/)
|
||||
end
|
||||
end
|
||||
|
@ -226,14 +226,14 @@ describe Astute::Provisioner do
|
|||
it "raises error if nodes list is empty" do
|
||||
Astute::Rsyslogd.stubs(:send_sighup).once
|
||||
data['nodes'] = []
|
||||
expect {@provisioner.provision(@reporter, data['task_uuid'], data, 'image')}.
|
||||
expect {@provisioner.provision(@reporter, data['task_uuid'], data)}.
|
||||
to raise_error(/Nodes to provision are not provided!/)
|
||||
end
|
||||
|
||||
it "raises error if nodes list is empty and send sighup for Rsyslogd" do
|
||||
Astute::Rsyslogd.expects(:send_sighup).once
|
||||
data['nodes'] = []
|
||||
expect {@provisioner.provision(@reporter, data['task_uuid'], data, 'image')}.
|
||||
expect {@provisioner.provision(@reporter, data['task_uuid'], data)}.
|
||||
to raise_error(/Nodes to provision are not provided!/)
|
||||
end
|
||||
|
||||
|
@ -249,7 +249,7 @@ describe Astute::Provisioner do
|
|||
Astute::CobblerManager.any_instance.expects(:check_reboot_nodes).never
|
||||
@provisioner.expects(:soft_reboot).returns()
|
||||
|
||||
@provisioner.provision_piece(@reporter, data['task_uuid'], data['engine'], data['nodes'], 'image')
|
||||
@provisioner.provision_piece(@reporter, data['task_uuid'], data['engine'], data['nodes'])
|
||||
end
|
||||
|
||||
it "does not reboot nodes which failed during provisioning" do
|
||||
|
@ -259,7 +259,7 @@ describe Astute::Provisioner do
|
|||
@provisioner.stubs(:image_provision).returns(['1'])
|
||||
@provisioner.stubs(:soft_reboot).returns()
|
||||
|
||||
expect(@provisioner.provision_piece(@reporter, data['task_uuid'], data['engine'], data['nodes'], 'image')).to eql(['1'])
|
||||
expect(@provisioner.provision_piece(@reporter, data['task_uuid'], data['engine'], data['nodes'])).to eql(['1'])
|
||||
end
|
||||
|
||||
it "changes profile into bootstrap for all nodes in case of IBP" do
|
||||
|
@ -275,7 +275,7 @@ describe Astute::Provisioner do
|
|||
@provisioner.stubs(:image_provision).returns([])
|
||||
@provisioner.stubs(:soft_reboot).returns()
|
||||
|
||||
@provisioner.provision_piece(@reporter, data['task_uuid'], data['engine'], data['nodes'], 'image')
|
||||
@provisioner.provision_piece(@reporter, data['task_uuid'], data['engine'], data['nodes'])
|
||||
end
|
||||
|
||||
it "does not change netboot setting for failed nodes in case of IBP" do
|
||||
|
@ -288,7 +288,7 @@ describe Astute::Provisioner do
|
|||
@provisioner.stubs(:soft_reboot).returns()
|
||||
@provisioner.stubs(:image_provision).returns([1])
|
||||
|
||||
@provisioner.provision_piece(@reporter, data['task_uuid'], data['engine'], data['nodes'], 'image')
|
||||
@provisioner.provision_piece(@reporter, data['task_uuid'], data['engine'], data['nodes'])
|
||||
|
||||
end
|
||||
|
||||
|
@ -304,7 +304,7 @@ describe Astute::Provisioner do
|
|||
@provisioner.stubs(:soft_reboot).returns()
|
||||
@provisioner.stubs(:image_provision).returns([])
|
||||
|
||||
@provisioner.provision_piece(@reporter, data['task_uuid'], data['engine'], data['nodes'], 'image')
|
||||
@provisioner.provision_piece(@reporter, data['task_uuid'], data['engine'], data['nodes'])
|
||||
end
|
||||
|
||||
it "should erase mbr for nodes" do
|
||||
|
@ -329,31 +329,14 @@ describe Astute::Provisioner do
|
|||
}
|
||||
).returns([])
|
||||
|
||||
@provisioner.provision(@reporter, data['task_uuid'], data, 'image')
|
||||
@provisioner.provision(@reporter, data['task_uuid'], data)
|
||||
end
|
||||
|
||||
it 'should not try to unlock node discovery' do
|
||||
@provisioner.stubs(:prepare_nodes)
|
||||
@provisioner.stubs(:provision_and_watch_progress).returns([[], []])
|
||||
@provisioner.expects(:unlock_nodes_discovery).never
|
||||
@provisioner.provision(@reporter, data['task_uuid'], data, 'image')
|
||||
end
|
||||
end
|
||||
|
||||
context 'node reboot fail' do
|
||||
before(:each) do
|
||||
Astute::Provision::Cobbler.any_instance
|
||||
.stubs(:event_status)
|
||||
.returns([Time.now.to_f, 'controller-1', 'failed'])
|
||||
@provisioner.stubs(:unlock_nodes_discovery)
|
||||
end
|
||||
|
||||
it 'should not try to reboot nodes using ssh(insurance for cobbler)' do
|
||||
@provisioner.expects(:control_reboot_using_ssh).never
|
||||
begin
|
||||
@provisioner.provision_piece(@reporter, data['task_uuid'], data['engine'], data['nodes'])
|
||||
rescue
|
||||
end
|
||||
@provisioner.provision(@reporter, data['task_uuid'], data)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -370,7 +353,7 @@ describe Astute::Provisioner do
|
|||
'progress' => 100}]}
|
||||
|
||||
@reporter.expects(:report).with(success_msg).once
|
||||
@provisioner.provision(@reporter, data['task_uuid'], data, 'image')
|
||||
@provisioner.provision(@reporter, data['task_uuid'], data)
|
||||
end
|
||||
|
||||
it "fail if timeout of provisioning is exceeded" do
|
||||
|
@ -394,7 +377,7 @@ describe Astute::Provisioner do
|
|||
provision_info["fault_tolerance"] = [{'uids'=>['1'], 'percentage' => 0}]
|
||||
|
||||
@reporter.expects(:report).with(error_msg).once
|
||||
@provisioner.provision(@reporter, data['task_uuid'], provision_info, 'image')
|
||||
@provisioner.provision(@reporter, data['task_uuid'], provision_info)
|
||||
end
|
||||
|
||||
it 'success report if all nodes report about success at least once' do
|
||||
|
@ -410,7 +393,7 @@ describe Astute::Provisioner do
|
|||
'progress' => 100
|
||||
}
|
||||
@reporter.expects(:report).with(success_msg).once
|
||||
@provisioner.provision(@reporter, data['task_uuid'], data, 'image')
|
||||
@provisioner.provision(@reporter, data['task_uuid'], data)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -438,7 +421,7 @@ describe Astute::Provisioner do
|
|||
)
|
||||
@provisioner.stubs(:provision_and_watch_progress).returns([[], []])
|
||||
|
||||
@provisioner.provision(@reporter, data['task_uuid'], data, 'image')
|
||||
@provisioner.provision(@reporter, data['task_uuid'], data)
|
||||
end
|
||||
|
||||
it 'should not reboot and boostrap new nodes' do
|
||||
|
@ -459,7 +442,7 @@ describe Astute::Provisioner do
|
|||
@provisioner.expects(:change_nodes_type).never
|
||||
Astute::NailgunHooks.any_instance.expects(:process).never
|
||||
|
||||
@provisioner.provision(@reporter, data['task_uuid'], data, 'image')
|
||||
@provisioner.provision(@reporter, data['task_uuid'], data)
|
||||
end
|
||||
|
||||
end
|
||||
|
@ -475,7 +458,7 @@ describe Astute::Provisioner do
|
|||
end
|
||||
|
||||
it "raises error if nodes list is empty" do
|
||||
expect {@provisioner.provision_and_watch_progress(@reporter, data['task_uuid'], {}, data['engine'], 'image', [])}.
|
||||
expect {@provisioner.provision_and_watch_progress(@reporter, data['task_uuid'], {}, data['engine'], [])}.
|
||||
to raise_error(/Nodes to provision are not provided!/)
|
||||
end
|
||||
|
||||
|
@ -488,7 +471,7 @@ describe Astute::Provisioner do
|
|||
'error' => '',
|
||||
'progress' => 100,
|
||||
}
|
||||
@provisioner.provision_and_watch_progress(@reporter, data['task_uuid'], data['nodes'], data['engine'], 'image', [])
|
||||
@provisioner.provision_and_watch_progress(@reporter, data['task_uuid'], data['nodes'], data['engine'], [])
|
||||
@reporter.expects(:report).with(error_msg).once
|
||||
end.to raise_error(Astute::AstuteError)
|
||||
end
|
||||
|
@ -507,7 +490,7 @@ describe Astute::Provisioner do
|
|||
)
|
||||
Astute::Rsyslogd.stubs(:send_sighup)
|
||||
begin
|
||||
@provisioner.provision(@reporter, data['task_uuid'], data, 'image')
|
||||
@provisioner.provision(@reporter, data['task_uuid'], data)
|
||||
rescue
|
||||
end
|
||||
end
|
||||
|
@ -520,7 +503,7 @@ describe Astute::Provisioner do
|
|||
@provisioner.stubs(:report_about_progress).returns()
|
||||
@provisioner.stubs(:node_type).returns([{'uid' => '1', 'node_type' => 'target' }])
|
||||
|
||||
@provisioner.provision_and_watch_progress(@reporter, data['task_uuid'], data['nodes'], data['engine'], 'image', [])
|
||||
@provisioner.provision_and_watch_progress(@reporter, data['task_uuid'], data['nodes'], data['engine'], [])
|
||||
end
|
||||
|
||||
it "ignore problem with parsing provision log" do
|
||||
|
@ -532,7 +515,7 @@ describe Astute::Provisioner do
|
|||
@provisioner.stubs(:provision_piece).returns([])
|
||||
@provisioner.stubs(:node_type).returns([{'uid' => '1', 'node_type' => 'target' }])
|
||||
|
||||
@provisioner.provision_and_watch_progress(@reporter, data['task_uuid'], data['nodes'], data['engine'], 'image', [])
|
||||
@provisioner.provision_and_watch_progress(@reporter, data['task_uuid'], data['nodes'], data['engine'], [])
|
||||
end
|
||||
|
||||
it 'provision nodes using mclient' do
|
||||
|
@ -540,7 +523,7 @@ describe Astute::Provisioner do
|
|||
@provisioner.stubs(:provision_piece).returns([])
|
||||
@provisioner.expects(:node_type).returns([{'uid' => '1', 'node_type' => 'target' }])
|
||||
|
||||
@provisioner.provision_and_watch_progress(@reporter, data['task_uuid'], data['nodes'], data['engine'], 'image', [])
|
||||
@provisioner.provision_and_watch_progress(@reporter, data['task_uuid'], data['nodes'], data['engine'], [])
|
||||
end
|
||||
|
||||
it "unexpecting bootstrap nodes should be ereased and rebooted" do
|
||||
|
@ -581,7 +564,7 @@ describe Astute::Provisioner do
|
|||
'fault_tolerance' => []}
|
||||
|
||||
@reporter.expects(:report).with(success_msg).once
|
||||
@provisioner.provision(@reporter, data['task_uuid'], provision_info, 'image')
|
||||
@provisioner.provision(@reporter, data['task_uuid'], provision_info)
|
||||
end
|
||||
|
||||
it 'should provision nodes in chunks' do
|
||||
|
@ -598,7 +581,7 @@ describe Astute::Provisioner do
|
|||
.then.returns([{'uid' => '3', 'node_type' => 'target' }])
|
||||
|
||||
@provisioner.expects(:provision_piece).returns([]).twice
|
||||
@provisioner.provision_and_watch_progress(@reporter, data['task_uuid'], nodes, data['engine'], 'image', [])
|
||||
@provisioner.provision_and_watch_progress(@reporter, data['task_uuid'], nodes, data['engine'], [])
|
||||
end
|
||||
|
||||
it 'should success if only one node fails' do
|
||||
|
@ -644,7 +627,7 @@ describe Astute::Provisioner do
|
|||
'fault_tolerance' => [{'uids'=> ['2', '3'], 'percentage' => 50}]}
|
||||
|
||||
@reporter.expects(:report).with(success_msg).once
|
||||
@provisioner.provision(@reporter, data['task_uuid'], provision_info, 'image')
|
||||
@provisioner.provision(@reporter, data['task_uuid'], provision_info)
|
||||
end
|
||||
|
||||
it 'should fail if node without fault tolerance rule fails' do
|
||||
|
@ -691,7 +674,7 @@ describe Astute::Provisioner do
|
|||
'fault_tolerance' => [{'uids'=> ['1', '2'], 'percentage' => 50}]}
|
||||
|
||||
@reporter.expects(:report).with(success_msg).once
|
||||
@provisioner.provision(@reporter, data['task_uuid'], provision_info, 'image')
|
||||
@provisioner.provision(@reporter, data['task_uuid'], provision_info)
|
||||
end
|
||||
|
||||
it 'should fail if node has two roles and fails for one' do
|
||||
|
@ -739,7 +722,7 @@ describe Astute::Provisioner do
|
|||
{'uids'=> ['3'], 'percentage' => 0}]}
|
||||
|
||||
@reporter.expects(:report).with(success_msg).once
|
||||
@provisioner.provision(@reporter, data['task_uuid'], provision_info, 'image')
|
||||
@provisioner.provision(@reporter, data['task_uuid'], provision_info)
|
||||
end
|
||||
|
||||
it 'should fail if one node fails' do
|
||||
|
@ -786,7 +769,7 @@ describe Astute::Provisioner do
|
|||
'fault_tolerance' => [{'uids'=> ['2', '3'], 'percentage' => 0}]}
|
||||
|
||||
@reporter.expects(:report).with(success_msg).once
|
||||
@provisioner.provision(@reporter, data['task_uuid'], provision_info, 'image')
|
||||
@provisioner.provision(@reporter, data['task_uuid'], provision_info)
|
||||
end
|
||||
|
||||
it 'fail on any node if no faul_tolerance rules are provided' do
|
||||
|
@ -833,7 +816,7 @@ describe Astute::Provisioner do
|
|||
'fault_tolerance' => []}
|
||||
|
||||
@reporter.expects(:report).with(success_msg).once
|
||||
@provisioner.provision(@reporter, data['task_uuid'], provision_info, 'image')
|
||||
@provisioner.provision(@reporter, data['task_uuid'], provision_info)
|
||||
|
||||
end
|
||||
end
|
||||
|
@ -971,7 +954,7 @@ describe Astute::Provisioner do
|
|||
@provisioner.stubs(:change_nodes_type)
|
||||
@provisioner.stubs(:control_reboot_using_ssh)
|
||||
Astute::ImageProvision.stubs(:provision).returns(['1'])
|
||||
result = @provisioner.provision_piece(@reporter, 'task_uuid', engine_attrs, nodes, 'image')
|
||||
result = @provisioner.provision_piece(@reporter, 'task_uuid', engine_attrs, nodes)
|
||||
result.should eql(['1'])
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue