Class: OodCore::Cluster
- Inherits:
-
Object
- Object
- OodCore::Cluster
- Defined in:
- lib/ood_core/cluster.rb
Overview
An object that describes a cluster and its given features that third-party code can take advantage of.
Instance Attribute Summary collapse
-
#acls_config ⇒ Hash
readonly
The acls configuration describing the permissions for this cluster.
-
#id ⇒ Symbol
readonly
The unique identifier for a given cluster.
-
#job_config ⇒ Hash
readonly
The job adapter configuration used for this cluster.
-
#login_config ⇒ Hash
readonly
The login configuration used for this cluster.
-
#metadata_config ⇒ Hash
readonly
Metadata configuration providing descriptive information about cluster.
Instance Method Summary collapse
-
#==(other) ⇒ Boolean
The comparison operator.
-
#acls ⇒ Array<Acl::Adapter>
Build the ACL adapters from the ACL list configuration.
-
#allow? ⇒ Boolean
Whether this cluster is allowed to be used.
-
#custom_allow?(feature) ⇒ Boolean
Whether the custom feature is allowed based on the ACLs.
-
#custom_config(feature = nil) ⇒ Hash
The configuration for any custom features or resources for this cluster.
-
#initialize(cluster) ⇒ Cluster
constructor
A new instance of Cluster.
-
#job_adapter ⇒ Job::Adapter
Build a job adapter from the job configuration.
-
#job_allow? ⇒ Boolean
Whether the job feature is allowed based on the ACLs.
-
#login ⇒ OpenStruct
The login used for this cluster.
-
#login_allow? ⇒ Boolean
Whether the login feature is allowed.
-
#metadata ⇒ OpenStruct
Metadata that provides extra information about this cluster.
-
#to_h ⇒ Hash
Convert object to hash.
-
#to_sym ⇒ Symbol
Convert object to symbol.
Constructor Details
#initialize(cluster) ⇒ Cluster
Returns a new instance of Cluster.
38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/ood_core/cluster.rb', line 38 def initialize(cluster) c = cluster.to_h.symbolize_keys # Required options @id = c.fetch(:id) { raise ArgumentError, "No id specified. Missing argument: id" }.to_sym # General options = c.fetch(:metadata, {}).to_h.symbolize_keys @login_config = c.fetch(:login, {}) .to_h.symbolize_keys @job_config = c.fetch(:job, {}) .to_h.symbolize_keys @custom_config = c.fetch(:custom, {}) .to_h.symbolize_keys @acls_config = c.fetch(:acls, []) .map(&:to_h) end |
Instance Attribute Details
#acls_config ⇒ Hash (readonly)
The acls configuration describing the permissions for this cluster
29 30 31 |
# File 'lib/ood_core/cluster.rb', line 29 def acls_config @acls_config end |
#id ⇒ Symbol (readonly)
The unique identifier for a given cluster
13 14 15 |
# File 'lib/ood_core/cluster.rb', line 13 def id @id end |
#job_config ⇒ Hash (readonly)
The job adapter configuration used for this cluster
25 26 27 |
# File 'lib/ood_core/cluster.rb', line 25 def job_config @job_config end |
#login_config ⇒ Hash (readonly)
The login configuration used for this cluster
21 22 23 |
# File 'lib/ood_core/cluster.rb', line 21 def login_config @login_config end |
#metadata_config ⇒ Hash (readonly)
Metadata configuration providing descriptive information about cluster
17 18 19 |
# File 'lib/ood_core/cluster.rb', line 17 def end |
Instance Method Details
#==(other) ⇒ Boolean
The comparison operator
114 115 116 |
# File 'lib/ood_core/cluster.rb', line 114 def ==(other) id == other.to_sym end |
#acls ⇒ Array<Acl::Adapter>
Build the ACL adapters from the ACL list configuration
101 102 103 |
# File 'lib/ood_core/cluster.rb', line 101 def acls build_acls acls_config end |
#allow? ⇒ Boolean
Whether this cluster is allowed to be used
107 108 109 |
# File 'lib/ood_core/cluster.rb', line 107 def allow? acls.all?(&:allow?) end |
#custom_allow?(feature) ⇒ Boolean
Whether the custom feature is allowed based on the ACLs
93 94 95 96 97 |
# File 'lib/ood_core/cluster.rb', line 93 def custom_allow?(feature) allow? && !custom_config(feature).empty? && build_acls(custom_config(feature).fetch(:acls, []).map(&:to_h)).all?(&:allow?) end |
#custom_config(feature = nil) ⇒ Hash
The configuration for any custom features or resources for this cluster
87 88 89 |
# File 'lib/ood_core/cluster.rb', line 87 def custom_config(feature = nil) feature ? @custom_config.fetch(feature.to_sym, {}).to_h.symbolize_keys : @custom_config end |
#job_adapter ⇒ Job::Adapter
Build a job adapter from the job configuration
72 73 74 |
# File 'lib/ood_core/cluster.rb', line 72 def job_adapter Job::Factory.build(job_config) end |
#job_allow? ⇒ Boolean
Whether the job feature is allowed based on the ACLs
78 79 80 81 82 |
# File 'lib/ood_core/cluster.rb', line 78 def job_allow? allow? && !job_config.empty? && build_acls(job_config.fetch(:acls, []).map(&:to_h)).all?(&:allow?) end |
#login ⇒ OpenStruct
The login used for this cluster
60 61 62 |
# File 'lib/ood_core/cluster.rb', line 60 def login OpenStruct.new(login_config) end |
#login_allow? ⇒ Boolean
Whether the login feature is allowed
66 67 68 |
# File 'lib/ood_core/cluster.rb', line 66 def login_allow? allow? && !login.empty? end |
#metadata ⇒ OpenStruct
Metadata that provides extra information about this cluster
54 55 56 |
# File 'lib/ood_core/cluster.rb', line 54 def OpenStruct.new end |
#to_h ⇒ Hash
Convert object to hash
126 127 128 129 130 131 132 133 134 135 |
# File 'lib/ood_core/cluster.rb', line 126 def to_h { id: id, metadata: , login: login_config, job: job_config, custom: custom_config, acls: acls_config } end |
#to_sym ⇒ Symbol
Convert object to symbol
120 121 122 |
# File 'lib/ood_core/cluster.rb', line 120 def to_sym id end |