Class: Chef::Knife::Cloud::VraService
- Inherits:
-
Service
- Object
- Service
- Chef::Knife::Cloud::VraService
show all
- Includes:
- VraServiceHelpers
- Defined in:
- lib/chef/knife/cloud/vra_service.rb
Instance Method Summary
collapse
#check_for_missing_config_values!, #create_service_instance, #validate!, #verify_ssl?, #wait_for_request
Constructor Details
#initialize(options = {}) ⇒ VraService
Returns a new instance of VraService.
32
33
34
35
36
37
38
39
40
41
|
# 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
|
Instance Method Details
#catalog_request(options) ⇒ Object
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
# File 'lib/chef/knife/cloud/vra_service.rb', line 126
def catalog_request(options)
catalog_request = connection.catalog.request(options[:catalog_id])
catalog_request.image_mapping = options[:image_mapping]
catalog_request.flavor_mapping = options[:flavor_mapping]
catalog_request.name = options[:name]
catalog_request.project_id = options[:project_id]
catalog_request.version = options[:version] unless options[:version].nil?
options[:extra_params]&.each do |param|
catalog_request.set_parameter(param[:key], param[:type], param[:value])
end
catalog_request
end
|
#connection ⇒ Object
43
44
45
46
47
48
49
50
51
52
|
# 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 = {}) ⇒ Object
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
# 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] || 600).to_i, options[:refresh_rate] || 2)
ui.msg("Catalog request complete.\n")
request_summary(submitted_request)
raise CloudExceptions::ServerCreateError 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(deployment_id) ⇒ Object
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
# File 'lib/chef/knife/cloud/vra_service.rb', line 70
def delete_server(deployment_id)
deployment = get_deployment(deployment_id)
server = deployment.resources.select(&:vm?).first
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 = deployment.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_deployment(deployment_id) ⇒ Object
102
103
104
|
# File 'lib/chef/knife/cloud/vra_service.rb', line 102
def get_deployment(deployment_id)
connection.deployments.by_id(deployment_id)
end
|
#get_server(deployment_id) ⇒ Object
106
107
108
109
|
# File 'lib/chef/knife/cloud/vra_service.rb', line 106
def get_server(deployment_id)
deployment = connection.deployments.by_id(deployment_id)
deployment.resources.select(&:vm?).first
end
|
#list_catalog_items(project_id, entitled) ⇒ Object
94
95
96
97
98
99
100
|
# File 'lib/chef/knife/cloud/vra_service.rb', line 94
def list_catalog_items(project_id, entitled)
if entitled
connection.catalog.entitled_items(project_id)
else
connection.catalog.all_items
end
end
|
#list_servers ⇒ Object
90
91
92
|
# File 'lib/chef/knife/cloud/vra_service.rb', line 90
def list_servers
connection.deployments.all
end
|
#request_summary(request) ⇒ Object
120
121
122
123
124
|
# File 'lib/chef/knife/cloud/vra_service.rb', line 120
def request_summary(request)
ui.msg("")
msg_pair("Request Status", request.status)
ui.msg("")
end
|
#server_summary(server, _columns_with_info = nil) ⇒ Object
111
112
113
114
115
116
117
118
|
# File 'lib/chef/knife/cloud/vra_service.rb', line 111
def server_summary(server, _columns_with_info = nil)
deployment = connection.deployments.by_id(server.deployment_id)
msg_pair("Deployment ID", deployment.id)
msg_pair("Deployment Name", deployment.name)
msg_pair("IP Address", server.ip_address.nil? ? "none" : server.ip_address)
msg_pair("Status", server.status)
msg_pair("Owner Names", server.owner_names.empty? ? "none" : server.owner_names)
end
|