Class: VagrantPlugins::Openstack::NovaClient
- Inherits:
-
Object
- Object
- VagrantPlugins::Openstack::NovaClient
show all
- Includes:
- Singleton, Utils
- Defined in:
- lib/vagrant-openstack-provider/client/nova.rb
Instance Method Summary
collapse
-
#add_floating_ip(env, server_id, floating_ip) ⇒ Object
-
#create_server(env, name, image_ref, flavor_ref, networks, keypair) ⇒ Object
-
#delete_server(env, server_id) ⇒ Object
-
#get_all_flavors(env) ⇒ Object
-
#get_all_images(env) ⇒ Object
-
#get_server_details(env, server_id) ⇒ Object
-
#initialize ⇒ NovaClient
constructor
A new instance of NovaClient.
-
#resume_server(env, server_id) ⇒ Object
-
#start_server(env, server_id) ⇒ Object
-
#stop_server(env, server_id) ⇒ Object
-
#suspend_server(env, server_id) ⇒ Object
Methods included from Utils
#authenticated, #handle_response
Constructor Details
Returns a new instance of NovaClient.
13
14
15
16
|
# File 'lib/vagrant-openstack-provider/client/nova.rb', line 13
def initialize
@logger = Log4r::Logger.new('vagrant_openstack::nova')
@session = VagrantPlugins::Openstack.session
end
|
Instance Method Details
#add_floating_ip(env, server_id, floating_ip) ⇒ Object
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
# File 'lib/vagrant-openstack-provider/client/nova.rb', line 124
def add_floating_ip(env, server_id, floating_ip)
authenticated(env) do
check_floating_ip(env, floating_ip)
RestClient.post(
"#{@session.endpoints[:compute]}/servers/#{server_id}/action",
{
addFloatingIp:
{
address: floating_ip
}
}.to_json,
'X-Auth-Token' => @session.token,
:accept => :json,
:content_type => :json) { |res| handle_response(res) }
end
end
|
#create_server(env, name, image_ref, flavor_ref, networks, keypair) ⇒ Object
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
# File 'lib/vagrant-openstack-provider/client/nova.rb', line 38
def create_server(env, name, image_ref, flavor_ref, networks, keypair)
authenticated(env) do
server = {}.tap do |s|
s['name'] = name
s['imageRef'] = image_ref
s['flavorRef'] = flavor_ref
s['key_name'] = keypair
unless networks.nil? || networks.empty?
s['networks'] = []
networks.each do |uuid|
s['networks'] << { uuid: uuid }
end
end
end
server = RestClient.post(
"#{@session.endpoints[:compute]}/servers", { server: server }.to_json,
'X-Auth-Token' => @session.token,
:accept => :json,
:content_type => :json) { |res| handle_response(res) }
JSON.parse(server)['server']['id']
end
end
|
#delete_server(env, server_id) ⇒ Object
63
64
65
66
67
68
69
70
|
# File 'lib/vagrant-openstack-provider/client/nova.rb', line 63
def delete_server(env, server_id)
authenticated(env) do
RestClient.delete(
"#{@session.endpoints[:compute]}/servers/#{server_id}",
'X-Auth-Token' => @session.token,
:accept => :json) { |res| handle_response(res) }
end
end
|
#get_all_flavors(env) ⇒ Object
18
19
20
21
22
23
24
25
26
|
# File 'lib/vagrant-openstack-provider/client/nova.rb', line 18
def get_all_flavors(env)
authenticated(env) do
flavors_json = RestClient.get("#{@session.endpoints[:compute]}/flavors",
'X-Auth-Token' => @session.token,
:accept => :json) { |res| handle_response(res) }
return JSON.parse(flavors_json)['flavors'].map { |fl| Item.new(fl['id'], fl['name']) }
end
end
|
#get_all_images(env) ⇒ Object
28
29
30
31
32
33
34
35
36
|
# File 'lib/vagrant-openstack-provider/client/nova.rb', line 28
def get_all_images(env)
authenticated(env) do
images_json = RestClient.get(
"#{@session.endpoints[:compute]}/images",
'X-Auth-Token' => @session.token, :accept => :json) { |res| handle_response(res) }
JSON.parse(images_json)['images'].map { |im| Item.new(im['id'], im['name']) }
end
end
|
#get_server_details(env, server_id) ⇒ Object
113
114
115
116
117
118
119
120
121
122
|
# File 'lib/vagrant-openstack-provider/client/nova.rb', line 113
def get_server_details(env, server_id)
authenticated(env) do
server_details = RestClient.get(
"#{@session.endpoints[:compute]}/servers/#{server_id}",
'X-Auth-Token' => @session.token,
:accept => :json) { |res| handle_response(res) }
return JSON.parse(server_details)['server']
end
end
|
#resume_server(env, server_id) ⇒ Object
82
83
84
85
86
87
88
89
90
91
|
# File 'lib/vagrant-openstack-provider/client/nova.rb', line 82
def resume_server(env, server_id)
authenticated(env) do
RestClient.post(
"#{@session.endpoints[:compute]}/servers/#{server_id}/action", '{ "resume": null }',
'X-Auth-Token' => @session.token,
:accept => :json,
:content_type => :json) { |res| handle_response(res) }
end
end
|
#start_server(env, server_id) ⇒ Object
103
104
105
106
107
108
109
110
111
|
# File 'lib/vagrant-openstack-provider/client/nova.rb', line 103
def start_server(env, server_id)
authenticated(env) do
RestClient.post(
"#{@session.endpoints[:compute]}/servers/#{server_id}/action", '{ "os-start": null }',
'X-Auth-Token' => @session.token,
:accept => :json,
:content_type => :json) { |res| handle_response(res) }
end
end
|
#stop_server(env, server_id) ⇒ Object
93
94
95
96
97
98
99
100
101
|
# File 'lib/vagrant-openstack-provider/client/nova.rb', line 93
def stop_server(env, server_id)
authenticated(env) do
RestClient.post(
"#{@session.endpoints[:compute]}/servers/#{server_id}/action", '{ "os-stop": null }',
'X-Auth-Token' => @session.token,
:accept => :json,
:content_type => :json) { |res| handle_response(res) }
end
end
|
#suspend_server(env, server_id) ⇒ Object
72
73
74
75
76
77
78
79
80
|
# File 'lib/vagrant-openstack-provider/client/nova.rb', line 72
def suspend_server(env, server_id)
authenticated(env) do
RestClient.post(
"#{@session.endpoints[:compute]}/servers/#{server_id}/action", '{ "suspend": null }',
'X-Auth-Token' => @session.token,
:accept => :json,
:content_type => :json) { |res| handle_response(res) }
end
end
|