mirror of https://github.com/apache/jclouds.git
Issue 695: Added Row,Group and Layout plus parse them from xml
This commit is contained in:
parent
d33893d2c5
commit
4be5c05206
|
@ -0,0 +1,34 @@
|
|||
/**
|
||||
* 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.trmk.enterprisecloud.domain;
|
||||
|
||||
import org.jclouds.trmk.enterprisecloud.domain.internal.BaseNamedResource;
|
||||
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
/**
|
||||
* @author Jason King
|
||||
*/
|
||||
@XmlRootElement(name = "Group")
|
||||
public class Group extends BaseNamedResource<Group>{
|
||||
|
||||
public Group() {
|
||||
//For JAXB
|
||||
}
|
||||
}
|
|
@ -0,0 +1,84 @@
|
|||
/**
|
||||
* 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.trmk.enterprisecloud.domain;
|
||||
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
/**
|
||||
* Layout is a logical aggregation of virtual machines and physical devices defined by the organization.
|
||||
* Layout is an environment concept but visible from both the environment and the compute pool.
|
||||
* From the environment, all rows, groups, virtual machines, and physical devices are visible.
|
||||
* From the compute pool, only a subset is visible.
|
||||
* To appear in a compute pool layout, virtual machines in the rows and groups must be allocated from the compute pool.
|
||||
* As physical devices are not allocated from the compute pool, they do not appear on compute pool layouts.
|
||||
* @author Jason King
|
||||
*/
|
||||
@XmlRootElement(name = "Layout")
|
||||
public class Layout {
|
||||
@XmlElement(name = "Group")
|
||||
private Group group;
|
||||
|
||||
@XmlElement(name = "Row")
|
||||
private Row row;
|
||||
|
||||
public Layout(Group group, Row row) {
|
||||
this.group = group;
|
||||
this.row = row;
|
||||
}
|
||||
|
||||
public Layout() {
|
||||
//For JAXB
|
||||
}
|
||||
|
||||
public Group getGroup() {
|
||||
return group;
|
||||
}
|
||||
|
||||
public Row getRow() {
|
||||
return row;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
|
||||
Layout layout = (Layout) o;
|
||||
|
||||
if (group != null ? !group.equals(layout.group) : layout.group != null)
|
||||
return false;
|
||||
if (row != null ? !row.equals(layout.row) : layout.row != null)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int result = group != null ? group.hashCode() : 0;
|
||||
result = 31 * result + (row != null ? row.hashCode() : 0);
|
||||
return result;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return "[group="+group+", row="+row+"]";
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
/**
|
||||
* 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.trmk.enterprisecloud.domain;
|
||||
|
||||
import org.jclouds.trmk.enterprisecloud.domain.internal.BaseNamedResource;
|
||||
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
/**
|
||||
* @author Jason King
|
||||
*/
|
||||
@XmlRootElement(name = "Row")
|
||||
public class Row extends BaseNamedResource<Row>{
|
||||
public Row() {
|
||||
//For JAXB
|
||||
}
|
||||
}
|
|
@ -56,9 +56,10 @@ public class VirtualMachine extends BaseNamedResource<VirtualMachine> {
|
|||
private Actions actions;
|
||||
private Tasks tasks;
|
||||
private String description;
|
||||
private Layout layout;
|
||||
|
||||
/**
|
||||
* @see org.jclouds.trmk.enterprisecloud.domain.VirtualMachine#getLinks
|
||||
* @see VirtualMachine#getLinks
|
||||
*/
|
||||
public Builder links(Set<Link> links) {
|
||||
this.links = new Links();
|
||||
|
@ -67,7 +68,7 @@ public class VirtualMachine extends BaseNamedResource<VirtualMachine> {
|
|||
}
|
||||
|
||||
/**
|
||||
* @see org.jclouds.trmk.enterprisecloud.domain.VirtualMachine#getActions
|
||||
* @see VirtualMachine#getActions
|
||||
*/
|
||||
public Builder actions(Set<Action> actions) {
|
||||
this.actions = new Actions();
|
||||
|
@ -76,7 +77,7 @@ public class VirtualMachine extends BaseNamedResource<VirtualMachine> {
|
|||
}
|
||||
|
||||
/**
|
||||
* @see org.jclouds.trmk.enterprisecloud.domain.VirtualMachine#getTasks
|
||||
* @see VirtualMachine#getTasks
|
||||
*/
|
||||
public Builder tasks(Set<Task> tasks) {
|
||||
this.tasks = new Tasks();
|
||||
|
@ -86,16 +87,24 @@ public class VirtualMachine extends BaseNamedResource<VirtualMachine> {
|
|||
|
||||
|
||||
/**
|
||||
* @see org.jclouds.trmk.enterprisecloud.domain.VirtualMachine#getDescription
|
||||
* @see VirtualMachine#getDescription
|
||||
*/
|
||||
public Builder description(String description) {
|
||||
this.description = description;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see VirtualMachine#getLayout()
|
||||
*/
|
||||
public Builder description(Layout layout) {
|
||||
this.layout = layout;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public VirtualMachine build() {
|
||||
return new VirtualMachine(href, type, name, tasks, actions, links, description);
|
||||
return new VirtualMachine(href, type, name, tasks, actions, links, description, layout);
|
||||
}
|
||||
|
||||
public Builder fromVirtualMachine(VirtualMachine in) {
|
||||
|
@ -169,12 +178,16 @@ public class VirtualMachine extends BaseNamedResource<VirtualMachine> {
|
|||
@XmlElement(name = "Description", required = true)
|
||||
private String description;
|
||||
|
||||
public VirtualMachine(URI href, String type, String name, Tasks tasks, Actions actions, Links links, String description) {
|
||||
@XmlElement(name = "Layout", required = false)
|
||||
private Layout layout;
|
||||
|
||||
public VirtualMachine(URI href, String type, String name, Tasks tasks, Actions actions, Links links, String description, Layout layout) {
|
||||
super(href, type, name);
|
||||
this.description = checkNotNull(description, "description");
|
||||
this.links = checkNotNull(links, "links");
|
||||
this.tasks = checkNotNull(tasks, "tasks");
|
||||
this.actions = checkNotNull(actions, "actions");
|
||||
this.layout = layout;
|
||||
}
|
||||
|
||||
protected VirtualMachine() {
|
||||
|
@ -204,6 +217,10 @@ public class VirtualMachine extends BaseNamedResource<VirtualMachine> {
|
|||
return description;
|
||||
}
|
||||
|
||||
public Layout getLayout() {
|
||||
return layout;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
|
@ -214,6 +231,8 @@ public class VirtualMachine extends BaseNamedResource<VirtualMachine> {
|
|||
|
||||
if (!actions.equals(that.actions)) return false;
|
||||
if (!description.equals(that.description)) return false;
|
||||
if (layout != null ? !layout.equals(that.layout) : that.layout != null)
|
||||
return false;
|
||||
if (!links.equals(that.links)) return false;
|
||||
if (!tasks.equals(that.tasks)) return false;
|
||||
|
||||
|
@ -227,12 +246,13 @@ public class VirtualMachine extends BaseNamedResource<VirtualMachine> {
|
|||
result = 31 * result + tasks.hashCode();
|
||||
result = 31 * result + actions.hashCode();
|
||||
result = 31 * result + description.hashCode();
|
||||
result = 31 * result + (layout != null ? layout.hashCode() : 0);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public String string() {
|
||||
return super.string()+", links="+links+", tasks="+tasks+", actions="+actions+", description="+description;
|
||||
return super.string()+", links="+links+", tasks="+tasks+", actions="+actions+", description="+description+", layout="+layout;
|
||||
}
|
||||
|
||||
}
|
|
@ -34,6 +34,7 @@ import org.jclouds.rest.AuthorizationException;
|
|||
import org.jclouds.rest.BaseRestClientTest;
|
||||
import org.jclouds.rest.RestContextSpec;
|
||||
import org.jclouds.rest.internal.RestAnnotationProcessor;
|
||||
import org.jclouds.trmk.enterprisecloud.domain.Layout;
|
||||
import org.jclouds.trmk.enterprisecloud.domain.VirtualMachine;
|
||||
import org.jclouds.trmk.enterprisecloud.features.VirtualMachineAsyncClient;
|
||||
import org.testng.annotations.BeforeClass;
|
||||
|
@ -49,6 +50,7 @@ import static org.jclouds.io.Payloads.newInputStreamPayload;
|
|||
import static org.jclouds.rest.RestContextFactory.contextSpec;
|
||||
import static org.jclouds.rest.RestContextFactory.createContextBuilder;
|
||||
import static org.testng.AssertJUnit.assertEquals;
|
||||
import static org.testng.AssertJUnit.assertNotNull;
|
||||
|
||||
/**
|
||||
* Tests behavior of JAXB parsing for VirtualMachines
|
||||
|
@ -104,5 +106,13 @@ public class VirtualMachineJAXBParsingTest extends BaseRestClientTest {
|
|||
assertEquals(6,virtualMachine.getLinks().size());
|
||||
assertEquals(11,virtualMachine.getActions().size());
|
||||
assertEquals(1,virtualMachine.getTasks().size());
|
||||
|
||||
assertLayout(virtualMachine.getLayout());
|
||||
}
|
||||
|
||||
private void assertLayout(Layout layout) {
|
||||
assertNotNull(layout);
|
||||
assertEquals("test row",layout.getRow().getName());
|
||||
assertEquals("test group",layout.getGroup().getName());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue