JCLOUDS-1183 oneandone-monitoringpolicy-api
Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/87c54700 Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/87c54700 Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/87c54700 Branch: refs/heads/master Commit: 87c54700316eef3722b41e6953f121766b9d9ba8 Parents: d68a2d3 Author: alibazlamit <ali@ali-G751JT> Authored: Mon Oct 31 13:55:34 2016 +0100 Committer: Ignasi Barrera <[email protected]> Committed: Thu Nov 3 10:05:06 2016 +0100 ---------------------------------------------------------------------- .../jclouds/oneandone/rest/OneAndOneApi.java | 8 + .../oneandone/rest/domain/MonitoringCenter.java | 208 +++++++ .../oneandone/rest/domain/MonitoringPolicy.java | 537 ++++++++++++++++++ .../jclouds/oneandone/rest/domain/Types.java | 40 ++ .../domain/options/GenericDateQueryOptions.java | 46 ++ .../rest/features/MonitoringCenterApi.java | 55 ++ .../rest/features/MonitoringPolicyApi.java | 158 ++++++ .../features/MonitoringCenterApiLiveTest.java | 93 ++++ .../features/MonitoringCenterApiMockTest.java | 159 ++++++ .../features/MonitoringPolicyApiLiveTest.java | 282 ++++++++++ .../features/MonitoringPolicyApiMockTest.java | 543 +++++++++++++++++++ .../test/resources/monitoringcenters/get.json | 165 ++++++ .../test/resources/monitoringcenters/list.json | 98 ++++ .../monitoringcenters/list.options.json | 98 ++++ .../test/resources/monitoringpolicy/get.json | 83 +++ .../resources/monitoringpolicy/get.port.json | 7 + .../resources/monitoringpolicy/get.process.json | 6 + .../resources/monitoringpolicy/get.server.json | 4 + .../test/resources/monitoringpolicy/list.json | 173 ++++++ .../monitoringpolicy/list.options.json | 173 ++++++ .../resources/monitoringpolicy/list.ports.json | 16 + .../monitoringpolicy/list.process.json | 14 + .../monitoringpolicy/list.servers.json | 10 + 23 files changed, 2976 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/87c54700/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/OneAndOneApi.java ---------------------------------------------------------------------- diff --git a/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/OneAndOneApi.java b/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/OneAndOneApi.java index c12a75f..50610de 100644 --- a/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/OneAndOneApi.java +++ b/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/OneAndOneApi.java @@ -20,6 +20,8 @@ import java.io.Closeable; import org.apache.jclouds.oneandone.rest.features.FirewallPolicyApi; import org.apache.jclouds.oneandone.rest.features.ImageApi; import org.apache.jclouds.oneandone.rest.features.LoadBalancerApi; +import org.apache.jclouds.oneandone.rest.features.MonitoringCenterApi; +import org.apache.jclouds.oneandone.rest.features.MonitoringPolicyApi; import org.apache.jclouds.oneandone.rest.features.PrivateNetworkApi; import org.apache.jclouds.oneandone.rest.features.PublicIpApi; import org.apache.jclouds.oneandone.rest.features.ServerApi; @@ -52,4 +54,10 @@ public interface OneAndOneApi extends Closeable { @Delegate VpnApi vpnApi(); + + @Delegate + MonitoringCenterApi monitoringCenterApi(); + + @Delegate + MonitoringPolicyApi monitoringPolicyApi(); } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/87c54700/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/domain/MonitoringCenter.java ---------------------------------------------------------------------- diff --git a/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/domain/MonitoringCenter.java b/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/domain/MonitoringCenter.java new file mode 100644 index 0000000..d6a1e72 --- /dev/null +++ b/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/domain/MonitoringCenter.java @@ -0,0 +1,208 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 org.apache.jclouds.oneandone.rest.domain; + +import com.google.auto.value.AutoValue; +import org.apache.jclouds.oneandone.rest.domain.Types.ServerState; +import org.jclouds.javax.annotation.Nullable; +import org.jclouds.json.SerializedNames; + +@AutoValue +public abstract class MonitoringCenter { + + public abstract String id(); + + public abstract String name(); + + @Nullable + public abstract String description(); + + @Nullable + public abstract Status status(); + + @Nullable + public abstract Alerts alerts(); + + @Nullable + public abstract Agent agent(); + + @SerializedNames({"id", "name", "description", "status", "alerts", "agent"}) + public static MonitoringCenter create(String id, String name, String description, Status status, Alerts alerts, Agent agent) { + return new AutoValue_MonitoringCenter(id, name, description, status, alerts, agent); + } + + @AutoValue + public abstract static class Status { + + @Nullable + public abstract Cpu cpu(); + + @Nullable + public abstract Disk disk(); + + @Nullable + public abstract InternalPing internalPing(); + + @Nullable + public abstract Ram ram(); + + @Nullable + public abstract Transfer transfer(); + + public abstract ServerState state(); + + @SerializedNames({"cpu", "disk", "internal_ping", "ram", "transfer", "state"}) + public static Status create(Cpu cpu, Disk disk, InternalPing internalPing, Ram ram, Transfer transfer, ServerState state) { + return new AutoValue_MonitoringCenter_Status(cpu, disk, internalPing, ram, transfer, state); + } + + @AutoValue + public abstract static class Cpu { + + @Nullable + public abstract String state(); + + @SerializedNames({"state"}) + public static Cpu create(String state) { + return new AutoValue_MonitoringCenter_Status_Cpu(state); + } + } + + @AutoValue + public abstract static class Disk { + + @Nullable + public abstract String state(); + + @SerializedNames({"state"}) + public static Disk create(String state) { + return new AutoValue_MonitoringCenter_Status_Disk(state); + } + } + + @AutoValue + public abstract static class InternalPing { + + @Nullable + public abstract String state(); + + @SerializedNames({"state"}) + public static InternalPing create(String state) { + return new AutoValue_MonitoringCenter_Status_InternalPing(state); + } + } + + @AutoValue + public abstract static class Ram { + + @Nullable + public abstract String state(); + + @SerializedNames({"state"}) + public static Ram create(String state) { + return new AutoValue_MonitoringCenter_Status_Ram(state); + } + } + + @AutoValue + public abstract static class Transfer { + + @Nullable + public abstract String state(); + + @SerializedNames({"state"}) + public static Transfer create(String state) { + return new AutoValue_MonitoringCenter_Status_Transfer(state); + } + } + } + + @AutoValue + public abstract static class Alerts { + + public abstract Resources resources(); + + public abstract Ports ports(); + + public abstract Process process(); + + @AutoValue + public abstract static class Resources { + + public abstract int critical(); + + public abstract int warning(); + + public abstract int ok(); + + @SerializedNames({"critical", "warning", "ok"}) + public static Resources create(int critical, int warning, int ok) { + return new AutoValue_MonitoringCenter_Alerts_Resources(critical, warning, ok); + } + } + + @AutoValue + public abstract static class Ports { + + public abstract int critical(); + + public abstract int warning(); + + public abstract int ok(); + + @SerializedNames({"critical", "warning", "ok"}) + public static Ports create(int critical, int warning, int ok) { + return new AutoValue_MonitoringCenter_Alerts_Ports(critical, warning, ok); + } + } + + @AutoValue + public abstract static class Process { + + public abstract int critical(); + + public abstract int warning(); + + public abstract int ok(); + + @SerializedNames({"critical", "warning", "ok"}) + public static Process create(int critical, int warning, int ok) { + return new AutoValue_MonitoringCenter_Alerts_Process(critical, warning, ok); + } + } + + @SerializedNames({"resources", "ports", "process"}) + public static Alerts create(Resources resources, Ports ports, Process process) { + return new AutoValue_MonitoringCenter_Alerts(resources, ports, process); + } + } + + @AutoValue + public abstract static class Agent { + + public abstract boolean agentinstalled(); + + public abstract boolean monitoringNeedsAgent(); + + public abstract boolean missingAgentAlert(); + + @SerializedNames({"agent_installed", "monitoring_needs_agent", "missing_agent_alert"}) + public static Agent create(boolean agentinstalled, boolean monitoringNeedsAgent, boolean missingAgentAlert) { + return new AutoValue_MonitoringCenter_Agent(agentinstalled, monitoringNeedsAgent, missingAgentAlert); + } + } +} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/87c54700/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/domain/MonitoringPolicy.java ---------------------------------------------------------------------- diff --git a/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/domain/MonitoringPolicy.java b/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/domain/MonitoringPolicy.java new file mode 100644 index 0000000..64c528a --- /dev/null +++ b/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/domain/MonitoringPolicy.java @@ -0,0 +1,537 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 org.apache.jclouds.oneandone.rest.domain; + +import com.google.auto.value.AutoValue; +import com.google.common.collect.ImmutableList; +import java.util.Date; +import java.util.List; +import org.apache.jclouds.oneandone.rest.domain.Types.AlertIfType; +import org.apache.jclouds.oneandone.rest.domain.Types.ProcessAlertType; +import org.apache.jclouds.oneandone.rest.domain.Types.ProtocolType; +import org.jclouds.javax.annotation.Nullable; +import org.jclouds.json.SerializedNames; + +@AutoValue +public abstract class MonitoringPolicy { + + public abstract String id(); + + public abstract String name(); + + @Nullable + public abstract String description(); + + @Nullable + public abstract String state(); + + @Nullable + public abstract Date creationDate(); + + public abstract int isDefault(); + + @Nullable + public abstract String email(); + + public abstract boolean agent(); + + @Nullable + public abstract List<Server> servers(); + + public abstract Threshold thresholds(); + + @Nullable + public abstract List<Port> ports(); + + @Nullable + public abstract List<Process> processes(); + + public abstract String cloudpanelId(); + + @SerializedNames({"id", "name", "description", "state", "creation_date", "default", "email", "agent", "servers", "thresholds", "ports", "processes", "cloudpanel_id"}) + public static MonitoringPolicy create(String id, String name, String description, String state, + Date creationDate, int isDefault, String email, boolean agent, List<Server> servers, Threshold thresholds, List<Port> ports, List<Process> processes, String cloudpanelId) { + return new AutoValue_MonitoringPolicy(id, name, description, state, creationDate, isDefault, email, agent, servers == null ? ImmutableList.<Server>of() : ImmutableList.copyOf(servers), thresholds, ports == null ? ImmutableList.<Port>of() : ImmutableList.copyOf(ports), processes == null ? ImmutableList.<Process>of() : ImmutableList.copyOf(processes), cloudpanelId); + } + + @AutoValue + public abstract static class Server { + + public abstract String id(); + + public abstract String name(); + + @SerializedNames({"id", "name"}) + public static Server create(String id, String name) { + return new AutoValue_MonitoringPolicy_Server(id, name); + } + + @AutoValue + public abstract static class CreateServer { + + public abstract List<String> servers(); + + @SerializedNames({"servers"}) + public static CreateServer create(List<String> servers) { + return new AutoValue_MonitoringPolicy_Server_CreateServer(servers == null ? ImmutableList.<String>of() : ImmutableList.copyOf(servers)); + } + } + } + + @AutoValue + public abstract static class Threshold { + + public abstract Cpu cpu(); + + public abstract Ram ram(); + + @Nullable + public abstract Disk disk(); + + public abstract Transfer transfer(); + + public abstract InternalPing internalPing(); + + @SerializedNames({"cpu", "ram", "disk", "transfer", "internal_ping"}) + public static Threshold create(Cpu cpu, Ram ram, Disk disk, Transfer transfer, InternalPing internalPing) { + return new AutoValue_MonitoringPolicy_Threshold(cpu, ram, disk, transfer, internalPing); + } + + @AutoValue + public abstract static class Cpu { + + public abstract Warning warning(); + + public abstract Critical critical(); + + @SerializedNames({"warning", "critical"}) + public static Cpu create(Warning warning, Critical critical) { + return new AutoValue_MonitoringPolicy_Threshold_Cpu(warning, critical); + } + + @AutoValue + public abstract static class Warning { + + public abstract int value(); + + public abstract boolean alert(); + + @SerializedNames({"value", "alert"}) + public static Warning create(int value, boolean alert) { + return new AutoValue_MonitoringPolicy_Threshold_Cpu_Warning(value, alert); + } + } + + @AutoValue + public abstract static class Critical { + + public abstract int value(); + + public abstract boolean alert(); + + @SerializedNames({"value", "alert"}) + public static Critical create(int value, boolean alert) { + return new AutoValue_MonitoringPolicy_Threshold_Cpu_Critical(value, alert); + } + + } + + } + + @AutoValue + public abstract static class Disk { + + public abstract Warning warning(); + + public abstract Critical critical(); + + @SerializedNames({"warning", "critical"}) + public static Disk create(Warning warning, Critical critical) { + return new AutoValue_MonitoringPolicy_Threshold_Disk(warning, critical); + } + + @AutoValue + public abstract static class Warning { + + public abstract int value(); + + public abstract boolean alert(); + + @SerializedNames({"value", "alert"}) + public static Warning create(int value, boolean alert) { + return new AutoValue_MonitoringPolicy_Threshold_Disk_Warning(value, alert); + } + } + + @AutoValue + public abstract static class Critical { + + public abstract int value(); + + public abstract boolean alert(); + + @SerializedNames({"value", "alert"}) + public static Critical create(int value, boolean alert) { + return new AutoValue_MonitoringPolicy_Threshold_Disk_Critical(value, alert); + } + + } + + } + + @AutoValue + public abstract static class Ram { + + public abstract Warning warning(); + + public abstract Critical critical(); + + @SerializedNames({"warning", "critical"}) + public static Ram create(Warning warning, Critical critical) { + return new AutoValue_MonitoringPolicy_Threshold_Ram(warning, critical); + } + + @AutoValue + public abstract static class Warning { + + public abstract int value(); + + public abstract boolean alert(); + + @SerializedNames({"value", "alert"}) + public static Warning create(int value, boolean alert) { + return new AutoValue_MonitoringPolicy_Threshold_Ram_Warning(value, alert); + } + } + + @AutoValue + public abstract static class Critical { + + public abstract int value(); + + public abstract boolean alert(); + + @SerializedNames({"value", "alert"}) + public static Critical create(int value, boolean alert) { + return new AutoValue_MonitoringPolicy_Threshold_Ram_Critical(value, alert); + } + + } + + } + + @AutoValue + public abstract static class Transfer { + + public abstract Warning warning(); + + public abstract Critical critical(); + + @SerializedNames({"warning", "critical"}) + public static Transfer create(Warning warning, Critical critical) { + return new AutoValue_MonitoringPolicy_Threshold_Transfer(warning, critical); + } + + @AutoValue + public abstract static class Warning { + + public abstract int value(); + + public abstract boolean alert(); + + @SerializedNames({"value", "alert"}) + public static Warning create(int value, boolean alert) { + return new AutoValue_MonitoringPolicy_Threshold_Transfer_Warning(value, alert); + } + } + + @AutoValue + public abstract static class Critical { + + public abstract int value(); + + public abstract boolean alert(); + + @SerializedNames({"value", "alert"}) + public static Critical create(int value, boolean alert) { + return new AutoValue_MonitoringPolicy_Threshold_Transfer_Critical(value, alert); + } + } + } + + @AutoValue + public abstract static class InternalPing { + + public abstract Warning warning(); + + public abstract Critical critical(); + + @SerializedNames({"warning", "critical"}) + public static InternalPing create(Warning warning, Critical critical) { + return new AutoValue_MonitoringPolicy_Threshold_InternalPing(warning, critical); + } + + @AutoValue + public abstract static class Warning { + + public abstract int value(); + + public abstract boolean alert(); + + @SerializedNames({"value", "alert"}) + public static Warning create(int value, boolean alert) { + return new AutoValue_MonitoringPolicy_Threshold_InternalPing_Warning(value, alert); + } + } + + @AutoValue + public abstract static class Critical { + + public abstract int value(); + + public abstract boolean alert(); + + @SerializedNames({"value", "alert"}) + public static Critical create(int value, boolean alert) { + return new AutoValue_MonitoringPolicy_Threshold_InternalPing_Critical(value, alert); + } + + } + } + } + + @AutoValue + public abstract static class Port { + + public abstract String id(); + + public abstract ProtocolType protocol(); + + public abstract int port(); + + public abstract AlertIfType alertIf(); + + public abstract boolean emailNotification(); + + @SerializedNames({"id", "protocol", "port", "alert_if", "email_notification"}) + public static Port create(String id, ProtocolType protocol, int port, AlertIfType alertIf, boolean emailNotification) { + return new AutoValue_MonitoringPolicy_Port(id, protocol, port, alertIf, emailNotification); + } + + @AutoValue + public abstract static class AddPort { + + public abstract int port(); + + public abstract AlertIfType alertIf(); + + public abstract boolean emailNotification(); + + public abstract ProtocolType protocol(); + + @SerializedNames({"port", "alert_if", "email_notification", "protocol"}) + public static AddPort create(int port, AlertIfType alertIf, boolean emailNotification, ProtocolType protocol) { + return new AutoValue_MonitoringPolicy_Port_AddPort(port, alertIf, emailNotification, protocol); + } + } + + @AutoValue + public abstract static class CreatePort { + + public abstract List<AddPort> ports(); + + @SerializedNames({"ports"}) + public static CreatePort create(List<AddPort> ports) { + return new AutoValue_MonitoringPolicy_Port_CreatePort(ports == null ? ImmutableList.<AddPort>of() : ImmutableList.copyOf(ports)); + } + } + + @AutoValue + public abstract static class UpdatePort { + + public abstract AddPort ports(); + + @SerializedNames({"ports"}) + public static UpdatePort create(AddPort ports) { + return new AutoValue_MonitoringPolicy_Port_UpdatePort(ports); + } + } + } + + @AutoValue + public abstract static class Process { + + public abstract String id(); + + public abstract String process(); + + public abstract int port(); + + public abstract ProcessAlertType alertIf(); + + public abstract boolean emailNotification(); + + @SerializedNames({"id", "process", "port", "alert_if", "email_notification"}) + public static Process create(String id, String process, int port, ProcessAlertType alertIf, boolean emailNotification) { + return new AutoValue_MonitoringPolicy_Process(id, process, port, alertIf, emailNotification); + } + + @AutoValue + public abstract static class AddProcess { + + public abstract String process(); + + public abstract AlertIfType alertIf(); + + public abstract boolean emailNotification(); + + @SerializedNames({"process", "alert_if", "email_notification"}) + public static AddProcess create(String process, AlertIfType alertIf, boolean emailNotification) { + return new AutoValue_MonitoringPolicy_Process_AddProcess(process, alertIf, emailNotification); + } + } + + @AutoValue + public abstract static class CreateProcess { + + public abstract List<AddProcess> processes(); + + @SerializedNames({"processes"}) + public static CreateProcess create(List<AddProcess> processes) { + return new AutoValue_MonitoringPolicy_Process_CreateProcess(processes == null ? ImmutableList.<AddProcess>of() : ImmutableList.copyOf(processes)); + } + } + + @AutoValue + public abstract static class UpdateProcess { + + public abstract Process.AddProcess processes(); + + @SerializedNames({"processes"}) + public static UpdateProcess create(Process.AddProcess processes) { + return new AutoValue_MonitoringPolicy_Process_UpdateProcess(processes); + } + } + } + + @AutoValue + public abstract static class CreatePolicy { + + public abstract String name(); + + @Nullable + public abstract String description(); + + public abstract String email(); + + public abstract boolean agent(); + + public abstract Threshold thresholds(); + + public abstract List<Port.AddPort> ports(); + + public abstract List<Process.AddProcess> processes(); + + @SerializedNames({"name", "description", "email", "agent", "thresholds", "ports", "processes"}) + public static CreatePolicy create(String name, String description, String email, + boolean agent, Threshold thresholds, List<Port.AddPort> ports, List<Process.AddProcess> processes) { + return builder() + .agent(agent) + .description(description) + .email(email) + .name(name) + .ports(ports == null ? ImmutableList.<Port.AddPort>of() : ImmutableList.copyOf(ports)) + .processes(processes == null ? ImmutableList.<Process.AddProcess>of() : ImmutableList.copyOf(processes)) + .thresholds(thresholds) + .build(); + + } + + public static Builder builder() { + return new AutoValue_MonitoringPolicy_CreatePolicy.Builder(); + } + + @AutoValue.Builder + public abstract static class Builder { + + public abstract Builder name(String name); + + public abstract Builder description(String description); + + public abstract Builder email(String email); + + public abstract Builder agent(boolean agent); + + public abstract Builder thresholds(Threshold thresholds); + + public abstract Builder ports(List<Port.AddPort> ports); + + public abstract Builder processes(List<Process.AddProcess> processes); + + public abstract CreatePolicy build(); + } + } + + @AutoValue + public abstract static class UpdatePolicy { + + @Nullable + public abstract String name(); + + @Nullable + public abstract String description(); + + public abstract String email(); + + public abstract boolean agent(); + + public abstract Threshold thresholds(); + + @SerializedNames({"name", "description", "email", "agent", "thresholds"}) + public static UpdatePolicy create(String name, String description, String email, + boolean agent, Threshold thresholds, List<Port.AddPort> ports, List<Process.AddProcess> processes) { + return builder() + .agent(agent) + .description(description) + .email(email) + .name(name) + .thresholds(thresholds) + .build(); + + } + + public static Builder builder() { + return new AutoValue_MonitoringPolicy_UpdatePolicy.Builder(); + } + + @AutoValue.Builder + public abstract static class Builder { + + public abstract Builder name(String name); + + public abstract Builder description(String description); + + public abstract Builder email(String email); + + public abstract Builder agent(boolean agent); + + public abstract Builder thresholds(Threshold thresholds); + + public abstract UpdatePolicy build(); + } + } +} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/87c54700/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/domain/Types.java ---------------------------------------------------------------------- diff --git a/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/domain/Types.java b/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/domain/Types.java index 6d8c67b..8f70ee4 100644 --- a/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/domain/Types.java +++ b/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/domain/Types.java @@ -202,4 +202,44 @@ public class Types { return Enums.getIfPresent(VPNType.class, v).or(UNRECOGNIZED); } } + + public enum PeriodType { + LAST_HOUR, LAST_24H, LAST_7D, LAST_30D, LAST_365D, UNRECOGNIZED; + + public static PeriodType fromValue(String v) { + return Enums.getIfPresent(PeriodType.class, v).or(UNRECOGNIZED); +} + } + + public enum CustomPeriodType { + CUSTOM, UNRECOGNIZED; + + public static CustomPeriodType fromValue(String v) { + return Enums.getIfPresent(CustomPeriodType.class, v).or(UNRECOGNIZED); + } + } + + public enum ProtocolType { + TCP, UDP, UNRECOGNIZED; + + public static ProtocolType fromValue(String v) { + return Enums.getIfPresent(ProtocolType.class, v).or(UNRECOGNIZED); + } + } + + public enum AlertIfType { + RESPONDING, NOT_RESPONDING, UNRECOGNIZED; + + public static AlertIfType fromValue(String v) { + return Enums.getIfPresent(AlertIfType.class, v).or(UNRECOGNIZED); + } + } + + public enum ProcessAlertType { + RUNNING, NOT_RUNNING, UNRECOGNIZED; + + public static ProcessAlertType fromValue(String v) { + return Enums.getIfPresent(ProcessAlertType.class, v).or(UNRECOGNIZED); + } + } } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/87c54700/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/domain/options/GenericDateQueryOptions.java ---------------------------------------------------------------------- diff --git a/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/domain/options/GenericDateQueryOptions.java b/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/domain/options/GenericDateQueryOptions.java new file mode 100644 index 0000000..4d26751 --- /dev/null +++ b/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/domain/options/GenericDateQueryOptions.java @@ -0,0 +1,46 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 org.apache.jclouds.oneandone.rest.domain.options; + +import java.util.Date; +import org.apache.jclouds.oneandone.rest.domain.Types.CustomPeriodType; +import org.apache.jclouds.oneandone.rest.domain.Types.PeriodType; +import org.jclouds.date.DateService; +import org.jclouds.date.internal.SimpleDateFormatDateService; +import org.jclouds.http.options.BaseHttpRequestOptions; + +public class GenericDateQueryOptions extends BaseHttpRequestOptions { + + public static final String PERIOD = "period"; + public static final String STARTDATE = "start_date"; + public static final String ENDDATE = "end_date"; + private static final DateService DATE_SERVICE = new SimpleDateFormatDateService(); + + public GenericDateQueryOptions customPeriod(Date startDate, Date endDate) { + + queryParameters.put(PERIOD, CustomPeriodType.CUSTOM.toString()); + queryParameters.put(STARTDATE, DATE_SERVICE.iso8601SecondsDateFormat(startDate)); + queryParameters.put(ENDDATE, DATE_SERVICE.iso8601SecondsDateFormat(endDate)); + return this; + } + + public GenericDateQueryOptions fixedPeriods(PeriodType period) { + + queryParameters.put(PERIOD, period.toString()); + return this; + } +} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/87c54700/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/features/MonitoringCenterApi.java ---------------------------------------------------------------------- diff --git a/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/features/MonitoringCenterApi.java b/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/features/MonitoringCenterApi.java new file mode 100644 index 0000000..85f2912 --- /dev/null +++ b/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/features/MonitoringCenterApi.java @@ -0,0 +1,55 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 org.apache.jclouds.oneandone.rest.features; + +import java.util.List; +import javax.inject.Named; +import javax.ws.rs.Consumes; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import org.apache.jclouds.oneandone.rest.domain.MonitoringCenter; +import org.apache.jclouds.oneandone.rest.domain.options.GenericDateQueryOptions; +import org.apache.jclouds.oneandone.rest.domain.options.GenericQueryOptions; +import org.apache.jclouds.oneandone.rest.filters.AuthenticateRequest; +import org.jclouds.Fallbacks; +import org.jclouds.rest.annotations.Fallback; +import org.jclouds.rest.annotations.RequestFilters; + +@Path("/monitoring_center") +@Produces("application/json") +@Consumes("application/json") +@RequestFilters(AuthenticateRequest.class) +public interface MonitoringCenterApi { + + @Named("monitoringcenter:list") + @GET + @Fallback(Fallbacks.EmptyListOnNotFoundOr404.class) + List<MonitoringCenter> list(); + + @Named("monitoringcenter:list") + @GET + @Fallback(Fallbacks.EmptyListOnNotFoundOr404.class) + List<MonitoringCenter> list(GenericQueryOptions options); + + @Named("monitoringcenter:get") + @GET + @Path("/{serverId}") + @Fallback(Fallbacks.NullOnNotFoundOr404.class) + MonitoringCenter get(@PathParam("serverId") String serverId, GenericDateQueryOptions options); +} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/87c54700/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/features/MonitoringPolicyApi.java ---------------------------------------------------------------------- diff --git a/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/features/MonitoringPolicyApi.java b/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/features/MonitoringPolicyApi.java new file mode 100644 index 0000000..6890b09 --- /dev/null +++ b/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/features/MonitoringPolicyApi.java @@ -0,0 +1,158 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 org.apache.jclouds.oneandone.rest.features; + +import java.util.List; +import javax.inject.Named; +import javax.ws.rs.Consumes; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import org.apache.jclouds.oneandone.rest.domain.MonitoringPolicy; +import org.apache.jclouds.oneandone.rest.domain.options.GenericQueryOptions; +import org.apache.jclouds.oneandone.rest.filters.AuthenticateRequest; +import org.jclouds.Fallbacks; +import org.jclouds.rest.annotations.BinderParam; +import org.jclouds.rest.annotations.Fallback; +import org.jclouds.rest.annotations.MapBinder; +import org.jclouds.rest.annotations.RequestFilters; +import org.jclouds.rest.binders.BindToJsonPayload; + +@Path("/monitoring_policies") +@Produces("application/json") +@Consumes("application/json") +@RequestFilters(AuthenticateRequest.class) +public interface MonitoringPolicyApi { + + @Named("monitoringpolicy:list") + @GET + @Fallback(Fallbacks.EmptyListOnNotFoundOr404.class) + List<MonitoringPolicy> list(); + + @Named("monitoringpolicy:list") + @GET + @Fallback(Fallbacks.EmptyListOnNotFoundOr404.class) + List<MonitoringPolicy> list(GenericQueryOptions options); + + @Named("monitoringpolicy:get") + @GET + @Path("/{policyId}") + @Fallback(Fallbacks.NullOnNotFoundOr404.class) + MonitoringPolicy get(@PathParam("policyId") String policyId); + + @Named("monitoringpolicy:create") + @POST + MonitoringPolicy create(@BinderParam(BindToJsonPayload.class) MonitoringPolicy.CreatePolicy policy); + + @Named("monitoringpolicy:update") + @PUT + @Path("/{policyId}") + MonitoringPolicy update(@PathParam("policyId") String policyId, @BinderParam(BindToJsonPayload.class) MonitoringPolicy.UpdatePolicy policy); + + @Named("monitoringpolicy:delete") + @DELETE + @Path("/{policyId}") + @Fallback(Fallbacks.NullOnNotFoundOr404.class) + @MapBinder(BindToJsonPayload.class) + MonitoringPolicy delete(@PathParam("policyId") String policyId); + + @Named("monitoringpolicy:ports:list") + @GET + @Path("/{policyId}/ports") + @Fallback(Fallbacks.EmptyListOnNotFoundOr404.class) + List<MonitoringPolicy.Port> listPorts(@PathParam("policyId") String policyId); + + @Named("monitoringpolicy:ports:get") + @GET + @Path("/{policyId}/ports/{portId}") + @Fallback(Fallbacks.NullOnNotFoundOr404.class) + MonitoringPolicy.Port getPort(@PathParam("policyId") String policyId, @PathParam("portId") String portId); + + @Named("monitoringpolicy:ports:create") + @POST + @Path("/{policyId}/ports") + MonitoringPolicy addPort(@PathParam("policyId") String policyId, @BinderParam(BindToJsonPayload.class) MonitoringPolicy.Port.CreatePort port); + + @Named("monitoringpolicy:ports:update") + @PUT + @Path("/{policyId}/ports/{portId}") + MonitoringPolicy updatePort(@PathParam("policyId") String policyId, @PathParam("portId") String portId, @BinderParam(BindToJsonPayload.class) MonitoringPolicy.Port.UpdatePort port); + + @Named("monitoringpolicy:ports:delete") + @DELETE + @Path("/{policyId}/ports/{portId}") + @Fallback(Fallbacks.NullOnNotFoundOr404.class) + @MapBinder(BindToJsonPayload.class) + MonitoringPolicy deletePort(@PathParam("policyId") String policyId, @PathParam("portId") String portId); + + @Named("monitoringpolicy:processes:list") + @GET + @Path("/{policyId}/processes") + @Fallback(Fallbacks.EmptyListOnNotFoundOr404.class) + List<MonitoringPolicy.Process> listProcesses(@PathParam("policyId") String policyId); + + @Named("monitoringpolicy:processes:get") + @GET + @Path("/{policyId}/processes/{processId}") + @Fallback(Fallbacks.NullOnNotFoundOr404.class) + MonitoringPolicy.Process getProcess(@PathParam("policyId") String policyId, @PathParam("processId") String processId); + + @Named("monitoringpolicy:processes:create") + @POST + @Path("/{policyId}/processes") + MonitoringPolicy addProcess(@PathParam("policyId") String policyId, @BinderParam(BindToJsonPayload.class) MonitoringPolicy.Process.CreateProcess process); + + @Named("monitoringpolicy:processes:update") + @PUT + @Path("/{policyId}/processes/{processId}") + MonitoringPolicy updateProcess(@PathParam("policyId") String policyId, @PathParam("processId") String processId, @BinderParam(BindToJsonPayload.class) MonitoringPolicy.Process.UpdateProcess process); + + @Named("monitoringpolicy:processes:delete") + @DELETE + @Path("/{policyId}/processes/{processId}") + @Fallback(Fallbacks.NullOnNotFoundOr404.class) + @MapBinder(BindToJsonPayload.class) + MonitoringPolicy deleteProcess(@PathParam("policyId") String policyId, @PathParam("processId") String processId); + + @Named("monitoringpolicy:servers:list") + @GET + @Path("/{policyId}/servers") + @Fallback(Fallbacks.EmptyListOnNotFoundOr404.class) + List<MonitoringPolicy.Server> listServers(@PathParam("policyId") String policyId); + + @Named("monitoringpolicy:servers:create") + @POST + @Path("/{policyId}/servers") + MonitoringPolicy attachServer(@PathParam("policyId") String policyId, @BinderParam(BindToJsonPayload.class) MonitoringPolicy.Server.CreateServer server); + + @Named("monitoringpolicy:servers:get") + @GET + @Path("/{policyId}/servers/{serverId}") + @Fallback(Fallbacks.NullOnNotFoundOr404.class) + MonitoringPolicy.Server getServer(@PathParam("policyId") String policyId, @PathParam("serverId") String serverId); + + @Named("monitoringpolicy:servers:delete") + @DELETE + @Path("/{policyId}/servers/{serverId}") + @Fallback(Fallbacks.NullOnNotFoundOr404.class) + @MapBinder(BindToJsonPayload.class) + MonitoringPolicy detachServer(@PathParam("policyId") String policyId, @PathParam("serverId") String serverId); +} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/87c54700/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/features/MonitoringCenterApiLiveTest.java ---------------------------------------------------------------------- diff --git a/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/features/MonitoringCenterApiLiveTest.java b/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/features/MonitoringCenterApiLiveTest.java new file mode 100644 index 0000000..57ab678 --- /dev/null +++ b/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/features/MonitoringCenterApiLiveTest.java @@ -0,0 +1,93 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 org.apache.jclouds.oneandone.rest.features; + +import java.util.Calendar; +import java.util.Date; +import java.util.List; +import org.apache.jclouds.oneandone.rest.domain.MonitoringCenter; +import org.apache.jclouds.oneandone.rest.domain.Server; +import org.apache.jclouds.oneandone.rest.domain.Types; +import org.apache.jclouds.oneandone.rest.domain.options.GenericDateQueryOptions; +import org.apache.jclouds.oneandone.rest.domain.options.GenericQueryOptions; +import org.apache.jclouds.oneandone.rest.internal.BaseOneAndOneLiveTest; +import org.testng.Assert; +import static org.testng.Assert.assertNotNull; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +@Test(groups = "live", testName = "MonitoringCenterApiLiveTest") +public class MonitoringCenterApiLiveTest extends BaseOneAndOneLiveTest { + + private Server currentServer; + + private MonitoringCenterApi monitoringCenterApi() { + + return api.monitoringCenterApi(); + } + + @BeforeClass + public void setupTest() throws InterruptedException { + currentServer = createServer("Monitoring Center jclouds server"); + assertNodeAvailable(currentServer); + } + + @Test + public void testList() { + List<MonitoringCenter> result = monitoringCenterApi().list(); + + assertNotNull(result); + Assert.assertTrue(result.size() >= 1); + } + + @Test + public void testListWithOption() { + GenericQueryOptions options = new GenericQueryOptions(); + options.options(1, 1, null, null, null); + List<MonitoringCenter> resultWithQuery = monitoringCenterApi().list(options); + + assertNotNull(resultWithQuery); + Assert.assertTrue(resultWithQuery.size() >= 1); + } + + @Test + public void testGetCustomPeriod() { + GenericDateQueryOptions options = new GenericDateQueryOptions(); + Calendar cal = Calendar.getInstance(); + Date end = cal.getTime(); + cal.add(Calendar.DATE, -2); + Date start = cal.getTime(); + options.customPeriod(start, end); + MonitoringCenter result = monitoringCenterApi().get(currentServer.id(), options); + assertNotNull(result); + } + + @Test + public void testGetFixedPeriod() { + GenericDateQueryOptions options = new GenericDateQueryOptions(); + options.fixedPeriods(Types.PeriodType.LAST_7D); + MonitoringCenter result = monitoringCenterApi().get(currentServer.id(), options); + assertNotNull(result); + } + + @AfterClass(alwaysRun = true) + public void teardownTest() throws InterruptedException { + assertNodeAvailable(currentServer); + deleteServer(currentServer.id()); + } +} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/87c54700/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/features/MonitoringCenterApiMockTest.java ---------------------------------------------------------------------- diff --git a/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/features/MonitoringCenterApiMockTest.java b/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/features/MonitoringCenterApiMockTest.java new file mode 100644 index 0000000..dc74551 --- /dev/null +++ b/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/features/MonitoringCenterApiMockTest.java @@ -0,0 +1,159 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 org.apache.jclouds.oneandone.rest.features; + +import com.squareup.okhttp.mockwebserver.MockResponse; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.TimeZone; +import org.apache.jclouds.oneandone.rest.domain.MonitoringCenter; +import org.apache.jclouds.oneandone.rest.domain.Types; +import org.apache.jclouds.oneandone.rest.domain.options.GenericDateQueryOptions; +import org.apache.jclouds.oneandone.rest.domain.options.GenericQueryOptions; +import org.apache.jclouds.oneandone.rest.internal.BaseOneAndOneApiMockTest; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNotNull; +import org.testng.annotations.Test; + +@Test(groups = "unit", testName = "MonitoringCenterApiMockTest", singleThreaded = true) +public class MonitoringCenterApiMockTest extends BaseOneAndOneApiMockTest { + + private MonitoringCenterApi monitoringCenterApi() { + return api.monitoringCenterApi(); + } + + @Test + public void testList() throws InterruptedException { + server.enqueue( + new MockResponse().setBody(stringFromResource("/monitoringcenters/list.json")) + ); + + List<MonitoringCenter> result = monitoringCenterApi().list(); + + assertNotNull(result); + assertEquals(result.size(), 2); + + assertEquals(server.getRequestCount(), 1); + assertSent(server, "GET", "/monitoring_center"); + } + + @Test + public void testList404() throws InterruptedException { + server.enqueue( + new MockResponse().setResponseCode(404)); + + List<MonitoringCenter> result = monitoringCenterApi().list(); + + assertEquals(result.size(), 0); + + assertEquals(server.getRequestCount(), 1); + assertSent(server, "GET", "/monitoring_center"); + } + + @Test + public void testListWithOption() throws InterruptedException { + server.enqueue( + new MockResponse().setBody(stringFromResource("/monitoringcenters/list.options.json")) + ); + GenericQueryOptions options = new GenericQueryOptions(); + options.options(0, 0, null, "New", null); + List<MonitoringCenter> result = monitoringCenterApi().list(options); + + assertEquals(result.size(), 2); + assertEquals(server.getRequestCount(), 1); + assertSent(server, "GET", "/monitoring_center?q=New"); + } + + @Test + public void testListWithOption404() throws InterruptedException { + server.enqueue( + new MockResponse().setResponseCode(404)); + + GenericQueryOptions options = new GenericQueryOptions(); + options.options(0, 0, null, "New", null); + List<MonitoringCenter> result = monitoringCenterApi().list(options); + + assertEquals(result.size(), 0); + assertEquals(server.getRequestCount(), 1); + assertSent(server, "GET", "/monitoring_center?q=New"); + } + + public void testGetCustomPeriod() throws InterruptedException, ParseException { + server.enqueue( + new MockResponse().setBody(stringFromResource("/monitoringcenters/get.json")) + ); + GenericDateQueryOptions options = new GenericDateQueryOptions(); + String startStr = "11-11-2012"; + String endStr = "11-11-2013"; + DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy"); + dateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); + Date end = dateFormat.parse(endStr); + Date start = dateFormat.parse(startStr); + options.customPeriod(start, end); + + MonitoringCenter result = monitoringCenterApi().get("serverId", options); + assertNotNull(result); + assertEquals(server.getRequestCount(), 1); + assertSent(server, "GET", "/monitoring_center/serverId?period=CUSTOM&start_date=2012-11-11T00%3A00%3A00Z&end_date=2013-11-11T00%3A00%3A00Z"); + } + + public void testGetCustomPeriod404() throws InterruptedException, ParseException { + server.enqueue( + new MockResponse().setResponseCode(404)); + GenericDateQueryOptions options = new GenericDateQueryOptions(); + String startStr = "11-11-2012"; + String endStr = "11-11-2013"; + DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy"); + dateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); + Date end = dateFormat.parse(endStr); + Date start = dateFormat.parse(startStr); + options.customPeriod(start, end); + MonitoringCenter result = monitoringCenterApi().get("serverId", options); + + assertEquals(result, null); + assertEquals(server.getRequestCount(), 1); + assertSent(server, "GET", "/monitoring_center/serverId?period=CUSTOM&start_date=2012-11-11T00%3A00%3A00Z&end_date=2013-11-11T00%3A00%3A00Z"); + } + + public void testGetFixedPeriod() throws InterruptedException { + server.enqueue( + new MockResponse().setBody(stringFromResource("/monitoringcenters/get.json")) + ); + GenericDateQueryOptions options = new GenericDateQueryOptions(); + options.fixedPeriods(Types.PeriodType.LAST_24H); + MonitoringCenter result = monitoringCenterApi().get("serverId", options); + + assertNotNull(result); + assertEquals(server.getRequestCount(), 1); + assertSent(server, "GET", "/monitoring_center/serverId?period=LAST_24H"); + } + + public void testGetFixedPeriod404() throws InterruptedException { + server.enqueue( + new MockResponse().setResponseCode(404)); + GenericDateQueryOptions options = new GenericDateQueryOptions(); + options.fixedPeriods(Types.PeriodType.LAST_24H); + MonitoringCenter result = monitoringCenterApi().get("serverId", options); + + assertEquals(result, null); + assertEquals(server.getRequestCount(), 1); + assertSent(server, "GET", "/monitoring_center/serverId?period=LAST_24H"); + } +} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/87c54700/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/features/MonitoringPolicyApiLiveTest.java ---------------------------------------------------------------------- diff --git a/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/features/MonitoringPolicyApiLiveTest.java b/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/features/MonitoringPolicyApiLiveTest.java new file mode 100644 index 0000000..a9efc56 --- /dev/null +++ b/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/features/MonitoringPolicyApiLiveTest.java @@ -0,0 +1,282 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 org.apache.jclouds.oneandone.rest.features; + +import java.util.ArrayList; +import java.util.List; +import org.apache.jclouds.oneandone.rest.domain.MonitoringPolicy; +import org.apache.jclouds.oneandone.rest.domain.Server; +import org.apache.jclouds.oneandone.rest.domain.Types; +import org.apache.jclouds.oneandone.rest.domain.options.GenericQueryOptions; +import org.apache.jclouds.oneandone.rest.internal.BaseOneAndOneLiveTest; +import org.testng.Assert; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNotNull; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +@Test(groups = "live", testName = "MonitoringPolicyApiLiveTest") +public class MonitoringPolicyApiLiveTest extends BaseOneAndOneLiveTest { + + private MonitoringPolicy currentPolicy; + private MonitoringPolicy.Port currentPort; + private MonitoringPolicy.Process currentProcess; + private List<MonitoringPolicy> policies; + private Server currentServer; + + private MonitoringPolicyApi monitoringPolicyApi() { + + return api.monitoringPolicyApi(); + } + + @BeforeClass + public void setupTest() { + currentServer = createServer("Monitoring Policy jclouds server"); + assertNodeAvailable(currentServer); + + List<MonitoringPolicy.Port.AddPort> ports = new ArrayList<MonitoringPolicy.Port.AddPort>(); + MonitoringPolicy.Port.AddPort port = MonitoringPolicy.Port.AddPort.create(80, Types.AlertIfType.RESPONDING, true, Types.ProtocolType.TCP); + ports.add(port); + + List<org.apache.jclouds.oneandone.rest.domain.MonitoringPolicy.Process.AddProcess> processes = new ArrayList<org.apache.jclouds.oneandone.rest.domain.MonitoringPolicy.Process.AddProcess>(); + org.apache.jclouds.oneandone.rest.domain.MonitoringPolicy.Process.AddProcess process = org.apache.jclouds.oneandone.rest.domain.MonitoringPolicy.Process.AddProcess.create("", Types.AlertIfType.RESPONDING, true); + processes.add(process); + + MonitoringPolicy.Threshold.Cpu.Warning warning = MonitoringPolicy.Threshold.Cpu.Warning.create(90, true); + MonitoringPolicy.Threshold.Cpu.Critical critical = MonitoringPolicy.Threshold.Cpu.Critical.create(95, true); + MonitoringPolicy.Threshold.Cpu cpu = MonitoringPolicy.Threshold.Cpu.create(warning, critical); + + MonitoringPolicy.Threshold.Ram.Warning ramWarning = MonitoringPolicy.Threshold.Ram.Warning.create(90, true); + MonitoringPolicy.Threshold.Ram.Critical ramCritical = MonitoringPolicy.Threshold.Ram.Critical.create(95, true); + MonitoringPolicy.Threshold.Ram ram = MonitoringPolicy.Threshold.Ram.create(ramWarning, ramCritical); + + MonitoringPolicy.Threshold.Disk.Warning diskWarning = MonitoringPolicy.Threshold.Disk.Warning.create(90, true); + MonitoringPolicy.Threshold.Disk.Critical diskCritical = MonitoringPolicy.Threshold.Disk.Critical.create(95, true); + MonitoringPolicy.Threshold.Disk disk = MonitoringPolicy.Threshold.Disk.create(diskWarning, diskCritical); + + MonitoringPolicy.Threshold.InternalPing.Warning pingWarning = MonitoringPolicy.Threshold.InternalPing.Warning.create(50, true); + MonitoringPolicy.Threshold.InternalPing.Critical pingCritical = MonitoringPolicy.Threshold.InternalPing.Critical.create(100, true); + MonitoringPolicy.Threshold.InternalPing ping = MonitoringPolicy.Threshold.InternalPing.create(pingWarning, pingCritical); + + MonitoringPolicy.Threshold.Transfer.Warning tranWarning = MonitoringPolicy.Threshold.Transfer.Warning.create(1000, true); + MonitoringPolicy.Threshold.Transfer.Critical tranCritical = MonitoringPolicy.Threshold.Transfer.Critical.create(2000, true); + MonitoringPolicy.Threshold.Transfer transfer = MonitoringPolicy.Threshold.Transfer.create(tranWarning, tranCritical); + + MonitoringPolicy.Threshold threshold = MonitoringPolicy.Threshold.create(cpu, ram, disk, transfer, ping); + MonitoringPolicy.CreatePolicy payload = MonitoringPolicy.CreatePolicy.builder() + .name("jclouds policy") + .agent(true) + .email("[email protected]") + .ports(ports) + .processes(processes) + .description("dsec") + .thresholds(threshold) + .build(); + currentPolicy = monitoringPolicyApi().create(payload); + } + + @Test + public void testList() { + policies = monitoringPolicyApi().list(); + + assertNotNull(policies); + Assert.assertTrue(policies.size() > 0); + } + + @Test + public void testListWithOption() { + GenericQueryOptions options = new GenericQueryOptions(); + options.options(0, 0, null, "jclouds", null); + List<MonitoringPolicy> resultWithQuery = monitoringPolicyApi().list(options); + + assertNotNull(resultWithQuery); + Assert.assertTrue(resultWithQuery.size() > 0); + } + + @Test + public void testGet() { + MonitoringPolicy result = monitoringPolicyApi().get(currentPolicy.id()); + + assertNotNull(result); + assertEquals(result.id(), currentPolicy.id()); + } + + @Test(dependsOnMethods = "testGet") + public void testUpdate() throws InterruptedException { + String updatedName = "updatejclouds PN"; + MonitoringPolicy.Threshold.Cpu.Warning warning = MonitoringPolicy.Threshold.Cpu.Warning.create(91, true); + MonitoringPolicy.Threshold.Cpu.Critical critical = MonitoringPolicy.Threshold.Cpu.Critical.create(96, true); + MonitoringPolicy.Threshold.Cpu cpu = MonitoringPolicy.Threshold.Cpu.create(warning, critical); + + MonitoringPolicy.Threshold.Ram.Warning ramWarning = MonitoringPolicy.Threshold.Ram.Warning.create(91, true); + MonitoringPolicy.Threshold.Ram.Critical ramCritical = MonitoringPolicy.Threshold.Ram.Critical.create(96, true); + MonitoringPolicy.Threshold.Ram ram = MonitoringPolicy.Threshold.Ram.create(ramWarning, ramCritical); + + MonitoringPolicy.Threshold.Disk.Warning diskWarning = MonitoringPolicy.Threshold.Disk.Warning.create(90, true); + MonitoringPolicy.Threshold.Disk.Critical diskCritical = MonitoringPolicy.Threshold.Disk.Critical.create(95, true); + MonitoringPolicy.Threshold.Disk disk = MonitoringPolicy.Threshold.Disk.create(diskWarning, diskCritical); + + MonitoringPolicy.Threshold.InternalPing.Warning pingWarning = MonitoringPolicy.Threshold.InternalPing.Warning.create(50, true); + MonitoringPolicy.Threshold.InternalPing.Critical pingCritical = MonitoringPolicy.Threshold.InternalPing.Critical.create(100, true); + MonitoringPolicy.Threshold.InternalPing ping = MonitoringPolicy.Threshold.InternalPing.create(pingWarning, pingCritical); + + MonitoringPolicy.Threshold.Transfer.Warning tranWarning = MonitoringPolicy.Threshold.Transfer.Warning.create(1100, true); + MonitoringPolicy.Threshold.Transfer.Critical tranCritical = MonitoringPolicy.Threshold.Transfer.Critical.create(2100, true); + MonitoringPolicy.Threshold.Transfer transfer = MonitoringPolicy.Threshold.Transfer.create(tranWarning, tranCritical); + + MonitoringPolicy.Threshold threshold = MonitoringPolicy.Threshold.create(cpu, ram, disk, transfer, ping); + MonitoringPolicy.UpdatePolicy payload = MonitoringPolicy.UpdatePolicy.builder() + .name(updatedName) + .agent(true) + .email("[email protected]") + .description("dsec") + .thresholds(threshold) + .build(); + + MonitoringPolicy updateResult = monitoringPolicyApi().update(currentPolicy.id(), payload); + + assertNotNull(updateResult); + assertEquals(updateResult.name(), updatedName); + + } + + @Test(dependsOnMethods = "testUpdate") + public void testAddPort() throws InterruptedException { + List<MonitoringPolicy.Port.AddPort> ports = new ArrayList<MonitoringPolicy.Port.AddPort>(); + MonitoringPolicy.Port.AddPort port = MonitoringPolicy.Port.AddPort.create(80, Types.AlertIfType.RESPONDING, true, Types.ProtocolType.TCP); + ports.add(port); + MonitoringPolicy response = monitoringPolicyApi().addPort(currentPolicy.id(), MonitoringPolicy.Port.CreatePort.create(ports)); + + assertNotNull(response); + assertNotNull(response.ports().get(0)); + currentPort = response.ports().get(0); + } + + @Test(dependsOnMethods = "testAddPort") + public void testListPorts() throws InterruptedException { + List<MonitoringPolicy.Port> result = monitoringPolicyApi().listPorts(currentPolicy.id()); + + assertNotNull(result); + assertEquals(result.size(), 1); + } + + @Test(dependsOnMethods = "testUpdatePort") + public void testGetPort() throws InterruptedException { + MonitoringPolicy.Port result = monitoringPolicyApi().getPort(currentPolicy.id(), currentPort.id()); + assertNotNull(result); + } + + @Test(dependsOnMethods = "testListPorts") + public void testUpdatePort() throws InterruptedException { + + MonitoringPolicy.Port.AddPort port = MonitoringPolicy.Port.AddPort.create(80, Types.AlertIfType.RESPONDING, true, Types.ProtocolType.TCP); + + MonitoringPolicy response = monitoringPolicyApi().updatePort(currentPolicy.id(), currentPort.id(), MonitoringPolicy.Port.UpdatePort.create(port)); + assertNotNull(response); + } + + @Test(dependsOnMethods = "testGetPort") + public void testDeletePort() throws InterruptedException { + MonitoringPolicy response = monitoringPolicyApi().deletePort(currentPolicy.id(), currentPort.id()); + + assertNotNull(response); + } + + @Test(dependsOnMethods = "testDeletePort") + public void testAddProcess() throws InterruptedException { + List<MonitoringPolicy.Process.AddProcess> processes = new ArrayList<MonitoringPolicy.Process.AddProcess>(); + MonitoringPolicy.Process.AddProcess process = MonitoringPolicy.Process.AddProcess.create("process", Types.AlertIfType.RESPONDING, true); + processes.add(process); + MonitoringPolicy response = monitoringPolicyApi().addProcess(currentPolicy.id(), MonitoringPolicy.Process.CreateProcess.create(processes)); + currentProcess = response.processes().get(0); + + assertNotNull(response); + } + + @Test(dependsOnMethods = "testAddProcess") + public void testListProcesses() throws InterruptedException { + List<MonitoringPolicy.Process> result = monitoringPolicyApi().listProcesses(currentPolicy.id()); + + assertNotNull(result); + assertEquals(result.size(), 2); + } + + @Test(dependsOnMethods = "testUpdateProcess") + public void testGetProcess() throws InterruptedException { + MonitoringPolicy.Process result = monitoringPolicyApi().getProcess(currentPolicy.id(), currentProcess.id()); + assertNotNull(result); + } + + @Test(dependsOnMethods = "testListProcesses") + public void testUpdateProcess() throws InterruptedException { + + MonitoringPolicy.Process.AddProcess process = MonitoringPolicy.Process.AddProcess.create("process", Types.AlertIfType.RESPONDING, true); + MonitoringPolicy response = monitoringPolicyApi().updateProcess(currentPolicy.id(), currentProcess.id(), MonitoringPolicy.Process.UpdateProcess.create(process)); + assertNotNull(response); + } + + @Test(dependsOnMethods = "testGetProcess") + public void testDeleteProcess() throws InterruptedException { + MonitoringPolicy response = monitoringPolicyApi().deleteProcess(currentPolicy.id(), currentProcess.id()); + + assertNotNull(response); + } + + @Test(dependsOnMethods = "testAttachServer") + public void testListServers() throws InterruptedException { + List<MonitoringPolicy.Server> servers = monitoringPolicyApi().listServers(currentPolicy.id()); + + assertNotNull(servers); + Assert.assertTrue(servers.size() > 0); + } + + @Test(dependsOnMethods = "testListServers") + public void testGetServer() throws InterruptedException { + MonitoringPolicy.Server result = monitoringPolicyApi().getServer(currentPolicy.id(), currentServer.id()); + + assertNotNull(result); + } + + @Test(dependsOnMethods = "testDeleteProcess") + public void testAttachServer() throws InterruptedException { + List<String> servers = new ArrayList<String>(); + servers.add(currentServer.id()); + + MonitoringPolicy response = monitoringPolicyApi().attachServer(currentPolicy.id(), MonitoringPolicy.Server.CreateServer.create(servers)); + assertNotNull(response); + } + + @Test(dependsOnMethods = "testGetServer") + public void testDetachServer() throws InterruptedException { + MonitoringPolicy response = monitoringPolicyApi().detachServer(currentPolicy.id(), currentServer.id()); + + assertNotNull(response); + } + + @AfterClass(alwaysRun = true) + public void teardownTest() throws InterruptedException { + if (currentServer != null) { + assertNodeAvailable(currentServer); + deleteServer(currentServer.id()); + } + if (currentPolicy != null) { + monitoringPolicyApi().delete(currentPolicy.id()); + } + } + +}
