---
apiVersion: v1
kind: ConfigMap
metadata:
  labels:
    funktion.fabric8.io/kind: Connector
  name: aws-cw
data:
  deployment.yml: |
    ---
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      labels:
        funktion.fabric8.io/kind: Subscription
        connector: aws-cw
    spec:
      replicas: 1
      template:
        metadata:
          labels:
            funktion.fabric8.io/kind: Subscription
            connector: aws-cw
        spec:
          containers:
          - image: funktion/connector-aws-cw:${project.version}
            name: connector
  schema.yml: |
    ---
    component:
      kind: component
      scheme: aws-cw
      syntax: aws-cw:namespace
      title: AWS CloudWatch
      description: The aws-cw component is used for sending metrics to an Amazon CloudWatch.
      label: cloud,monitoring
      deprecated: false
      async: false
      producerOnly: true
      javaType: org.apache.camel.component.aws.cw.CwComponent
      groupId: org.apache.camel
      artifactId: camel-aws
      version: 2.18.3
    componentProperties: {}
    properties:
      namespace:
        kind: path
        group: producer
        required: true
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The metric namespace
        order: 0
      accessKey:
        kind: parameter
        group: producer
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: Amazon AWS Access Key
        order: 1
      amazonCwClient:
        kind: parameter
        group: producer
        type: object
        javaType: com.amazonaws.services.cloudwatch.AmazonCloudWatch
        deprecated: false
        secret: false
        description: To use the AmazonCloudWatch as the client
        order: 2
      amazonCwEndpoint:
        kind: parameter
        group: producer
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The region with which the AWS-CW client wants to work with.
        order: 3
      name:
        kind: parameter
        group: producer
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The metric name
        order: 4
      proxyHost:
        kind: parameter
        group: producer
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: To define a proxy host when instantiating the SQS client
        order: 5
      proxyPort:
        kind: parameter
        group: producer
        type: integer
        javaType: java.lang.Integer
        deprecated: false
        secret: false
        description: To define a proxy port when instantiating the SQS client
        order: 6
      secretKey:
        kind: parameter
        group: producer
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: Amazon AWS Secret Key
        order: 7
      timestamp:
        kind: parameter
        group: producer
        type: string
        javaType: java.util.Date
        deprecated: false
        secret: false
        description: The metric timestamp
        order: 8
      unit:
        kind: parameter
        group: producer
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The metric unit
        order: 9
      value:
        kind: parameter
        group: producer
        type: number
        javaType: java.lang.Double
        deprecated: false
        secret: false
        description: The metric value
        order: 10
      synchronous:
        kind: parameter
        group: advanced
        label: advanced
        type: boolean
        javaType: boolean
        deprecated: false
        secret: false
        defaultValue: false
        description: Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported).
        order: 11
  documentation.adoc: |+
    [[AWS-CW-CWComponent]]
    CW Component
    ~~~~~~~~~~~~

    *Available as of Camel 2.11

    The CW component allows messages to be sent to an
    http://aws.amazon.com/cloudwatch/[Amazon CloudWatch] metrics. The
    implementation of the Amazon API is provided by
    the http://aws.amazon.com/sdkforjava/[AWS SDK].

    Prerequisites

    You must have a valid Amazon Web Services developer account, and be
    signed up to use Amazon CloudWatch. More information are available at
    http://aws.amazon.com/cloudwatch/[Amazon CloudWatch].

    [[AWS-CW-URIFormat]]
    URI Format
    ^^^^^^^^^^

    [source,java]
    ----------------------------
    aws-cw://namespace[?options]
    ----------------------------

    The metrics will be created if they don't already exists. +
     You can append query options to the URI in the following format,
    `?options=value&option2=value&...`

    [[AWS-CW-URIOptions]]
    URI Options
    ^^^^^^^^^^^


    // component options: START
    The AWS CloudWatch component has no options.
    // component options: END




    // endpoint options: START
    The AWS CloudWatch component supports 12 endpoint options which are listed below:

    {% raw %}
    [width="100%",cols="2,1,1m,1m,5",options="header"]
    |=======================================================================
    | Name | Group | Default | Java Type | Description
    | namespace | producer |  | String | *Required* The metric namespace
    | accessKey | producer |  | String | Amazon AWS Access Key
    | amazonCwClient | producer |  | AmazonCloudWatch | To use the AmazonCloudWatch as the client
    | amazonCwEndpoint | producer |  | String | The region with which the AWS-CW client wants to work with.
    | name | producer |  | String | The metric name
    | proxyHost | producer |  | String | To define a proxy host when instantiating the SQS client
    | proxyPort | producer |  | Integer | To define a proxy port when instantiating the SQS client
    | secretKey | producer |  | String | Amazon AWS Secret Key
    | timestamp | producer |  | Date | The metric timestamp
    | unit | producer |  | String | The metric unit
    | value | producer |  | Double | The metric value
    | synchronous | advanced | false | boolean | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported).
    |=======================================================================
    {% endraw %}
    // endpoint options: END



    Required CW component options

    You have to provide the amazonCwClient in the
    link:registry.html[Registry] or your accessKey and secretKey to access
    the http://aws.amazon.com/cloudwatch/[Amazon's CloudWatch].

    [[AWS-CW-Usage]]
    Usage
    ^^^^^

    [[AWS-CW-MessageheadersevaluatedbytheCWproducer]]
    Message headers evaluated by the CW producer
    ++++++++++++++++++++++++++++++++++++++++++++

    [width="100%",cols="10%,10%,80%",options="header",]
    |=======================================================================
    |Header |Type |Description

    |`CamelAwsCwMetricName` |`String` |The Amazon CW metric name.

    |`CamelAwsCwMetricValue` |`Double` |The Amazon CW metric value.

    |`CamelAwsCwMetricUnit` |`String` |The Amazon CW metric unit.

    |`CamelAwsCwMetricNamespace` |`String` |The Amazon CW metric namespace.

    |`CamelAwsCwMetricTimestamp` |`Date` |The Amazon CW metric timestamp.

    |`CamelAwsCwMetricDimensionName` |`String` |*Camel 2.12:* The Amazon CW metric dimension name.

    |`CamelAwsCwMetricDimensionValue` |`String` |*Camel 2.12:* The Amazon CW metric dimension value.

    |`CamelAwsCwMetricDimensions` |`Map<String, String>` |*Camel 2.12:* A map of dimension names and dimension values.
    |=======================================================================

    [[AWS-CW-AdvancedAmazonCloudWatchconfiguration]]
    Advanced AmazonCloudWatch configuration
    +++++++++++++++++++++++++++++++++++++++

    If you need more control over the `AmazonCloudWatch` instance
    configuration you can create your own instance and refer to it from the
    URI:

    [source,java]
    -------------------------------------------------
    from("direct:start")
    .to("aws-cw://namepsace?amazonCwClient=#client");
    -------------------------------------------------

    The `#client` refers to a `AmazonCloudWatch` in the
    link:registry.html[Registry].

    For example if your Camel Application is running behind a firewall:

    [source,java]
    ------------------------------------------------------------------------------------------
    AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");
    ClientConfiguration clientConfiguration = new ClientConfiguration();
    clientConfiguration.setProxyHost("http://myProxyHost");
    clientConfiguration.setProxyPort(8080);

    AmazonCloudWatch client = new AmazonCloudWatchClient(awsCredentials, clientConfiguration);

    registry.bind("client", client);
    ------------------------------------------------------------------------------------------

    [[AWS-CW-Dependencies]]
    Dependencies
    ^^^^^^^^^^^^

    Maven users will need to add the following dependency to their pom.xml.

    *pom.xml*

    [source,xml]
    ---------------------------------------
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-aws</artifactId>
        <version>${camel-version}</version>
    </dependency>
    ---------------------------------------

    where `${camel-version`} must be replaced by the actual version of Camel
    (2.10 or higher).

    [[AWS-CW-SeeAlso]]
    See Also
    ^^^^^^^^

    * link:configuring-camel.html[Configuring Camel]
    * link:component.html[Component]
    * link:endpoint.html[Endpoint]
    * link:getting-started.html[Getting Started]

    * link:aws.html[AWS Component]

