Merge branch 'cid-394-deploy_delete_list_of_servers' into features
This commit is contained in:
commit
1b2ac2d4b8
@ -49,7 +49,7 @@ module DevopsClient
|
|||||||
if result.is_a?(Hash)
|
if result.is_a?(Hash)
|
||||||
puts result["message"]
|
puts result["message"]
|
||||||
else
|
else
|
||||||
puts result
|
puts result if result
|
||||||
end
|
end
|
||||||
rescue OptionParser::InvalidOption => e
|
rescue OptionParser::InvalidOption => e
|
||||||
puts e.message
|
puts e.message
|
||||||
|
|||||||
@ -20,6 +20,7 @@ class DeployEnvEc2 < DeployEnv
|
|||||||
set_image(o)
|
set_image(o)
|
||||||
vpc_id = set_subnets(o)
|
vpc_id = set_subnets(o)
|
||||||
set_groups(o, vpc_id)
|
set_groups(o, vpc_id)
|
||||||
|
set_chef_env(o)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -48,4 +49,10 @@ class DeployEnvEc2 < DeployEnv
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def set_chef_env(d)
|
||||||
|
set_parameter d, :chef_env do
|
||||||
|
enter_parameter('Chef environment: ')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
@ -25,6 +25,8 @@ class Server < Handler
|
|||||||
create_handler
|
create_handler
|
||||||
when :delete
|
when :delete
|
||||||
delete_handler
|
delete_handler
|
||||||
|
when :delete_list
|
||||||
|
delete_list_handler
|
||||||
when :bootstrap
|
when :bootstrap
|
||||||
bootstrap_handler
|
bootstrap_handler
|
||||||
when :sync
|
when :sync
|
||||||
@ -94,6 +96,18 @@ class Server < Handler
|
|||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def delete_list_handler
|
||||||
|
abort "Please specify at least one server id" if @args.length < 3
|
||||||
|
server_ids = @args[2..-1]
|
||||||
|
if question(I18n.t("handler.server.question.delete_list", ids: server_ids.join(', ')))
|
||||||
|
servers_jobs = post("/server/delete_list", {servers_ids: server_ids})
|
||||||
|
servers_jobs.each do |server_id, job_id|
|
||||||
|
puts "Report for deleting #{server_id}: #{report_url(job_id)}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
nil
|
||||||
|
end
|
||||||
|
|
||||||
def show_handler
|
def show_handler
|
||||||
r = inspect_parameters @options_parser.show_params, @args[2]
|
r = inspect_parameters @options_parser.show_params, @args[2]
|
||||||
unless r.nil?
|
unless r.nil?
|
||||||
|
|||||||
@ -2,7 +2,7 @@ require "devops-client/options/common_options"
|
|||||||
|
|
||||||
class ServerOptions < CommonOptions
|
class ServerOptions < CommonOptions
|
||||||
|
|
||||||
commands :add, :bootstrap, :create, :delete, :list, :pause, :reserve, :show, :unpause, :unreserve # :sync,
|
commands :add, :bootstrap, :create, :delete, :list, :pause, :reserve, :show, :unpause, :unreserve, :delete_list
|
||||||
|
|
||||||
def initialize args, def_options
|
def initialize args, def_options
|
||||||
super(args, def_options)
|
super(args, def_options)
|
||||||
@ -161,4 +161,8 @@ class ServerOptions < CommonOptions
|
|||||||
self.banner_header + " delete NODE_NAME [NODE_NAME ...]\n"
|
self.banner_header + " delete NODE_NAME [NODE_NAME ...]\n"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def delete_list_banner
|
||||||
|
self.banner_header + " delete_list INSTANCE_ID [INSTANCE_ID ...]\n"
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
@ -103,6 +103,7 @@ en:
|
|||||||
server:
|
server:
|
||||||
question:
|
question:
|
||||||
delete: "Are you sure to delete server '%{name}'?"
|
delete: "Are you sure to delete server '%{name}'?"
|
||||||
|
delete_list: "Are you sure to delete these servers: %{ids}?"
|
||||||
stack_template:
|
stack_template:
|
||||||
create:
|
create:
|
||||||
id: "Id: "
|
id: "Id: "
|
||||||
|
|||||||
@ -55,6 +55,17 @@ module Devops
|
|||||||
[jid]
|
[jid]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def delete_list
|
||||||
|
server_ids = parser.delete_list.uniq
|
||||||
|
servers = server_ids.map { |id| Devops::Db.connector.server_by_instance_id(id) }
|
||||||
|
current_user = parser.current_user
|
||||||
|
check_servers_list_auth(servers, current_user)
|
||||||
|
server_ids.inject({}) do |hash, server_id|
|
||||||
|
hash[server_id] = Worker.start_async(DeleteServerWorker, 'server_id' => server_id, 'current_user' => current_user)
|
||||||
|
hash
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def create_server_stream out
|
def create_server_stream out
|
||||||
status = []
|
status = []
|
||||||
prepare_create_server do |project, env, user, body|
|
prepare_create_server do |project, env, user, body|
|
||||||
@ -329,6 +340,16 @@ module Devops
|
|||||||
Devops::Db.connector.server_update(server)
|
Devops::Db.connector.server_update(server)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def check_servers_list_auth(servers, current_user)
|
||||||
|
project_with_env_pairs = servers.map do |server|
|
||||||
|
[server.project, server.deploy_env]
|
||||||
|
end
|
||||||
|
project_with_env_pairs.uniq.each do |pair|
|
||||||
|
project, env = *pair
|
||||||
|
Devops::Db.connector.check_project_auth project, env, current_user
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -75,6 +75,11 @@ module Devops
|
|||||||
rl
|
rl
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def delete_list
|
||||||
|
@body ||= create_object_from_json_body
|
||||||
|
check_array(@body["servers_ids"], "Parameter 'servers_ids' should be a not empty array of string", String, false)
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -14,7 +14,7 @@ module Devops
|
|||||||
# - Content-Type: application/json
|
# - Content-Type: application/json
|
||||||
# - body :
|
# - body :
|
||||||
# {
|
# {
|
||||||
# "names": [], -> array of servers names to run chef-client
|
# "names": [], -> array of servers chef node names to run chef-client
|
||||||
# "tags": [], -> array of tags to apply on each server before running chef-client
|
# "tags": [], -> array of tags to apply on each server before running chef-client
|
||||||
# "build_number": "", -> string, build number to deploy
|
# "build_number": "", -> string, build number to deploy
|
||||||
# "run_list": [], -> array of strings to set run_list for chef-client
|
# "run_list": [], -> array of strings to set run_list for chef-client
|
||||||
|
|||||||
@ -441,6 +441,29 @@ module Devops
|
|||||||
create_response("Run list has been changed")
|
create_response("Run list has been changed")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
# Delete list of servers
|
||||||
|
#
|
||||||
|
# * *Request*
|
||||||
|
# - method : POST
|
||||||
|
# - headers :
|
||||||
|
# - Accept: application/json
|
||||||
|
# - Content-Type: application/json
|
||||||
|
# - body :
|
||||||
|
# {
|
||||||
|
# "servers_ids": [ "server1", "server2"]
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# * *Returns* :
|
||||||
|
# {
|
||||||
|
# "server1": "report_1",
|
||||||
|
# "server2": "report_2"
|
||||||
|
# }
|
||||||
|
app.post_with_headers "/server/delete_list", :headers => [:accept, :content_type] do
|
||||||
|
check_privileges("server", "w")
|
||||||
|
json Devops::API2_0::Handler::Server.new(request).delete_list
|
||||||
|
end
|
||||||
|
|
||||||
puts "Server routes initialized"
|
puts "Server routes initialized"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -7,7 +7,8 @@ module Validators
|
|||||||
def valid?
|
def valid?
|
||||||
provider = ::Provider::ProviderFactory.get(@model.provider, @model.provider_account)
|
provider = ::Provider::ProviderFactory.get(@model.provider, @model.provider_account)
|
||||||
vpcs = provider.describe_vpcs
|
vpcs = provider.describe_vpcs
|
||||||
vpcs.keys.include?(@value)
|
ids = vpcs.map{|v| v["vpc_id"]}
|
||||||
|
ids.include?(@value)
|
||||||
rescue
|
rescue
|
||||||
raise "Invalid provider account '#{@model.provider_account}'"
|
raise "Invalid provider account '#{@model.provider_account}'"
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user