cloudbox-server 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.yardopts +3 -0
- data/README.md +17 -0
- data/bin/cb-cluster-allocate +5 -0
- data/bin/cb-cluster-create +5 -0
- data/bin/cb-cluster-delete +5 -0
- data/bin/cb-cluster-desallocate +5 -0
- data/bin/cb-cluster-info +5 -0
- data/bin/cb-cluster-ls +5 -0
- data/bin/cb-node-destroy +5 -0
- data/bin/cb-node-detach +6 -0
- data/bin/cb-node-info +5 -0
- data/bin/cb-node-install +5 -0
- data/bin/cb-node-ls +5 -0
- data/bin/cb-service-add +5 -0
- data/bin/cb-service-component-add +5 -0
- data/bin/cb-service-component-delete +5 -0
- data/bin/cb-service-component-detach +5 -0
- data/bin/cb-service-conf-apply +5 -0
- data/bin/cb-service-conf-create +5 -0
- data/bin/cb-service-conf-get +5 -0
- data/bin/cb-service-conf-ls +5 -0
- data/bin/cb-service-follow-request +5 -0
- data/bin/cb-service-info +5 -0
- data/bin/cb-service-install +5 -0
- data/bin/cb-service-ls +5 -0
- data/bin/cb-service-start +5 -0
- data/bin/cb-service-stop +5 -0
- data/lib/command.rb +61 -0
- data/lib/command/ambari_add_host.rb +19 -0
- data/lib/command/ambari_cluster_command.rb +26 -0
- data/lib/command/ambari_cluster_component_command.rb +26 -0
- data/lib/command/ambari_cluster_component_host_command.rb +26 -0
- data/lib/command/ambari_cluster_create.rb +19 -0
- data/lib/command/ambari_cluster_host_command.rb +27 -0
- data/lib/command/ambari_cluster_list.rb +20 -0
- data/lib/command/ambari_cluster_service_command.rb +26 -0
- data/lib/command/ambari_cluster_service_host_command.rb +26 -0
- data/lib/command/ambari_command.rb +21 -0
- data/lib/command/ambari_create_cluster_configuration.rb +39 -0
- data/lib/command/ambari_get_cluster_configuration.rb +29 -0
- data/lib/command/ambari_host_list.rb +19 -0
- data/lib/command/ambari_install_cluster.rb +19 -0
- data/lib/command/ambari_install_component.rb +19 -0
- data/lib/command/ambari_install_host.rb +19 -0
- data/lib/command/ambari_install_host_component.rb +19 -0
- data/lib/command/ambari_install_host_components.rb +19 -0
- data/lib/command/ambari_install_service_components.rb +19 -0
- data/lib/command/ambari_service_add.rb +27 -0
- data/lib/command/ambari_service_component_add.rb +21 -0
- data/lib/command/ambari_service_component_delete.rb +21 -0
- data/lib/command/ambari_service_component_detach.rb +21 -0
- data/lib/command/ambari_service_component_info.rb +29 -0
- data/lib/command/ambari_service_conf_apply.rb +31 -0
- data/lib/command/ambari_service_conf_ls.rb +30 -0
- data/lib/command/ambari_service_delete.rb +21 -0
- data/lib/command/ambari_service_info.rb +20 -0
- data/lib/command/ambari_service_list.rb +21 -0
- data/lib/command/ambari_start_cluster.rb +19 -0
- data/lib/command/ambari_start_component.rb +19 -0
- data/lib/command/ambari_start_host.rb +19 -0
- data/lib/command/ambari_start_host_component.rb +19 -0
- data/lib/command/ambari_start_host_components.rb +19 -0
- data/lib/command/ambari_start_service_components.rb +19 -0
- data/lib/command/ambari_stop_cluster.rb +19 -0
- data/lib/command/ambari_stop_component.rb +19 -0
- data/lib/command/ambari_stop_host.rb +19 -0
- data/lib/command/ambari_stop_host_component.rb +19 -0
- data/lib/command/ambari_stop_host_components.rb +19 -0
- data/lib/command/ambari_stop_service_components.rb +19 -0
- data/lib/command/basic_command.rb +44 -0
- data/lib/command/cluster_create.rb +50 -0
- data/lib/command/cluster_delete.rb +30 -0
- data/lib/command/cluster_info.rb +30 -0
- data/lib/command/cluster_ls.rb +30 -0
- data/lib/command/crowbar_cluster_allocate.rb +42 -0
- data/lib/command/crowbar_command.rb +30 -0
- data/lib/command/crowbar_get_barclamps_list.rb +30 -0
- data/lib/command/crowbar_node_command.rb +21 -0
- data/lib/command/crowbar_node_list.rb +40 -0
- data/lib/command/crowbar_vcluster_command.rb +20 -0
- data/lib/command/filter.rb +15 -0
- data/lib/command/node_destroy.rb +58 -0
- data/lib/command/node_detach.rb +44 -0
- data/lib/command/node_info.rb +27 -0
- data/lib/command/node_install.rb +46 -0
- data/lib/command/node_reinstall.rb +44 -0
- data/lib/command/state_filter.rb +16 -0
- data/lib/common.rb +11 -0
- data/lib/common/cb-lib-node-erase-hard-disk.sh +29 -0
- data/lib/common/cloudbox_exceptions.rb +631 -0
- data/lib/common/cloudbox_logger.rb +81 -0
- data/lib/common/cloudbox_logger_mock.rb +43 -0
- data/lib/common/color.rb +267 -0
- data/lib/common/config_properties.rb +2027 -0
- data/lib/common/services_description.rb +192 -0
- data/lib/exec.rb +35 -0
- data/lib/exec/check_parameter.rb +208 -0
- data/lib/exec/cluster_allocate.rb +163 -0
- data/lib/exec/cluster_create.rb +99 -0
- data/lib/exec/cluster_delete.rb +38 -0
- data/lib/exec/cluster_desallocate.rb +37 -0
- data/lib/exec/cluster_info.rb +177 -0
- data/lib/exec/cluster_ls.rb +150 -0
- data/lib/exec/command_option.rb +222 -0
- data/lib/exec/executable_command.rb +194 -0
- data/lib/exec/node_destroy.rb +101 -0
- data/lib/exec/node_detach.rb +98 -0
- data/lib/exec/node_info.rb +280 -0
- data/lib/exec/node_install.rb +234 -0
- data/lib/exec/node_ls.rb +160 -0
- data/lib/exec/service_add.rb +224 -0
- data/lib/exec/service_component_add.rb +39 -0
- data/lib/exec/service_component_delete.rb +37 -0
- data/lib/exec/service_component_detach.rb +37 -0
- data/lib/exec/service_conf_apply.rb +57 -0
- data/lib/exec/service_conf_create.rb +80 -0
- data/lib/exec/service_conf_get.rb +165 -0
- data/lib/exec/service_conf_ls.rb +103 -0
- data/lib/exec/service_follow_request.rb +49 -0
- data/lib/exec/service_info.rb +346 -0
- data/lib/exec/service_install.rb +87 -0
- data/lib/exec/service_ls.rb +124 -0
- data/lib/exec/service_start.rb +110 -0
- data/lib/exec/service_stop.rb +112 -0
- data/lib/receiver.rb +14 -0
- data/lib/receiver/ambari_receiver.rb +812 -0
- data/lib/receiver/ambari_rest_api_connector.rb +599 -0
- data/lib/receiver/basic_receiver.rb +28 -0
- data/lib/receiver/connector.rb +28 -0
- data/lib/receiver/crowbar_receiver.rb +588 -0
- data/lib/receiver/crowbar_rest_api_connector.rb +518 -0
- data/lib/receiver/crowbar_shell_api.rb +643 -0
- data/lib/receiver/rest_api_connector.rb +275 -0
- data/resources/ambari-configurations/HBASE/default_hbase-site +33 -0
- data/resources/ambari-configurations/HDFS/default_hdfs-site +49 -0
- data/resources/ambari-configurations/HIVE/default_hive-site +33 -0
- data/resources/ambari-configurations/MAPREDUCE/default_mapred-site +72 -0
- data/resources/ambari-configurations/OOZIE/default_oozie-site +28 -0
- data/resources/ambari-configurations/WEBHCAT/default_webhcat-site +18 -0
- data/resources/ambari-configurations/ZOOKEEPER/default_zookeeper-site +8 -0
- data/resources/ambari-configurations/default_core-site +22 -0
- data/resources/ambari-configurations/default_global +141 -0
- data/resources/cloudbox-server.conf +10 -0
- data/spec/common/services_description.rb +130 -0
- data/spec/exec/check_parameter.rb +152 -0
- data/spec/exec/command_option_spec.rb +97 -0
- metadata +328 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# This file is part of cloudbox-service project
|
|
2
|
+
# @author tmarmin (INGENSI)
|
|
3
|
+
|
|
4
|
+
require 'exec/executable_command'
|
|
5
|
+
require 'exec/check_parameter'
|
|
6
|
+
require 'command/ambari_service_component_detach'
|
|
7
|
+
|
|
8
|
+
include Exec::CheckParameter
|
|
9
|
+
|
|
10
|
+
module Exec
|
|
11
|
+
# Allows the user to detach a service component.
|
|
12
|
+
class ServiceComponentDetach < ExecutableCommand
|
|
13
|
+
|
|
14
|
+
private
|
|
15
|
+
# Parse and check the parameters of the function.
|
|
16
|
+
# @author tmarmin
|
|
17
|
+
def set_options
|
|
18
|
+
@logger.info("setting options")
|
|
19
|
+
@options.add_option("C", "cluster", "The virtual cluster name.", true, true, method(:check_cluster_name))
|
|
20
|
+
@options.add_option("H", "host", "Limit request to this host.", true, true, method(:check_ambari_host_name))
|
|
21
|
+
@options.add_option("c", "component", "Limit request to this component type.", false, true, method(:check_hadoop_component_name))
|
|
22
|
+
@options.add_option("f", "follow", "Follow completion of the request.", false)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
private
|
|
26
|
+
# Execution of the command
|
|
27
|
+
def exec
|
|
28
|
+
# @todo traiter les exceptions
|
|
29
|
+
Color::print_log("NONE", "deleting service component...", @stdout)
|
|
30
|
+
cmd = Command::AmbariServiceComponentDetach.new(@values["cluster"], @values["component"], @values["host"])
|
|
31
|
+
cmd.exec()
|
|
32
|
+
Color::echo_ok(@stdout)
|
|
33
|
+
@stdout.puts("Component #{@values["component"]} has been successfully detached from host #{@values["host"]} in cluster #{@values["cluster"]}.")
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# This file is part of cloudbox-server project
|
|
2
|
+
# @author mbretaud (INGENSI)
|
|
3
|
+
|
|
4
|
+
require 'exec/executable_command'
|
|
5
|
+
require 'exec/command_option'
|
|
6
|
+
require 'exec/check_parameter'
|
|
7
|
+
require 'common/cloudbox_exceptions'
|
|
8
|
+
require 'command/ambari_service_conf_apply'
|
|
9
|
+
|
|
10
|
+
include Exec::CheckParameter
|
|
11
|
+
|
|
12
|
+
#
|
|
13
|
+
# @author mbretaud
|
|
14
|
+
module Exec
|
|
15
|
+
# Allows the user to apply a configuration on a cluster.
|
|
16
|
+
# @author mbretaud
|
|
17
|
+
class ServiceConfApply < ExecutableCommand
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
# Parse and check the parameters of the function.
|
|
21
|
+
# @author mbretaud
|
|
22
|
+
def set_options
|
|
23
|
+
@logger.info("setting options")
|
|
24
|
+
@options.add_option("C", "cluster", "The cluster name.", true, true, method(:check_cluster_name))
|
|
25
|
+
@options.add_option("T", "type", "The type of the configuration.", true, true)
|
|
26
|
+
@options.add_option("t", "tag", "The tag of the configuration.", true, true)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
public
|
|
30
|
+
# The execution of the command.
|
|
31
|
+
# @author mbretaud
|
|
32
|
+
def exec
|
|
33
|
+
Color::print_log("NONE", "Applying configuration to the cluster '#{@values["cluster"]}'", @stdout)
|
|
34
|
+
|
|
35
|
+
if !@values["cluster"].nil? && !@values["type"].nil? && !@values["tag"].nil?
|
|
36
|
+
apply_configuration(@values["cluster"], @values["type"], @values["tag"])
|
|
37
|
+
Color::echo_ok(@stdout)
|
|
38
|
+
else
|
|
39
|
+
raise ArgumentError.new("Arguments can't be nil!")
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
private
|
|
44
|
+
# Applies a service configuration.
|
|
45
|
+
# @param cluster_name The name of the cluster.
|
|
46
|
+
# @param type_conf The type of configuration.
|
|
47
|
+
# @param tag_conf The tag ot configuration.
|
|
48
|
+
# @author mbretaud
|
|
49
|
+
def apply_configuration(cluster_name = @values["cluster"], type_conf = @values["type"], tag_conf = @values["tag"])
|
|
50
|
+
@logger.begin_main_step("applyConfigurations")
|
|
51
|
+
command = Command::AmbariServiceConfApply.new(cluster_name, type_conf, tag_conf)
|
|
52
|
+
command.exec()
|
|
53
|
+
@logger.end_main_step("applyConfigurations")
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# This file is part of cloudbox-service project
|
|
2
|
+
# @author tmarmin (INGENSI)
|
|
3
|
+
|
|
4
|
+
require 'exec/executable_command'
|
|
5
|
+
require 'exec/check_parameter'
|
|
6
|
+
require 'command/ambari_service_add'
|
|
7
|
+
require 'command/ambari_service_component_add'
|
|
8
|
+
require 'command/ambari_create_cluster_configuration'
|
|
9
|
+
require 'json'
|
|
10
|
+
|
|
11
|
+
#require 'command/ambari_get_cluster_configuration'
|
|
12
|
+
|
|
13
|
+
include Exec::CheckParameter
|
|
14
|
+
|
|
15
|
+
module Exec
|
|
16
|
+
# Allows the user to create a service configuration.
|
|
17
|
+
class ServiceConfCreate < ExecutableCommand
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
# @todo Use relative path technique for the attribute below
|
|
21
|
+
@configuration_directory
|
|
22
|
+
|
|
23
|
+
public
|
|
24
|
+
# Default constructor.
|
|
25
|
+
# @param argv The arguments of the command.
|
|
26
|
+
# @param stdin [IO] The input stream of the command.
|
|
27
|
+
# @param stdout [IO] The output stream of the command.
|
|
28
|
+
# @param stderr [IO] The error stream of the command.
|
|
29
|
+
# @param command_name [String] The name of the executed command.
|
|
30
|
+
# @author aboudot
|
|
31
|
+
def initialize(argv, stdin, stdout, stderr, command_name)
|
|
32
|
+
super(argv, stdin, stdout, stderr, command_name)
|
|
33
|
+
@configuration_directory = File.dirname(__FILE__) + "/../../resources/ambari-configurations"
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
private
|
|
37
|
+
# Parse and check the parameters of the function.
|
|
38
|
+
# @author aboudot
|
|
39
|
+
def set_options
|
|
40
|
+
@logger.info("setting options")
|
|
41
|
+
@options.add_option("C", "cluster", "The virtual cluster name where to get configuration.", true, true, method(:check_cluster_name))
|
|
42
|
+
@options.add_option("T", "type", "The type that will be get.", true, true)
|
|
43
|
+
@options.add_option("t", "tag", "The tag that will be get.", true, true)
|
|
44
|
+
@options.add_option("f", "fileName", "The path and fileName where you save configuration.", false, true)
|
|
45
|
+
@options.add_option("a", "Apply", "Apply configuration to a cluster", false, false)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
# Execution of the command
|
|
50
|
+
def exec()
|
|
51
|
+
|
|
52
|
+
if !@values["cluster"].nil? && !@values["type"].nil? && !@values["tag"].nil? && !@values["fileName"].nil?
|
|
53
|
+
Color::print_log("NONE", "Create a configuration on a cluster...", @stdout)
|
|
54
|
+
properties=read_files(@values["fileName"])
|
|
55
|
+
cmd=Command::AmbariCreateClusterConfiguration.new(@values['cluster'], @values['type'], @values['tag'], properties, @values['Apply'])
|
|
56
|
+
cmd.exec()
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# Reads a json configuration file and returns its content.
|
|
61
|
+
# @param path The path to the file.
|
|
62
|
+
# @return The content of the file.
|
|
63
|
+
def read_files(path)
|
|
64
|
+
if File.exists?(path)
|
|
65
|
+
begin
|
|
66
|
+
f = nil
|
|
67
|
+
f = File.open(path, "r")
|
|
68
|
+
p=JSON.parse(f.read)
|
|
69
|
+
return p
|
|
70
|
+
rescue => e
|
|
71
|
+
raise e
|
|
72
|
+
else
|
|
73
|
+
f.close()
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
# This file is part of cloudbox-service project
|
|
2
|
+
# @author tmarmin (INGENSI)
|
|
3
|
+
|
|
4
|
+
require 'exec/executable_command'
|
|
5
|
+
require 'exec/check_parameter'
|
|
6
|
+
require 'command/ambari_service_add'
|
|
7
|
+
require 'command/ambari_service_component_add'
|
|
8
|
+
require 'command/ambari_get_cluster_configuration'
|
|
9
|
+
require 'json'
|
|
10
|
+
|
|
11
|
+
include Exec::CheckParameter
|
|
12
|
+
|
|
13
|
+
module Exec
|
|
14
|
+
# Allows the user to get the properties of a service configuration.
|
|
15
|
+
class ServiceConfGet < ExecutableCommand
|
|
16
|
+
|
|
17
|
+
# @todo Use relative path technique for the attribute below
|
|
18
|
+
@configuration_directory
|
|
19
|
+
|
|
20
|
+
public
|
|
21
|
+
# Default constructor.
|
|
22
|
+
# @param argv The arguments of the command.
|
|
23
|
+
# @param stdin [IO] The input stream of the command.
|
|
24
|
+
# @param stdout [IO] The output stream of the command.
|
|
25
|
+
# @param stderr [IO] The error stream of the command.
|
|
26
|
+
# @param command_name [String] The name of the executed command.
|
|
27
|
+
# @author aboudot
|
|
28
|
+
def initialize(argv, stdin, stdout, stderr, command_name)
|
|
29
|
+
super(argv, stdin, stdout, stderr, command_name)
|
|
30
|
+
@configuration_directory = File.dirname(__FILE__) + "/../../resources/ambari-configurations"
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
private
|
|
34
|
+
# Parse and check the parameters of the function.
|
|
35
|
+
# @author aboudot
|
|
36
|
+
def set_options
|
|
37
|
+
@logger.info("setting options")
|
|
38
|
+
@options.add_option("C", "cluster", "The virtual cluster name where to get configuration.", true, true, method(:check_cluster_name))
|
|
39
|
+
@options.add_option("T", "type", "The type that will be get.", true, true)
|
|
40
|
+
@options.add_option("t", "tag", "The tag that will be get.", true, true)
|
|
41
|
+
@options.add_option("f", "file", "The the path and fileName where you save configuration.", false, true)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
# Execution of the command
|
|
46
|
+
def exec()
|
|
47
|
+
|
|
48
|
+
if !@values["cluster"].nil? && !@values["type"].nil? && !@values["tag"].nil? && @values["file"].nil?
|
|
49
|
+
Color::print_log("NONE", "Display a configuration on the cluster '#{@values["cluster"]}'...", @stdout)
|
|
50
|
+
|
|
51
|
+
output = display_configurations(@values["cluster"], @values["type"], @values["tag"], "\t - ")
|
|
52
|
+
|
|
53
|
+
Color::echo_ok(@stdout)
|
|
54
|
+
|
|
55
|
+
output.each{|conf|
|
|
56
|
+
@stdout.print conf
|
|
57
|
+
}
|
|
58
|
+
elsif !@values["cluster"].nil? && !@values["type"].nil? && !@values["tag"].nil? && !@values["file"].nil?
|
|
59
|
+
begin
|
|
60
|
+
Color::print_log("NONE", "Save a configuration in file...", @stdout)
|
|
61
|
+
|
|
62
|
+
if store_configuration(values["cluster"], @values["type"], @values["tag"], @values["file"])
|
|
63
|
+
Color::echo_ok(@stdout)
|
|
64
|
+
else
|
|
65
|
+
Color::echo_fail(@stdout)
|
|
66
|
+
end
|
|
67
|
+
rescue => e
|
|
68
|
+
@logger.debug(e.message)
|
|
69
|
+
@logger.debug(e.backtrace.join('/n'))
|
|
70
|
+
raise e
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
private
|
|
76
|
+
# display the configurations of a cluster.
|
|
77
|
+
# @param cluster_name The name of the cluster.
|
|
78
|
+
# @param prefix The prefix to display.
|
|
79
|
+
# @return output The output string to display.
|
|
80
|
+
# @author mbretaud
|
|
81
|
+
def display_configurations(cluster_name = @values["cluster"], type_conf = @values["type"], tag_conf = @values["tag"], prefix = '')
|
|
82
|
+
@logger.begin_main_step("listConfigurations")
|
|
83
|
+
begin
|
|
84
|
+
properties = Array.new
|
|
85
|
+
output = Array.new
|
|
86
|
+
|
|
87
|
+
cmd = Command::AmbariGetClusterConfiguration.new(cluster_name, type_conf, tag_conf)
|
|
88
|
+
|
|
89
|
+
data = cmd.exec()
|
|
90
|
+
|
|
91
|
+
return "No properties available on the cluster '#{cluster_name}' with type '#{type_conf}' and tag '#{tag_conf}'.\n" if data.nil? || data.empty?
|
|
92
|
+
|
|
93
|
+
data.each do |name, valeur|
|
|
94
|
+
properties << "#{name} : #{valeur}\n"
|
|
95
|
+
end
|
|
96
|
+
rescue => e
|
|
97
|
+
raise e
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
@logger.debug("configuration list output: #{output}")
|
|
101
|
+
@logger.end_main_step("listConfigurations")
|
|
102
|
+
|
|
103
|
+
properties = properties.sort
|
|
104
|
+
|
|
105
|
+
output << ""
|
|
106
|
+
output << "Configurations available on the cluster '#{cluster_name}' :"
|
|
107
|
+
output << "\n\n"
|
|
108
|
+
output << "#{prefix}Type : #{type_conf}\n"
|
|
109
|
+
output << "#{prefix}Tag : #{tag_conf}\n"
|
|
110
|
+
output << "\n"
|
|
111
|
+
output << "#{prefix}[PROPERTIES : VALUE]\n"
|
|
112
|
+
properties.each{|propertie|
|
|
113
|
+
output << "#{prefix}#{propertie}"
|
|
114
|
+
}
|
|
115
|
+
output << "\n"
|
|
116
|
+
|
|
117
|
+
return output
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
public
|
|
121
|
+
# Store the configuration in a file
|
|
122
|
+
# @param cluster_name The name of the cluster
|
|
123
|
+
# @param type_conf The name of the type of the configuration
|
|
124
|
+
# @param tag_conf The name of the tag of the configuration
|
|
125
|
+
# @author mbretaud
|
|
126
|
+
def store_configuration(cluster_name = @values["cluster"], type_conf = @values["type"], tag_conf = @values["tag"], file_name = nil)
|
|
127
|
+
cmd=Command::AmbariGetClusterConfiguration.new(cluster_name, type_conf, tag_conf)
|
|
128
|
+
|
|
129
|
+
data = cmd.exec()
|
|
130
|
+
|
|
131
|
+
begin
|
|
132
|
+
return true if create_file(file_name, data)
|
|
133
|
+
rescue => e
|
|
134
|
+
raise e
|
|
135
|
+
return false
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
return true
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
private
|
|
142
|
+
# Create a file configuration.
|
|
143
|
+
# @param path The path of the file.
|
|
144
|
+
# @param p The json data.
|
|
145
|
+
# @author mbretaud
|
|
146
|
+
def create_file(path, p)
|
|
147
|
+
if File.exists?(path)
|
|
148
|
+
raise Common::FileError.new("File already exists in #{path}!")
|
|
149
|
+
else
|
|
150
|
+
f = nil
|
|
151
|
+
begin
|
|
152
|
+
f = File.new(path.to_s, "w")
|
|
153
|
+
f.puts(JSON.pretty_generate(p))
|
|
154
|
+
rescue => e
|
|
155
|
+
raise e
|
|
156
|
+
return false
|
|
157
|
+
else
|
|
158
|
+
f.close()
|
|
159
|
+
end
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
return true
|
|
163
|
+
end
|
|
164
|
+
end
|
|
165
|
+
end
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# This file is part of cloudbox-server project
|
|
2
|
+
# @author mbretaud (INGENSI)
|
|
3
|
+
|
|
4
|
+
require 'exec/executable_command'
|
|
5
|
+
require 'exec/command_option'
|
|
6
|
+
require 'exec/check_parameter'
|
|
7
|
+
require 'common/cloudbox_exceptions'
|
|
8
|
+
require 'command/ambari_service_conf_ls'
|
|
9
|
+
require 'json'
|
|
10
|
+
|
|
11
|
+
include Exec::CheckParameter
|
|
12
|
+
|
|
13
|
+
#
|
|
14
|
+
# @author mbretaud
|
|
15
|
+
module Exec
|
|
16
|
+
# Allows the user to display a configuration about cluster.
|
|
17
|
+
# @author mbretaud
|
|
18
|
+
class ServiceConfLs < ExecutableCommand
|
|
19
|
+
|
|
20
|
+
private
|
|
21
|
+
# Parse and check the parameters of the function.
|
|
22
|
+
# @author mbretaud
|
|
23
|
+
def set_options
|
|
24
|
+
@logger.info("setting options")
|
|
25
|
+
@options.add_option("C", "cluster", "The cluster name.", true, true, method(:check_cluster_name))
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
public
|
|
29
|
+
# The execution of the command.
|
|
30
|
+
# @author mbretaud
|
|
31
|
+
def exec
|
|
32
|
+
Color::print_log("NONE", "Display a configuration about the cluster '#{@values["cluster"]}'", @stdout)
|
|
33
|
+
|
|
34
|
+
if !@values["cluster"].nil?
|
|
35
|
+
output = display_configurations(@values["cluster"], "\t - ")
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
Color::echo_ok(@stdout)
|
|
39
|
+
|
|
40
|
+
output.each{|conf|
|
|
41
|
+
@stdout.print conf
|
|
42
|
+
}
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
private
|
|
46
|
+
# display the configurations of a cluster.
|
|
47
|
+
# @param cluster_name The name of the cluster.
|
|
48
|
+
# @param prefix The prefix to display.
|
|
49
|
+
# @return output The output string to display.
|
|
50
|
+
# @author mbretaud
|
|
51
|
+
def display_configurations(cluster_name = @values["cluster"], prefix = '')
|
|
52
|
+
@logger.begin_main_step("listConfigurations")
|
|
53
|
+
begin
|
|
54
|
+
configs = Array.new
|
|
55
|
+
output = Array.new
|
|
56
|
+
|
|
57
|
+
command = Command::AmbariServiceConfLs.new(cluster_name)
|
|
58
|
+
data = command.exec()
|
|
59
|
+
|
|
60
|
+
return "No configurations available on the cluster '#{cluster_name}'.\n" if data.nil? || data.empty?
|
|
61
|
+
|
|
62
|
+
error = false
|
|
63
|
+
data.each{|conf|
|
|
64
|
+
if !conf['active'].nil?
|
|
65
|
+
if conf['active']
|
|
66
|
+
active = Color::color_green("[Active]")
|
|
67
|
+
configs << "#{prefix}#{conf['type']} : #{conf['tag']} #{active}\n"
|
|
68
|
+
else
|
|
69
|
+
configs << "#{prefix}#{conf['type']} : #{conf['tag']} [Not Active]\n"
|
|
70
|
+
end
|
|
71
|
+
else
|
|
72
|
+
error = true
|
|
73
|
+
end
|
|
74
|
+
}
|
|
75
|
+
rescue => e
|
|
76
|
+
raise e
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
@logger.debug("configuration list output: #{output}")
|
|
80
|
+
@logger.end_main_step("listConfigurations")
|
|
81
|
+
|
|
82
|
+
if error
|
|
83
|
+
output << ""
|
|
84
|
+
output << "Error: Retrieve the configuration on the cluster '#{cluster_name}'."
|
|
85
|
+
output << "\n"
|
|
86
|
+
else
|
|
87
|
+
configs = configs.sort
|
|
88
|
+
|
|
89
|
+
output << ""
|
|
90
|
+
output << "Configurations available on the cluster '#{cluster_name}' :"
|
|
91
|
+
output << "\n\n"
|
|
92
|
+
output << "#{prefix}[TYPE : TAG] [Status]\n"
|
|
93
|
+
configs.each{|conf|
|
|
94
|
+
output << conf
|
|
95
|
+
}
|
|
96
|
+
output << "\n"
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
return output
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
end
|
|
103
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# This file is part of cloudbox-service project
|
|
2
|
+
# @author tmarmin (INGENSI)
|
|
3
|
+
|
|
4
|
+
require 'exec/executable_command'
|
|
5
|
+
require 'exec/command_option'
|
|
6
|
+
require 'exec/check_parameter'
|
|
7
|
+
require 'common/cloudbox_exceptions'
|
|
8
|
+
|
|
9
|
+
include Exec::CheckParameter
|
|
10
|
+
|
|
11
|
+
module Exec
|
|
12
|
+
# Allows the user to follow the completion of a request.
|
|
13
|
+
# @author tnoguer
|
|
14
|
+
class ServiceFollowRequest < ExecutableCommand
|
|
15
|
+
|
|
16
|
+
private
|
|
17
|
+
# Parse and check the parameters of the function.
|
|
18
|
+
# @author tmarmin
|
|
19
|
+
def set_options
|
|
20
|
+
@logger.info("setting options")
|
|
21
|
+
@options.add_option("C", "cluster", "The virtual cluster name.", true, true, method(:check_cluster_name))
|
|
22
|
+
@options.add_option("r", "request", "The request ID.", true, true, method(:check_request_id))
|
|
23
|
+
@options.add_option("l", "list", "List all requests.", false)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
private
|
|
27
|
+
# Execution of the command
|
|
28
|
+
def exec
|
|
29
|
+
Color::print_log("NONE", "following request...", @stdout)
|
|
30
|
+
raise NotImplemented # @todo Implement ServiceFollowRequest Exec body
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
private
|
|
34
|
+
# Inherited CommandOption used only by ServiceFollowRequest.
|
|
35
|
+
class CustomCommandOption < CommandOption
|
|
36
|
+
|
|
37
|
+
protected
|
|
38
|
+
# This method overrides the default behaviour.
|
|
39
|
+
# @raise [Common::MissingParameter] Never raise exception for the moment :)
|
|
40
|
+
def check_mandatory
|
|
41
|
+
if if !@values["help"] && !@values["list"]
|
|
42
|
+
raise Common::MissingParameter.new("-C", get_help()) if @values["cluster"].nil?
|
|
43
|
+
raise Common::MissingParameter.new("-r", get_help()) if @values["request"].nil?
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|