hybrid_platforms_conductor 32.17.0 → 33.0.2
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +36 -0
- data/README.md +6 -3
- data/bin/check-node +0 -1
- data/bin/deploy +0 -1
- data/bin/get_impacted_nodes +0 -1
- data/bin/last_deploys +12 -8
- data/bin/nodes_to_deploy +6 -6
- data/bin/setup +6 -6
- data/bin/topograph +1 -1
- data/docs/config_dsl.md +45 -1
- data/docs/executables.md +6 -7
- data/docs/executables/check-node.md +3 -3
- data/docs/executables/deploy.md +3 -3
- data/docs/executables/dump_nodes_json.md +3 -3
- data/docs/executables/test.md +3 -3
- data/docs/executables/topograph.md +3 -3
- data/docs/gen/mermaid/README.md-0.png +0 -0
- data/docs/gen/mermaid/docs/executables/check-node.md-0.png +0 -0
- data/docs/gen/mermaid/docs/executables/deploy.md-0.png +0 -0
- data/docs/gen/mermaid/docs/executables/free_ips.md-0.png +0 -0
- data/docs/gen/mermaid/docs/executables/get_impacted_nodes.md-0.png +0 -0
- data/docs/gen/mermaid/docs/executables/last_deploys.md-0.png +0 -0
- data/docs/gen/mermaid/docs/executables/nodes_to_deploy.md-0.png +0 -0
- data/docs/gen/mermaid/docs/executables/report.md-0.png +0 -0
- data/docs/gen/mermaid/docs/executables/run.md-0.png +0 -0
- data/docs/gen/mermaid/docs/executables/ssh_config.md-0.png +0 -0
- data/docs/gen/mermaid/docs/executables/test.md-0.png +0 -0
- data/docs/plugins.md +46 -0
- data/docs/plugins/connector/ssh.md +1 -1
- data/docs/plugins/log/remote_fs.md +26 -0
- data/docs/plugins/secrets_reader/cli.md +31 -0
- data/docs/plugins/secrets_reader/thycotic.md +46 -0
- data/docs/plugins/test/check_deploy_and_idempotence.md +1 -1
- data/docs/plugins/test/connection.md +1 -0
- data/docs/plugins/test/deploy_removes_root_access.md +1 -1
- data/docs/plugins/test/file_system.md +1 -0
- data/docs/plugins/test/hostname.md +1 -0
- data/docs/plugins/test/ip.md +1 -0
- data/docs/plugins/test/local_users.md +1 -0
- data/docs/plugins/test/mounts.md +1 -0
- data/docs/plugins/test/orphan_files.md +1 -0
- data/docs/plugins/test/ports.md +1 -0
- data/docs/plugins/test/spectre.md +1 -0
- data/docs/plugins/test/vulnerabilities.md +1 -0
- data/lib/hybrid_platforms_conductor/action.rb +4 -4
- data/lib/hybrid_platforms_conductor/actions_executor.rb +45 -43
- data/lib/hybrid_platforms_conductor/bitbucket.rb +5 -4
- data/lib/hybrid_platforms_conductor/cmd_runner.rb +13 -12
- data/lib/hybrid_platforms_conductor/cmdb.rb +2 -2
- data/lib/hybrid_platforms_conductor/common_config_dsl/bitbucket.rb +2 -1
- data/lib/hybrid_platforms_conductor/common_config_dsl/confluence.rb +2 -1
- data/lib/hybrid_platforms_conductor/common_config_dsl/file_system_tests.rb +5 -4
- data/lib/hybrid_platforms_conductor/common_config_dsl/github.rb +4 -3
- data/lib/hybrid_platforms_conductor/common_config_dsl/idempotence_tests.rb +2 -2
- data/lib/hybrid_platforms_conductor/config.rb +8 -4
- data/lib/hybrid_platforms_conductor/confluence.rb +1 -1
- data/lib/hybrid_platforms_conductor/connector.rb +5 -2
- data/lib/hybrid_platforms_conductor/core_extensions/cleanroom/fix_kwargs.rb +116 -0
- data/lib/hybrid_platforms_conductor/core_extensions/symbol/zero.rb +24 -0
- data/lib/hybrid_platforms_conductor/credentials.rb +39 -36
- data/lib/hybrid_platforms_conductor/current_dir_monitor.rb +4 -1
- data/lib/hybrid_platforms_conductor/deployer.rb +275 -224
- data/lib/hybrid_platforms_conductor/executable.rb +20 -15
- data/lib/hybrid_platforms_conductor/hpc_plugins/cmdb/config.rb +10 -7
- data/lib/hybrid_platforms_conductor/hpc_plugins/cmdb/host_ip.rb +1 -1
- data/lib/hybrid_platforms_conductor/hpc_plugins/cmdb/host_keys.rb +2 -2
- data/lib/hybrid_platforms_conductor/hpc_plugins/cmdb/platform_handlers.rb +4 -4
- data/lib/hybrid_platforms_conductor/hpc_plugins/connector/local.rb +2 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/connector/ssh.rb +45 -49
- data/lib/hybrid_platforms_conductor/hpc_plugins/log/my_log_plugin.rb.sample +100 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/log/remote_fs.rb +180 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/platform_handler/serverless_chef.rb +68 -66
- data/lib/hybrid_platforms_conductor/hpc_plugins/platform_handler/serverless_chef/dsl_parser.rb +13 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/platform_handler/serverless_chef/recipes_tree_builder.rb +39 -38
- data/lib/hybrid_platforms_conductor/hpc_plugins/platform_handler/yaml_inventory.rb +5 -4
- data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/docker.rb +43 -45
- data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/podman.rb +18 -20
- data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/proxmox.rb +118 -117
- data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/proxmox/proxmox_waiter.rb +39 -43
- data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/proxmox/reserve_proxmox_container +9 -13
- data/lib/hybrid_platforms_conductor/hpc_plugins/report/confluence.rb +2 -2
- data/lib/hybrid_platforms_conductor/hpc_plugins/report/mediawiki.rb +28 -21
- data/lib/hybrid_platforms_conductor/hpc_plugins/report/stdout.rb +26 -22
- data/lib/hybrid_platforms_conductor/hpc_plugins/secrets_reader/cli.rb +77 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/secrets_reader/my_secrets_reader_plugin.rb.sample +46 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/secrets_reader/thycotic.rb +90 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/bitbucket_conf.rb +3 -3
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/check_deploy_and_idempotence.rb +4 -2
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/connection.rb +3 -1
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/deploy_freshness.rb +7 -21
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/deploy_removes_root_access.rb +21 -19
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/divergence.rb +2 -2
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/executables.rb +2 -2
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/file_system.rb +21 -22
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/file_system_hdfs.rb +19 -21
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/github_ci.rb +2 -3
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/hostname.rb +3 -1
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/idempotence.rb +2 -2
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/ip.rb +4 -2
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/jenkins_ci_conf.rb +21 -22
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/jenkins_ci_masters_ok.rb +10 -12
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/linear_strategy.rb +9 -9
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/local_users.rb +5 -3
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/mounts.rb +5 -3
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/orphan_files.rb +13 -10
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/ports.rb +5 -3
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/private_ips.rb +5 -5
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/public_ips.rb +5 -5
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/spectre.rb +7 -7
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/veids.rb +3 -3
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/vulnerabilities.rb +27 -25
- data/lib/hybrid_platforms_conductor/hpc_plugins/test_report/confluence.rb +2 -2
- data/lib/hybrid_platforms_conductor/hpc_plugins/test_report/stdout.rb +8 -6
- data/lib/hybrid_platforms_conductor/io_router.rb +14 -13
- data/lib/hybrid_platforms_conductor/json_dumper.rb +2 -2
- data/lib/hybrid_platforms_conductor/log.rb +31 -0
- data/lib/hybrid_platforms_conductor/logger_helpers.rb +19 -16
- data/lib/hybrid_platforms_conductor/nodes_handler.rb +89 -71
- data/lib/hybrid_platforms_conductor/parallel_threads.rb +7 -11
- data/lib/hybrid_platforms_conductor/platform_handler.rb +7 -7
- data/lib/hybrid_platforms_conductor/platforms_handler.rb +5 -3
- data/lib/hybrid_platforms_conductor/plugin.rb +2 -2
- data/lib/hybrid_platforms_conductor/plugins.rb +14 -8
- data/lib/hybrid_platforms_conductor/provisioner.rb +4 -4
- data/lib/hybrid_platforms_conductor/report.rb +2 -2
- data/lib/hybrid_platforms_conductor/reports_handler.rb +3 -2
- data/lib/hybrid_platforms_conductor/secrets_reader.rb +31 -0
- data/lib/hybrid_platforms_conductor/services_handler.rb +32 -29
- data/lib/hybrid_platforms_conductor/test_only_remote_node.rb +18 -0
- data/lib/hybrid_platforms_conductor/test_report.rb +15 -18
- data/lib/hybrid_platforms_conductor/tests_runner.rb +116 -118
- data/lib/hybrid_platforms_conductor/thycotic.rb +28 -19
- data/lib/hybrid_platforms_conductor/topographer.rb +200 -190
- data/lib/hybrid_platforms_conductor/topographer/plugins/graphviz.rb +8 -8
- data/lib/hybrid_platforms_conductor/topographer/plugins/json.rb +4 -4
- data/lib/hybrid_platforms_conductor/version.rb +1 -1
- data/spec/hybrid_platforms_conductor_test.rb +33 -12
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions/bash_spec.rb +18 -11
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions/interactive_spec.rb +2 -2
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions/remote_bash_spec.rb +32 -21
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions/ruby_spec.rb +75 -49
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions/scp_spec.rb +27 -15
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions_spec.rb +90 -59
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/connection_spec.rb +46 -44
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/local/connectable_nodes_spec.rb +12 -8
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/local/remote_actions_spec.rb +4 -7
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/cli_options_spec.rb +21 -22
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/config_dsl_spec.rb +23 -24
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/connectable_nodes_spec.rb +10 -6
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/connections_spec.rb +106 -75
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/global_helpers_spec.rb +145 -126
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/node_helpers_spec.rb +3 -3
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/remote_actions_spec.rb +29 -25
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/logging_spec.rb +167 -142
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/parallel_spec.rb +272 -244
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/timeout_spec.rb +16 -16
- data/spec/hybrid_platforms_conductor_test/api/cmd_runner_spec.rb +36 -36
- data/spec/hybrid_platforms_conductor_test/api/config_spec.rb +24 -22
- data/spec/hybrid_platforms_conductor_test/api/deployer/check_spec.rb +4 -2
- data/spec/hybrid_platforms_conductor_test/api/deployer/config_dsl_spec.rb +43 -5
- data/spec/hybrid_platforms_conductor_test/api/deployer/deploy_spec.rb +199 -216
- data/spec/hybrid_platforms_conductor_test/api/deployer/log_plugins/remote_fs_spec.rb +223 -0
- data/spec/hybrid_platforms_conductor_test/api/deployer/parse_deploy_output_spec.rb +55 -59
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioner_spec.rb +36 -62
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/podman_spec.rb +17 -17
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/config_dsl_spec.rb +4 -4
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/create_spec.rb +44 -51
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/destroy_spec.rb +3 -3
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/ip_spec.rb +12 -16
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/destroy_vm_spec.rb +31 -19
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/expired_containers_spec.rb +324 -266
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/ips_assignment_spec.rb +89 -61
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/other_lxc_containers_resources_spec.rb +117 -93
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/pve_node_resources_spec.rb +71 -54
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/retries_spec.rb +10 -8
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/vm_ids_assignment_spec.rb +80 -60
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/start_spec.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/state_spec.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/stop_spec.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/api/deployer/secrets_reader_plugins/cli_spec.rb +64 -0
- data/spec/hybrid_platforms_conductor_test/api/deployer/secrets_reader_plugins/thycotic_spec.rb +268 -0
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/cmdbs/config_spec.rb +8 -10
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/cmdbs/host_ip_spec.rb +33 -24
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/cmdbs/host_keys_spec.rb +64 -51
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/cmdbs/platform_handlers_spec.rb +3 -3
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/cmdbs_plugins_api_spec.rb +50 -51
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/common_spec.rb +91 -81
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/config_dsl_spec.rb +14 -16
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/git_diff_impacts_spec.rb +51 -75
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/nodes_selectors_spec.rb +35 -26
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/platform_handlers_plugins_api_spec.rb +24 -16
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/several_platforms_spec.rb +29 -19
- data/spec/hybrid_platforms_conductor_test/api/platform_handler_spec.rb +4 -4
- data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/config_dsl_spec.rb +2 -2
- data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/deploy_output_parsing_spec.rb +6 -6
- data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/diff_impacts_spec.rb +57 -99
- data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/inventory_spec.rb +4 -4
- data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/packaging_spec.rb +32 -35
- data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/services_deployment_spec.rb +10 -10
- data/spec/hybrid_platforms_conductor_test/api/platforms_handler_spec.rb +38 -27
- data/spec/hybrid_platforms_conductor_test/api/plugins_spec.rb +46 -52
- data/spec/hybrid_platforms_conductor_test/api/reports_handler_spec.rb +2 -2
- data/spec/hybrid_platforms_conductor_test/api/services_handler/actions_to_deploy_spec.rb +90 -58
- data/spec/hybrid_platforms_conductor_test/api/services_handler/deploy_allowed_spec.rb +38 -34
- data/spec/hybrid_platforms_conductor_test/api/services_handler/log_info_spec.rb +11 -9
- data/spec/hybrid_platforms_conductor_test/api/services_handler/package_spec.rb +193 -171
- data/spec/hybrid_platforms_conductor_test/api/services_handler/parse_deploy_output_spec.rb +66 -54
- data/spec/hybrid_platforms_conductor_test/api/services_handler/prepare_for_deploy_spec.rb +147 -133
- data/spec/hybrid_platforms_conductor_test/api/tests_runner/common_spec.rb +69 -49
- data/spec/hybrid_platforms_conductor_test/api/tests_runner/global_spec.rb +5 -4
- data/spec/hybrid_platforms_conductor_test/api/tests_runner/node_check_spec.rb +8 -5
- data/spec/hybrid_platforms_conductor_test/api/tests_runner/node_spec.rb +8 -5
- data/spec/hybrid_platforms_conductor_test/api/tests_runner/node_ssh_spec.rb +30 -27
- data/spec/hybrid_platforms_conductor_test/api/tests_runner/platform_spec.rb +12 -9
- data/spec/hybrid_platforms_conductor_test/api/tests_runner/reports_spec.rb +48 -47
- data/spec/hybrid_platforms_conductor_test/api/tests_runner/test_plugins/bitbucket_conf_spec.rb +5 -5
- data/spec/hybrid_platforms_conductor_test/api/tests_runner/test_plugins/github_ci_spec.rb +5 -5
- data/spec/hybrid_platforms_conductor_test/api/tests_runner/test_reports_plugins/confluence_spec.rb +5 -5
- data/spec/hybrid_platforms_conductor_test/cmdb_plugins/test_cmdb.rb +9 -9
- data/spec/hybrid_platforms_conductor_test/cmdb_plugins/{test_cmdb2.rb → test_cmdb_2.rb} +6 -6
- data/spec/hybrid_platforms_conductor_test/cmdb_plugins/test_cmdb_others.rb +3 -3
- data/spec/hybrid_platforms_conductor_test/cmdb_plugins/{test_cmdb_others2.rb → test_cmdb_others_2.rb} +2 -2
- data/spec/hybrid_platforms_conductor_test/docs_spec.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/executables/{check-node_spec.rb → check_node_spec.rb} +4 -6
- data/spec/hybrid_platforms_conductor_test/executables/deploy_spec.rb +4 -6
- data/spec/hybrid_platforms_conductor_test/executables/get_impacted_nodes_spec.rb +76 -77
- data/spec/hybrid_platforms_conductor_test/executables/last_deploys_spec.rb +159 -113
- data/spec/hybrid_platforms_conductor_test/executables/nodes_to_deploy_spec.rb +299 -160
- data/spec/hybrid_platforms_conductor_test/executables/options/actions_executor_spec.rb +4 -6
- data/spec/hybrid_platforms_conductor_test/executables/options/cmd_runner_spec.rb +3 -5
- data/spec/hybrid_platforms_conductor_test/executables/options/common_spec.rb +8 -8
- data/spec/hybrid_platforms_conductor_test/executables/options/deployer_spec.rb +12 -196
- data/spec/hybrid_platforms_conductor_test/executables/options/nodes_handler_spec.rb +9 -10
- data/spec/hybrid_platforms_conductor_test/executables/options/nodes_selectors_spec.rb +9 -10
- data/spec/hybrid_platforms_conductor_test/executables/options/reports_handler_spec.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/executables/options/tests_runner_spec.rb +22 -22
- data/spec/hybrid_platforms_conductor_test/executables/report_spec.rb +22 -16
- data/spec/hybrid_platforms_conductor_test/executables/run_spec.rb +32 -32
- data/spec/hybrid_platforms_conductor_test/executables/ssh_config_spec.rb +7 -9
- data/spec/hybrid_platforms_conductor_test/executables/test_spec.rb +3 -5
- data/spec/hybrid_platforms_conductor_test/helpers/actions_executor_helpers.rb +2 -2
- data/spec/hybrid_platforms_conductor_test/helpers/cmd_runner_helpers.rb +4 -3
- data/spec/hybrid_platforms_conductor_test/helpers/cmdb_helpers.rb +2 -2
- data/spec/hybrid_platforms_conductor_test/helpers/config_helpers.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/helpers/connector_ssh_helpers.rb +12 -13
- data/spec/hybrid_platforms_conductor_test/helpers/deployer_helpers.rb +245 -56
- data/spec/hybrid_platforms_conductor_test/helpers/executables_helpers.rb +11 -11
- data/spec/hybrid_platforms_conductor_test/helpers/nodes_handler_helpers.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/helpers/platforms_handler_helpers.rb +39 -28
- data/spec/hybrid_platforms_conductor_test/helpers/plugins_helpers.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/helpers/provisioner_proxmox_helpers.rb +86 -111
- data/spec/hybrid_platforms_conductor_test/helpers/reports_handler_helpers.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/helpers/serverless_chef_helpers.rb +3 -3
- data/spec/hybrid_platforms_conductor_test/helpers/services_handler_helpers.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/helpers/tests_runner_helpers.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/mocked_lib/my_test_gem/hpc_plugins/test_plugin_type/{test_plugin_id1.rb → test_plugin_id_1.rb} +0 -0
- data/spec/hybrid_platforms_conductor_test/mocked_lib/my_test_gem/hpc_plugins/test_plugin_type/{test_plugin_id2.rb → test_plugin_id_2.rb} +0 -0
- data/spec/hybrid_platforms_conductor_test/mocked_lib/my_test_gem2/sub_dir/hpc_plugins/test_plugin_type/{test_plugin_id3.rb → test_plugin_id_3.rb} +0 -0
- data/spec/hybrid_platforms_conductor_test/mocked_lib/my_test_gem2/sub_dir/hpc_plugins/{test_plugin_type2/test_plugin_id4.rb → test_plugin_type_2/test_plugin_id_4.rb} +0 -0
- data/spec/hybrid_platforms_conductor_test/platform_handler_plugins/test.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/platform_handler_plugins/{test2.rb → test_2.rb} +0 -0
- data/spec/hybrid_platforms_conductor_test/rubocop_spec.rb +31 -0
- data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/1_node/nodes/node.json +3 -3
- data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/data_bags/nodes/node.json +3 -3
- data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/recipes/cookbooks/test_cookbook_2/libraries/default.rb +1 -0
- data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/several_cookbooks/other_cookbooks/test_cookbook_2/libraries/default.rb +1 -0
- data/spec/hybrid_platforms_conductor_test/shared_examples/deployer.rb +952 -0
- data/spec/hybrid_platforms_conductor_test/test_connector.rb +3 -3
- data/spec/hybrid_platforms_conductor_test/test_log_no_read_plugin.rb +84 -0
- data/spec/hybrid_platforms_conductor_test/test_log_plugin.rb +105 -0
- data/spec/hybrid_platforms_conductor_test/test_plugins/global.rb +1 -0
- data/spec/hybrid_platforms_conductor_test/test_plugins/node.rb +1 -0
- data/spec/hybrid_platforms_conductor_test/test_plugins/node_check.rb +1 -0
- data/spec/hybrid_platforms_conductor_test/test_plugins/platform.rb +1 -0
- data/spec/hybrid_platforms_conductor_test/test_plugins/several_checks.rb +2 -2
- data/spec/hybrid_platforms_conductor_test/test_secrets_reader_plugin.rb +45 -0
- data/spec/hybrid_platforms_conductor_test/tests_report_plugin.rb +5 -6
- data/spec/spec_helper.rb +17 -18
- data/tools/check_md +16 -20
- data/tools/generate_mermaid +1 -1
- metadata +195 -144
- data/spec/hybrid_platforms_conductor_test/helpers/deployer_test_helpers.rb +0 -916
|
@@ -40,7 +40,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Podman do
|
|
|
40
40
|
|
|
41
41
|
it 'creates an instance' do
|
|
42
42
|
with_test_podman_platform do |instance, repository|
|
|
43
|
-
with_cmd_runner_mocked
|
|
43
|
+
with_cmd_runner_mocked [
|
|
44
44
|
['whoami', proc { [0, 'test_user', ''] }],
|
|
45
45
|
[
|
|
46
46
|
"cd #{repository}/docker_image && sudo podman build --tag hpc_image_test_image --security-opt seccomp=/usr/share/containers/seccomp.json --cgroup-manager=cgroupfs .",
|
|
@@ -54,7 +54,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Podman do
|
|
|
54
54
|
'sudo podman container create --name hpc_container_node_test hpc_image_test_image',
|
|
55
55
|
proc { [0, '', ''] }
|
|
56
56
|
]
|
|
57
|
-
]
|
|
57
|
+
] do
|
|
58
58
|
instance.create
|
|
59
59
|
end
|
|
60
60
|
end
|
|
@@ -62,7 +62,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Podman do
|
|
|
62
62
|
|
|
63
63
|
it 'creates an instance as root' do
|
|
64
64
|
with_test_podman_platform do |instance, repository|
|
|
65
|
-
with_cmd_runner_mocked
|
|
65
|
+
with_cmd_runner_mocked [
|
|
66
66
|
['whoami', proc { [0, 'root', ''] }],
|
|
67
67
|
[
|
|
68
68
|
"cd #{repository}/docker_image && podman build --tag hpc_image_test_image --security-opt seccomp=/usr/share/containers/seccomp.json --cgroup-manager=cgroupfs .",
|
|
@@ -76,7 +76,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Podman do
|
|
|
76
76
|
'podman container create --name hpc_container_node_test hpc_image_test_image',
|
|
77
77
|
proc { [0, '', ''] }
|
|
78
78
|
]
|
|
79
|
-
]
|
|
79
|
+
] do
|
|
80
80
|
instance.create
|
|
81
81
|
end
|
|
82
82
|
end
|
|
@@ -84,7 +84,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Podman do
|
|
|
84
84
|
|
|
85
85
|
it 'reuses an instance already created' do
|
|
86
86
|
with_test_podman_platform do |instance, repository|
|
|
87
|
-
with_cmd_runner_mocked
|
|
87
|
+
with_cmd_runner_mocked [
|
|
88
88
|
['whoami', proc { [0, 'test_user', ''] }],
|
|
89
89
|
[
|
|
90
90
|
"cd #{repository}/docker_image && sudo podman build --tag hpc_image_test_image --security-opt seccomp=/usr/share/containers/seccomp.json --cgroup-manager=cgroupfs .",
|
|
@@ -94,7 +94,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Podman do
|
|
|
94
94
|
/^sudo podman container list --all | grep hpc_container_node_test_\d+_\d+$/,
|
|
95
95
|
proc { [0, "062ede10d1c0 localhost/hpc_image_debian_9:latest /usr/sbin/sshd -D 7 days ago Exited (0) 6 days ago hpc_container_node_test_\n", ''] }
|
|
96
96
|
]
|
|
97
|
-
]
|
|
97
|
+
] do
|
|
98
98
|
instance.create
|
|
99
99
|
end
|
|
100
100
|
end
|
|
@@ -102,7 +102,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Podman do
|
|
|
102
102
|
|
|
103
103
|
it 'starts an instance' do
|
|
104
104
|
with_test_podman_platform do |instance, repository|
|
|
105
|
-
with_cmd_runner_mocked
|
|
105
|
+
with_cmd_runner_mocked [
|
|
106
106
|
['whoami', proc { [0, 'test_user', ''] }],
|
|
107
107
|
[
|
|
108
108
|
"cd #{repository}/docker_image && sudo podman build --tag hpc_image_test_image --security-opt seccomp=/usr/share/containers/seccomp.json --cgroup-manager=cgroupfs .",
|
|
@@ -113,7 +113,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Podman do
|
|
|
113
113
|
proc { [0, "062ede10d1c0 localhost/hpc_image_debian_9:latest /usr/sbin/sshd -D 7 days ago Exited (0) 6 days ago hpc_container_node_test_\n", ''] }
|
|
114
114
|
],
|
|
115
115
|
['sudo podman container start --cgroup-manager=cgroupfs hpc_container_node_test', proc { [0, '', ''] }]
|
|
116
|
-
]
|
|
116
|
+
] do
|
|
117
117
|
instance.create
|
|
118
118
|
instance.start
|
|
119
119
|
end
|
|
@@ -122,7 +122,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Podman do
|
|
|
122
122
|
|
|
123
123
|
it 'stops an instance' do
|
|
124
124
|
with_test_podman_platform do |instance, repository|
|
|
125
|
-
with_cmd_runner_mocked
|
|
125
|
+
with_cmd_runner_mocked [
|
|
126
126
|
['whoami', proc { [0, 'test_user', ''] }],
|
|
127
127
|
[
|
|
128
128
|
"cd #{repository}/docker_image && sudo podman build --tag hpc_image_test_image --security-opt seccomp=/usr/share/containers/seccomp.json --cgroup-manager=cgroupfs .",
|
|
@@ -134,7 +134,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Podman do
|
|
|
134
134
|
],
|
|
135
135
|
['sudo podman container start --cgroup-manager=cgroupfs hpc_container_node_test', proc { [0, '', ''] }],
|
|
136
136
|
['sudo podman container stop hpc_container_node_test', proc { [0, '', ''] }]
|
|
137
|
-
]
|
|
137
|
+
] do
|
|
138
138
|
instance.create
|
|
139
139
|
instance.start
|
|
140
140
|
instance.stop
|
|
@@ -144,7 +144,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Podman do
|
|
|
144
144
|
|
|
145
145
|
it 'destroys an instance' do
|
|
146
146
|
with_test_podman_platform do |instance, repository|
|
|
147
|
-
with_cmd_runner_mocked
|
|
147
|
+
with_cmd_runner_mocked [
|
|
148
148
|
['whoami', proc { [0, 'test_user', ''] }],
|
|
149
149
|
[
|
|
150
150
|
"cd #{repository}/docker_image && sudo podman build --tag hpc_image_test_image --security-opt seccomp=/usr/share/containers/seccomp.json --cgroup-manager=cgroupfs .",
|
|
@@ -155,7 +155,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Podman do
|
|
|
155
155
|
proc { [0, "062ede10d1c0 localhost/hpc_image_debian_9:latest /usr/sbin/sshd -D 7 days ago Exited (0) 6 days ago hpc_container_node_test_\n", ''] }
|
|
156
156
|
],
|
|
157
157
|
['sudo podman container rm hpc_container_node_test', proc { [0, '', ''] }]
|
|
158
|
-
]
|
|
158
|
+
] do
|
|
159
159
|
instance.create
|
|
160
160
|
instance.destroy
|
|
161
161
|
end
|
|
@@ -163,14 +163,14 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Podman do
|
|
|
163
163
|
end
|
|
164
164
|
|
|
165
165
|
it 'gets the status of a missing instance' do
|
|
166
|
-
with_test_podman_platform do |instance
|
|
166
|
+
with_test_podman_platform do |instance|
|
|
167
167
|
expect(instance.state).to eq :missing
|
|
168
168
|
end
|
|
169
169
|
end
|
|
170
170
|
|
|
171
171
|
it 'gets the status of a created instance' do
|
|
172
172
|
with_test_podman_platform do |instance, repository|
|
|
173
|
-
with_cmd_runner_mocked
|
|
173
|
+
with_cmd_runner_mocked [
|
|
174
174
|
['whoami', proc { [0, 'test_user', ''] }],
|
|
175
175
|
[
|
|
176
176
|
"cd #{repository}/docker_image && sudo podman build --tag hpc_image_test_image --security-opt seccomp=/usr/share/containers/seccomp.json --cgroup-manager=cgroupfs .",
|
|
@@ -181,7 +181,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Podman do
|
|
|
181
181
|
proc { [0, "062ede10d1c0 localhost/hpc_image_debian_9:latest /usr/sbin/sshd -D 7 days ago Exited (0) 6 days ago hpc_container_node_test_\n", ''] }
|
|
182
182
|
],
|
|
183
183
|
['sudo podman container inspect hpc_container_node_test', proc { [0, '[{"State":{"Status": "created"}}]', ''] }]
|
|
184
|
-
]
|
|
184
|
+
] do
|
|
185
185
|
instance.create
|
|
186
186
|
expect(instance.state).to eq :created
|
|
187
187
|
end
|
|
@@ -190,7 +190,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Podman do
|
|
|
190
190
|
|
|
191
191
|
it 'gets the IP of a created instance' do
|
|
192
192
|
with_test_podman_platform do |instance, repository|
|
|
193
|
-
with_cmd_runner_mocked
|
|
193
|
+
with_cmd_runner_mocked [
|
|
194
194
|
['whoami', proc { [0, 'test_user', ''] }],
|
|
195
195
|
[
|
|
196
196
|
"cd #{repository}/docker_image && sudo podman build --tag hpc_image_test_image --security-opt seccomp=/usr/share/containers/seccomp.json --cgroup-manager=cgroupfs .",
|
|
@@ -201,7 +201,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Podman do
|
|
|
201
201
|
proc { [0, "062ede10d1c0 localhost/hpc_image_debian_9:latest /usr/sbin/sshd -D 7 days ago Exited (0) 6 days ago hpc_container_node_test_\n", ''] }
|
|
202
202
|
],
|
|
203
203
|
['sudo podman container inspect hpc_container_node_test | grep IPAddress', proc { [0, ' "IPAddress": "192.168.42.42",', ''] }]
|
|
204
|
-
]
|
|
204
|
+
] do
|
|
205
205
|
instance.create
|
|
206
206
|
expect(instance.ip).to eq '192.168.42.42'
|
|
207
207
|
end
|
data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/config_dsl_spec.rb
CHANGED
|
@@ -2,11 +2,11 @@ require 'hybrid_platforms_conductor/hpc_plugins/provisioner/proxmox'
|
|
|
2
2
|
|
|
3
3
|
describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
|
|
4
4
|
|
|
5
|
-
context 'checking Config DSL extensions' do
|
|
5
|
+
context 'when checking Config DSL extensions' do
|
|
6
6
|
|
|
7
7
|
it 'declares proxmox configuratin in Config DSL' do
|
|
8
|
-
with_repository do
|
|
9
|
-
platforms = <<~
|
|
8
|
+
with_repository do
|
|
9
|
+
platforms = <<~EO_CONFIG
|
|
10
10
|
proxmox(
|
|
11
11
|
api_url: 'https://my-proxmox.my-domain.com:8006',
|
|
12
12
|
sync_node: 'test_node',
|
|
@@ -60,7 +60,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
|
|
|
60
60
|
},
|
|
61
61
|
default_timeout: 666
|
|
62
62
|
)
|
|
63
|
-
|
|
63
|
+
EO_CONFIG
|
|
64
64
|
with_platforms platforms do
|
|
65
65
|
expect(test_config.proxmox_servers).to eq [
|
|
66
66
|
{
|
|
@@ -2,7 +2,7 @@ require 'hybrid_platforms_conductor/hpc_plugins/provisioner/proxmox'
|
|
|
2
2
|
|
|
3
3
|
describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
|
|
4
4
|
|
|
5
|
-
context 'checking containers creation' do
|
|
5
|
+
context 'when checking containers creation' do
|
|
6
6
|
|
|
7
7
|
it 'creates an instance' do
|
|
8
8
|
with_test_proxmox_platform do |instance|
|
|
@@ -11,7 +11,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
|
|
|
11
11
|
mock_proxmox_to_get_nodes_info
|
|
12
12
|
]
|
|
13
13
|
instance.create
|
|
14
|
-
expect(
|
|
14
|
+
expect(proxmox_create_options).to eq(
|
|
15
15
|
'cores' => 2,
|
|
16
16
|
'cpulimit' => 2,
|
|
17
17
|
'description' => "===== HPC info =====\nnode: node\nenvironment: test\ndebug: false\n",
|
|
@@ -23,7 +23,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
|
|
|
23
23
|
'password' => 'root_pwd',
|
|
24
24
|
'rootfs' => 'local-lvm:10',
|
|
25
25
|
'searchdomain' => 'my-domain.com'
|
|
26
|
-
|
|
26
|
+
)
|
|
27
27
|
end
|
|
28
28
|
end
|
|
29
29
|
|
|
@@ -39,7 +39,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
|
|
|
39
39
|
expected_file_id: 'node_really_big_environment_name_that_will_exceed_for_sure_the_limit_of_hostnames_really_big_environment_name_that_will_exceed_for_sure_the_limit_of_hostnames_really_big_environment_name_that_will_exceed_for_sure_the_limit_of_hostnam-258ca1fc'
|
|
40
40
|
)
|
|
41
41
|
instance.create
|
|
42
|
-
expect(
|
|
42
|
+
expect(proxmox_create_options['hostname']).to eq expected_hostname
|
|
43
43
|
end
|
|
44
44
|
end
|
|
45
45
|
|
|
@@ -54,7 +54,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
|
|
|
54
54
|
expected_sudo: false
|
|
55
55
|
)
|
|
56
56
|
instance.create
|
|
57
|
-
expect(
|
|
57
|
+
expect(proxmox_create_options).to eq(
|
|
58
58
|
'cores' => 2,
|
|
59
59
|
'cpulimit' => 2,
|
|
60
60
|
'description' => "===== HPC info =====\nnode: node\nenvironment: test\ndebug: false\n",
|
|
@@ -66,7 +66,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
|
|
|
66
66
|
'password' => 'root_pwd',
|
|
67
67
|
'rootfs' => 'local-lvm:10',
|
|
68
68
|
'searchdomain' => 'my-domain.com'
|
|
69
|
-
|
|
69
|
+
)
|
|
70
70
|
end
|
|
71
71
|
end
|
|
72
72
|
|
|
@@ -110,7 +110,8 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
|
|
|
110
110
|
|
|
111
111
|
it 'fails to create an instance when the reserve_proxmox_container sync node ends in error' do
|
|
112
112
|
with_test_proxmox_platform do |instance|
|
|
113
|
-
mock_proxmox_calls_with(
|
|
113
|
+
mock_proxmox_calls_with(
|
|
114
|
+
[
|
|
114
115
|
# 1 - The info on existing containers
|
|
115
116
|
mock_proxmox_to_get_nodes_info
|
|
116
117
|
],
|
|
@@ -121,13 +122,15 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
|
|
|
121
122
|
end
|
|
122
123
|
|
|
123
124
|
it 'creates an instance using resources defined for a given node' do
|
|
124
|
-
with_test_proxmox_platform(
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
125
|
+
with_test_proxmox_platform(
|
|
126
|
+
node_metadata: {
|
|
127
|
+
deploy_resources_min: {
|
|
128
|
+
cpus: 24,
|
|
129
|
+
ram_mb: 4096,
|
|
130
|
+
disk_gb: 20
|
|
131
|
+
}
|
|
129
132
|
}
|
|
130
|
-
|
|
133
|
+
) do |instance|
|
|
131
134
|
mock_proxmox_calls_with(
|
|
132
135
|
[
|
|
133
136
|
# 1 - The info on existing containers
|
|
@@ -135,7 +138,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
|
|
|
135
138
|
]
|
|
136
139
|
)
|
|
137
140
|
instance.create
|
|
138
|
-
expect(
|
|
141
|
+
expect(proxmox_create_options).to eq(
|
|
139
142
|
'cores' => 24,
|
|
140
143
|
'cpulimit' => 24,
|
|
141
144
|
'description' => "===== HPC info =====\nnode: node\nenvironment: test\ndebug: false\n",
|
|
@@ -147,7 +150,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
|
|
|
147
150
|
'password' => 'root_pwd',
|
|
148
151
|
'rootfs' => 'local-lvm:20',
|
|
149
152
|
'searchdomain' => 'my-domain.com'
|
|
150
|
-
|
|
153
|
+
)
|
|
151
154
|
end
|
|
152
155
|
end
|
|
153
156
|
|
|
@@ -164,23 +167,19 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
|
|
|
164
167
|
}
|
|
165
168
|
],
|
|
166
169
|
extra_expects: proc do |proxmox|
|
|
167
|
-
expect(proxmox).to receive(:get).with('nodes/pve_node_name/lxc')
|
|
168
|
-
[
|
|
169
|
-
{
|
|
170
|
-
'vmid' => '1042'
|
|
171
|
-
}
|
|
172
|
-
]
|
|
173
|
-
end
|
|
174
|
-
expect(proxmox).to receive(:get).with('nodes/pve_node_name/lxc/1042/config') do
|
|
170
|
+
expect(proxmox).to receive(:get).with('nodes/pve_node_name/lxc').and_return [
|
|
175
171
|
{
|
|
176
|
-
'
|
|
177
|
-
'description' => <<~EOS
|
|
178
|
-
===== HPC info =====
|
|
179
|
-
node: node
|
|
180
|
-
environment: test
|
|
181
|
-
EOS
|
|
172
|
+
'vmid' => '1042'
|
|
182
173
|
}
|
|
183
|
-
|
|
174
|
+
]
|
|
175
|
+
expect(proxmox).to receive(:get).with('nodes/pve_node_name/lxc/1042/config').and_return(
|
|
176
|
+
'net0' => 'ip=192.168.0.101/32',
|
|
177
|
+
'description' => <<~EO_DESCRIPTION
|
|
178
|
+
===== HPC info =====
|
|
179
|
+
node: node
|
|
180
|
+
environment: test
|
|
181
|
+
EO_DESCRIPTION
|
|
182
|
+
)
|
|
184
183
|
end
|
|
185
184
|
)
|
|
186
185
|
],
|
|
@@ -236,22 +235,18 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
|
|
|
236
235
|
}
|
|
237
236
|
],
|
|
238
237
|
extra_expects: proc do |proxmox|
|
|
239
|
-
expect(proxmox).to receive(:get).with('nodes/pve_node_name/lxc')
|
|
240
|
-
[
|
|
241
|
-
{
|
|
242
|
-
'vmid' => '1042'
|
|
243
|
-
}
|
|
244
|
-
]
|
|
245
|
-
end
|
|
246
|
-
expect(proxmox).to receive(:get).with('nodes/pve_node_name/lxc/1042/config') do
|
|
238
|
+
expect(proxmox).to receive(:get).with('nodes/pve_node_name/lxc').and_return [
|
|
247
239
|
{
|
|
248
|
-
'
|
|
249
|
-
===== HPC info =====
|
|
250
|
-
node: node
|
|
251
|
-
environment: other_environment
|
|
252
|
-
EOS
|
|
240
|
+
'vmid' => '1042'
|
|
253
241
|
}
|
|
254
|
-
|
|
242
|
+
]
|
|
243
|
+
expect(proxmox).to receive(:get).with('nodes/pve_node_name/lxc/1042/config').and_return(
|
|
244
|
+
'description' => <<~EO_DESCRIPTION
|
|
245
|
+
===== HPC info =====
|
|
246
|
+
node: node
|
|
247
|
+
environment: other_environment
|
|
248
|
+
EO_DESCRIPTION
|
|
249
|
+
)
|
|
255
250
|
end
|
|
256
251
|
)
|
|
257
252
|
]
|
|
@@ -271,13 +266,11 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
|
|
|
271
266
|
}
|
|
272
267
|
],
|
|
273
268
|
extra_expects: proc do |proxmox|
|
|
274
|
-
expect(proxmox).to receive(:get).with('nodes/pve_node_name/lxc')
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
]
|
|
280
|
-
end
|
|
269
|
+
expect(proxmox).to receive(:get).with('nodes/pve_node_name/lxc').and_return [
|
|
270
|
+
{
|
|
271
|
+
'vmid' => '100'
|
|
272
|
+
}
|
|
273
|
+
]
|
|
281
274
|
end
|
|
282
275
|
)
|
|
283
276
|
]
|
|
@@ -2,7 +2,7 @@ require 'hybrid_platforms_conductor/hpc_plugins/provisioner/proxmox'
|
|
|
2
2
|
|
|
3
3
|
describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
|
|
4
4
|
|
|
5
|
-
context 'checking containers destroy' do
|
|
5
|
+
context 'when checking containers destroy' do
|
|
6
6
|
|
|
7
7
|
it 'destroys an instance' do
|
|
8
8
|
with_test_proxmox_platform do |instance|
|
|
@@ -15,11 +15,11 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
|
|
|
15
15
|
)
|
|
16
16
|
instance.create
|
|
17
17
|
instance.destroy
|
|
18
|
-
expect(
|
|
18
|
+
expect(proxmox_destroy_options).to eq(
|
|
19
19
|
'vm_id' => 1024,
|
|
20
20
|
'environment' => 'test',
|
|
21
21
|
'node' => 'node'
|
|
22
|
-
|
|
22
|
+
)
|
|
23
23
|
end
|
|
24
24
|
end
|
|
25
25
|
|
|
@@ -2,7 +2,7 @@ require 'hybrid_platforms_conductor/hpc_plugins/provisioner/proxmox'
|
|
|
2
2
|
|
|
3
3
|
describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
|
|
4
4
|
|
|
5
|
-
context 'checking containers IP retrieval' do
|
|
5
|
+
context 'when checking containers IP retrieval' do
|
|
6
6
|
|
|
7
7
|
it 'returns the IP of a newly created instance' do
|
|
8
8
|
with_test_proxmox_platform do |instance|
|
|
@@ -28,23 +28,19 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
|
|
|
28
28
|
}
|
|
29
29
|
],
|
|
30
30
|
extra_expects: proc do |proxmox|
|
|
31
|
-
expect(proxmox).to receive(:get).with('nodes/pve_node_name/lxc')
|
|
32
|
-
[
|
|
33
|
-
{
|
|
34
|
-
'vmid' => '1042'
|
|
35
|
-
}
|
|
36
|
-
]
|
|
37
|
-
end
|
|
38
|
-
expect(proxmox).to receive(:get).with('nodes/pve_node_name/lxc/1042/config') do
|
|
31
|
+
expect(proxmox).to receive(:get).with('nodes/pve_node_name/lxc').and_return [
|
|
39
32
|
{
|
|
40
|
-
'
|
|
41
|
-
'description' => <<~EOS
|
|
42
|
-
===== HPC info =====
|
|
43
|
-
node: node
|
|
44
|
-
environment: test
|
|
45
|
-
EOS
|
|
33
|
+
'vmid' => '1042'
|
|
46
34
|
}
|
|
47
|
-
|
|
35
|
+
]
|
|
36
|
+
expect(proxmox).to receive(:get).with('nodes/pve_node_name/lxc/1042/config').and_return(
|
|
37
|
+
'net0' => 'ip=192.168.42.101/32',
|
|
38
|
+
'description' => <<~EO_DESCRIPTION
|
|
39
|
+
===== HPC info =====
|
|
40
|
+
node: node
|
|
41
|
+
environment: test
|
|
42
|
+
EO_DESCRIPTION
|
|
43
|
+
)
|
|
48
44
|
end
|
|
49
45
|
)
|
|
50
46
|
],
|
|
@@ -2,15 +2,17 @@ require 'hybrid_platforms_conductor/hpc_plugins/provisioner/proxmox'
|
|
|
2
2
|
|
|
3
3
|
describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
|
|
4
4
|
|
|
5
|
-
context 'checking the reserve_proxmox_container sync tool' do
|
|
5
|
+
context 'when checking the reserve_proxmox_container sync tool' do
|
|
6
6
|
|
|
7
|
-
context 'checking how VMs are being destroyed' do
|
|
7
|
+
context 'when checking how VMs are being destroyed' do
|
|
8
8
|
|
|
9
9
|
it 'releases a previously reserved VM that has been reserved and is running' do
|
|
10
10
|
with_sync_node do
|
|
11
|
-
mock_proxmox(
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
mock_proxmox(
|
|
12
|
+
mocked_pve_nodes: {
|
|
13
|
+
'pve_node_name' => { lxc_containers: { 1042 => { status: 'running', creation_date: (Time.now - 60).utc, node: 'node', environment: 'test_env' } } }
|
|
14
|
+
}
|
|
15
|
+
)
|
|
14
16
|
expect(call_release_proxmox_container(1042, 'node', 'test_env')).to eq({ pve_node: 'pve_node_name' })
|
|
15
17
|
expect_proxmox_actions_to_be [
|
|
16
18
|
[:post, 'nodes/pve_node_name/lxc/1042/status/stop'],
|
|
@@ -21,9 +23,11 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
|
|
|
21
23
|
|
|
22
24
|
it 'releases a previously reserved VM that has been reserved and is stopped' do
|
|
23
25
|
with_sync_node do
|
|
24
|
-
mock_proxmox(
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
mock_proxmox(
|
|
27
|
+
mocked_pve_nodes: {
|
|
28
|
+
'pve_node_name' => { lxc_containers: { 1042 => { status: 'stopped', creation_date: (Time.now - 60).utc, node: 'node', environment: 'test_env' } } }
|
|
29
|
+
}
|
|
30
|
+
)
|
|
27
31
|
expect(call_release_proxmox_container(1042, 'node', 'test_env')).to eq({ pve_node: 'pve_node_name' })
|
|
28
32
|
expect_proxmox_actions_to_be [
|
|
29
33
|
[:delete, 'nodes/pve_node_name/lxc/1042']
|
|
@@ -41,12 +45,16 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
|
|
|
41
45
|
|
|
42
46
|
it 'releases a previously reserved VM without impacting other VMs' do
|
|
43
47
|
with_sync_node do
|
|
44
|
-
mock_proxmox(
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
+
mock_proxmox(
|
|
49
|
+
mocked_pve_nodes: {
|
|
50
|
+
'pve_node_name' => {
|
|
51
|
+
lxc_containers: {
|
|
52
|
+
1042 => { status: 'running', creation_date: (Time.now - 60).utc, node: 'node', environment: 'test_env' },
|
|
53
|
+
1043 => { status: 'running', creation_date: (Time.now - 60).utc, node: 'node', environment: 'test_env' }
|
|
54
|
+
}
|
|
55
|
+
}
|
|
48
56
|
}
|
|
49
|
-
|
|
57
|
+
)
|
|
50
58
|
expect(call_release_proxmox_container(1042, 'node', 'test_env')).to eq({ pve_node: 'pve_node_name' })
|
|
51
59
|
expect_proxmox_actions_to_be [
|
|
52
60
|
[:post, 'nodes/pve_node_name/lxc/1042/status/stop'],
|
|
@@ -57,9 +65,11 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
|
|
|
57
65
|
|
|
58
66
|
it 'does not release a previously reserved VM that has now a different node' do
|
|
59
67
|
with_sync_node do
|
|
60
|
-
mock_proxmox(
|
|
61
|
-
|
|
62
|
-
|
|
68
|
+
mock_proxmox(
|
|
69
|
+
mocked_pve_nodes: {
|
|
70
|
+
'pve_node_name' => { lxc_containers: { 1042 => { status: 'stopped', creation_date: (Time.now - 60).utc, node: 'node', environment: 'test_env' } } }
|
|
71
|
+
}
|
|
72
|
+
)
|
|
63
73
|
expect(call_release_proxmox_container(1042, 'other_node', 'test_env')).to eq({})
|
|
64
74
|
expect_proxmox_actions_to_be []
|
|
65
75
|
end
|
|
@@ -67,9 +77,11 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
|
|
|
67
77
|
|
|
68
78
|
it 'does not release a previously reserved VM that has now a different environment' do
|
|
69
79
|
with_sync_node do
|
|
70
|
-
mock_proxmox(
|
|
71
|
-
|
|
72
|
-
|
|
80
|
+
mock_proxmox(
|
|
81
|
+
mocked_pve_nodes: {
|
|
82
|
+
'pve_node_name' => { lxc_containers: { 1042 => { status: 'stopped', creation_date: (Time.now - 60).utc, node: 'node', environment: 'test_env' } } }
|
|
83
|
+
}
|
|
84
|
+
)
|
|
73
85
|
expect(call_release_proxmox_container(1042, 'node', 'other_test_env')).to eq({})
|
|
74
86
|
expect_proxmox_actions_to_be []
|
|
75
87
|
end
|