All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.opsmatters.newrelic.api.NewRelicApi Maven / Gradle / Ivy

Go to download

Java client library for the New Relic REST APIs built using Jersey and Gson. The library includes over 110 operations across all of the available 35 New Relic services. It can be used by applications to automate the configuration of New Relic Monitoring, Alerting and Dashboards, but can also be used for extracting incident and metric data, executing Insights queries, and uploading plugin metrics.

There is a newer version: 1.0.12
Show newest version
/*
 * Copyright 2018 Gerald Curley
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.opsmatters.newrelic.api;

import java.util.logging.Logger;
import com.opsmatters.newrelic.api.httpclient.ApiKeyHttpClientProvider;
import com.opsmatters.newrelic.api.httpclient.HttpClientProvider;
import com.opsmatters.newrelic.api.services.AlertChannelService;
import com.opsmatters.newrelic.api.services.AlertConditionService;
import com.opsmatters.newrelic.api.services.AlertEntityConditionService;
import com.opsmatters.newrelic.api.services.AlertEventService;
import com.opsmatters.newrelic.api.services.AlertIncidentService;
import com.opsmatters.newrelic.api.services.AlertPolicyService;
import com.opsmatters.newrelic.api.services.AlertPolicyChannelService;
import com.opsmatters.newrelic.api.services.AlertViolationService;
import com.opsmatters.newrelic.api.services.ApplicationService;
import com.opsmatters.newrelic.api.services.ApplicationHostService;
import com.opsmatters.newrelic.api.services.ApplicationInstanceService;
import com.opsmatters.newrelic.api.services.BrowserApplicationService;
import com.opsmatters.newrelic.api.services.DeploymentService;
import com.opsmatters.newrelic.api.services.ExternalServiceAlertConditionService;
import com.opsmatters.newrelic.api.services.KeyTransactionService;
import com.opsmatters.newrelic.api.services.LabelService;
import com.opsmatters.newrelic.api.services.MobileApplicationService;
import com.opsmatters.newrelic.api.services.NrqlAlertConditionService;
import com.opsmatters.newrelic.api.services.PluginService;
import com.opsmatters.newrelic.api.services.PluginComponentService;
import com.opsmatters.newrelic.api.services.PluginsAlertConditionService;
import com.opsmatters.newrelic.api.services.ServerService;
import com.opsmatters.newrelic.api.services.SyntheticsAlertConditionService;
import com.opsmatters.newrelic.api.services.UsageService;
import com.opsmatters.newrelic.api.services.UserService;
import com.opsmatters.newrelic.api.services.DashboardService;

/**
 * Client used to invoke New Relic operations using the REST API.
 * 
 * @author Gerald Curley (opsmatters)
 */
public class NewRelicApi extends NewRelicClient
{
    private static final Logger logger = Logger.getLogger(NewRelicApi.class.getName());
 
    /**
     * The default hostname for New Relic RPM.
     */
    public static final String DEFAULT_HOST = "api.newrelic.com";

    /**
     * Default constructor.
     */
    public NewRelicApi()
    {
        setHostname(DEFAULT_HOST);
    }
   
    /**
     * Constructor that takes a hostname, port and provider.
     * @param hostname The hostname of the server
     * @param port The port of the server
     * @param provider The HTTP client provider
     */
    public NewRelicApi(String hostname, int port, HttpClientProvider provider)
    {    
        super(hostname, port, provider);
    }

    /**
     * Sets the name of the host to connect to.
     * 

* The default hostname is "api.newrelic.com". * @param hostname The name of the host */ public void setHostname(String hostname) { super.setHostname(hostname); } /** * Returns the operations related to alert policies. * @return The alert policy service */ public AlertPolicyService alertPolicies() { checkInitialize(); return new AlertPolicyService(httpContext, this); } /** * Returns the operations related to APM alert conditions. * @return The APM alert condition service */ public AlertConditionService alertConditions() { checkInitialize(); return new AlertConditionService(httpContext, this); } /** * Returns the operations related to APM alert entity conditions. * @return The APM alert entity condition service */ public AlertEntityConditionService alertEntityConditions() { checkInitialize(); return new AlertEntityConditionService(httpContext, this); } /** * Returns the operations related to NRQL alert conditions. * @return The NRQL alert condition service */ public NrqlAlertConditionService nrqlAlertConditions() { checkInitialize(); return new NrqlAlertConditionService(httpContext, this); } /** * Returns the operations related to external service alert conditions. * @return The external service alert condition service */ public ExternalServiceAlertConditionService externalServiceAlertConditions() { checkInitialize(); return new ExternalServiceAlertConditionService(httpContext, this); } /** * Returns the operations related to Plugins alert conditions. * @return The Plugins alert condition service */ public PluginsAlertConditionService pluginsAlertConditions() { checkInitialize(); return new PluginsAlertConditionService(httpContext, this); } /** * Returns the operations related to Synthetics alert conditions. * @return The Synthetics alert condition service */ public SyntheticsAlertConditionService syntheticsAlertConditions() { checkInitialize(); return new SyntheticsAlertConditionService(httpContext, this); } /** * Returns the operations related to alert channels. * @return The alert channel service */ public AlertChannelService alertChannels() { checkInitialize(); return new AlertChannelService(httpContext, this); } /** * Returns the operations related to alert policy channels. * @return The alert policy channel service */ public AlertPolicyChannelService alertPolicyChannels() { checkInitialize(); return new AlertPolicyChannelService(httpContext, this); } /** * Returns the operations related to alert incidents. * @return The alert incident service */ public AlertIncidentService alertIncidents() { checkInitialize(); return new AlertIncidentService(httpContext, this); } /** * Returns the operations related to alert violations. * @return The alert violation service */ public AlertViolationService alertViolations() { checkInitialize(); return new AlertViolationService(httpContext, this); } /** * Returns the operations related to alert events. * @return The alert event service */ public AlertEventService alertEvents() { checkInitialize(); return new AlertEventService(httpContext, this); } /** * Returns the operations related to applications. * @return The application service */ public ApplicationService applications() { checkInitialize(); return new ApplicationService(httpContext, this); } /** * Returns the operations related to application hosts. * @return The application host service */ public ApplicationHostService applicationHosts() { checkInitialize(); return new ApplicationHostService(httpContext, this); } /** * Returns the operations related to application instances. * @return The application instance service */ public ApplicationInstanceService applicationInstances() { checkInitialize(); return new ApplicationInstanceService(httpContext, this); } /** * Returns the operations related to Browser applications. * @return The Browser application service */ public BrowserApplicationService browserApplications() { checkInitialize(); return new BrowserApplicationService(httpContext, this); } /** * Returns the operations related to Mobile applications. * @return The Mobile application service */ public MobileApplicationService mobileApplications() { checkInitialize(); return new MobileApplicationService(httpContext, this); } /** * Returns the operations related to key transactions. * @return The key transaction service */ public KeyTransactionService keyTransactions() { checkInitialize(); return new KeyTransactionService(httpContext, this); } /** * Returns the operations related to plugins. * @return The plugin service */ public PluginService plugins() { checkInitialize(); return new PluginService(httpContext, this); } /** * Returns the operations related to plugin components. * @return The plugin component service */ public PluginComponentService pluginComponents() { checkInitialize(); return new PluginComponentService(httpContext, this); } /** * Returns the operations related to servers. * @return The server service */ public ServerService servers() { checkInitialize(); return new ServerService(httpContext, this); } /** * Returns the operations related to deployments. * @return The deployment component service */ public DeploymentService deployments() { checkInitialize(); return new DeploymentService(httpContext, this); } /** * Returns the operations related to labels. * @return The label service */ public LabelService labels() { checkInitialize(); return new LabelService(httpContext, this); } /** * Returns the operations related to users. * @return The user service */ public UserService users() { checkInitialize(); return new UserService(httpContext, this); } /** * Returns the operations related to usages. * @return The usage service */ public UsageService usages() { checkInitialize(); return new UsageService(httpContext, this); } /** * Returns the operations related to dashboards. * @return The dashboard service */ public DashboardService dashboards() { checkInitialize(); return new DashboardService(httpContext, this); } /** * Returns a builder for the NewRelicApi. * @return The builder instance. */ public static Builder builder() { return new Builder(); } /** * Builder to make NewRelicApi construction easier. */ public static class Builder { private String hostname = DEFAULT_HOST; private int port = DEFAULT_PORT; private HttpClientProvider provider = new ApiKeyHttpClientProvider(""); /** * Default constructor. */ public Builder() { hostname(DEFAULT_HOST); } /** * Sets the name of the host to connect to. *

* The default hostname is "api.newrelic.com". * @param hostname The name of the host * @return This object */ public Builder hostname(String hostname) { this.hostname = hostname; return this; } /** * Sets the port of the host to connect to. *

* The default port is 443. * @param port The port of the host * @return This object */ public Builder port(int port) { this.port = port; return this; } /** * Sets the API key used to authenticate the connection. * @param key The API key * @return This object */ public Builder apiKey(String key) { this.provider = new ApiKeyHttpClientProvider(key); return this; } /** * Returns the configured API client instance * @return The API client instance */ public NewRelicApi build() { return new NewRelicApi(hostname, port, provider); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy