diff --git a/sandbox-apis/cloudstack/src/main/java/org/jclouds/cloudstack/domain/Event.java b/sandbox-apis/cloudstack/src/main/java/org/jclouds/cloudstack/domain/Event.java new file mode 100644 index 0000000000..29925ca727 --- /dev/null +++ b/sandbox-apis/cloudstack/src/main/java/org/jclouds/cloudstack/domain/Event.java @@ -0,0 +1,274 @@ +/** + * Licensed to jclouds, Inc. (jclouds) under one or more + * contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. jclouds 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.jclouds.cloudstack.domain; + +import java.util.Date; + +/** + * @author Vijay Kiran + */ +public class Event implements Comparable { + + public static Builder builder() { + return new Builder(); + } + + public static class Builder { + private long id; + private String account; + private String description; + private Date created; + private String domain; + private long domainId; + //TODO Change to enum : the event level (INFO, WARN, ERROR) + private String level; + private String parentId; + private String state; + //Event Type + private String type; + private String username; + + public Builder id(long id) { + this.id = id; + return this; + } + + public Builder account(String account) { + this.account = account; + return this; + } + + public Builder description(String description) { + this.description = description; + return this; + } + + public Builder created(Date created) { + this.created = created; + return this; + } + + public Builder domain(String domain) { + this.domain = domain; + return this; + } + + public Builder domainId(long domainId) { + this.domainId = domainId; + return this; + } + + public Builder level(String level) { + this.level = level; + return this; + } + + public Builder parentId(String parentId) { + this.parentId = parentId; + return this; + } + + public Builder state(String state) { + this.state = state; + return this; + } + + public Builder type(String type) { + this.type = type; + return this; + } + + public Builder username(String username) { + this.username = username; + return this; + } + + public Event build() { + return new Event(id, account, description, created, domain, domainId, level, parentId, state, type, username); + } + + } + + private long id; + private String account; + private String description; + private Date created; + private String domain; + private long domainId; + //TODO Change to enum : the event level (INFO, WARN, ERROR) + private String level; + private String parentId; + private String state; + //Event Type + private String type; + private String username; + + public Event(long id, String account, String description, Date created, String domain, long domainId, String level, + String parentId, String state, String type, String username) { + this.id = id; + this.account = account; + this.description = description; + this.created = created; + this.domain = domain; + this.domainId = domainId; + this.level = level; + this.parentId = parentId; + this.state = state; + this.type = type; + this.username = username; + } + + /** + * present only for serializer + */ + Event() { + + } + + /** + * @return the ID of the event + */ + public long getId() { + return id; + } + + /** + * @return the account name for the account that owns the object being acted on in the event + * (e.g. the owner of the virtual machine, ip address, or security group) + */ + public String getAccount() { + return account; + } + + /** + * @return the date the event was created + */ + public Date getCreated() { + return created; + } + + /** + * @return the description of the event + */ + public String getDescription() { + return description; + } + + /** + * @return the name of the account's domain + */ + public String getDomain() { + return domain; + } + + /** + * @return the id of the account's domain + */ + public long getDomainId() { + return domainId; + } + + /** + * @return the event level (INFO, WARN, ERROR) + */ + public String getLevel() { + return level; + } + + /** + * @return whether the event is parented + */ + public String getParentId() { + return parentId; + } + + /** + * @return the state of the event + */ + public String getState() { + return state; + } + + /** + * @return the type of the event (see event types) + */ + public String getType() { + return type; + } + + /** + * @return the name of the user who performed the action (can be different from the account if + * an admin is performing an action for a user, e.g. starting/stopping a user's virtual machine) + */ + public String getUsername() { + return username; + } + + @Override + public int compareTo(Event arg0) { + return new Long(id).compareTo(arg0.getId()); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + Event event = (Event) o; + + if (domainId != event.domainId) return false; + if (id != event.id) return false; + if (account != null ? !account.equals(event.account) : event.account != null) return false; + if (created != null ? !created.equals(event.created) : event.created != null) return false; + if (description != null ? !description.equals(event.description) : event.description != null) return false; + if (domain != null ? !domain.equals(event.domain) : event.domain != null) return false; + if (level != null ? !level.equals(event.level) : event.level != null) return false; + if (parentId != null ? !parentId.equals(event.parentId) : event.parentId != null) return false; + if (state != null ? !state.equals(event.state) : event.state != null) return false; + if (type != null ? !type.equals(event.type) : event.type != null) return false; + if (username != null ? !username.equals(event.username) : event.username != null) return false; + + return true; + } + + @Override + public int hashCode() { + int result = (int) (id ^ (id >>> 32)); + result = 31 * result + (account != null ? account.hashCode() : 0); + result = 31 * result + (description != null ? description.hashCode() : 0); + result = 31 * result + (created != null ? created.hashCode() : 0); + result = 31 * result + (domain != null ? domain.hashCode() : 0); + result = 31 * result + (int) (domainId ^ (domainId >>> 32)); + result = 31 * result + (level != null ? level.hashCode() : 0); + result = 31 * result + (parentId != null ? parentId.hashCode() : 0); + result = 31 * result + (state != null ? state.hashCode() : 0); + result = 31 * result + (type != null ? type.hashCode() : 0); + result = 31 * result + (username != null ? username.hashCode() : 0); + return result; + } + + @Override + public String toString() { + return String.format("[id=%d, account=%s, description=%s, created=%s, domain=%s, domainId=%d, level=%s, " + + "parentId=%s, state=%s, type=%s, username=%s]", + id, account, description, created, domain, domainId, level, parentId, state, type, username); + } + + +} diff --git a/sandbox-apis/cloudstack/src/main/java/org/jclouds/cloudstack/features/EventClient.java b/sandbox-apis/cloudstack/src/main/java/org/jclouds/cloudstack/features/EventClient.java index 6f2fbe154a..ef7c28ddce 100644 --- a/sandbox-apis/cloudstack/src/main/java/org/jclouds/cloudstack/features/EventClient.java +++ b/sandbox-apis/cloudstack/src/main/java/org/jclouds/cloudstack/features/EventClient.java @@ -39,4 +39,7 @@ public interface EventClient { * @return event types or null if not found */ Set listEventTypes(); + + + } diff --git a/sandbox-apis/cloudstack/src/main/java/org/jclouds/cloudstack/options/ListEventsOptions.java b/sandbox-apis/cloudstack/src/main/java/org/jclouds/cloudstack/options/ListEventsOptions.java index 5d17a26d7b..31fa3bc0dc 100644 --- a/sandbox-apis/cloudstack/src/main/java/org/jclouds/cloudstack/options/ListEventsOptions.java +++ b/sandbox-apis/cloudstack/src/main/java/org/jclouds/cloudstack/options/ListEventsOptions.java @@ -18,6 +18,11 @@ */ package org.jclouds.cloudstack.options; +import java.util.Date; + +import com.google.common.collect.ImmutableSet; +import org.jclouds.http.options.BaseHttpRequestOptions; + /** * Options used to control what events are returned * @@ -26,6 +31,69 @@ package org.jclouds.cloudstack.options; * "http://download.cloud.com/releases/2.2.0/api_2.2.12/user/listEvents.html" * /> */ -public class ListEventsOptions { +public class ListEventsOptions extends BaseHttpRequestOptions { + public static final ListEventsOptions NONE = new ListEventsOptions(); + + public ListEventsOptions account(String account) { + this.queryParameters.replaceValues("account", ImmutableSet.of(account)); + return this; + } + + public ListEventsOptions domainId(long domainId) { + this.queryParameters.replaceValues("domainid", ImmutableSet.of(domainId + "")); + return this; + } + + public ListEventsOptions duration(String duration) { + this.queryParameters.replaceValues("duration", ImmutableSet.of(duration)); + return this; + } + + public ListEventsOptions endDate(Date enddate) { + this.queryParameters.replaceValues("enddate", ImmutableSet.of(enddate + "")); + return this; + } + + public ListEventsOptions entryTime(Date entrytime) { + this.queryParameters.replaceValues("entrytime", ImmutableSet.of(entrytime + "")); + return this; + } + + public ListEventsOptions id(String id) { + this.queryParameters.replaceValues("id", ImmutableSet.of(id)); + return this; + } + + public ListEventsOptions keyword(String keyword) { + this.queryParameters.replaceValues("keyword", ImmutableSet.of(keyword)); + return this; + } + + public ListEventsOptions level(String level) { + this.queryParameters.replaceValues("level", ImmutableSet.of(level)); + return this; + } + +// page +// pagesize +// startdate +// type + + /** + * @param name the SSHKeyPair name + */ + public ListEventsOptions name(String name) { + this.queryParameters.replaceValues("name", ImmutableSet.of(name)); + return this; + } + + public static class Builder { + public static ListEventsOptions name(String name) { + ListEventsOptions options = new ListEventsOptions(); + return options.name(name); + } + + } + }