Class: Pvectl::Models::AptPackage

Inherits:
Base
  • Object
show all
Defined in:
lib/pvectl/models/apt_package.rb

Overview

Represents an APT package on a Proxmox node.

Single model serves both pending updates (‘/apt/update`) and installed package versions (`/apt/versions`). Some attributes only apply to one API: `notify_status` to pending updates, `current_state`, `manager_version`, `running_kernel` to versions.

Examples:

Creating a pending update instance

pkg = AptPackage.new(
  Package: "pve-manager",
  Version: "8.2.4-1",
  OldVersion: "8.2.3-1",
  Origin: "Proxmox",
  node: "pve1"
)
pkg.package # => "pve-manager"
pkg.upgrade? # => true

See Also:

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attrs = {}) ⇒ AptPackage

Creates a new AptPackage instance.

Accepts Proxmox API capitalized keys (‘Package`, `OldVersion`, …) as well as snake_case / dasherized variants. Indifferent access on keys.

Parameters:

  • attrs (Hash) (defaults to: {})

    package attributes from API



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/pvectl/models/apt_package.rb', line 74

def initialize(attrs = {})
  super
  @package = attributes[:Package] || attributes[:package]
  @title = attributes[:Title] || attributes[:title]
  @version = attributes[:Version] || attributes[:version]
  @old_version = attributes[:OldVersion] || attributes[:old_version] || attributes[:"old-version"]
  @origin = attributes[:Origin] || attributes[:origin]
  @section = attributes[:Section] || attributes[:section]
  @priority = attributes[:Priority] || attributes[:priority]
  @arch = attributes[:Arch] || attributes[:arch]
  @description = attributes[:Description] || attributes[:description]
  @notify_status = attributes[:NotifyStatus] || attributes[:notify_status] || attributes[:"notify-status"]
  @current_state = attributes[:CurrentState] || attributes[:current_state] || attributes[:"current-state"]
  @manager_version = attributes[:ManagerVersion] || attributes[:manager_version] || attributes[:"manager-version"]
  @running_kernel = attributes[:RunningKernel] || attributes[:running_kernel] || attributes[:"running-kernel"]
  @node = attributes[:node]
end

Instance Attribute Details

#archString? (readonly)

Returns architecture (amd64, arm64, all, …).

Returns:

  • (String, nil)

    architecture (amd64, arm64, all, …)



48
49
50
# File 'lib/pvectl/models/apt_package.rb', line 48

def arch
  @arch
end

#current_stateString? (readonly)

Returns current installed state (versions only).

Returns:

  • (String, nil)

    current installed state (versions only)



57
58
59
# File 'lib/pvectl/models/apt_package.rb', line 57

def current_state
  @current_state
end

#descriptionString? (readonly)

Returns package description.

Returns:

  • (String, nil)

    package description



51
52
53
# File 'lib/pvectl/models/apt_package.rb', line 51

def description
  @description
end

#manager_versionString? (readonly)

Returns pve-manager API server version (versions only).

Returns:

  • (String, nil)

    pve-manager API server version (versions only)



60
61
62
# File 'lib/pvectl/models/apt_package.rb', line 60

def manager_version
  @manager_version
end

#nodeString? (readonly)

Returns node name this package belongs to.

Returns:

  • (String, nil)

    node name this package belongs to



66
67
68
# File 'lib/pvectl/models/apt_package.rb', line 66

def node
  @node
end

#notify_statusString? (readonly)

Returns notify status (pending updates only).

Returns:

  • (String, nil)

    notify status (pending updates only)



54
55
56
# File 'lib/pvectl/models/apt_package.rb', line 54

def notify_status
  @notify_status
end

#old_versionString? (readonly)

Returns currently installed version.

Returns:

  • (String, nil)

    currently installed version



36
37
38
# File 'lib/pvectl/models/apt_package.rb', line 36

def old_version
  @old_version
end

#originString? (readonly)

Returns package origin (e.g., “Proxmox”, “Debian”).

Returns:

  • (String, nil)

    package origin (e.g., “Proxmox”, “Debian”)



39
40
41
# File 'lib/pvectl/models/apt_package.rb', line 39

def origin
  @origin
end

#packageString? (readonly)

Returns package name.

Returns:

  • (String, nil)

    package name



27
28
29
# File 'lib/pvectl/models/apt_package.rb', line 27

def package
  @package
end

#priorityString? (readonly)

Returns package priority.

Returns:

  • (String, nil)

    package priority



45
46
47
# File 'lib/pvectl/models/apt_package.rb', line 45

def priority
  @priority
end

#running_kernelString? (readonly)

Returns running kernel (proxmox-ve package, versions only).

Returns:

  • (String, nil)

    running kernel (proxmox-ve package, versions only)



63
64
65
# File 'lib/pvectl/models/apt_package.rb', line 63

def running_kernel
  @running_kernel
end

#sectionString? (readonly)

Returns package section.

Returns:

  • (String, nil)

    package section



42
43
44
# File 'lib/pvectl/models/apt_package.rb', line 42

def section
  @section
end

#titleString? (readonly)

Returns short package title.

Returns:

  • (String, nil)

    short package title



30
31
32
# File 'lib/pvectl/models/apt_package.rb', line 30

def title
  @title
end

#versionString? (readonly)

Returns available / target version.

Returns:

  • (String, nil)

    available / target version



33
34
35
# File 'lib/pvectl/models/apt_package.rb', line 33

def version
  @version
end

Instance Method Details

#installed_stateString

Returns the installed package state, defaults to “Installed” when not provided.

Returns:

  • (String)

    installed state



102
103
104
# File 'lib/pvectl/models/apt_package.rb', line 102

def installed_state
  current_state || "Installed"
end

#upgrade?Boolean

Returns true if a different version is available.

Returns:

  • (Boolean)

    true if old_version and version are both set and differ



95
96
97
# File 'lib/pvectl/models/apt_package.rb', line 95

def upgrade?
  !old_version.nil? && !version.nil? && old_version != version
end