Class: VagrantPlugins::Proxmox::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/vagrant-proxmox/config.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfig

Returns a new instance of Config.



138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
# File 'lib/vagrant-proxmox/config.rb', line 138

def initialize
	@endpoint = UNSET_VALUE
	@selected_node = UNSET_VALUE
	@user_name = UNSET_VALUE
	@password = UNSET_VALUE
	@vm_type = UNSET_VALUE
	@openvz_os_template = UNSET_VALUE
	@openvz_template_file = UNSET_VALUE
	@replace_openvz_template_file = false
	@vm_id_range = 900..999
	@vm_name_prefix = 'vagrant_'
	@vm_memory = 512
	@task_timeout = 60
	@task_status_check_interval = 2
	@ssh_timeout = 60
	@ssh_status_check_interval = 5
	@imgcopy_timeout = 120
	@qemu_os = UNSET_VALUE
	@qemu_cores = 1
	@qemu_sockets = 1
	@qemu_iso = UNSET_VALUE
	@qemu_iso_file = UNSET_VALUE
	@replace_qemu_iso_file = false
	@qemu_disk_size = UNSET_VALUE
	@qemu_storage = 'raid'
	@qemu_nic_model = 'e1000'
	@qemu_bridge = 'vmbr0'
end

Instance Attribute Details

#endpointString

The Proxmox REST API endpoint

Returns:

  • (String)


8
9
10
# File 'lib/vagrant-proxmox/config.rb', line 8

def endpoint
  @endpoint
end

#imgcopy_timeoutInteger

The maximum timeout for a proxmox server task if it’s an upload (in seconds)

Returns:

  • (Integer)


83
84
85
# File 'lib/vagrant-proxmox/config.rb', line 83

def imgcopy_timeout
  @imgcopy_timeout
end

#openvz_os_templateString

The openvz os template to use for the virtual machine

Returns:

  • (String)


33
34
35
# File 'lib/vagrant-proxmox/config.rb', line 33

def openvz_os_template
  @openvz_os_template
end

#openvz_template_fileString

The openvz os template file to upload and use for the virtual machine

Returns:

  • (String)


38
39
40
# File 'lib/vagrant-proxmox/config.rb', line 38

def openvz_template_file
  @openvz_template_file
end

#passwordString

The Proxmox password

Returns:

  • (String)


23
24
25
# File 'lib/vagrant-proxmox/config.rb', line 23

def password
  @password
end

#qemu_bridgeString

The qemu network bridge, e.g. ‘vmbr0’ defaults to ‘vmbr0’ for backwards compatability

Returns:

  • (String)


136
137
138
# File 'lib/vagrant-proxmox/config.rb', line 136

def qemu_bridge
  @qemu_bridge
end

#qemu_coresInteger

The number of cores per socket

Returns:

  • (Integer)


93
94
95
# File 'lib/vagrant-proxmox/config.rb', line 93

def qemu_cores
  @qemu_cores
end

#qemu_disk_sizeString

The qemu disk size to use for the virtual machine, e.g. ‘30G’

Returns:

  • (String)


118
119
120
# File 'lib/vagrant-proxmox/config.rb', line 118

def qemu_disk_size
  @qemu_disk_size
end

#qemu_isoString

The qemu iso file to use for the virtual machine

Returns:

  • (String)


103
104
105
# File 'lib/vagrant-proxmox/config.rb', line 103

def qemu_iso
  @qemu_iso
end

#qemu_iso_fileString

The qemu iso file to upload and use for the virtual machine

Returns:

  • (String)


108
109
110
# File 'lib/vagrant-proxmox/config.rb', line 108

def qemu_iso_file
  @qemu_iso_file
end

#qemu_nic_modelString

The qemu network interface card model, e.g. ‘e1000’, ‘virtio’ defaults to ‘e1000’ for backwards compatability

Returns:

  • (String)


130
131
132
# File 'lib/vagrant-proxmox/config.rb', line 130

def qemu_nic_model
  @qemu_nic_model
end

#qemu_osSymbol

The qemu virtual machine operating system, e.g. :l26

Returns:

  • (Symbol)


88
89
90
# File 'lib/vagrant-proxmox/config.rb', line 88

def qemu_os
  @qemu_os
end

#qemu_socketsInteger

The number of CPU sockets

Returns:

  • (Integer)


98
99
100
# File 'lib/vagrant-proxmox/config.rb', line 98

def qemu_sockets
  @qemu_sockets
end

#qemu_storageString

The qemu storage to use for the virtual machine, e.g. ‘local’, ‘raid’, ‘cephstore’ defaults to ‘raid’ for backwards compatability

Returns:

  • (String)


124
125
126
# File 'lib/vagrant-proxmox/config.rb', line 124

def qemu_storage
  @qemu_storage
end

#replace_openvz_template_fileBoolean

Should the openvz os template be replaced (deleted before upload)?

Returns:

  • (Boolean)


43
44
45
# File 'lib/vagrant-proxmox/config.rb', line 43

def replace_openvz_template_file
  @replace_openvz_template_file
end

#replace_qemu_iso_fileBoolean

Should the qemu iso file replaced (deleted before upload)?

Returns:

  • (Boolean)


113
114
115
# File 'lib/vagrant-proxmox/config.rb', line 113

def replace_qemu_iso_file
  @replace_qemu_iso_file
end

#selected_nodeString

The Proxmox preferred cluster node

Returns:

  • (String)


13
14
15
# File 'lib/vagrant-proxmox/config.rb', line 13

def selected_node
  @selected_node
end

#ssh_status_check_intervalInteger, Proc

The interval between two ssh reachability status retrievals (in seconds)

Returns:

  • (Integer, Proc)


78
79
80
# File 'lib/vagrant-proxmox/config.rb', line 78

def ssh_status_check_interval
  @ssh_status_check_interval
end

#ssh_timeoutInteger

The maximum timeout for a ssh connection to a virtual machine (in seconds)

Returns:

  • (Integer)


73
74
75
# File 'lib/vagrant-proxmox/config.rb', line 73

def ssh_timeout
  @ssh_timeout
end

#task_status_check_intervalInteger, Proc

The interval between two proxmox task status retrievals (in seconds)

Returns:

  • (Integer, Proc)


68
69
70
# File 'lib/vagrant-proxmox/config.rb', line 68

def task_status_check_interval
  @task_status_check_interval
end

#task_timeoutInteger

The maximum timeout for a proxmox server task (in seconds)

Returns:

  • (Integer)


63
64
65
# File 'lib/vagrant-proxmox/config.rb', line 63

def task_timeout
  @task_timeout
end

#user_nameString

The Proxmox user name

Returns:

  • (String)


18
19
20
# File 'lib/vagrant-proxmox/config.rb', line 18

def user_name
  @user_name
end

#vm_id_rangeRange

The id range to use for the virtual machines

Returns:

  • (Range)


48
49
50
# File 'lib/vagrant-proxmox/config.rb', line 48

def vm_id_range
  @vm_id_range
end

#vm_memoryInteger

Amount of RAM for the virtual machine in MB

Returns:

  • (Integer)


58
59
60
# File 'lib/vagrant-proxmox/config.rb', line 58

def vm_memory
  @vm_memory
end

#vm_name_prefixString

The prefix for the virtual machine name

Returns:

  • (String)


53
54
55
# File 'lib/vagrant-proxmox/config.rb', line 53

def vm_name_prefix
  @vm_name_prefix
end

#vm_typeSymbol

The virtual machine type, e.g. :openvz or :qemu

Returns:

  • (Symbol)


28
29
30
# File 'lib/vagrant-proxmox/config.rb', line 28

def vm_type
  @vm_type
end

Instance Method Details

#finalize!Object

This is the hook that is called to finalize the object before it is put into use.



168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
# File 'lib/vagrant-proxmox/config.rb', line 168

def finalize!
	@endpoint = nil if @endpoint == UNSET_VALUE
	@selected_node = nil if @endpoint == UNSET_VALUE
	@user_name = nil if @user_name == UNSET_VALUE
	@password = nil if @password == UNSET_VALUE
	@vm_type = nil if @vm_type == UNSET_VALUE
	@openvz_template_file = nil if @openvz_template_file == UNSET_VALUE
	@openvz_os_template = "local:vztmpl/#{File.basename @openvz_template_file}" if @openvz_template_file
	@openvz_os_template = nil if @openvz_os_template == UNSET_VALUE
	@qemu_os = nil if @qemu_os == UNSET_VALUE
	@qemu_iso_file = nil if @qemu_iso_file == UNSET_VALUE
	@qemu_iso = "local:iso/#{File.basename @qemu_iso_file}" if @qemu_iso_file
	@qemu_iso = nil if @qemu_iso == UNSET_VALUE
	@qemu_disk_size = nil if @qemu_disk_size == UNSET_VALUE
	@qemu_disk_size = convert_disk_size_to_gigabyte @qemu_disk_size if @qemu_disk_size
end

#validate(machine) ⇒ Object



185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
# File 'lib/vagrant-proxmox/config.rb', line 185

def validate machine
	errors = []
	errors << I18n.t('vagrant_proxmox.errors.no_endpoint_specified') unless @endpoint
	errors << I18n.t('vagrant_proxmox.errors.no_user_name_specified') unless @user_name
	errors << I18n.t('vagrant_proxmox.errors.no_password_specified') unless @password
	errors << I18n.t('vagrant_proxmox.errors.no_vm_type_specified') unless @vm_type
	if @vm_type == :openvz
		errors << I18n.t('vagrant_proxmox.errors.no_openvz_os_template_or_openvz_template_file_specified_for_type_openvz') unless @openvz_os_template || @openvz_template_file
	end
	if @vm_type == :qemu
		errors << I18n.t('vagrant_proxmox.errors.no_qemu_os_specified_for_vm_type_qemu') unless @qemu_os
		errors << I18n.t('vagrant_proxmox.errors.no_qemu_iso_or_qemu_iso_file_specified_for_vm_type_qemu') unless @qemu_iso || @qemu_iso_file
		errors << I18n.t('vagrant_proxmox.errors.no_qemu_disk_size_specified_for_vm_type_qemu') unless @qemu_disk_size
	end
	{'Proxmox Provider' => errors}
end