-
Notifications
You must be signed in to change notification settings - Fork 1
/
compute.rb
131 lines (112 loc) · 3.37 KB
/
compute.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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
require 'fog/xenserver'
require 'fog/compute'
module Fog
module Compute
class XenServer < Fog::Service
require 'fog/xenserver/utilities'
require 'fog/xenserver/parser'
requires :xenserver_username
requires :xenserver_password
requires :xenserver_url
recognizes :xenserver_defaults
model_path 'fog/xenserver/models/compute'
model :server
collection :servers
model :host
collection :hosts
collection :vifs
model :vif
collection :storage_repositories
model :storage_repository
collection :pools
model :pool
collection :vbds
model :vbd
collection :vdis
model :vdi
collection :networks
model :network
collection :pifs
model :pif
collection :pbds
model :pbd
model :guest_metrics
model :vbd_metrics
model :host_metrics
model :host_cpu
request_path 'fog/xenserver/requests/compute'
request :create_server
request :create_vif
request :create_vdi
request :create_vbd
request :destroy_vif
request :clone_server
request :destroy_server
request :unplug_vbd
request :eject_vbd
request :insert_vbd
request :destroy_vdi
request :shutdown_server
request :start_vm
request :start_server
request :get_record
request :get_records
request :set_affinity
request :set_attribute
request :reboot_server
request :provision_server
request :scan_sr
request :unplug_pbd
request :destroy_sr
request :create_sr
request :reboot_host
request :disable_host
request :enable_host
request :shutdown_host
class Real
def initialize(options={})
@host = options[:xenserver_url]
@username = options[:xenserver_username]
@password = options[:xenserver_password]
@defaults = options[:xenserver_defaults] || {}
@connection = Fog::XenServer::Connection.new(@host)
@connection.authenticate(@username, @password)
end
def reload
@connection.authenticate(@username, @password)
end
def default_template=(name)
@defaults[:template] = name
end
def default_template
return nil if @defaults[:template].nil?
(servers.custom_templates + servers.builtin_templates).find do |s|
(s.name == @defaults[:template]) or (s.uuid == @defaults[:template])
end
end
def default_network
networks.find { |n| n.name == (@defaults[:network] || "Pool-wide network associated with eth0") }
end
end
class Mock
def self.data
@data ||= Hash.new do |hash, key|
hash[key] = {}
end
end
def self.reset_data(keys=data.keys)
for key in [*keys]
data.delete(key)
end
end
def initialize(options={})
@host = options[:xenserver_pool_master]
@username = options[:xenserver_username]
@password = options[:xenserver_password]
@connection = Fog::Connection.new(@host)
@connection.authenticate(@username, @password)
end
end
end
end
end