summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/xml/CloudWatchBuilder.java
blob: 2b2b6593dd3995df27cc839b7de4a79f0d8c5b79 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin.monitoring.builder.xml;

import com.yahoo.vespa.model.admin.monitoring.CloudWatch;
import com.yahoo.vespa.model.admin.monitoring.MetricsConsumer;
import org.w3c.dom.Element;

import static com.yahoo.config.model.builder.xml.XmlHelper.getOptionalAttribute;
import static com.yahoo.config.model.builder.xml.XmlHelper.getOptionalChild;

/**
 * @author gjoranv
 */
public class CloudWatchBuilder {

    private static final String REGION_ATTRIBUTE = "region";
    private static final String NAMESPACE_ATTRIBUTE = "namespace";
    private static final String CREDENTIALS_ELEMENT = "credentials";
    private static final String ACCESS_KEY_ATTRIBUTE = "access-key-name";
    private static final String SECRET_KEY_ATTRIBUTE = "secret-key-name";
    private static final String SHARED_CREDENTIALS_ELEMENT = "shared-credentials";
    private static final String PROFILE_ATTRIBUTE = "profile";
    private static final String FILE_ATTRIBUTE = "file";

    public static CloudWatch buildCloudWatch(Element cloudwatchElement, MetricsConsumer consumer) {
        CloudWatch cloudWatch = new CloudWatch(cloudwatchElement.getAttribute(REGION_ATTRIBUTE),
                                               cloudwatchElement.getAttribute(NAMESPACE_ATTRIBUTE),
                                               consumer);

        getOptionalChild(cloudwatchElement, CREDENTIALS_ELEMENT)
                .ifPresent(elem -> cloudWatch.setHostedAuth(elem.getAttribute(ACCESS_KEY_ATTRIBUTE),
                                                            elem.getAttribute(SECRET_KEY_ATTRIBUTE)));

        getOptionalChild(cloudwatchElement, SHARED_CREDENTIALS_ELEMENT)
                .ifPresent(elem -> cloudWatch.setSharedCredentials(elem.getAttribute(FILE_ATTRIBUTE),
                                                                   getOptionalAttribute(elem, PROFILE_ATTRIBUTE)));

        return cloudWatch;
    }

}