Class: Chef::Provisioning::AWSDriver::AWSResource
- Inherits:
-
SuperLWRP
- Object
- Resource::LWRPBase
- SuperLWRP
- Chef::Provisioning::AWSDriver::AWSResource
- Defined in:
- lib/chef/provisioning/aws_driver/aws_resource.rb
Direct Known Subclasses
AWSResourceWithEntry, Resource::AwsAutoScalingGroup, Resource::AwsInternetGateway, Resource::AwsKeyPair, Resource::AwsLaunchConfiguration, Resource::AwsLoadBalancer, Resource::AwsS3Bucket, Resource::AwsSecurityGroup, Resource::AwsSnsTopic, Resource::AwsSqsQueue
Class Method Summary collapse
- .get_aws_object(value, resource: nil, run_context: nil, driver: nil, managed_entry_store: nil, required: true) ⇒ Object
- .get_aws_object_id(value, **options) ⇒ Object
-
.lookup_options(options, **handler_options) ⇒ Object
Look up an AWS options list, translating standard names using the appropriate classes.
Instance Method Summary collapse
-
#action(*args) ⇒ Object
Backwards compatibility for action :destroy.
- #action=(value) ⇒ Object
-
#aws_object ⇒ Object
Get the current AWS object.
-
#initialize(name, run_context = nil) ⇒ AWSResource
constructor
A new instance of AWSResource.
Methods inherited from SuperLWRP
Constructor Details
#initialize(name, run_context = nil) ⇒ AWSResource
Returns a new instance of AWSResource.
11 12 13 14 15 16 17 18 |
# File 'lib/chef/provisioning/aws_driver/aws_resource.rb', line 11 def initialize(name, run_context=nil) name = name.public_send(self.class.aws_sdk_class_id) if name.is_a?(self.class.aws_sdk_class) super if run_context driver run_context.chef_provisioning.current_driver chef_server run_context.cheffish.current_chef_server end end |
Class Method Details
.get_aws_object(value, resource: nil, run_context: nil, driver: nil, managed_entry_store: nil, required: true) ⇒ Object
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/chef/provisioning/aws_driver/aws_resource.rb', line 93 def self.get_aws_object(value, resource: nil, run_context: nil, driver: nil, managed_entry_store: nil, required: true) return nil if value.nil? if resource run_context ||= resource.run_context driver ||= resource.driver managed_entry_store ||= resource.managed_entry_store end if value.is_a?(self) resource = value else resource = new(value, run_context) resource.driver driver if driver resource.managed_entry_store managed_entry_store if managed_entry_store end result = resource.aws_object if required && result.nil? raise "#{self}[#{value}] does not exist!" end result end |
.get_aws_object_id(value, **options) ⇒ Object
115 116 117 118 |
# File 'lib/chef/provisioning/aws_driver/aws_resource.rb', line 115 def self.get_aws_object_id(value, **) aws_object = get_aws_object(value, **) aws_object.public_send(aws_sdk_class_id) if aws_object end |
.lookup_options(options, **handler_options) ⇒ Object
Look up an AWS options list, translating standard names using the appropriate classes.
For example, ‘load_balancer_options` is passed into `lookup_options`, and if it looks like this: `{ subnets: `[ ’subnet1’, ‘subnet2’ ] }‘, then `AWSResource.lookup_options` will translate each ID with `AwsSubnet.get_aws_object(’subnet1’)‘, which supports Chef names (`mysubnet`) as well as AWS subnet Ids (`subnet-1234abcd`) or AWS objects (`AWS::EC2::Subnet`).
Keys that represent non-AWS-objects (such as ‘timeout`) are left alone.
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/chef/provisioning/aws_driver/aws_resource.rb', line 76 def self.(, **) = .dup .each do |name, value| if name.to_s.end_with?('s') handler_name = :"#{name[0..-2]}" if aws_option_handlers[handler_name] [name] = [[name]].flatten.map { |value| aws_option_handlers[handler_name].get_aws_object_id(value, **) } end else if aws_option_handlers[name] [name] = aws_option_handlers[name].get_aws_object_id(value, **) end end end end |
Instance Method Details
#action(*args) ⇒ Object
Backwards compatibility for action :destroy
21 22 23 24 25 26 27 |
# File 'lib/chef/provisioning/aws_driver/aws_resource.rb', line 21 def action(*args) if args == [ :delete ] super(:destroy) else super end end |
#action=(value) ⇒ Object
28 29 30 |
# File 'lib/chef/provisioning/aws_driver/aws_resource.rb', line 28 def action=(value) action(value) end |
#aws_object ⇒ Object
Get the current AWS object.
59 60 61 |
# File 'lib/chef/provisioning/aws_driver/aws_resource.rb', line 59 def aws_object raise NotImplementedError, :aws_object end |