Class: Pvectl::Models::Subscription
- 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
-
#checktime ⇒ Integer?
readonly
Last server check timestamp (epoch).
-
#key ⇒ String?
readonly
Subscription key (full, unmasked).
-
#level ⇒ String?
readonly
Subscription level code (c, b, s, p).
-
#message ⇒ String?
readonly
Human-readable status message.
-
#nextduedate ⇒ String?
readonly
Next due date (ISO date string).
-
#node ⇒ String?
readonly
Node this subscription belongs to.
-
#productname ⇒ String?
readonly
Human-readable product name.
-
#regdate ⇒ String?
readonly
Registration date (ISO date string).
-
#serverid ⇒ String?
readonly
Server ID for license validation.
-
#signature ⇒ String?
readonly
Signature for offline keys.
-
#sockets ⇒ Integer?
readonly
Number of sockets covered.
-
#status ⇒ String?
readonly
Subscription status (active, notfound, invalid, expired, …).
-
#url ⇒ String?
readonly
URL to web shop.
Instance Method Summary collapse
-
#active? ⇒ Boolean
True if subscription is active.
-
#initialize(attrs = {}) ⇒ Subscription
constructor
Creates a Subscription value object.
-
#missing? ⇒ Boolean
True if the node has no subscription set.
Constructor Details
#initialize(attrs = {}) ⇒ Subscription
Creates a Subscription value object.
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
#checktime ⇒ Integer? (readonly)
Returns last server check timestamp (epoch).
39 40 41 |
# File 'lib/pvectl/models/subscription.rb', line 39 def checktime @checktime end |
#key ⇒ String? (readonly)
Returns subscription key (full, unmasked).
30 31 32 |
# File 'lib/pvectl/models/subscription.rb', line 30 def key @key end |
#level ⇒ String? (readonly)
Returns subscription level code (c, b, s, p).
24 25 26 |
# File 'lib/pvectl/models/subscription.rb', line 24 def level @level end |
#message ⇒ String? (readonly)
Returns human-readable status message.
54 55 56 |
# File 'lib/pvectl/models/subscription.rb', line 54 def @message end |
#nextduedate ⇒ String? (readonly)
Returns next due date (ISO date string).
33 34 35 |
# File 'lib/pvectl/models/subscription.rb', line 33 def nextduedate @nextduedate end |
#node ⇒ String? (readonly)
Returns node this subscription belongs to.
18 19 20 |
# File 'lib/pvectl/models/subscription.rb', line 18 def node @node end |
#productname ⇒ String? (readonly)
Returns human-readable product name.
27 28 29 |
# File 'lib/pvectl/models/subscription.rb', line 27 def productname @productname end |
#regdate ⇒ String? (readonly)
Returns registration date (ISO date string).
36 37 38 |
# File 'lib/pvectl/models/subscription.rb', line 36 def regdate @regdate end |
#serverid ⇒ String? (readonly)
Returns server ID for license validation.
42 43 44 |
# File 'lib/pvectl/models/subscription.rb', line 42 def serverid @serverid end |
#signature ⇒ String? (readonly)
Returns signature for offline keys.
51 52 53 |
# File 'lib/pvectl/models/subscription.rb', line 51 def signature @signature end |
#sockets ⇒ Integer? (readonly)
Returns number of sockets covered.
45 46 47 |
# File 'lib/pvectl/models/subscription.rb', line 45 def sockets @sockets end |
#status ⇒ String? (readonly)
Returns subscription status (active, notfound, invalid, expired, …).
21 22 23 |
# File 'lib/pvectl/models/subscription.rb', line 21 def status @status end |
#url ⇒ String? (readonly)
Returns 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.
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.
82 83 84 |
# File 'lib/pvectl/models/subscription.rb', line 82 def missing? status.nil? || status == "notfound" || status == "new" end |