Module: Smash::CloudPowers::Node
- Includes:
- Auth, Helper, SelfAwareness, Zenv
- Included in:
- Smash::CloudPowers
- Defined in:
- lib/cloud_powers/node.rb
Instance Method Summary collapse
-
#node_config(opts = {}) ⇒ Object
These are sensible defaults that can be overriden by providing a Hash as a param.
-
#spin_up_neurons(opts = {}) ⇒ Object
Uses
Aws::EC2#run_instancesto create nodes (Neurons or Cerebrums), at a rate of 0..(n <= 100) at a time, until the required number of instances has been started.
Methods included from Zenv
#env_vars, #file_tree_search, #i_vars, #project_root, #project_root=, #system_vars, #zfind
Methods included from Helper
#attr_map!, #available_resources, #called_from, #create_logger, #deep_modify_keys_with, #format_error_message, #log_file, #logger, #modify_keys_with, #smart_retry, #task_path, #task_require_path, #to_camel, #to_hyph, #to_i_var, #to_pascal, #to_ruby_file_name, #to_snake, #update_message_body, #valid_json?, #valid_url?
Methods included from SelfAwareness
#boot_time, #die!, #get_awareness!, #instance_id, #instance_url, #metadata_request, #run_time, #send_frequent_status_updates, #status, #task_name, #time_is_up?
Methods included from Synapse::Pipe
#create_stream, #flow_from_pipe, #flow_to_pipe, #from_pipe, #message_body_collection, #pipe_message_body, #pipe_to, #stream_config, #stream_exists?, #stream_status
Methods included from AwsResources
#ec2, #image, #kinesis, #region, #s3, #sns, #sqs
Methods included from Auth
Methods included from Synapse::Queue
#board_name, #build_queue, #create_queue!, #delete_queue_message, #get_queue_message_count, #pluck_queue_message, #poll, #queue_exists?, #queue_poller, #queue_search, #send_queue_message
Instance Method Details
#node_config(opts = {}) ⇒ Object
These are sensible defaults that can be overriden by providing a Hash as a param.
Parameters [opts
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/cloud_powers/node.rb', line 17 def node_config(opts = {}) { dry_run: zfind(:testing) || false, image_id: image('crawlbotprod').image_id, # image(:neuron).image_id instance_type: 't2.nano', min_count: opts[:max_count] || 0, max_count: 0, key_name: 'crawlBot', security_groups: ['webCrawler'], security_group_ids: ['sg-940edcf2'], placement: { availability_zone: 'us-west-2c' }, disable_api_termination: 'false', instance_initiated_shutdown_behavior: 'terminate' }.merge(opts) end |
#spin_up_neurons(opts = {}) ⇒ Object
Uses Aws::EC2#run_instances to create nodes (Neurons or Cerebrums), at
a rate of 0..(n <= 100) at a time, until the required number of instances
has been started. The #instance_config() method is used to create instance
configuration for the #run_instances method by using the opts hash that was
provided as a parameter.
Parameters opts Hash (optional) an optional instance configuration hash can be passed, which will override the values in the default configuration returned by #instance_config()
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/cloud_powers/node.rb', line 42 def spin_up_neurons(opts = {}) ids = nil begin response = ec2.run_instances(node_config(opts)) ids = response.instances.map(&:instance_id) ec2.wait_until(:instance_running, instance_ids: ids) do logger.info "waiting for #{ids.count} Neurons to start..." end # tag(ids, { key: 'task', value: to_camel(self.class.to_s) }) rescue Aws::EC2::Errors::DryRunOperation => e ids = (1..(opts[:max_count] || 0)).to_a.map { |n| n.to_s } logger.info "waiting for #{ids.count} Neurons to start..." end ids end |