Class: Pvectl::Models::Subscription

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

Overview

Represents a Proxmox subscription record for a specific node.

Immutable value object created by Repositories::Subscription from the ‘/nodes/#node/subscription` API endpoint. One Subscription per node.

For community (unlicensed) nodes the API still returns a record with status=“notfound” or similar; key/productname/etc. are nil in that case.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attrs = {}) ⇒ Subscription

Creates a Subscription value object.

Parameters:

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

    subscription attributes (symbol or string keys)



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/pvectl/models/subscription.rb', line 59

def initialize(attrs = {})
  super
  @node = @attributes[:node]
  @status = @attributes[:status]
  @level = @attributes[:level]
  @productname = @attributes[:productname]
  @key = @attributes[:key]
  @nextduedate = @attributes[:nextduedate]
  @regdate = @attributes[:regdate]
  @checktime = @attributes[:checktime]
  @serverid = @attributes[:serverid]
  @sockets = @attributes[:sockets]
  @url = @attributes[:url]
  @signature = @attributes[:signature]
  @message = @attributes[:message]
end

Instance Attribute Details

#checktimeInteger? (readonly)

Returns last server check timestamp (epoch).

Returns:

  • (Integer, nil)

    last server check timestamp (epoch)



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

def checktime
  @checktime
end

#keyString? (readonly)

Returns subscription key (full, unmasked).

Returns:

  • (String, nil)

    subscription key (full, unmasked)



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

def key
  @key
end

#levelString? (readonly)

Returns subscription level code (c, b, s, p).

Returns:

  • (String, nil)

    subscription level code (c, b, s, p)



24
25
26
# File 'lib/pvectl/models/subscription.rb', line 24

def level
  @level
end

#messageString? (readonly)

Returns human-readable status message.

Returns:

  • (String, nil)

    human-readable status message



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

def message
  @message
end

#nextduedateString? (readonly)

Returns next due date (ISO date string).

Returns:

  • (String, nil)

    next due date (ISO date string)



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

def nextduedate
  @nextduedate
end

#nodeString? (readonly)

Returns node this subscription belongs to.

Returns:

  • (String, nil)

    node this subscription belongs to



18
19
20
# File 'lib/pvectl/models/subscription.rb', line 18

def node
  @node
end

#productnameString? (readonly)

Returns human-readable product name.

Returns:

  • (String, nil)

    human-readable product name



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

def productname
  @productname
end

#regdateString? (readonly)

Returns registration date (ISO date string).

Returns:

  • (String, nil)

    registration date (ISO date string)



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

def regdate
  @regdate
end

#serveridString? (readonly)

Returns server ID for license validation.

Returns:

  • (String, nil)

    server ID for license validation



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

def serverid
  @serverid
end

#signatureString? (readonly)

Returns signature for offline keys.

Returns:

  • (String, nil)

    signature for offline keys



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

def signature
  @signature
end

#socketsInteger? (readonly)

Returns number of sockets covered.

Returns:

  • (Integer, nil)

    number of sockets covered



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

def sockets
  @sockets
end

#statusString? (readonly)

Returns subscription status (active, notfound, invalid, expired, …).

Returns:

  • (String, nil)

    subscription status (active, notfound, invalid, expired, …)



21
22
23
# File 'lib/pvectl/models/subscription.rb', line 21

def status
  @status
end

#urlString? (readonly)

Returns URL to web shop.

Returns:

  • (String, nil)

    URL to web shop



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

def url
  @url
end

Instance Method Details

#active?Boolean

Returns true if subscription is active.

Returns:

  • (Boolean)

    true if subscription is active



77
78
79
# File 'lib/pvectl/models/subscription.rb', line 77

def active?
  status == "active"
end

#missing?Boolean

Returns true if the node has no subscription set.

Returns:

  • (Boolean)

    true if the node has no subscription set



82
83
84
# File 'lib/pvectl/models/subscription.rb', line 82

def missing?
  status.nil? || status == "notfound" || status == "new"
end