module CloudstackCli::OptionResolver
Public Instance Methods
resolve_account()
click to toggle source
# File lib/cloudstack-cli/option_resolver.rb 64 def resolve_account 65 if options[:account] 66 if account = client.list_accounts(name: options[:account], listall: true).first 67 options[:account_id] = account['id'] 68 options[:domain_id] = account['domainid'] 69 else 70 say "Error: Account #{options[:account]} not found.", :red 71 exit 1 72 end 73 end 74 options 75 end
resolve_cluster()
click to toggle source
# File lib/cloudstack-cli/option_resolver.rb 244 def resolve_cluster 245 if options[:cluster] 246 unless cluster = client.list_clusters(name: options[:cluster]).first 247 say "Error: Cluster '#{options[:cluster]}' not found.", :red 248 exit 1 249 end 250 options[:cluster_id] = cluster['id'] 251 end 252 options 253 end
resolve_compute_offering()
click to toggle source
# File lib/cloudstack-cli/option_resolver.rb 178 def resolve_compute_offering 179 if offering = client.list_service_offerings(name: options[:offering]).first 180 options[:service_offering_id] = offering['id'] 181 else 182 say "Error: Offering #{options[:offering]} not found.", :red 183 exit 1 184 end 185 options 186 end
resolve_disk_offering()
click to toggle source
# File lib/cloudstack-cli/option_resolver.rb 188 def resolve_disk_offering 189 if options[:disk_offering] 190 unless disk_offering = client.list_disk_offerings(name: options[:disk_offering]).first 191 say "Error: Disk offering '#{options[:disk_offering]}' not found.", :red 192 exit 1 193 end 194 options[:disk_offering_id] = disk_offering['id'] 195 end 196 options 197 end
resolve_domain()
click to toggle source
# File lib/cloudstack-cli/option_resolver.rb 38 def resolve_domain 39 if options[:domain] 40 if domain = client.list_domains(name: options[:domain]).first 41 options[:domain_id] = domain['id'] 42 else 43 say "Error: Domain #{options[:domain]} not found.", :red 44 exit 1 45 end 46 end 47 options 48 end
resolve_host(type = "routing")
click to toggle source
# File lib/cloudstack-cli/option_resolver.rb 232 def resolve_host(type = "routing") 233 if options[:host] 234 args = { name: options[:host], type: type, listall: true } 235 unless host = client.list_hosts(args).first 236 say "Error: Host '#{options[:host]}' not found.", :red 237 exit 1 238 end 239 options[:host_id] = host['id'] 240 end 241 options 242 end
resolve_ip_network_list()
click to toggle source
# File lib/cloudstack-cli/option_resolver.rb 104 def resolve_ip_network_list 105 network_list = [] 106 available_networks = network = client.list_networks( 107 zone_id: options[:zone_id], 108 project_id: options[:project_id] 109 ) 110 if options[:ip_network_list] 111 options[:ip_network_list].each do |item| 112 unless network = available_networks.find { |n| n['name'] == item["name"] } 113 say "Error: Network '#{item["name"]}' not found.", :red 114 exit 1 115 end 116 item.delete("name") 117 network_list << {networkid: network["id"]}.merge(item) 118 end 119 end 120 network_list.compact! 121 if network_list.empty? 122 say "Error: IP network list can't be empty.", :red 123 exit 1 124 end 125 options[:ip_to_network_list] = network_list 126 [:network_ids, :ip_address].each { |k| options.delete(k) } 127 options 128 end
resolve_iso()
click to toggle source
# File lib/cloudstack-cli/option_resolver.rb 130 def resolve_iso 131 if options[:iso] 132 iso = false 133 %w(self featured community).each do |iso_filter| 134 iso = client.list_isos( 135 name: options[:iso], 136 project_id: options[:project_id], 137 isofilter: iso_filter 138 ).first 139 break if iso 140 end 141 if iso 142 options[:iso_id] = iso["id"] 143 else 144 say "Error: Iso '#{options[:iso]}' is invalid.", :red 145 exit 1 146 end 147 end 148 options 149 end
resolve_iso_for_vm_deployment()
click to toggle source
# File lib/cloudstack-cli/option_resolver.rb 151 def resolve_iso_for_vm_deployment 152 unless options[:disk_offering_id] 153 say "Error: a disk offering is required when using iso.", :red 154 exit 1 155 end 156 resolve_iso 157 options[:template_id] = options[:iso_id] 158 options['hypervisor'] = (options[:hypervisor] || 'vmware') 159 options 160 end
resolve_networks()
click to toggle source
# File lib/cloudstack-cli/option_resolver.rb 77 def resolve_networks 78 networks = [] 79 available_networks = network = client.list_networks( 80 zone_id: options[:zone_id], 81 project_id: options[:project_id] 82 ) 83 if options[:networks] 84 options[:networks].each do |name| 85 unless network = available_networks.find { |n| n['name'] == name } 86 say "Error: Network '#{name}' not found.", :red 87 exit 1 88 end 89 networks << network['id'] rescue nil 90 end 91 end 92 networks.compact! 93 if networks.empty? 94 unless default_network = client.list_networks(project_id: options[:project_id]).first 95 say "Error: No default network found.", :red 96 exit 1 97 end 98 networks << available_networks.first['id'] rescue nil 99 end 100 options[:network_ids] = networks.join(',') 101 options 102 end
resolve_project()
click to toggle source
# File lib/cloudstack-cli/option_resolver.rb 50 def resolve_project 51 if options[:project] 52 if %w(ALL -1).include? options[:project] 53 options[:project_id] = "-1" 54 elsif project = client.list_projects(name: options[:project], listall: true).first 55 options[:project_id] = project['id'] 56 else 57 say "Error: Project #{options[:project]} not found.", :red 58 exit 1 59 end 60 end 61 options 62 end
resolve_snapshot()
click to toggle source
# File lib/cloudstack-cli/option_resolver.rb 219 def resolve_snapshot 220 if options[:snapshot] 221 args = { name: options[:snapshot], listall: true } 222 args[:project_id] = options[:project_id] 223 unless snapshot = client.list_snapshots(args).first 224 say "Error: Snapshot '#{options[:snapshot]}' not found.", :red 225 exit 1 226 end 227 options[:snapshot_id] = snapshot['id'] 228 end 229 options 230 end
resolve_template()
click to toggle source
# File lib/cloudstack-cli/option_resolver.rb 162 def resolve_template 163 if options[:template] 164 if template = client.list_templates( 165 name: options[:template], 166 template_filter: "executable", 167 project_id: options[:project_id] 168 ).first 169 options[:template_id] = template['id'] 170 else 171 say "Error: Template #{options[:template]} not found.", :red 172 exit 1 173 end 174 end 175 options 176 end
resolve_virtual_machine(return_vm = false)
click to toggle source
# File lib/cloudstack-cli/option_resolver.rb 199 def resolve_virtual_machine(return_vm = false) 200 if options[:virtual_machine] 201 unless vm = client.list_virtual_machines( 202 name: options[:virtual_machine], 203 listall: true, 204 project_id: options[:project_id] 205 ).find {|vm| vm["name"] == options[:virtual_machine] } 206 say "Error: VM '#{options[:virtual_machine]}' not found.", :red 207 exit 1 208 end 209 210 if return_vm 211 return vm 212 else 213 options[:virtual_machine_id] = vm["id"] 214 end 215 end 216 options 217 end
resolve_zone()
click to toggle source
# File lib/cloudstack-cli/option_resolver.rb 24 def resolve_zone 25 if options[:zone] 26 zones = client.list_zones 27 zone = zones.find {|z| z['name'] == options[:zone] } 28 if !zone 29 msg = options[:zone] ? "Zone '#{options[:zone]}' is invalid." : "No zone found." 30 say "Error: #{msg}", :red 31 exit 1 32 end 33 options[:zone_id] = zone['id'] 34 end 35 options 36 end
vm_options_to_params()
click to toggle source
# File lib/cloudstack-cli/option_resolver.rb 4 def vm_options_to_params 5 resolve_zone 6 resolve_project 7 resolve_compute_offering 8 resolve_template 9 resolve_disk_offering 10 resolve_iso_for_vm_deployment if options[:iso] 11 options[:size] = options[:disk_size] if options[:disk_size] 12 unless options[:template_id] 13 say "Error: Template or ISO is required.", :red 14 exit 1 15 end 16 if options[:ip_network_list] 17 resolve_ip_network_list 18 else 19 resolve_networks 20 end 21 options 22 end