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.
-
#batch_connect_config(template = nil) ⇒ Hash
The batch connect template configuration used for this cluster.
-
#batch_connect_template(context = {}) ⇒ BatchConnect::Template
Build a batch connect template from the respective configuration.
-
#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.
42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/ood_core/cluster.rb', line 42 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) @batch_connect_config = c.fetch(:batch_connect, {}).to_h.symbolize_keys 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
138 139 140 |
# File 'lib/ood_core/cluster.rb', line 138 def ==(other) id == other.to_sym end |
#acls ⇒ Array<Acl::Adapter>
Build the ACL adapters from the ACL list configuration
125 126 127 |
# File 'lib/ood_core/cluster.rb', line 125 def acls build_acls acls_config end |
#allow? ⇒ Boolean
Whether this cluster is allowed to be used
131 132 133 |
# File 'lib/ood_core/cluster.rb', line 131 def allow? acls.all?(&:allow?) end |
#batch_connect_config(template = nil) ⇒ Hash
The batch connect template configuration used for this cluster
92 93 94 95 96 97 98 |
# File 'lib/ood_core/cluster.rb', line 92 def batch_connect_config(template = nil) if template @batch_connect_config.fetch(template.to_sym, {}).to_h.symbolize_keys.merge(template: template.to_sym) else @batch_connect_config end end |
#batch_connect_template(context = {}) ⇒ BatchConnect::Template
Build a batch connect template from the respective configuration
103 104 105 106 |
# File 'lib/ood_core/cluster.rb', line 103 def batch_connect_template(context = {}) context = context.to_h.symbolize_keys BatchConnect::Factory.build batch_connect_config(context[:template] || :basic).merge(context) end |
#custom_allow?(feature) ⇒ Boolean
Whether the custom feature is allowed based on the ACLs
117 118 119 120 121 |
# File 'lib/ood_core/cluster.rb', line 117 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
111 112 113 |
# File 'lib/ood_core/cluster.rb', line 111 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
77 78 79 |
# File 'lib/ood_core/cluster.rb', line 77 def job_adapter Job::Factory.build(job_config) end |
#job_allow? ⇒ Boolean
Whether the job feature is allowed based on the ACLs
83 84 85 86 87 |
# File 'lib/ood_core/cluster.rb', line 83 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
65 66 67 |
# File 'lib/ood_core/cluster.rb', line 65 def login OpenStruct.new(login_config) end |
#login_allow? ⇒ Boolean
Whether the login feature is allowed
71 72 73 |
# File 'lib/ood_core/cluster.rb', line 71 def login_allow? allow? && !login_config.empty? end |
#metadata ⇒ OpenStruct
Metadata that provides extra information about this cluster
59 60 61 |
# File 'lib/ood_core/cluster.rb', line 59 def OpenStruct.new end |
#to_h ⇒ Hash
Convert object to hash
150 151 152 153 154 155 156 157 158 159 160 |
# File 'lib/ood_core/cluster.rb', line 150 def to_h { id: id, metadata: , login: login_config, job: job_config, custom: custom_config, acls: acls_config, batch_connect: batch_connect_config } end |
#to_sym ⇒ Symbol
Convert object to symbol
144 145 146 |
# File 'lib/ood_core/cluster.rb', line 144 def to_sym id end |