class Fog::AWS::DataPipeline::Real

Attributes

region[R]

Public Class Methods

new(options={}) click to toggle source

Initialize connection to DataPipeline

Notes

options parameter must include values for :aws_access_key_id and :aws_secret_access_key in order to create a connection

Examples

datapipeline = DataPipeline.new(
 :aws_access_key_id => your_aws_access_key_id,
 :aws_secret_access_key => your_aws_secret_access_key
)

Parameters

  • options<~Hash> - config arguments for connection. Defaults to {}.

    • region<~String> - optional region to use. For instance, 'eu-west-1', 'us-east-1' and etc.

Returns

# File lib/fog/aws/data_pipeline.rb, line 103
def initialize(options={})
  @use_iam_profile = options[:use_iam_profile]
  @instrumentor       = options[:instrumentor]
  @instrumentor_name  = options[:instrumentor_name] || 'fog.aws.data_pipeline'
  @connection_options     = options[:connection_options] || {}
  @version    = '2012-10-29'
  @region     = options[:region]      || 'us-east-1'
  @host       = options[:host]        || "datapipeline.#{@region}.amazonaws.com"
  @path       = options[:path]        || '/'
  @persistent = options[:persistent]  || false
  @port       = options[:port]        || 443
  @scheme     = options[:scheme]      || 'https'
  @connection = Fog::XML::Connection.new("#{@scheme}://#{@host}:#{@port}#{@path}", @persistent, @connection_options)

  setup_credentials(options)
end

Public Instance Methods

activate_pipeline(id) click to toggle source

Activate a pipeline docs.aws.amazon.com/datapipeline/latest/APIReference/API_ActivatePipeline.html

Parameters

  • PipelineId <~String> - The ID of the pipeline to activate

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

# File lib/fog/aws/requests/data_pipeline/activate_pipeline.rb, line 12
def activate_pipeline(id)
  params = { 'pipelineId' => id }

  response = request({
    :body => Fog::JSON.encode(params),
    :headers => { 'X-Amz-Target' => 'DataPipeline.ActivatePipeline' }
  })
end
create_pipeline(unique_id, name, description=nil, tags=nil) click to toggle source

Create a pipeline docs.aws.amazon.com/datapipeline/latest/APIReference/API_CreatePipeline.html

Parameters

  • UniqueId <~String> - A unique ID for of the pipeline

  • Name <~String> - The name of the pipeline

  • Tags <~Hash> - Key/value string pairs to categorize the pipeline

  • Description <~String> - Description of the pipeline

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

# File lib/fog/aws/requests/data_pipeline/create_pipeline.rb, line 15
def create_pipeline(unique_id, name, description=nil, tags=nil)
  params = {
    'uniqueId' => unique_id,
    'name' => name,
  }
  params['tags'] = tags.map {|k,v| {"key" => k.to_s, "value" => v.to_s}} unless tags.nil? || tags.empty?
  params['Description'] = description if description

  response = request({
    :body => Fog::JSON.encode(params),
    :headers => { 'X-Amz-Target' => 'DataPipeline.CreatePipeline' },
  })
end
deactivate_pipeline(id, cancel_active=true) click to toggle source

Activate a pipeline docs.aws.amazon.com/datapipeline/latest/APIReference/API_DectivatePipeline.html

Parameters

  • PipelineId <~String> - The ID of the pipeline to activate

' cancelActive <~Boolean> - Indicates whether to cancel any running objects. The default is true, which sets the state of any running objects to CANCELED. If this value is false, the pipeline is deactivated after all running objects finish.

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

# File lib/fog/aws/requests/data_pipeline/deactivate_pipeline.rb, line 13
def deactivate_pipeline(id, cancel_active=true)
  params = { 'pipelineId' => id, 'cancelActive' => cancel_active }

  response = request({
    :body => Fog::JSON.encode(params),
    :headers => { 'X-Amz-Target' => 'DataPipeline.DectivatePipeline' }
  })
end
delete_pipeline(id) click to toggle source

Delete a pipeline docs.aws.amazon.com/datapipeline/latest/APIReference/API_DeletePipeline.html

Parameters

  • PipelineId <~String> - The id of the pipeline to delete

Returns

  • success<~Boolean> - Whether the delete was successful

# File lib/fog/aws/requests/data_pipeline/delete_pipeline.rb, line 11
def delete_pipeline(id)
  params = { 'pipelineId' => id }

  response = request({
    :body => Fog::JSON.encode(params),
    :headers => { 'X-Amz-Target' => 'DataPipeline.DeletePipeline' },
  })

  200 == response.status
end
describe_objects(id, objectIds, options={}) click to toggle source

Queries a pipeline for the names of objects that match a specified set of conditions. docs.aws.amazon.com/datapipeline/latest/APIReference/API_DescribeObjects.html

Parameters

  • PipelineId <~String> - The ID of the pipeline

  • ObjectIds <~Array> - Identifiers of the pipeline objects that contain the definitions

    to be described. You can pass as many as 25 identifiers in a
    single call to DescribeObjects.
  • Options <~Hash> - A Hash of additional options desrcibed in the API docs.

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

# File lib/fog/aws/requests/data_pipeline/describe_objects.rb, line 16
def describe_objects(id, objectIds, options={})
  params = options.merge({
    'pipelineId' => id,
    'objectIds' => objectIds,
  })

  response = request({
    :body => Fog::JSON.encode(params),
    :headers => { 'X-Amz-Target' => 'DataPipeline.DescribeObjects' },
  })
end
describe_pipelines(ids) click to toggle source

Describe pipelines docs.aws.amazon.com/datapipeline/latest/APIReference/API_DescribePipelines.html

Parameters

  • PipelineIds <~String> - ID of pipeline to retrieve information for

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

# File lib/fog/aws/requests/data_pipeline/describe_pipelines.rb, line 12
def describe_pipelines(ids)
  params = {}
  params['pipelineIds'] = ids

  response = request({
    :body => Fog::JSON.encode(params),
    :headers => { 'X-Amz-Target' => 'DataPipeline.DescribePipelines' },
  })
end
get_pipeline_definition(id) click to toggle source

Get pipeline definition JSON docs.aws.amazon.com/datapipeline/latest/APIReference/API_GetPipelineDefinition.html

Parameters

  • PipelineId <~String> - The ID of the pipeline

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

# File lib/fog/aws/requests/data_pipeline/get_pipeline_definition.rb, line 12
def get_pipeline_definition(id)
  params = {
    'pipelineId' => id,
  }

  response = request({
    :body => Fog::JSON.encode(params),
    :headers => { 'X-Amz-Target' => 'DataPipeline.GetPipelineDefinition' },
  })
end
list_pipelines(options={}) click to toggle source

List all pipelines docs.aws.amazon.com/datapipeline/latest/APIReference/API_ListPipelines.html

Parameters

  • Marker <~String> - The starting point for the results to be returned.

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

# File lib/fog/aws/requests/data_pipeline/list_pipelines.rb, line 12
def list_pipelines(options={})
  params = {}
  params['Marker'] = options[:marker] if options[:marker]

  response = request({
    :body => Fog::JSON.encode(params),
    :headers => { 'X-Amz-Target' => 'DataPipeline.ListPipelines' },
  })
end
owner_id() click to toggle source
# File lib/fog/aws/data_pipeline.rb, line 120
def owner_id
  @owner_id ||= security_groups.get('default').owner_id
end
put_pipeline_definition(id, pipeline_objects, options={}) click to toggle source

Put raw pipeline definition JSON docs.aws.amazon.com/datapipeline/latest/APIReference/API_PutPipelineDefinition.html

Parameters

  • PipelineId <~String> - The ID of the pipeline

  • PipelineObjects <~String> - Objects in the pipeline

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

# File lib/fog/aws/requests/data_pipeline/put_pipeline_definition.rb, line 57
def put_pipeline_definition(id, pipeline_objects, options={})
  params = {
    'pipelineId' => id,
    'pipelineObjects' => transform_objects(pipeline_objects),
  }.merge(options)

  response = request({
    :body => Fog::JSON.encode(params),
    :headers => { 'X-Amz-Target' => 'DataPipeline.PutPipelineDefinition' },
  })
end
query_objects(id, sphere, options={}) click to toggle source

Queries a pipeline for the names of objects that match a specified set of conditions. docs.aws.amazon.com/datapipeline/latest/APIReference/API_QueryObjects.html

Parameters

  • PipelineId <~String> - The ID of the pipeline

  • Sphere <~String> - Specifies whether the query applies to components or instances.

    Allowable values: COMPONENT, INSTANCE, ATTEMPT.
  • Marker <~String> - The starting point for the results to be returned.

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

# File lib/fog/aws/requests/data_pipeline/query_objects.rb, line 15
def query_objects(id, sphere, options={})
  params = {
    'pipelineId' => id,
    'sphere' => sphere,
  }
  params['marker'] = options[:marker] if options[:marker]

  response = request({
    :body => Fog::JSON.encode(params),
    :headers => { 'X-Amz-Target' => 'DataPipeline.QueryObjects' },
  })
end
reload() click to toggle source
# File lib/fog/aws/data_pipeline.rb, line 124
def reload
  @connection.reset
end

Private Instance Methods

_request(params) click to toggle source
# File lib/fog/aws/data_pipeline.rb, line 169
def _request(params)
  response = @connection.request(params)

  unless response.body.empty?
    response.body = Fog::JSON.decode(response.body)
  end

  response
rescue Excon::Error::BadRequest => error
  match = Fog::AWS::Errors.match_error(error)
  raise if match.empty?
  if %w(PipelineNotFoundException PipelineDeletedException).include?(match[:code])
    raise Fog::AWS::DataPipeline::NotFound.slurp(error, match[:message])
  end
end
request(params) click to toggle source
# File lib/fog/aws/data_pipeline.rb, line 139
def request(params)
  refresh_credentials_if_expired

  # Params for all DataPipeline requests
  params.merge!({
    :expects => 200,
    :method => :post,
    :path => '/',
  })

  date = Fog::Time.now
  params[:headers] = {
    'Date' => date.to_date_header,
    'Host' => @host,
    'X-Amz-Date' => date.to_iso8601_basic,
    'Content-Type' => 'application/x-amz-json-1.1',
    'Content-Length' => params[:body].bytesize.to_s,
  }.merge!(params[:headers] || {})
  params[:headers]['x-amz-security-token'] = @aws_session_token if @aws_session_token
  params[:headers]['Authorization'] = @signer.sign(params, date)

  if @instrumentor
    @instrumentor.instrument("#{@instrumentor_name}.request", params) do
      _request(params)
    end
  else
    _request(params)
  end
end
setup_credentials(options) click to toggle source
# File lib/fog/aws/data_pipeline.rb, line 130
def setup_credentials(options)
  @aws_access_key_id      = options[:aws_access_key_id]
  @aws_secret_access_key  = options[:aws_secret_access_key]
  @aws_session_token     = options[:aws_session_token]
  @aws_credentials_expire_at = options[:aws_credentials_expire_at]

  @signer = Fog::AWS::SignatureV4.new(@aws_access_key_id, @aws_secret_access_key, @region, 'datapipeline')
end