Merge branch 'features' of http://git.stu.neva.ru/cloudtechlab/devops-service into features
This commit is contained in:
commit
15cf713815
@ -114,12 +114,14 @@ module Devops
|
|||||||
end
|
end
|
||||||
|
|
||||||
def pause_server node_name
|
def pause_server node_name
|
||||||
s = Server.get_server_by_key(node_name, parser.instance_key)
|
s = get_server_by_key(node_name, parser.instance_key)
|
||||||
## Authorization
|
## Authorization
|
||||||
Devops::Db.connector.check_project_auth s.project, s.deploy_env, parser.current_user
|
Devops::Db.connector.check_project_auth s.project, s.deploy_env, parser.current_user
|
||||||
provider = s.provider_instance
|
provider = s.provider_instance
|
||||||
r = provider.pause_server s
|
r = provider.pause_server s
|
||||||
if r.nil?
|
if r.nil?
|
||||||
|
set_last_operation_type_and_save(s, Devops::Model::Server::OperationType::PAUSE)
|
||||||
|
|
||||||
"Server with instance ID '#{s.id}' and node name '#{node_name}' is paused"
|
"Server with instance ID '#{s.id}' and node name '#{node_name}' is paused"
|
||||||
else
|
else
|
||||||
raise ConflictException.new("Server with instance ID '#{s.id}' and node name '#{node_name}' can not be paused, It in state '#{r}'", 409)
|
raise ConflictException.new("Server with instance ID '#{s.id}' and node name '#{node_name}' can not be paused, It in state '#{r}'", 409)
|
||||||
@ -127,12 +129,14 @@ module Devops
|
|||||||
end
|
end
|
||||||
|
|
||||||
def unpause_server node_name
|
def unpause_server node_name
|
||||||
s = Server.get_server_by_key(node_name, parser.instance_key)
|
s = get_server_by_key(node_name, parser.instance_key)
|
||||||
## Authorization
|
## Authorization
|
||||||
Devops::Db.connector.check_project_auth s.project, s.deploy_env, parser.current_user
|
Devops::Db.connector.check_project_auth s.project, s.deploy_env, parser.current_user
|
||||||
provider = s.provider_instance
|
provider = s.provider_instance
|
||||||
r = provider.unpause_server s
|
r = provider.unpause_server s
|
||||||
if r.nil?
|
if r.nil?
|
||||||
|
set_last_operation_type_and_save(s, Devops::Model::Server::OperationType::UNPAUSE)
|
||||||
|
|
||||||
"Server with instance ID '#{s.id}' and node name '#{node_name}' is unpaused"
|
"Server with instance ID '#{s.id}' and node name '#{node_name}' is unpaused"
|
||||||
else
|
else
|
||||||
raise ConflictException.new("Server with instance ID '#{s.id}' and node name '#{node_name}' can not be unpaused, It in state '#{r}'")
|
raise ConflictException.new("Server with instance ID '#{s.id}' and node name '#{node_name}' can not be unpaused, It in state '#{r}'")
|
||||||
@ -145,7 +149,7 @@ module Devops
|
|||||||
Devops::Db.connector.check_project_auth s.project, s.deploy_env, user
|
Devops::Db.connector.check_project_auth s.project, s.deploy_env, user
|
||||||
raise ConflictException.new("Server '#{node_name}' already reserved") unless s.reserved_by.nil?
|
raise ConflictException.new("Server '#{node_name}' already reserved") unless s.reserved_by.nil?
|
||||||
s.reserved_by = user
|
s.reserved_by = user
|
||||||
Devops::Db.connector.server_update(s)
|
set_last_operation_type_and_save(s, Devops::Model::Server::OperationType::RESERVE)
|
||||||
end
|
end
|
||||||
|
|
||||||
def unreserve_server node_name
|
def unreserve_server node_name
|
||||||
@ -153,7 +157,7 @@ module Devops
|
|||||||
Devops::Db.connector.check_project_auth s.project, s.deploy_env, parser.current_user
|
Devops::Db.connector.check_project_auth s.project, s.deploy_env, parser.current_user
|
||||||
raise ConflictException.new("Server '#{node_name}' is not reserved") if s.reserved_by.nil?
|
raise ConflictException.new("Server '#{node_name}' is not reserved") if s.reserved_by.nil?
|
||||||
s.reserved_by = nil
|
s.reserved_by = nil
|
||||||
Devops::Db.connector.server_update(s)
|
set_last_operation_type_and_save(s, Devops::Model::Server::OperationType::UNRESERVE)
|
||||||
end
|
end
|
||||||
|
|
||||||
# TODO: check bootstrap template name
|
# TODO: check bootstrap template name
|
||||||
@ -316,6 +320,11 @@ module Devops
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def set_last_operation_type_and_save(server, operation_type)
|
||||||
|
server.set_last_operation(operation_type)
|
||||||
|
Devops::Db.connector.server_update(server)
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -63,17 +63,14 @@ module Connectors
|
|||||||
end
|
end
|
||||||
|
|
||||||
def server_insert(server)
|
def server_insert(server)
|
||||||
#server.validate!
|
|
||||||
server.created_at = Time.now
|
server.created_at = Time.now
|
||||||
collection.insert(server.to_mongo_hash)
|
collection.insert(server.to_mongo_hash)
|
||||||
end
|
end
|
||||||
|
|
||||||
# somewhy servers are not validated in previous version of code. I leave this until I know, why.
|
|
||||||
def server_update(server)
|
def server_update(server)
|
||||||
collection.update({'_id' => server.id}, server.to_hash_without_id)
|
collection.update({'_id' => server.id}, server.to_hash_without_id)
|
||||||
end
|
end
|
||||||
|
|
||||||
# somewhy servers are not validated in previous version of code. I leave this until I know, why.
|
|
||||||
def server_set_chef_node_name(server)
|
def server_set_chef_node_name(server)
|
||||||
collection.update({'_id' => server.id}, {'$set' => {'chef_node_name' => server.chef_node_name}})
|
collection.update({'_id' => server.id}, {'$set' => {'chef_node_name' => server.chef_node_name}})
|
||||||
end
|
end
|
||||||
|
|||||||
@ -9,8 +9,17 @@ module Devops
|
|||||||
|
|
||||||
include ModelWithProvider
|
include ModelWithProvider
|
||||||
|
|
||||||
|
module OperationType
|
||||||
|
CREATION = :creation
|
||||||
|
DEPLOY = :deploy
|
||||||
|
RESERVE = :reserve
|
||||||
|
UNRESERVE = :unreserve
|
||||||
|
PAUSE = :pause
|
||||||
|
UNPAUSE = :unpause
|
||||||
|
end
|
||||||
|
|
||||||
attr_accessor :chef_node_name, :id, :remote_user, :project, :deploy_env, :private_ip, :public_ip, :created_at, :without_bootstrap, :created_by, :reserved_by, :stack, :run_list
|
attr_accessor :chef_node_name, :id, :remote_user, :project, :deploy_env, :private_ip, :public_ip, :created_at, :without_bootstrap, :created_by, :reserved_by, :stack, :run_list
|
||||||
attr_accessor :key
|
attr_accessor :key, :last_operation_at, :last_operation_type
|
||||||
|
|
||||||
types :id => {:type => String, :empty => false},
|
types :id => {:type => String, :empty => false},
|
||||||
:provider => {:type => String, :empty => false},
|
:provider => {:type => String, :empty => false},
|
||||||
@ -29,7 +38,8 @@ module Devops
|
|||||||
set_validators ::Validators::DeployEnv::RunList
|
set_validators ::Validators::DeployEnv::RunList
|
||||||
|
|
||||||
def self.fields
|
def self.fields
|
||||||
["chef_node_name", "project", "deploy_env", "provider", "remote_user", "private_ip", "public_ip", "created_at", "created_by", "key", "reserved_by", "run_list", "stack"]
|
["chef_node_name", "project", "deploy_env", "provider", "remote_user", "private_ip", "public_ip", "created_at", "created_by", "key", "reserved_by", "run_list", "stack",
|
||||||
|
"last_operation_type", "last_operation_at"]
|
||||||
end
|
end
|
||||||
|
|
||||||
def initialize s={}
|
def initialize s={}
|
||||||
@ -47,6 +57,8 @@ module Devops
|
|||||||
self.reserved_by = s["reserved_by"]
|
self.reserved_by = s["reserved_by"]
|
||||||
self.stack = s["stack"]
|
self.stack = s["stack"]
|
||||||
self.run_list = s["run_list"] || []
|
self.run_list = s["run_list"] || []
|
||||||
|
self.last_operation_at = s["last_operation_at"]
|
||||||
|
self.last_operation_type = s["last_operation_type"]
|
||||||
self
|
self
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -77,7 +89,9 @@ module Devops
|
|||||||
"key" => self.key,
|
"key" => self.key,
|
||||||
"reserved_by" => self.reserved_by,
|
"reserved_by" => self.reserved_by,
|
||||||
"stack" => stack,
|
"stack" => stack,
|
||||||
"run_list" => self.run_list
|
"run_list" => self.run_list,
|
||||||
|
"last_operation_at" => self.last_operation_at,
|
||||||
|
"last_operation_type" => self.last_operation_type
|
||||||
}.merge(provider_hash).delete_if { |k,v| v.nil? }
|
}.merge(provider_hash).delete_if { |k,v| v.nil? }
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -100,6 +114,11 @@ module Devops
|
|||||||
self.provider == Provider::Static::PROVIDER
|
self.provider == Provider::Static::PROVIDER
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def set_last_operation(operation_type)
|
||||||
|
self.last_operation_type = operation_type
|
||||||
|
self.last_operation_at = Time.now
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -15,5 +15,5 @@ require "db/validators/base"
|
|||||||
'db/validators/image/*.rb',
|
'db/validators/image/*.rb',
|
||||||
'db/validators/field_validators/*.rb'
|
'db/validators/field_validators/*.rb'
|
||||||
].each do |files_regexp|
|
].each do |files_regexp|
|
||||||
Dir[files_regexp].each {|file| require file }
|
Dir[File.join(Devops::Application.root, files_regexp)].each {|file| require file }
|
||||||
end
|
end
|
||||||
|
|||||||
@ -76,6 +76,7 @@ module Devops
|
|||||||
|
|
||||||
def create_server options
|
def create_server options
|
||||||
@server = Devops::Model::Server.new({"project" => @project.id, "deploy_env" => @deploy_env.identifier, "created_by" => options["created_by"], "provider" => @deploy_env.provider, "provider_account" => @deploy_env.provider_account})
|
@server = Devops::Model::Server.new({"project" => @project.id, "deploy_env" => @deploy_env.identifier, "created_by" => options["created_by"], "provider" => @deploy_env.provider, "provider_account" => @deploy_env.provider_account})
|
||||||
|
@server.set_last_operation(Devops::Model::Server::OperationType::CREATION)
|
||||||
provider = @deploy_env.provider_instance
|
provider = @deploy_env.provider_instance
|
||||||
mongo = ::Devops::Db.connector
|
mongo = ::Devops::Db.connector
|
||||||
begin
|
begin
|
||||||
@ -392,6 +393,10 @@ module Devops
|
|||||||
@out << "\nAfter deploy hooks...\n"
|
@out << "\nAfter deploy hooks...\n"
|
||||||
res = self.run_hook(:after_deploy, @out, deploy_info)
|
res = self.run_hook(:after_deploy, @out, deploy_info)
|
||||||
@out << "Done\n"
|
@out << "Done\n"
|
||||||
|
|
||||||
|
@server.set_last_operation(Devops::Model::Server::OperationType::DEPLOY)
|
||||||
|
Devops::Db.connector.server_update(@server)
|
||||||
|
|
||||||
0
|
0
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user