class Chef::Knife::Cloud::VraService
Public Class Methods
new(options = {})
click to toggle source
Calls superclass method
# File lib/chef/knife/cloud/vra_service.rb, line 32 def initialize(options = {}) super(config: options) @username = options[:username] @password = options[:password] @base_url = options[:base_url] @tenant = options[:tenant] @verify_ssl = options[:verify_ssl] @page_size = options[:page_size] end
Public Instance Methods
catalog_request(options)
click to toggle source
# File lib/chef/knife/cloud/vra_service.rb, line 123 def catalog_request(options) catalog_request = connection.catalog.request(options[:catalog_id]) catalog_request.cpus = options[:cpus] catalog_request.memory = options[:memory] catalog_request.requested_for = options[:requested_for] catalog_request.lease_days = options[:lease_days] unless options[:lease_days].nil? catalog_request.notes = options[:notes] unless options[:notes].nil? catalog_request.subtenant_id = options[:subtenant_id] unless options[:subtenant_id].nil? options[:extra_params]&.each do |param| catalog_request.set_parameter(param[:key], param[:type], param[:value]) end # rubocop:enable all catalog_request end
connection()
click to toggle source
# File lib/chef/knife/cloud/vra_service.rb, line 43 def connection @client ||= Vra::Client.new( base_url: @base_url, username: @username, password: @password, tenant: @tenant, page_size: @page_size, verify_ssl: @verify_ssl ) end
create_server(options = {})
click to toggle source
# File lib/chef/knife/cloud/vra_service.rb, line 54 def create_server(options = {}) submitted_request = catalog_request(options).submit ui.msg("Catalog request #{submitted_request.id} submitted.") wait_for_request(submitted_request, options[:wait_time].to_i, options[:refresh_rate]) ui.msg("Catalog request complete.\n") request_summary(submitted_request) raise CloudExceptions::ServerCreateError, submitted_request.completion_details if submitted_request.failed? servers = submitted_request.resources.select(&:vm?) raise CloudExceptions::ServerCreateError, "The vRA request created more than one server, but we were only expecting 1" if servers.length > 1 raise CloudExceptions::ServerCreateError, "The vRA request did not create any servers" if servers.length == 0 servers.first end
delete_server(instance_id)
click to toggle source
# File lib/chef/knife/cloud/vra_service.rb, line 70 def delete_server(instance_id) server = get_server(instance_id) server_summary(server) ui.msg("") if server.status == "DELETED" ui.warn("Server is already deleted.\n") return end ui.confirm("Do you really want to delete this server") destroy_request = server.destroy ui.msg("Destroy request #{destroy_request.id} submitted.") wait_for_request(destroy_request) ui.msg("Destroy request complete.") request_summary(destroy_request) end
get_server(instance_id)
click to toggle source
# File lib/chef/knife/cloud/vra_service.rb, line 101 def get_server(instance_id) connection.resources.by_id(instance_id) end
list_catalog_items(entitled)
click to toggle source
# File lib/chef/knife/cloud/vra_service.rb, line 93 def list_catalog_items(entitled) if entitled connection.catalog.entitled_items else connection.catalog.all_items end end
list_servers()
click to toggle source
# File lib/chef/knife/cloud/vra_service.rb, line 89 def list_servers connection.resources.all_resources.select(&:vm?) end
request_summary(request)
click to toggle source
# File lib/chef/knife/cloud/vra_service.rb, line 115 def request_summary(request) ui.msg("") msg_pair("Request Status", request.status) msg_pair("Completion State", request.completion_state) msg_pair("Completion Details", request.completion_details) ui.msg("") end
server_summary(server, _columns_with_info = nil)
click to toggle source
# File lib/chef/knife/cloud/vra_service.rb, line 105 def server_summary(server, _columns_with_info = nil) msg_pair("Server ID", server.id) msg_pair("Server Name", server.name) msg_pair("IP Addresses", server.ip_addresses.nil? ? "none" : server.ip_addresses.join(", ")) msg_pair("Status", server.status) msg_pair("Catalog Name", server.catalog_name) msg_pair("Owner IDs", server.owner_ids.empty? ? "none" : server.owner_ids.join(", ")) msg_pair("Owner Names", server.owner_names.empty? ? "none" : server.owner_names.join(", ")) end