def test_disallowed_bundled_jdk(self): with self.assertRaises(exceptions.SystemSetupError) as ctx: java_resolver.java_home("12,11,10,9,8", specified_runtime_jdk="bundled") self.assertEqual( "This Elasticsearch version does not contain a bundled JDK. Please specify a different runtime JDK.", ctx.exception.args[0])
def _start_node(self, node_configuration, node_count_on_host): host_name = node_configuration.ip node_name = node_configuration.node_name car = node_configuration.car binary_path = node_configuration.binary_path data_paths = node_configuration.data_paths node_telemetry_dir = "%s/telemetry" % node_configuration.node_root_path java_major_version, java_home = java_resolver.java_home(car, self.cfg) self.logger.info("Starting node [%s] based on car [%s].", node_name, car) enabled_devices = self.cfg.opts("mechanic", "telemetry.devices") telemetry_params = self.cfg.opts("mechanic", "telemetry.params") node_telemetry = [ telemetry.DiskIo(self.metrics_store, node_count_on_host, node_telemetry_dir, node_name), telemetry.NodeEnvironmentInfo(self.metrics_store), telemetry.IndexSize(data_paths, self.metrics_store), telemetry.MergeParts(self.metrics_store, node_configuration.log_path), telemetry.StartupTime(self.metrics_store), ] t = telemetry.Telemetry(enabled_devices, devices=node_telemetry) env = self._prepare_env(car, node_name, java_home, t) t.on_pre_node_start(node_name) node_pid = self._start_process(binary_path, env) node = cluster.Node(node_pid, host_name, node_name, t) self.logger.info("Attaching telemetry devices to node [%s].", node_name) t.attach_to_node(node) return node
def local_provisioner(cfg, car, plugins, cluster_settings, all_node_ips, all_node_ids, target_root, node_id): distribution_version = cfg.opts("mechanic", "distribution.version", mandatory=False) ip = cfg.opts("provisioning", "node.ip") http_port = cfg.opts("provisioning", "node.http.port") node_name_prefix = cfg.opts("provisioning", "node.name.prefix") preserve = cfg.opts("mechanic", "preserve.install") node_name = "%s-%d" % (node_name_prefix, node_id) node_root_dir = "%s/%s" % (target_root, node_name) all_node_names = ["%s-%d" % (node_name_prefix, n) for n in all_node_ids] _, java_home = java_resolver.java_home(car, cfg) es_installer = ElasticsearchInstaller(car, java_home, node_name, node_root_dir, all_node_ips, all_node_names, ip, http_port) plugin_installers = [ PluginInstaller(plugin, java_home) for plugin in plugins ] return BareProvisioner(cluster_settings, es_installer, plugin_installers, preserve, distribution_version=distribution_version)
def local(cfg, car, plugins, ip, http_port, all_node_ips, all_node_names, target_root, node_name): distribution_version = cfg.opts("mechanic", "distribution.version", mandatory=False) node_root_dir = os.path.join(target_root, node_name) runtime_jdk_bundled = convert.to_bool( car.mandatory_var("runtime.jdk.bundled")) runtime_jdk = car.mandatory_var("runtime.jdk") _, java_home = java_resolver.java_home(runtime_jdk, cfg.opts("mechanic", "runtime.jdk"), runtime_jdk_bundled) es_installer = ElasticsearchInstaller(car, java_home, node_name, node_root_dir, all_node_ips, all_node_names, ip, http_port) plugin_installers = [ PluginInstaller(plugin, java_home) for plugin in plugins ] return BareProvisioner(es_installer, plugin_installers, distribution_version=distribution_version)
def _start_node(self, node_configuration, node_count_on_host): host_name = node_configuration.ip node_name = node_configuration.node_name binary_path = node_configuration.binary_path data_paths = node_configuration.data_paths node_telemetry_dir = os.path.join(node_configuration.node_root_path, "telemetry") java_major_version, java_home = java_resolver.java_home(node_configuration.car_runtime_jdks, self.cfg) self.logger.info("Starting node [%s].", node_name) enabled_devices = self.cfg.opts("telemetry", "devices") telemetry_params = self.cfg.opts("telemetry", "params") node_telemetry = [ telemetry.FlightRecorder(telemetry_params, node_telemetry_dir, java_major_version), telemetry.JitCompiler(node_telemetry_dir), telemetry.Gc(node_telemetry_dir, java_major_version), telemetry.Heapdump(node_telemetry_dir), telemetry.DiskIo(node_count_on_host), telemetry.IndexSize(data_paths), telemetry.StartupTime(), ] t = telemetry.Telemetry(enabled_devices, devices=node_telemetry) # TODO #822: Remove reference to car's environment env = self._prepare_env(node_configuration.car_env, node_name, java_home, t) t.on_pre_node_start(node_name) node_pid = self._start_process(binary_path, env) self.logger.info("Successfully started node [%s] with PID [%s].", node_name, node_pid) node = cluster.Node(node_pid, binary_path, host_name, node_name, t) self.logger.info("Attaching telemetry devices to node [%s].", node_name) t.attach_to_node(node) return node
def test_resolves_java_home_for_default_runtime_jdk( self, resolve_jvm_path): resolve_jvm_path.return_value = (12, "/opt/jdk12") major, java_home = java_resolver.java_home("12,11,10,9,8", specified_runtime_jdk=None, provides_bundled_jdk=True) assert major == 12 assert java_home == "/opt/jdk12"
def test_resolves_java_home_for_bundled_jdk(self): major, java_home = java_resolver.java_home( "12,11,10,9,8", specified_runtime_jdk="bundled", provides_bundled_jdk=True) # assumes most recent JDK assert major == 12 # does not set JAVA_HOME for the bundled JDK assert java_home is None
def test_resolves_java_home_for_specific_runtime_jdk( self, resolve_jvm_path): resolve_jvm_path.return_value = (8, "/opt/jdk8") major, java_home = java_resolver.java_home("12,11,10,9,8", specified_runtime_jdk=8, provides_bundled_jdk=True) assert major == 8 assert java_home == "/opt/jdk8" resolve_jvm_path.assert_called_with([8])
def test_resolves_java_home_for_default_runtime_jdk(self, resolve_jvm_path): resolve_jvm_path.return_value = (12, "/opt/jdk12") cfg = config.Config() cfg.add(config.Scope.application, "mechanic", "runtime.jdk", None) major, java_home = java_resolver.java_home("12,11,10,9,8", cfg) self.assertEqual(major, 12) self.assertEqual(java_home, "/opt/jdk12")
def test_resolves_java_home_for_bundled_jdk(self): cfg = config.Config() cfg.add(config.Scope.application, "mechanic", "runtime.jdk", "bundled") major, java_home = java_resolver.java_home("12,11,10,9,8", cfg) # assumes most recent JDK self.assertEqual(major, 12) # does not set JAVA_HOME for the bundled JDK self.assertEqual(java_home, None)
def test_resolves_java_home_for_specific_runtime_jdk(self, resolve_jvm_path): resolve_jvm_path.return_value = (8, "/opt/jdk8") cfg = config.Config() cfg.add(config.Scope.application, "mechanic", "runtime.jdk", 8) major, java_home = java_resolver.java_home("12,11,10,9,8", cfg) self.assertEqual(major, 8) self.assertEqual(java_home, "/opt/jdk8") resolve_jvm_path.assert_called_with([8])
def local_provisioner(cfg, car, plugins, cluster_settings, all_node_ips, target_root, node_id): distribution_version = cfg.opts("mechanic", "distribution.version", mandatory=False) ip = cfg.opts("provisioning", "node.ip") http_port = cfg.opts("provisioning", "node.http.port") node_name_prefix = cfg.opts("provisioning", "node.name.prefix") preserve = cfg.opts("mechanic", "preserve.install") node_name = "%s-%d" % (node_name_prefix, node_id) node_root_dir = "%s/%s" % (target_root, node_name) _, java_home = java_resolver.java_home(car, cfg) node_telemetry_dir = os.path.join(node_root_dir, "telemetry") java_major_version, java_home = java_resolver.java_home(car, cfg) enabled_devices = cfg.opts("mechanic", "telemetry.devices") telemetry_params = cfg.opts("mechanic", "telemetry.params") node_telemetry = [ telemetry.FlightRecorder(telemetry_params, node_telemetry_dir, java_major_version), telemetry.JitCompiler(node_telemetry_dir), telemetry.Gc(node_telemetry_dir, java_major_version) ] t = telemetry.Telemetry(enabled_devices, devices=node_telemetry) es_installer = ElasticsearchInstaller(car, java_home, node_name, node_root_dir, all_node_ips, ip, http_port) plugin_installers = [ PluginInstaller(plugin, java_home) for plugin in plugins ] return BareProvisioner(cluster_settings, es_installer, plugin_installers, preserve, t, distribution_version=distribution_version)
def _start_node(self, node_configuration, node_count_on_host): host_name = node_configuration.ip node_name = node_configuration.node_name car = node_configuration.car binary_path = node_configuration.binary_path data_paths = node_configuration.data_paths node_telemetry_dir = os.path.join(node_configuration.node_root_path, "telemetry") java_major_version, java_home = java_resolver.java_home(car, self.cfg) telemetry.add_metadata_for_node(self.metrics_store, node_name, host_name) self.logger.info("Starting node [%s] based on car [%s].", node_name, car) enabled_devices = self.cfg.opts("telemetry", "devices") telemetry_params = self.cfg.opts("telemetry", "params") node_telemetry = [ telemetry.FlightRecorder(telemetry_params, node_telemetry_dir, java_major_version), telemetry.JitCompiler(node_telemetry_dir), telemetry.Gc(node_telemetry_dir, java_major_version), telemetry.Heapdump(node_telemetry_dir), telemetry.DiskIo(self.metrics_store, node_count_on_host, node_telemetry_dir, node_name), telemetry.IndexSize(data_paths, self.metrics_store), telemetry.StartupTime(self.metrics_store), ] t = telemetry.Telemetry(enabled_devices, devices=node_telemetry) env = self._prepare_env(car, node_name, java_home, t) t.on_pre_node_start(node_name) node_pid = self._start_process(binary_path, env) node = cluster.Node(node_pid, host_name, node_name, t) self.logger.info("Attaching telemetry devices to node [%s].", node_name) t.attach_to_node(node) return node
def local(cfg, car, plugins, cluster_settings, ip, http_port, all_node_ips, all_node_names, target_root, node_name): distribution_version = cfg.opts("mechanic", "distribution.version", mandatory=False) node_root_dir = os.path.join(target_root, node_name) _, java_home = java_resolver.java_home(car.mandatory_var("runtime.jdk"), cfg) es_installer = ElasticsearchInstaller(car, java_home, node_name, node_root_dir, all_node_ips, all_node_names, ip, http_port) plugin_installers = [ PluginInstaller(plugin, java_home) for plugin in plugins ] return BareProvisioner(cluster_settings, es_installer, plugin_installers, distribution_version=distribution_version)
def test_disallowed_bundled_jdk(self): with pytest.raises(exceptions.SystemSetupError) as exc: java_resolver.java_home("12,11,10,9,8", specified_runtime_jdk="bundled") assert exc.value.args[ 0] == "This Elasticsearch version does not contain a bundled JDK. Please specify a different runtime JDK."