Class: BeakerHostGenerator::CLI
- Inherits:
-
Object
- Object
- BeakerHostGenerator::CLI
- Includes:
- Data
- Defined in:
- lib/beaker-hostgenerator/cli.rb
Constant Summary
Constants included from Data
Data::BASE_CONFIG, Data::MAIN_PE_VERSION, Data::PE_TARBALL_SERVER, Data::PE_USE_WIN32
Instance Attribute Summary collapse
-
#options ⇒ Object
readonly
Returns the value of attribute options.
Instance Method Summary collapse
- #execute ⇒ Object
- #execute! ⇒ Object
-
#initialize(argv = ARGV.dup) ⇒ CLI
constructor
A new instance of CLI.
Methods included from Data
base_host_config, generate_osinfo, get_osinfo, get_platform_info, get_platforms, osinfo, osinfo_bhgv1, pe_dir, pe_upgrade_version, pe_version
Constructor Details
#initialize(argv = ARGV.dup) ⇒ CLI
Returns a new instance of CLI.
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
# File 'lib/beaker-hostgenerator/cli.rb', line 15 def initialize(argv = ARGV.dup) @options = { list_platforms_and_roles: false, disable_default_role: false, disable_role_config: false, osinfo_version: 0, hypervisor: 'vmpooler', } argv.push('--help') if argv.empty? optparse = OptionParser.new do |opts| opts. = <<~eos Usage: beaker-hostgenerator [options] <layout> where <layout> takes the following form: <platform>-<arch>[[<arbitrary-roles>,[...]].]<roles>[{<arbitrary-settings>,[...]}][-<arch>[[<arbitrary-roles>,[...]].]<roles>[{<arbitrary-settings>,[...]}]][-<layout>] examples: centos9-64mdca-64a 1 CentOS 9 64 bit node with roles = master, database, agent, dashboard 1 CentOS 9 64 bit node with roles = agent debian11-64m-64ad-64ac-centos9-64a 1 Debian 11 64 bit node with roles = master 1 Debian 11 64 bit node with roles = agent, database 1 Debian 11 64 bit node with roles = agent, dashboard 1 CentOS 9 64 bit node with roles = agent debian11-64m-windows2019_core-64a 1 Debian 11 64 bit node with roles = master 1 Windows 2019 64 bit node with roles = agent example with arbitrary roles: centos9-64compile_master,another_role.ma 1 CentOS 9 64 bit node with roles = master, agent, compile_master, another_role example with arbitrary host settings: centos9-64m{hypervisor=none\\,hostname=static1\\,my-key=my-value}-64a 1 CentOS 9 64 bit node with roles = master, hypervisor = none, node name = static1, and my-key = my-value 1 CentOS 9 64 bit node with roles = agent and the default hypervisor example of a list within arbitrary host settings: centos9-64m{hostname=static1\\,disks=[8,16],my-list=[my-value1]}-64a 1 CentOS 9 64 bit node with roles = master, node name = static1 and lists: disks: - 8 - 16 my-list: - my-value1 1 CentOS 9 64 bit node with roles = agent and the default hypervisor Generally, it is expected that beaker-hostgenerator output will be redirected to a file, for example: beaker-hostgenerator centos9-64ma > host.cfg This can then be used in a Beaker call instead of a static Beaker config. eos opts.on('-l', '--list', 'List beaker-hostgenerator supported platforms, roles, and hypervisors. ' << 'Does not produce host config.') do @options[:list_supported_values] = true end opts.on('--templates-only', 'Generate a reduced output including only the templates from each host.') do @options[:templates_only] = true end opts.on('-t', '--hypervisor HYPERVISOR', 'Set beaker-hostgenerator default hypervisor. ') do |h| @options[:hypervisor] = h end opts.on('--pe_upgrade_dir UPGRADE_PATH', 'Explicitly set pe_upgrade_dir attribute on generated hosts. ') do |p| @options[:pe_upgrade_dir] = p end opts.on('--pe_upgrade_ver UPGRADE_VERSION', 'Explicitly set pe_upgrade_ver attribute on generated hosts. ') do |p| @options[:pe_upgrade_ver] = p end opts.on('--pe_dir PATH', 'Explicitly set pe_dir attribute on generated hosts. ') do |p| @options[:pe_dir] = p end opts.on('--pe_ver VERSION', 'Explicitly set pe_ver attribute on generated hosts. ') do |p| @options[:pe_ver] = p end opts.on('--disable-role-config', 'Do not include role-specific configuration.') do @options[:disable_role_config] = true end opts.on('--disable-default-role', "Do not include the default 'agent' role.") do @options[:disable_default_role] = true end opts.on('--osinfo-version MAJOR_VERSION', 'Use OSINFO for specified beaker-hostgenerator version. ' << 'Allows early access to future version of OSINFO data structure ' << 'used to generate host configs.') do |version| version = version.to_i raise "Invalid beaker-hostgenerator version: #{version}" unless [0, 1].include? version @options[:osinfo_version] = version end opts.on('--global-config KEYVALUE_STRING', 'General configuration settings to be included as-is in the ' << "CONFIG section. Value should be in the form '{key=value,...}'.") do |p| @options[:global_config] = p end opts.on('-h', '--help', 'Display command help.') do @options[:help] = opts.to_s end opts.on('-v', '--version', 'Display beaker-hostgenerator version number.') do @options[:version] = true end end optparse.parse!(argv) @layout = argv[0] end |
Instance Attribute Details
#options ⇒ Object (readonly)
Returns the value of attribute options.
13 14 15 |
# File 'lib/beaker-hostgenerator/cli.rb', line 13 def @options end |
Instance Method Details
#execute ⇒ Object
155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 |
# File 'lib/beaker-hostgenerator/cli.rb', line 155 def execute if @options[:help] @options[:help] # Value is help text string elsif @options[:version] BeakerHostGenerator::Version::STRING elsif @options[:list_supported_values] supported_values_help_text elsif @options[:templates_only] require 'json' config = BeakerHostGenerator::Generator.new.generate(@layout, @options) templates = BeakerHostGenerator::AbsSupport.extract_templates(config) templates.to_json else config = BeakerHostGenerator::Generator.new.generate(@layout, @options) config.to_yaml end end |
#execute! ⇒ Object
173 174 175 |
# File 'lib/beaker-hostgenerator/cli.rb', line 173 def execute! puts execute end |