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/proxmox/string.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/ip_helper.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, IpHelper, Json, NicHelper, String, Variables Classes: Compute, Identity, Network, Storage

Constant Summary collapse

VERSION =
'0.13.0'

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.credentialsObject (readonly)

Returns the value of attribute credentials.



43
44
45
# File 'lib/fog/proxmox.rb', line 43

def credentials
  @credentials
end

.versionObject (readonly)

Returns the value of attribute version.



44
45
46
# File 'lib/fog/proxmox.rb', line 44

def version
  @version
end

Class Method Details

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



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

def self.authenticate(options, connection_options = {})
  get_credentials(options, connection_options)
  self
end

.authenticated?Boolean

Returns:

  • (Boolean)


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

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

.clear_credentialsObject



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

def self.clear_credentials
  @credentials = {}
end

.credentials_has_expired?Boolean

Returns:

  • (Boolean)


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

def self.credentials_has_expired?
  authenticated? && @credentials[:deadline] < Time.now
end

.extract_password(options) ⇒ Object



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

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

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



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

def self.get_credentials(options, connection_options = {})
  pve_ticket_lifetime   = options[:pve_ticket_lifetime]
  # Default lifetime ticket is 2 hours
  ticket_lifetime = pve_ticket_lifetime ? pve_ticket_lifetime : 2 * 60 * 60
  username          = options[:pve_username].to_s
  password          = extract_password(options)
  url               = options[:pve_url]
  uri = URI.parse(url)
  @api_path = uri.path
  connection_options = connection_options.merge(path_prefix: @api_path)
  password = @credentials[:ticket] if credentials_has_expired?
  request_credentials(uri, connection_options, username, password, ticket_lifetime)
end

.request_credentials(uri, connection_options, username, password, ticket_lifetime) ⇒ Object



83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/fog/proxmox.rb', line 83

def self.request_credentials(uri, connection_options, username, password, ticket_lifetime)
  request = {
    expects: [200, 204],
    headers: { 'Accept' => 'application/json' },
    body: URI.encode_www_form(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']
  epoch = Time.now.to_i + ticket_lifetime
  deadline = Time.at(epoch)
  save_credentials(username, ticket, csrftoken, deadline)
end

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



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

def self.save_credentials(username, ticket, csrftoken, deadline)
  @credentials = {
    username: username,
    ticket: ticket,
    csrftoken: csrftoken,
    deadline: deadline
  }
end