Module: Fog::Proxmox

Extended by:
Provider
Defined in:
lib/fog/proxmox.rb,
lib/fog/proxmox/core.rb,
lib/fog/proxmox/hash.rb,
lib/fog/proxmox/json.rb,
lib/fog/proxmox/errors.rb,
lib/fog/compute/proxmox.rb,
lib/fog/network/proxmox.rb,
lib/fog/proxmox/version.rb,
lib/fog/storage/proxmox.rb,
lib/fog/identity/proxmox.rb,
lib/fog/proxmox/variables.rb,
lib/fog/proxmox/attributes.rb,
lib/fog/proxmox/helpers/cpu_helper.rb,
lib/fog/proxmox/helpers/nic_helper.rb,
lib/fog/compute/proxmox/models/disk.rb,
lib/fog/compute/proxmox/models/node.rb,
lib/fog/compute/proxmox/models/task.rb,
lib/fog/network/proxmox/models/node.rb,
lib/fog/proxmox/helpers/disk_helper.rb,
lib/fog/compute/proxmox/models/disks.rb,
lib/fog/compute/proxmox/models/nodes.rb,
lib/fog/compute/proxmox/models/tasks.rb,
lib/fog/identity/proxmox/models/pool.rb,
lib/fog/identity/proxmox/models/role.rb,
lib/fog/identity/proxmox/models/user.rb,
lib/fog/network/proxmox/models/nodes.rb,
lib/fog/compute/proxmox/models/server.rb,
lib/fog/compute/proxmox/models/volume.rb,
lib/fog/identity/proxmox/models/group.rb,
lib/fog/identity/proxmox/models/pools.rb,
lib/fog/identity/proxmox/models/roles.rb,
lib/fog/identity/proxmox/models/users.rb,
lib/fog/compute/proxmox/models/servers.rb,
lib/fog/compute/proxmox/models/storage.rb,
lib/fog/compute/proxmox/models/volumes.rb,
lib/fog/identity/proxmox/models/domain.rb,
lib/fog/identity/proxmox/models/groups.rb,
lib/fog/network/proxmox/models/network.rb,
lib/fog/compute/proxmox/models/snapshot.rb,
lib/fog/compute/proxmox/models/storages.rb,
lib/fog/identity/proxmox/models/domains.rb,
lib/fog/network/proxmox/models/networks.rb,
lib/fog/compute/proxmox/models/interface.rb,
lib/fog/compute/proxmox/models/snapshots.rb,
lib/fog/compute/proxmox/requests/get_vnc.rb,
lib/fog/compute/proxmox/models/interfaces.rb,
lib/fog/compute/proxmox/requests/get_task.rb,
lib/fog/compute/proxmox/requests/log_task.rb,
lib/fog/identity/proxmox/models/principal.rb,
lib/fog/network/proxmox/requests/get_node.rb,
lib/fog/proxmox/helpers/controller_helper.rb,
lib/fog/compute/proxmox/requests/move_disk.rb,
lib/fog/compute/proxmox/requests/next_vmid.rb,
lib/fog/compute/proxmox/requests/stop_task.rb,
lib/fog/identity/proxmox/models/permission.rb,
lib/fog/identity/proxmox/requests/get_pool.rb,
lib/fog/identity/proxmox/requests/get_role.rb,
lib/fog/identity/proxmox/requests/get_user.rb,
lib/fog/compute/proxmox/requests/create_vnc.rb,
lib/fog/compute/proxmox/requests/get_volume.rb,
lib/fog/compute/proxmox/requests/list_nodes.rb,
lib/fog/compute/proxmox/requests/list_tasks.rb,
lib/fog/identity/proxmox/models/domain_type.rb,
lib/fog/identity/proxmox/models/permissions.rb,
lib/fog/identity/proxmox/requests/get_group.rb,
lib/fog/network/proxmox/requests/list_nodes.rb,
lib/fog/network/proxmox/requests/power_node.rb,
lib/fog/compute/proxmox/models/server_config.rb,
lib/fog/compute/proxmox/requests/create_term.rb,
lib/fog/compute/proxmox/requests/move_volume.rb,
lib/fog/compute/proxmox/requests/status_task.rb,
lib/fog/identity/proxmox/requests/get_domain.rb,
lib/fog/identity/proxmox/requests/list_pools.rb,
lib/fog/identity/proxmox/requests/list_roles.rb,
lib/fog/identity/proxmox/requests/list_users.rb,
lib/fog/network/proxmox/requests/get_network.rb,
lib/fog/compute/proxmox/requests/clone_server.rb,
lib/fog/compute/proxmox/requests/create_spice.rb,
lib/fog/compute/proxmox/requests/list_servers.rb,
lib/fog/compute/proxmox/requests/list_volumes.rb,
lib/fog/identity/proxmox/requests/create_pool.rb,
lib/fog/identity/proxmox/requests/create_role.rb,
lib/fog/identity/proxmox/requests/create_user.rb,
lib/fog/identity/proxmox/requests/delete_pool.rb,
lib/fog/identity/proxmox/requests/delete_role.rb,
lib/fog/identity/proxmox/requests/delete_user.rb,
lib/fog/identity/proxmox/requests/list_groups.rb,
lib/fog/identity/proxmox/requests/update_pool.rb,
lib/fog/identity/proxmox/requests/update_role.rb,
lib/fog/identity/proxmox/requests/update_user.rb,
lib/fog/compute/proxmox/requests/action_server.rb,
lib/fog/compute/proxmox/requests/create_backup.rb,
lib/fog/compute/proxmox/requests/create_server.rb,
lib/fog/compute/proxmox/requests/delete_server.rb,
lib/fog/compute/proxmox/requests/delete_volume.rb,
lib/fog/compute/proxmox/requests/list_storages.rb,
lib/fog/compute/proxmox/requests/resize_server.rb,
lib/fog/compute/proxmox/requests/update_server.rb,
lib/fog/identity/proxmox/requests/create_group.rb,
lib/fog/identity/proxmox/requests/delete_group.rb,
lib/fog/identity/proxmox/requests/list_domains.rb,
lib/fog/identity/proxmox/requests/read_version.rb,
lib/fog/identity/proxmox/requests/update_group.rb,
lib/fog/network/proxmox/requests/list_networks.rb,
lib/fog/compute/proxmox/requests/list_snapshots.rb,
lib/fog/compute/proxmox/requests/migrate_server.rb,
lib/fog/identity/proxmox/requests/create_domain.rb,
lib/fog/identity/proxmox/requests/delete_domain.rb,
lib/fog/identity/proxmox/requests/update_domain.rb,
lib/fog/network/proxmox/requests/create_network.rb,
lib/fog/network/proxmox/requests/delete_network.rb,
lib/fog/network/proxmox/requests/update_network.rb,
lib/fog/compute/proxmox/requests/create_snapshot.rb,
lib/fog/compute/proxmox/requests/delete_snapshot.rb,
lib/fog/compute/proxmox/requests/template_server.rb,
lib/fog/compute/proxmox/requests/update_snapshot.rb,
lib/fog/compute/proxmox/requests/resize_container.rb,
lib/fog/identity/proxmox/requests/change_password.rb,
lib/fog/compute/proxmox/requests/get_server_config.rb,
lib/fog/compute/proxmox/requests/get_server_status.rb,
lib/fog/compute/proxmox/requests/rollback_snapshot.rb,
lib/fog/identity/proxmox/requests/list_permissions.rb,
lib/fog/identity/proxmox/requests/check_permissions.rb,
lib/fog/compute/proxmox/requests/get_node_statistics.rb,
lib/fog/compute/proxmox/requests/get_snapshot_config.rb,
lib/fog/identity/proxmox/requests/update_permissions.rb

Overview

Proxmox module

Defined Under Namespace

Modules: Attributes, ControllerHelper, Core, CpuHelper, DiskHelper, Errors, Hash, Json, NicHelper, Variables Classes: Compute, Identity, Network, Storage

Constant Summary collapse

VERSION =
'0.7.0'

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.cacheObject

Returns the value of attribute cache.



46
47
48
# File 'lib/fog/proxmox.rb', line 46

def cache
  @cache
end

.versionObject (readonly)

Returns the value of attribute version.



47
48
49
# File 'lib/fog/proxmox.rb', line 47

def version
  @version
end

Class Method Details

.authenticate(options, connection_options = {}) ⇒ Object



54
55
56
57
# File 'lib/fog/proxmox.rb', line 54

def self.authenticate(options, connection_options = {})
  get_tokens(options, connection_options)
  @cache
end

.authenticated?Boolean

Returns:

  • (Boolean)


59
60
61
# File 'lib/fog/proxmox.rb', line 59

def self.authenticated?
  !@cache.empty?
end

.clear_cacheObject



50
51
52
# File 'lib/fog/proxmox.rb', line 50

def self.clear_cache
  Fog::Proxmox.cache = {}
end

.extract_password(options) ⇒ Object



63
64
65
66
# File 'lib/fog/proxmox.rb', line 63

def self.extract_password(options)
  ticket = options[:pve_ticket]
  options[:pve_password] = ticket unless ticket
end

.get_tokens(options, connection_options = {}) ⇒ Object



68
69
70
71
72
73
74
75
76
77
# File 'lib/fog/proxmox.rb', line 68

def self.get_tokens(options, connection_options = {})
  username          = options[:pve_username].to_s
  password          = options[:pve_password].to_s
  url               = options[:pve_url]
  extract_password(options)
  uri = URI.parse(url)
  @api_path = uri.path
  connection_options = connection_options.merge(path_prefix: @api_path)
  retrieve_tokens(uri, connection_options, username, password) unless authenticated?
end

.retrieve_tokens(uri, connection_options, username, password) ⇒ Object



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
# File 'lib/fog/proxmox.rb', line 79

def self.retrieve_tokens(uri, connection_options, username, password)
  request = {
    expects: [200, 204],
    headers: { 'Accept' => 'application/json' },
    body: "username=#{username}&password=#{password}",
    method: 'POST',
    path: 'access/ticket'
  }

  connection = Fog::Core::Connection.new(
    uri.to_s,
    false,
    connection_options
  )

  response  = connection.request(request)
  data      = Json.get_data(response)
  ticket    = data['ticket']
  username  = data['username']
  csrftoken = data['CSRFPreventionToken']

  now = Time.now
  deadline = Time.at(now.to_i + @ticket_lifetime)
  save_token(username, ticket, csrftoken, deadline)
end

.save_token(username, ticket, csrftoken, deadline) ⇒ Object



105
106
107
108
109
110
111
112
113
# File 'lib/fog/proxmox.rb', line 105

def self.save_token(username, ticket, csrftoken, deadline)
  @cache = {
    username: username,
    ticket: ticket,
    csrftoken: csrftoken,
    deadline: deadline
  }
  Fog::Proxmox.cache = @cache
end