You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by na...@apache.org on 2013/08/23 10:37:40 UTC
[1/5] JCLOUDS-198: Implemented the PagedIterable in Abiquo
Updated Branches:
refs/heads/master 0cec06649 -> 14fbe2d38
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/resources/payloads/enterprises-lastpage.xml
----------------------------------------------------------------------
diff --git a/abiquo/src/test/resources/payloads/enterprises-lastpage.xml b/abiquo/src/test/resources/payloads/enterprises-lastpage.xml
new file mode 100644
index 0000000..77654c9
--- /dev/null
+++ b/abiquo/src/test/resources/payloads/enterprises-lastpage.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<enterprises>
+ <link rel="first" href="http://localhost/api/admin/enterprises" />
+ <link rel="previous" href="http://localhost/api/admin/enterprises?startwith=0"/>
+ <link rel="last" href="http://localhost/api/admin/enterprises?startwith=1"/>
+ <totalSize>2</totalSize>
+ <enterprise>
+ <link rel="appslib/templateDefinitionLists" type="application/vnd.abiquo.templatedefinitionlists+xml" href="http://localhost/api/admin/enterprises/1/appslib/templateDefinitionLists"/>
+ <link rel="appslib/templateDefinitions" type="application/vnd.abiquo.templatedefinitions+xml" href="http://localhost/api/admin/enterprises/1/appslib/templateDefinitions"/>
+ <link rel="cloud/virtualdatacenters" type="application/vnd.abiquo.virtualdatacenters+xml" href="http://localhost/api/admin/enterprises/1/action/virtualdatacenters"/>
+ <link rel="datacenterrepositories" type="application/vnd.abiquo.datacenterrepositories+xml" href="http://localhost/api/admin/enterprises/1/datacenterrepositories"/>
+ <link rel="edit" type="application/vnd.abiquo.enterprise+xml" href="http://localhost/api/admin/enterprises/1"/>
+ <link rel="externalnetworks" type="application/vnd.abiquo.vlans+xml" href="http://localhost/api/admin/enterprises/1/action/externalnetworks"/>
+ <link rel="ips" href="http://localhost/api/admin/enterprises/1/action/ips"/>
+ <link rel="limits" type="application/vnd.abiquo.limits+xml" href="http://localhost/api/admin/enterprises/1/limits"/>
+ <link rel="properties" type="application/vnd.abiquo.enterpriseproperties+xml" href="http://localhost/api/admin/enterprises/1/properties"/>
+ <link rel="reservedmachines" type="application/vnd.abiquo.machines+xml" href="http://localhost/api/admin/enterprises/1/reservedmachines"/>
+ <link rel="users" type="application/vnd.abiquo.users+xml" href="http://localhost/api/admin/enterprises/1/users"/>
+ <link rel="virtualappliances" type="application/vnd.abiquo.virtualappliances+xml" href="http://localhost/api/admin/enterprises/1/action/virtualappliances"/>
+ <link rel="virtualmachines" type="application/vnd.abiquo.virtualmachines+xml" href="http://localhost/api/admin/enterprises/1/action/virtualmachines"/>
+ <link rel="volumes" type="application/vnd.abiquo.iscsivolumes+xml" href="http://localhost/api/admin/enterprises/1/action/volumes"/>
+ <cpuHard>0</cpuHard>
+ <cpuSoft>0</cpuSoft>
+ <hdHard>0</hdHard>
+ <hdSoft>0</hdSoft>
+ <publicIpsHard>0</publicIpsHard>
+ <publicIpsSoft>0</publicIpsSoft>
+ <ramHard>0</ramHard>
+ <ramSoft>0</ramSoft>
+ <storageHard>0</storageHard>
+ <storageSoft>0</storageSoft>
+ <vlansHard>0</vlansHard>
+ <vlansSoft>0</vlansSoft>
+ <id>2</id>
+ <isReservationRestricted>false</isReservationRestricted>
+ <name>Abiquo</name>
+ <repositoryHard>0</repositoryHard>
+ <repositorySoft>0</repositorySoft>
+ </enterprise>
+</enterprises>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/resources/payloads/enterprises-page.xml
----------------------------------------------------------------------
diff --git a/abiquo/src/test/resources/payloads/enterprises-page.xml b/abiquo/src/test/resources/payloads/enterprises-page.xml
new file mode 100644
index 0000000..c7e9b07
--- /dev/null
+++ b/abiquo/src/test/resources/payloads/enterprises-page.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<enterprises>
+ <link rel="first" href="http://localhost/api/admin/enterprises" />
+ <link rel="next" href="http://localhost/api/admin/enterprises?startwith=1"/>
+ <link rel="last" href="http://localhost/api/admin/enterprises?startwith=1"/>
+ <totalSize>2</totalSize>
+ <enterprise>
+ <link rel="appslib/templateDefinitionLists" type="application/vnd.abiquo.templatedefinitionlists+xml" href="http://localhost/api/admin/enterprises/1/appslib/templateDefinitionLists"/>
+ <link rel="appslib/templateDefinitions" type="application/vnd.abiquo.templatedefinitions+xml" href="http://localhost/api/admin/enterprises/1/appslib/templateDefinitions"/>
+ <link rel="cloud/virtualdatacenters" type="application/vnd.abiquo.virtualdatacenters+xml" href="http://localhost/api/admin/enterprises/1/action/virtualdatacenters"/>
+ <link rel="datacenterrepositories" type="application/vnd.abiquo.datacenterrepositories+xml" href="http://localhost/api/admin/enterprises/1/datacenterrepositories"/>
+ <link rel="edit" type="application/vnd.abiquo.enterprise+xml" href="http://localhost/api/admin/enterprises/1"/>
+ <link rel="externalnetworks" type="application/vnd.abiquo.vlans+xml" href="http://localhost/api/admin/enterprises/1/action/externalnetworks"/>
+ <link rel="ips" href="http://localhost/api/admin/enterprises/1/action/ips"/>
+ <link rel="limits" type="application/vnd.abiquo.limits+xml" href="http://localhost/api/admin/enterprises/1/limits"/>
+ <link rel="properties" type="application/vnd.abiquo.enterpriseproperties+xml" href="http://localhost/api/admin/enterprises/1/properties"/>
+ <link rel="reservedmachines" type="application/vnd.abiquo.machines+xml" href="http://localhost/api/admin/enterprises/1/reservedmachines"/>
+ <link rel="users" type="application/vnd.abiquo.users+xml" href="http://localhost/api/admin/enterprises/1/users"/>
+ <link rel="virtualappliances" type="application/vnd.abiquo.virtualappliances+xml" href="http://localhost/api/admin/enterprises/1/action/virtualappliances"/>
+ <link rel="virtualmachines" type="application/vnd.abiquo.virtualmachines+xml" href="http://localhost/api/admin/enterprises/1/action/virtualmachines"/>
+ <link rel="volumes" type="application/vnd.abiquo.iscsivolumes+xml" href="http://localhost/api/admin/enterprises/1/action/volumes"/>
+ <cpuHard>0</cpuHard>
+ <cpuSoft>0</cpuSoft>
+ <hdHard>0</hdHard>
+ <hdSoft>0</hdSoft>
+ <publicIpsHard>0</publicIpsHard>
+ <publicIpsSoft>0</publicIpsSoft>
+ <ramHard>0</ramHard>
+ <ramSoft>0</ramSoft>
+ <storageHard>0</storageHard>
+ <storageSoft>0</storageSoft>
+ <vlansHard>0</vlansHard>
+ <vlansSoft>0</vlansSoft>
+ <id>1</id>
+ <isReservationRestricted>false</isReservationRestricted>
+ <name>Abiquo</name>
+ <repositoryHard>0</repositoryHard>
+ <repositorySoft>0</repositorySoft>
+ </enterprise>
+</enterprises>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/resources/payloads/events-lastpage.xml
----------------------------------------------------------------------
diff --git a/abiquo/src/test/resources/payloads/events-lastpage.xml b/abiquo/src/test/resources/payloads/events-lastpage.xml
new file mode 100644
index 0000000..84e1a73
--- /dev/null
+++ b/abiquo/src/test/resources/payloads/events-lastpage.xml
@@ -0,0 +1,40 @@
+<events>
+ <link rel="first" href="http://localhost/api/events"/>
+ <link rel="previous" href="http://localhost/api/events?startwith=0"/>
+ <link rel="last" href="http://localhost/api/events?startwith=1"/>
+ <totalSize>4</totalSize>
+ <event>
+ <actionPerformed>VOLUME_DELETE</actionPerformed>
+ <component>VOLUME</component>
+ <enterprise>Abiquo</enterprise>
+ <id>110</id>
+ <idEnterprise>1</idEnterprise>
+ <idUser>1</idUser>
+ <idVirtualDatacenter>1</idVirtualDatacenter>
+ <idVolume>1786</idVolume>
+ <performedBy>admin</performedBy>
+ <severity>INFO</severity>
+ <stacktrace>Deleting volume 'JC-3972c0f8-28b'</stacktrace>
+ <timestamp>2013-01-23T14:07:14Z</timestamp>
+ <user>admin</user>
+ <virtualDatacenter>JC-d0cf5cd6-67b</virtualDatacenter>
+ <volume>JC-3972c0f8-28b</volume>
+ </event>
+ <event>
+ <actionPerformed>VOLUME_MODIFY</actionPerformed>
+ <component>VOLUME</component>
+ <enterprise>Abiquo</enterprise>
+ <id>111</id>
+ <idEnterprise>1</idEnterprise>
+ <idUser>1</idUser>
+ <idVirtualDatacenter>1</idVirtualDatacenter>
+ <idVolume>1786</idVolume>
+ <performedBy>admin</performedBy>
+ <severity>INFO</severity>
+ <stacktrace>Updated size of volume 'JC-Event vol' to '32' MB</stacktrace>
+ <timestamp>2013-01-23T14:07:12Z</timestamp>
+ <user>admin</user>
+ <virtualDatacenter>JC-d0cf5cd6-67b</virtualDatacenter>
+ <volume>JC-3972c0f8-28b</volume>
+ </event>
+</events>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/resources/payloads/events-page.xml
----------------------------------------------------------------------
diff --git a/abiquo/src/test/resources/payloads/events-page.xml b/abiquo/src/test/resources/payloads/events-page.xml
new file mode 100644
index 0000000..4ac8d22
--- /dev/null
+++ b/abiquo/src/test/resources/payloads/events-page.xml
@@ -0,0 +1,40 @@
+<events>
+ <link rel="first" href="http://localhost/api/events"/>
+ <link rel="next" href="http://localhost/api/events?startwith=1"/>
+ <link rel="last" href="http://localhost/api/events?startwith=1"/>
+ <totalSize>4</totalSize>
+ <event>
+ <actionPerformed>VOLUME_DELETE</actionPerformed>
+ <component>VOLUME</component>
+ <enterprise>Abiquo</enterprise>
+ <id>109</id>
+ <idEnterprise>1</idEnterprise>
+ <idUser>1</idUser>
+ <idVirtualDatacenter>1</idVirtualDatacenter>
+ <idVolume>1786</idVolume>
+ <performedBy>admin</performedBy>
+ <severity>INFO</severity>
+ <stacktrace>Deleting volume 'JC-3972c0f8-28b'</stacktrace>
+ <timestamp>2013-01-23T14:07:14Z</timestamp>
+ <user>admin</user>
+ <virtualDatacenter>JC-d0cf5cd6-67b</virtualDatacenter>
+ <volume>JC-3972c0f8-28b</volume>
+ </event>
+ <event>
+ <actionPerformed>VOLUME_MODIFY</actionPerformed>
+ <component>VOLUME</component>
+ <enterprise>Abiquo</enterprise>
+ <id>108</id>
+ <idEnterprise>1</idEnterprise>
+ <idUser>1</idUser>
+ <idVirtualDatacenter>1</idVirtualDatacenter>
+ <idVolume>1786</idVolume>
+ <performedBy>admin</performedBy>
+ <severity>INFO</severity>
+ <stacktrace>Updated size of volume 'JC-Event vol' to '32' MB</stacktrace>
+ <timestamp>2013-01-23T14:07:12Z</timestamp>
+ <user>admin</user>
+ <virtualDatacenter>JC-d0cf5cd6-67b</virtualDatacenter>
+ <volume>JC-3972c0f8-28b</volume>
+ </event>
+</events>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/resources/payloads/externalips-lastpage.xml
----------------------------------------------------------------------
diff --git a/abiquo/src/test/resources/payloads/externalips-lastpage.xml b/abiquo/src/test/resources/payloads/externalips-lastpage.xml
new file mode 100644
index 0000000..5e9311a
--- /dev/null
+++ b/abiquo/src/test/resources/payloads/externalips-lastpage.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<externalips>
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips" rel="first" />
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips?startwith=0" rel="previous" />
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips?startwith=3" rel="last" />
+ <totalSize>4</totalSize>
+ <externalip>
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2" rel="externalnetwork" title="ExternalNetwork" type="application/vnd.abiquo.vlan+xml" />
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips" rel="ips" type="application/vnd.abiquo.externalips+xml" />
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips/3" rel="self" title="externalip" type="application/vnd.abiquo.externalip+xml" />
+ <id>3</id>
+ <ip>10.0.0.1</ip>
+ <networkName>ExternalNetwork</networkName>
+ <available>true</available>
+ <quarantine>false</quarantine>
+ </externalip>
+ <externalip>
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2" rel="externalnetwork" title="ExternalNetwork" type="application/vnd.abiquo.vlan+xml" />
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips" rel="ips" type="application/vnd.abiquo.externalips+xml" />
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips/4" rel="self" title="externalip" type="application/vnd.abiquo.externalip+xml" />
+ <id>4</id>
+ <ip>10.0.0.2</ip>
+ <networkName>ExternalNetwork</networkName>
+ <available>true</available>
+ <quarantine>false</quarantine>
+ </externalip>
+</externalips>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/resources/payloads/externalips-page.xml
----------------------------------------------------------------------
diff --git a/abiquo/src/test/resources/payloads/externalips-page.xml b/abiquo/src/test/resources/payloads/externalips-page.xml
new file mode 100644
index 0000000..4abe4a8
--- /dev/null
+++ b/abiquo/src/test/resources/payloads/externalips-page.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<externalips>
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips" rel="first" />
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips?startwith=3" rel="next" />
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips?startwith=3" rel="last" />
+ <totalSize>4</totalSize>
+ <externalip>
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2" rel="externalnetwork" title="ExternalNetwork" type="application/vnd.abiquo.vlan+xml" />
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips" rel="ips" type="application/vnd.abiquo.externalips+xml" />
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips/1" rel="self" title="externalip" type="application/vnd.abiquo.externalip+xml" />
+ <id>1</id>
+ <ip>10.0.0.1</ip>
+ <networkName>ExternalNetwork</networkName>
+ <available>true</available>
+ <quarantine>false</quarantine>
+ </externalip>
+ <externalip>
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2" rel="externalnetwork" title="ExternalNetwork" type="application/vnd.abiquo.vlan+xml" />
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips" rel="ips" type="application/vnd.abiquo.externalips+xml" />
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips/2" rel="self" title="externalip" type="application/vnd.abiquo.externalip+xml" />
+ <id>2</id>
+ <ip>10.0.0.2</ip>
+ <networkName>ExternalNetwork</networkName>
+ <available>true</available>
+ <quarantine>false</quarantine>
+ </externalip>
+</externalips>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/resources/payloads/privateips-lastpage.xml
----------------------------------------------------------------------
diff --git a/abiquo/src/test/resources/payloads/privateips-lastpage.xml b/abiquo/src/test/resources/payloads/privateips-lastpage.xml
new file mode 100644
index 0000000..d289567
--- /dev/null
+++ b/abiquo/src/test/resources/payloads/privateips-lastpage.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<privateips>
+ <link href="http://localhost/api/cloud/virtualdatacenters/1/privatenetworks/1/ips" rel="first" />
+ <link href="http://localhost/api/cloud/virtualdatacenters/1/privatenetworks/1/ips?startwith=0" rel="previous" />
+ <link href="http://localhost/api/cloud/virtualdatacenters/1/privatenetworks/1/ips?startwith=1" rel="last" />
+ <totalSize>2</totalSize>
+ <privateip>
+ <link href="http://localhost/api/cloud/virtualdatacenters/1/privatenetworks/1" rel="privatenetwork" title="JC--privatenetwork-test" type="application/vnd.abiquo.vlan+xml" />
+ <link href="http://localhost/api/cloud/virtualdatacenters/1/privatenetworks/1/ips/3311" rel="self" title="privateip" type="application/vnd.abiquo.privateip+xml" />
+ <link href="http://localhost/api/cloud/virtualdatacenters/1" rel="virtualdatacenter" title="Aloha updated" type="application/vnd.abiquo.virtualdatacenter+xml" />
+ <id>2</id>
+ <ip>192.168.1.1</ip>
+ <mac>00:50:56:11:d4:a2</mac>
+ <name>00505611d4a2_host</name>
+ <networkName>JC--privatenetwork-test</networkName>
+ </privateip>
+</privateips>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/resources/payloads/privateips-page.xml
----------------------------------------------------------------------
diff --git a/abiquo/src/test/resources/payloads/privateips-page.xml b/abiquo/src/test/resources/payloads/privateips-page.xml
new file mode 100644
index 0000000..4a6acb1
--- /dev/null
+++ b/abiquo/src/test/resources/payloads/privateips-page.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<privateips>
+ <link href="http://localhost/api/cloud/virtualdatacenters/1/privatenetworks/1/ips" rel="first" />
+ <link href="http://localhost/api/cloud/virtualdatacenters/1/privatenetworks/1/ips?startwith=1" rel="next" />
+ <link href="http://localhost/api/cloud/virtualdatacenters/1/privatenetworks/1/ips?startwith=1" rel="last" />
+ <totalSize>2</totalSize>
+ <privateip>
+ <link href="http://localhost/api/cloud/virtualdatacenters/1/privatenetworks/1" rel="privatenetwork" title="JC--privatenetwork-test" type="application/vnd.abiquo.vlan+xml" />
+ <link href="http://localhost/api/cloud/virtualdatacenters/1/privatenetworks/1/ips/3311" rel="self" title="privateip" type="application/vnd.abiquo.privateip+xml" />
+ <link href="http://localhost/api/cloud/virtualdatacenters/1" rel="virtualdatacenter" title="Aloha updated" type="application/vnd.abiquo.virtualdatacenter+xml" />
+ <id>1</id>
+ <ip>192.168.1.1</ip>
+ <mac>00:50:56:11:d4:a2</mac>
+ <name>00505611d4a2_host</name>
+ <networkName>JC--privatenetwork-test</networkName>
+ </privateip>
+</privateips>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/resources/payloads/publicips-available-lastpage.xml
----------------------------------------------------------------------
diff --git a/abiquo/src/test/resources/payloads/publicips-available-lastpage.xml b/abiquo/src/test/resources/payloads/publicips-available-lastpage.xml
new file mode 100644
index 0000000..dec31ec
--- /dev/null
+++ b/abiquo/src/test/resources/payloads/publicips-available-lastpage.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<publicips>
+ <link rel="first" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase" />
+ <link rel="previous" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase?startwith=0" />
+ <link rel="last" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase?startwith=3" />
+ <totalSize>4</totalSize>
+ <publicip>
+ <link title="publicip" rel="edit" type="application/vnd.abiquo.publicips+xml" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase/3" />
+ <link title="publi" rel="publicnetwork" type="application/vnd.abiquo.vlan+xml" href="http://localhost/api/admin/datacenters/1/network/4" />
+ <link title="PUT" rel="purchase" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased/3" />
+ <link rel="topurchase" type="application/vnd.abiquo.publicips+xml" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase" />
+ <id>3</id>
+ <ip>8.8.8.1</ip>
+ <networkName>publi</networkName>
+ <available>true</available>
+ <quarantine>false</quarantine>
+ </publicip>
+ <publicip>
+ <link title="publicip" rel="edit" type="application/vnd.abiquo.publicips+xml" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase/4" />
+ <link title="publi" rel="publicnetwork" type="application/vnd.abiquo.vlan+xml" href="http://localhost/api/admin/datacenters/1/network/4" />
+ <link title="PUT" rel="purchase" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased/4" />
+ <link rel="topurchase" type="application/vnd.abiquo.publicips+xml" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase" />
+ <id>4</id>
+ <ip>8.8.8.3</ip>
+ <networkName>publi</networkName>
+ <available>true</available>
+ <quarantine>false</quarantine>
+ </publicip>
+</publicips>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/resources/payloads/publicips-available-page.xml
----------------------------------------------------------------------
diff --git a/abiquo/src/test/resources/payloads/publicips-available-page.xml b/abiquo/src/test/resources/payloads/publicips-available-page.xml
new file mode 100644
index 0000000..f53c4ac
--- /dev/null
+++ b/abiquo/src/test/resources/payloads/publicips-available-page.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<publicips>
+ <link rel="first" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase" />
+ <link rel="next" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase?startwith=3" />
+ <link rel="last" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase?startwith=3" />
+ <totalSize>4</totalSize>
+ <publicip>
+ <link title="publicip" rel="edit" type="application/vnd.abiquo.publicips+xml" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase/1" />
+ <link title="publi" rel="publicnetwork" type="application/vnd.abiquo.vlan+xml" href="http://localhost/api/admin/datacenters/1/network/4" />
+ <link title="PUT" rel="purchase" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased/1" />
+ <link rel="topurchase" type="application/vnd.abiquo.publicips+xml" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase" />
+ <id>1</id>
+ <ip>8.8.8.1</ip>
+ <networkName>publi</networkName>
+ <available>true</available>
+ <quarantine>false</quarantine>
+ </publicip>
+ <publicip>
+ <link title="publicip" rel="edit" type="application/vnd.abiquo.publicips+xml" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase/2" />
+ <link title="publi" rel="publicnetwork" type="application/vnd.abiquo.vlan+xml" href="http://localhost/api/admin/datacenters/1/network/4" />
+ <link title="PUT" rel="purchase" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased/2" />
+ <link rel="topurchase" type="application/vnd.abiquo.publicips+xml" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase" />
+ <id>2</id>
+ <ip>8.8.8.3</ip>
+ <networkName>publi</networkName>
+ <available>true</available>
+ <quarantine>false</quarantine>
+ </publicip>
+</publicips>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/resources/payloads/publicips-lastpage.xml
----------------------------------------------------------------------
diff --git a/abiquo/src/test/resources/payloads/publicips-lastpage.xml b/abiquo/src/test/resources/payloads/publicips-lastpage.xml
new file mode 100644
index 0000000..04741d3
--- /dev/null
+++ b/abiquo/src/test/resources/payloads/publicips-lastpage.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<publicips>
+ <link href="http://localhost/api/admin/datacenters/1/network/1/ips" rel="first" />
+ <link href="http://localhost/api/admin/datacenters/1/network/1/ips?startwith=0" rel="previous" />
+ <link href="http://localhost/api/admin/datacenters/1/network/1/ips?startwith=3" rel="last" />
+ <totalSize>4</totalSize>
+ <publicip>
+ <link href="http://localhost/api/admin/datacenters/1/network/1" rel="publicnetwork" title="JC--publicnetwork-test" type="application/vnd.abiquo.vlan+xml" />
+ <link href="http://localhost/api/admin/datacenters/1/network/1/ips/3" rel="self" title="publicip" type="application/vnd.abiquo.publicip+xml" />
+ <id>3</id>
+ <ip>80.80.80.1</ip>
+ <networkName>JC--publicnetwork-test</networkName>
+ <available>true</available>
+ <quarantine>false</quarantine>
+ </publicip>
+ <publicip>
+ <link href="http://localhost/api/admin/datacenters/1/network/1" rel="publicnetwork" title="JC--publicnetwork-test" type="application/vnd.abiquo.vlan+xml" />
+ <link href="http://localhost/api/admin/datacenters/1/network/1/ips/4" rel="self" title="publicip" type="application/vnd.abiquo.publicip+xml" />
+ <id>4</id>
+ <ip>80.80.80.2</ip>
+ <networkName>JC--publicnetwork-test</networkName>
+ <available>true</available>
+ <quarantine>false</quarantine>
+ </publicip>
+</publicips>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/resources/payloads/publicips-page.xml
----------------------------------------------------------------------
diff --git a/abiquo/src/test/resources/payloads/publicips-page.xml b/abiquo/src/test/resources/payloads/publicips-page.xml
new file mode 100644
index 0000000..092b403
--- /dev/null
+++ b/abiquo/src/test/resources/payloads/publicips-page.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<publicips>
+ <link href="http://localhost/api/admin/datacenters/1/network/1/ips" rel="first" />
+ <link href="http://localhost/api/admin/datacenters/1/network/1/ips?startwith=3" rel="next" />
+ <link href="http://localhost/api/admin/datacenters/1/network/1/ips?startwith=3" rel="last" />
+ <totalSize>4</totalSize>
+ <publicip>
+ <link href="http://localhost/api/admin/datacenters/1/network/1" rel="publicnetwork" title="JC--publicnetwork-test" type="application/vnd.abiquo.vlan+xml" />
+ <link href="http://localhost/api/admin/datacenters/1/network/1/ips/1" rel="self" title="publicip" type="application/vnd.abiquo.publicip+xml" />
+ <id>1</id>
+ <ip>80.80.80.1</ip>
+ <networkName>JC--publicnetwork-test</networkName>
+ <available>true</available>
+ <quarantine>false</quarantine>
+ </publicip>
+ <publicip>
+ <link href="http://localhost/api/admin/datacenters/1/network/1" rel="publicnetwork" title="JC--publicnetwork-test" type="application/vnd.abiquo.vlan+xml" />
+ <link href="http://localhost/api/admin/datacenters/1/network/1/ips/2" rel="self" title="publicip" type="application/vnd.abiquo.publicip+xml" />
+ <id>2</id>
+ <ip>80.80.80.2</ip>
+ <networkName>JC--publicnetwork-test</networkName>
+ <available>true</available>
+ <quarantine>false</quarantine>
+ </publicip>
+</publicips>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/resources/payloads/publicips-purchased-lastpage.xml
----------------------------------------------------------------------
diff --git a/abiquo/src/test/resources/payloads/publicips-purchased-lastpage.xml b/abiquo/src/test/resources/payloads/publicips-purchased-lastpage.xml
new file mode 100644
index 0000000..077b304
--- /dev/null
+++ b/abiquo/src/test/resources/payloads/publicips-purchased-lastpage.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<publicips>
+ <link rel="first" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased" />
+ <link rel="previous" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased?startwith=0" />
+ <link rel="last" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased?startwith=3" />
+ <totalSize>4</totalSize>
+ <publicip>
+ <link title="publicip" rel="edit" type="application/vnd.abiquo.publicips+xml" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased/3" />
+ <link title="publi" rel="publicnetwork" type="application/vnd.abiquo.vlan+xml" href="http://localhost/api/admin/datacenters/1/network/4" />
+ <link title="PUT" rel="purchase" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased/3" />
+ <link rel="topurchase" type="application/vnd.abiquo.publicips+xml" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase" />
+ <id>3</id>
+ <ip>8.8.8.1</ip>
+ <networkName>publi</networkName>
+ <available>true</available>
+ <quarantine>false</quarantine>
+ </publicip>
+ <publicip>
+ <link title="publicip" rel="edit" type="application/vnd.abiquo.publicips+xml" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased/4" />
+ <link title="publi" rel="publicnetwork" type="application/vnd.abiquo.vlan+xml" href="http://localhost/api/admin/datacenters/1/network/4" />
+ <link title="PUT" rel="purchase" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased/4" />
+ <link rel="topurchase" type="application/vnd.abiquo.publicips+xml" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase" />
+ <id>4</id>
+ <ip>8.8.8.3</ip>
+ <networkName>publi</networkName>
+ <available>true</available>
+ <quarantine>false</quarantine>
+ </publicip>
+</publicips>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/resources/payloads/publicips-purchased-page.xml
----------------------------------------------------------------------
diff --git a/abiquo/src/test/resources/payloads/publicips-purchased-page.xml b/abiquo/src/test/resources/payloads/publicips-purchased-page.xml
new file mode 100644
index 0000000..9456946
--- /dev/null
+++ b/abiquo/src/test/resources/payloads/publicips-purchased-page.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<publicips>
+ <link rel="first" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased" />
+ <link rel="next" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased?startwith=3" />
+ <link rel="last" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased?startwith=3" />
+ <totalSize>4</totalSize>
+ <publicip>
+ <link title="publicip" rel="edit" type="application/vnd.abiquo.publicips+xml" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased/1" />
+ <link title="publi" rel="publicnetwork" type="application/vnd.abiquo.vlan+xml" href="http://localhost/api/admin/datacenters/1/network/4" />
+ <link title="PUT" rel="purchase" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased/1" />
+ <link rel="topurchase" type="application/vnd.abiquo.publicips+xml" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase" />
+ <id>1</id>
+ <ip>8.8.8.1</ip>
+ <networkName>publi</networkName>
+ <available>true</available>
+ <quarantine>false</quarantine>
+ </publicip>
+ <publicip>
+ <link title="publicip" rel="edit" type="application/vnd.abiquo.publicips+xml" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased/2" />
+ <link title="publi" rel="publicnetwork" type="application/vnd.abiquo.vlan+xml" href="http://localhost/api/admin/datacenters/1/network/4" />
+ <link title="PUT" rel="purchase" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased/2" />
+ <link rel="topurchase" type="application/vnd.abiquo.publicips+xml" href="http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase" />
+ <id>2</id>
+ <ip>8.8.8.3</ip>
+ <networkName>publi</networkName>
+ <available>true</available>
+ <quarantine>false</quarantine>
+ </publicip>
+</publicips>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/resources/payloads/templates-lastpage.xml
----------------------------------------------------------------------
diff --git a/abiquo/src/test/resources/payloads/templates-lastpage.xml b/abiquo/src/test/resources/payloads/templates-lastpage.xml
new file mode 100644
index 0000000..63fa4cb
--- /dev/null
+++ b/abiquo/src/test/resources/payloads/templates-lastpage.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<virtualMachineTemplates>
+ <link rel="first" href="http://localhost/api/admin/enterprises/1/datacenterrepositories/1/virtualmachinetemplates"/>
+ <link rel="previous" href="http://localhost/api/admin/enterprises/1/datacenterrepositories/1/virtualmachinetemplates?startwith=0"/>
+ <link rel="last" href="http://localhost/api/admin/enterprises/1/datacenterrepositories/1/virtualmachinetemplates?startwith=1"/>
+ <totalSize>2</totalSize>
+ <virtualMachineTemplate>
+ <link title="Web Servers" rel="category" type="application/vnd.abiquo.category+xml" href="http://localhost/api/config/categories/14"/>
+ <link rel="conversions" type="application/vnd.abiquo.conversions+xml" href="http://localhost/api/admin/enterprises/152/datacenterrepositories/2/virtualmachinetemplates/151/conversions"/>
+ <link rel="datacenter" type="application/vnd.abiquo.datacenter+xml" href="http://localhost/api/admin/datacenters/2"/>
+ <link rel="datacenterrepository" type="application/vnd.abiquo.datacenterrepository+xml" href="http://localhost/api/admin/enterprises/152/datacenterrepositories/2"/>
+ <link rel="diskfile" href="http://localhost/am/erepos/152/templates/apache%252Fubuntu-910-server-x86_64-vmdk5.ovf?format=diskFile"/>
+ <link title="Apache Server" rel="edit" type="application/vnd.abiquo.virtualmachinetemplate+xml" href="http://localhost/api/admin/enterprises/152/datacenterrepositories/2/virtualmachinetemplates/151"/>
+ <link rel="enterprise" type="application/vnd.abiquo.enterprise+xml" href="http://localhost/api/admin/enterprises/152"/>
+ <link rel="ovfdocument" href="http://localhost/am/erepos/152/templates/apache%252Fubuntu-910-server-x86_64-vmdk5.ovf?format=envelope"/>
+ <link rel="template" href="http://localhost/am/erepos/152/templates/apache%252Fubuntu-910-server-x86_64-vmdk5.ovf"/>
+ <link rel="templatedefinition" href="http://apache/ubuntu-910-server-x86_64-vmdk5.ovf"/>
+ <link rel="templatestatus" href="http://localhost/am/erepos/152/templates/apache%252Fubuntu-910-server-x86_64-vmdk5.ovf?format=status"/>
+ <id>152</id>
+ <name>Apache Server</name>
+ <description>Apache Server</description>
+ <path>1/apache/ubuntu-910-server-x86_64-vmdk5.vmdk</path>
+ <diskFormatType>VMDK_STREAM_OPTIMIZED</diskFormatType>
+ <diskFileSize>206947328</diskFileSize>
+ <cpuRequired>1</cpuRequired>
+ <ramRequired>512</ramRequired>
+ <hdRequired>734003200</hdRequired>
+ <shared>true</shared>
+ <costCode>0</costCode>
+ <creationDate>2012-04-18T17:42:42+02:00</creationDate>
+ <creationUser>SYSTEM</creationUser>
+ <chefEnabled>false</chefEnabled>
+ <iconUrl>http://icons.abiquo.com/apache.jpg</iconUrl>
+ </virtualMachineTemplate>
+</virtualMachineTemplates>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/resources/payloads/templates-page.xml
----------------------------------------------------------------------
diff --git a/abiquo/src/test/resources/payloads/templates-page.xml b/abiquo/src/test/resources/payloads/templates-page.xml
index 61c53f7..ec98f93 100644
--- a/abiquo/src/test/resources/payloads/templates-page.xml
+++ b/abiquo/src/test/resources/payloads/templates-page.xml
@@ -1,21 +1,21 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<virtualMachineTemplates>
- <link rel="first" href="http://localhost:80/api/admin/enterprises/1/datacenterrepositories/1/virtualmachinetemplates"/>
- <link rel="next" href="http://localhost:80/api/admin/enterprises/1/datacenterrepositories/1/virtualmachinetemplates?startwith=1"/>
- <link rel="last" href="http://localhost:80/api/admin/enterprises/1/datacenterrepositories/1/virtualmachinetemplates?startwith=1"/>
+ <link rel="first" href="http://localhost/api/admin/enterprises/1/datacenterrepositories/1/virtualmachinetemplates"/>
+ <link rel="next" href="http://localhost/api/admin/enterprises/1/datacenterrepositories/1/virtualmachinetemplates?startwith=1"/>
+ <link rel="last" href="http://localhost/api/admin/enterprises/1/datacenterrepositories/1/virtualmachinetemplates?startwith=1"/>
<totalSize>2</totalSize>
<virtualMachineTemplate>
- <link title="Web Servers" rel="category" type="application/vnd.abiquo.category+xml" href="http://localhost:80/api/config/categories/14"/>
- <link rel="conversions" type="application/vnd.abiquo.conversions+xml" href="http://localhost:80/api/admin/enterprises/152/datacenterrepositories/2/virtualmachinetemplates/151/conversions"/>
- <link rel="datacenter" type="application/vnd.abiquo.datacenter+xml" href="http://localhost:80/api/admin/datacenters/2"/>
- <link rel="datacenterrepository" type="application/vnd.abiquo.datacenterrepository+xml" href="http://localhost:80/api/admin/enterprises/152/datacenterrepositories/2"/>
- <link rel="diskfile" href="http://192.168.0.3:80/am/erepos/152/templates/apache%252Fubuntu-910-server-x86_64-vmdk5.ovf?format=diskFile"/>
- <link title="Apache Server" rel="edit" type="application/vnd.abiquo.virtualmachinetemplate+xml" href="http://localhost:80/api/admin/enterprises/152/datacenterrepositories/2/virtualmachinetemplates/151"/>
- <link rel="enterprise" type="application/vnd.abiquo.enterprise+xml" href="http://localhost:80/api/admin/enterprises/152"/>
- <link rel="ovfdocument" href="http://192.168.0.3:80/am/erepos/152/templates/apache%252Fubuntu-910-server-x86_64-vmdk5.ovf?format=envelope"/>
- <link rel="template" href="http://192.168.0.3:80/am/erepos/152/templates/apache%252Fubuntu-910-server-x86_64-vmdk5.ovf"/>
+ <link title="Web Servers" rel="category" type="application/vnd.abiquo.category+xml" href="http://localhost/api/config/categories/14"/>
+ <link rel="conversions" type="application/vnd.abiquo.conversions+xml" href="http://localhost/api/admin/enterprises/152/datacenterrepositories/2/virtualmachinetemplates/151/conversions"/>
+ <link rel="datacenter" type="application/vnd.abiquo.datacenter+xml" href="http://localhost/api/admin/datacenters/2"/>
+ <link rel="datacenterrepository" type="application/vnd.abiquo.datacenterrepository+xml" href="http://localhost/api/admin/enterprises/152/datacenterrepositories/2"/>
+ <link rel="diskfile" href="http://localhost/am/erepos/152/templates/apache%252Fubuntu-910-server-x86_64-vmdk5.ovf?format=diskFile"/>
+ <link title="Apache Server" rel="edit" type="application/vnd.abiquo.virtualmachinetemplate+xml" href="http://localhost/api/admin/enterprises/152/datacenterrepositories/2/virtualmachinetemplates/151"/>
+ <link rel="enterprise" type="application/vnd.abiquo.enterprise+xml" href="http://localhost/api/admin/enterprises/152"/>
+ <link rel="ovfdocument" href="http://localhost/am/erepos/152/templates/apache%252Fubuntu-910-server-x86_64-vmdk5.ovf?format=envelope"/>
+ <link rel="template" href="http://localhost/am/erepos/152/templates/apache%252Fubuntu-910-server-x86_64-vmdk5.ovf"/>
<link rel="templatedefinition" href="http://apache/ubuntu-910-server-x86_64-vmdk5.ovf"/>
- <link rel="templatestatus" href="http://192.168.0.3:80/am/erepos/152/templates/apache%252Fubuntu-910-server-x86_64-vmdk5.ovf?format=status"/>
+ <link rel="templatestatus" href="http://localhost/am/erepos/152/templates/apache%252Fubuntu-910-server-x86_64-vmdk5.ovf?format=status"/>
<id>151</id>
<name>Apache Server</name>
<description>Apache Server</description>
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/resources/payloads/unmanagedips-lastpage.xml
----------------------------------------------------------------------
diff --git a/abiquo/src/test/resources/payloads/unmanagedips-lastpage.xml b/abiquo/src/test/resources/payloads/unmanagedips-lastpage.xml
new file mode 100644
index 0000000..aade3a4
--- /dev/null
+++ b/abiquo/src/test/resources/payloads/unmanagedips-lastpage.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<unmanagedips>
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips" rel="first" />
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips?startwith=0" rel="previous" />
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips?startwith=3" rel="last" />
+ <totalSize>4</totalSize>
+ <unmanagedip>
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2" rel="externalnetwork" title="ExternalNetwork" type="application/vnd.abiquo.vlan+xml" />
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips" rel="ips" type="application/vnd.abiquo.externalips+xml" />
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips/3" rel="self" title="externalip" type="application/vnd.abiquo.externalip+xml" />
+ <id>3</id>
+ <ip>10.0.0.1</ip>
+ <networkName>UnmanagedNetwork</networkName>
+ <available>true</available>
+ <quarantine>false</quarantine>
+ <unmanaged>true</unmanaged>
+ </unmanagedip>
+ <unmanagedip>
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2" rel="externalnetwork" title="ExternalNetwork" type="application/vnd.abiquo.vlan+xml" />
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips" rel="ips" type="application/vnd.abiquo.externalips+xml" />
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips/4" rel="self" title="externalip" type="application/vnd.abiquo.externalip+xml" />
+ <id>4</id>
+ <ip>10.0.0.2</ip>
+ <networkName>UnmanagedNetwork</networkName>
+ <available>true</available>
+ <quarantine>false</quarantine>
+ <unmanaged>true</unmanaged>
+ </unmanagedip>
+</unmanagedips>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/resources/payloads/unmanagedips-page.xml
----------------------------------------------------------------------
diff --git a/abiquo/src/test/resources/payloads/unmanagedips-page.xml b/abiquo/src/test/resources/payloads/unmanagedips-page.xml
new file mode 100644
index 0000000..2302218
--- /dev/null
+++ b/abiquo/src/test/resources/payloads/unmanagedips-page.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<unmanagedips>
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips" rel="first" />
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips?startwith=3" rel="next" />
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips?startwith=3" rel="last" />
+ <totalSize>4</totalSize>
+ <unmanagedip>
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2" rel="externalnetwork" title="ExternalNetwork" type="application/vnd.abiquo.vlan+xml" />
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips" rel="ips" type="application/vnd.abiquo.externalips+xml" />
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips/1" rel="self" title="externalip" type="application/vnd.abiquo.externalip+xml" />
+ <id>1</id>
+ <ip>10.0.0.1</ip>
+ <networkName>UnmanagedNetwork</networkName>
+ <available>true</available>
+ <quarantine>false</quarantine>
+ <unmanaged>true</unmanaged>
+ </unmanagedip>
+ <unmanagedip>
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2" rel="externalnetwork" title="ExternalNetwork" type="application/vnd.abiquo.vlan+xml" />
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips" rel="ips" type="application/vnd.abiquo.externalips+xml" />
+ <link href="http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips/2" rel="self" title="externalip" type="application/vnd.abiquo.externalip+xml" />
+ <id>2</id>
+ <ip>10.0.0.2</ip>
+ <networkName>UnmanagedNetwork</networkName>
+ <available>true</available>
+ <quarantine>false</quarantine>
+ <unmanaged>true</unmanaged>
+ </unmanagedip>
+</unmanagedips>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/resources/payloads/users-lastpage.xml
----------------------------------------------------------------------
diff --git a/abiquo/src/test/resources/payloads/users-lastpage.xml b/abiquo/src/test/resources/payloads/users-lastpage.xml
new file mode 100644
index 0000000..def0a5b
--- /dev/null
+++ b/abiquo/src/test/resources/payloads/users-lastpage.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<users>
+ <link rel="first" href="http://10.7.3.10:80/api/admin/enterprises/1/users?limit=2"/>
+ <link rel="previous" href="http://10.7.3.10:80/api/admin/enterprises/1/users?startwith=0&limit=2"/>
+ <link rel="next" href="http://10.7.3.10:80/api/admin/enterprises/1/users?startwith=3&limit=2"/>
+ <link rel="last" href="http://10.7.3.10:80/api/admin/enterprises/1/users?startwith=1&limit=2"/>
+ <totalSize>3</totalSize>
+ <user>
+ <link rel="edit" type="application/vnd.abiquo.user+xml" href="http://localhost/api/admin/enterprises/1/users/3"/>
+ <link rel="enterprise" type="application/vnd.abiquo.enterprise+xml" href="http://localhost/api/admin/enterprises/1"/>
+ <link rel="role" type="application/vnd.abiquo.role+xml" href="http://localhost/api/admin/roles/7"/>
+ <link rel="virtualmachines" type="application/vnd.abiquo.virtualmachines+xml" href="http://localhost/api/admin/enterprises/1/users/3/action/virtualmachines"/>
+ <id>3</id>
+ <nick>ron</nick>
+ <password>0371e4dce3c8804f1543c3f0f309cc10</password>
+ <name>Ron</name>
+ <surname>Weasley</surname>
+ <description/>
+ <email>ron.weasley@hogwarts.edu</email>
+ <locale>en_EN</locale>
+ <authType>ABIQUO</authType>
+ <active>true</active>
+ </user>
+</users>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/resources/payloads/users-page.xml
----------------------------------------------------------------------
diff --git a/abiquo/src/test/resources/payloads/users-page.xml b/abiquo/src/test/resources/payloads/users-page.xml
new file mode 100644
index 0000000..5427878
--- /dev/null
+++ b/abiquo/src/test/resources/payloads/users-page.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<users>
+ <link rel="first" href="http://localhost/api/admin/enterprises/1/users?limit=2"/>
+ <link rel="next" href="http://localhost/api/admin/enterprises/1/users?startwith=2&limit=2"/>
+ <link rel="last" href="http://localhost/api/admin/enterprises/1/users?startwith=2&limit=2"/>
+ <totalSize>3</totalSize>
+ <user>
+ <link rel="edit" type="application/vnd.abiquo.user+xml" href="http://localhost/api/admin/enterprises/1/users/1"/>
+ <link rel="enterprise" type="application/vnd.abiquo.enterprise+xml" href="http://localhost/api/admin/enterprises/1"/>
+ <link rel="role" type="application/vnd.abiquo.role+xml" href="http://localhost/api/admin/roles/7"/>
+ <link rel="virtualmachines" type="application/vnd.abiquo.virtualmachines+xml" href="http://localhost/api/admin/enterprises/1/users/1/action/virtualmachines"/>
+ <id>1</id>
+ <nick>potter</nick>
+ <password>0371e4dce3c8804f1543c3f0f309cc10</password>
+ <name>Harry</name>
+ <surname>Potter</surname>
+ <description/>
+ <email>harry.potter@hogwarts.edu</email>
+ <locale>en_EN</locale>
+ <authType>ABIQUO</authType>
+ <active>true</active>
+ </user>
+ <user>
+ <link rel="edit" type="application/vnd.abiquo.user+xml" href="http://localhost/api/admin/enterprises/1/users/2"/>
+ <link rel="enterprise" type="application/vnd.abiquo.enterprise+xml" href="http://localhost/api/admin/enterprises/1"/>
+ <link rel="role" type="application/vnd.abiquo.role+xml" href="http://localhost/api/admin/roles/7"/>
+ <link rel="virtualmachines" type="application/vnd.abiquo.virtualmachines+xml" href="http://localhost/api/admin/enterprises/1/users/2/action/virtualmachines"/>
+ <id>2</id>
+ <nick>granger</nick>
+ <password>0371e4dce3c8804f1543c3f0f309cc10</password>
+ <name>Hermione</name>
+ <surname>Granger</surname>
+ <description/>
+ <email>hermione.granger@hogwarts.edu</email>
+ <locale>en_EN</locale>
+ <authType>ABIQUO</authType>
+ <active>true</active>
+ </user>
+</users>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/resources/payloads/usr-list-page-2.xml
----------------------------------------------------------------------
diff --git a/abiquo/src/test/resources/payloads/usr-list-page-2.xml b/abiquo/src/test/resources/payloads/usr-list-page-2.xml
deleted file mode 100644
index 9f3012e..0000000
--- a/abiquo/src/test/resources/payloads/usr-list-page-2.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<users>
- <link rel="first" href="http://10.7.3.10:80/api/admin/enterprises/1/users?limit=1"/>
- <link rel="previous" href="http://10.7.3.10:80/api/admin/enterprises/1/users?startwith=0&limit=1"/>
- <link rel="last" href="http://10.7.3.10:80/api/admin/enterprises/1/users?startwith=2&limit=1"/>
- <totalSize>3</totalSize>
- <user>
- <link rel="edit" type="application/vnd.abiquo.user+xml" href="http://localhost/api/admin/enterprises/1/users/3"/>
- <link rel="enterprise" type="application/vnd.abiquo.enterprise+xml" href="http://localhost/api/admin/enterprises/1"/>
- <link rel="role" type="application/vnd.abiquo.role+xml" href="http://localhost/api/admin/roles/7"/>
- <link rel="virtualmachines" type="application/vnd.abiquo.virtualmachines+xml" href="http://localhost/api/admin/enterprises/1/users/3/action/virtualmachines"/>
- <id>3</id>
- <nick>ron</nick>
- <password>0371e4dce3c8804f1543c3f0f309cc10</password>
- <name>Ron</name>
- <surname>Weasley</surname>
- <description/>
- <email>ron.weasley@hogwarts.edu</email>
- <locale>en_EN</locale>
- <authType>ABIQUO</authType>
- <active>true</active>
- </user>
-</users>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/resources/payloads/usr-list.xml
----------------------------------------------------------------------
diff --git a/abiquo/src/test/resources/payloads/usr-list.xml b/abiquo/src/test/resources/payloads/usr-list.xml
deleted file mode 100644
index 0468815..0000000
--- a/abiquo/src/test/resources/payloads/usr-list.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<users>
- <link rel="first" href="http://localhost/api/admin/enterprises/1/users?limit=2"/>
- <link rel="last" href="http://localhost/api/admin/enterprises/1/users?startwith=0&limit=2"/>
- <totalSize>3</totalSize>
- <user>
- <link rel="edit" type="application/vnd.abiquo.user+xml" href="http://localhost/api/admin/enterprises/1/users/1"/>
- <link rel="enterprise" type="application/vnd.abiquo.enterprise+xml" href="http://localhost/api/admin/enterprises/1"/>
- <link rel="role" type="application/vnd.abiquo.role+xml" href="http://localhost/api/admin/roles/7"/>
- <link rel="virtualmachines" type="application/vnd.abiquo.virtualmachines+xml" href="http://localhost/api/admin/enterprises/1/users/1/action/virtualmachines"/>
- <id>1</id>
- <nick>potter</nick>
- <password>0371e4dce3c8804f1543c3f0f309cc10</password>
- <name>Harry</name>
- <surname>Potter</surname>
- <description/>
- <email>harry.potter@hogwarts.edu</email>
- <locale>en_EN</locale>
- <authType>ABIQUO</authType>
- <active>true</active>
- </user>
- <user>
- <link rel="edit" type="application/vnd.abiquo.user+xml" href="http://localhost/api/admin/enterprises/1/users/2"/>
- <link rel="enterprise" type="application/vnd.abiquo.enterprise+xml" href="http://localhost/api/admin/enterprises/1"/>
- <link rel="role" type="application/vnd.abiquo.role+xml" href="http://localhost/api/admin/roles/7"/>
- <link rel="virtualmachines" type="application/vnd.abiquo.virtualmachines+xml" href="http://localhost/api/admin/enterprises/1/users/2/action/virtualmachines"/>
- <id>2</id>
- <nick>granger</nick>
- <password>0371e4dce3c8804f1543c3f0f309cc10</password>
- <name>Hermione</name>
- <surname>Granger</surname>
- <description/>
- <email>hermione.granger@hogwarts.edu</email>
- <locale>en_EN</locale>
- <authType>ABIQUO</authType>
- <active>true</active>
- </user>
- <user>
- <link rel="edit" type="application/vnd.abiquo.user+xml" href="http://localhost/api/admin/enterprises/1/users/3"/>
- <link rel="enterprise" type="application/vnd.abiquo.enterprise+xml" href="http://localhost/api/admin/enterprises/1"/>
- <link rel="role" type="application/vnd.abiquo.role+xml" href="http://localhost/api/admin/roles/7"/>
- <link rel="virtualmachines" type="application/vnd.abiquo.virtualmachines+xml" href="http://localhost/api/admin/enterprises/1/users/3/action/virtualmachines"/>
- <id>3</id>
- <nick>ron</nick>
- <password>0371e4dce3c8804f1543c3f0f309cc10</password>
- <name>Ron</name>
- <surname>Weasley</surname>
- <description/>
- <email>ron.weasley@hogwarts.edu</email>
- <locale>en_EN</locale>
- <authType>ABIQUO</authType>
- <active>true</active>
- </user>
-</users>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/resources/payloads/vms-lastpage.xml
----------------------------------------------------------------------
diff --git a/abiquo/src/test/resources/payloads/vms-lastpage.xml b/abiquo/src/test/resources/payloads/vms-lastpage.xml
new file mode 100644
index 0000000..889874f
--- /dev/null
+++ b/abiquo/src/test/resources/payloads/vms-lastpage.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<virtualmachineswithnodeextended>
+ <link href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines" rel="first" />
+ <link href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines?startwith=0" rel="previous" />
+ <link href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines?startwith=2" rel="last" />
+ <totalSize>2</totalSize>
+ <virtualmachinewithnodeextended>
+ <link rel="deploy" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/action/deploy" />
+ <link rel="disks" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/storage/disks" />
+ <link rel="edit" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1" />
+ <link rel="state" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/state" />
+ <link rel="reset" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/action/reset" />
+ <link rel="tasks" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/tasks" />
+ <link rel="undeploy" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/action/undeploy" />
+ <link rel="persistent" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/action/persistent" />
+ <link rel="virtualappliance" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1" />
+ <link rel="virtualmachinetemplate" href="/admin/enterprises/1/datacenterrepositories/1/virtualmachinetemplates/1" />
+ <link rel="nics" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/network/nics" />
+ <link rel="volumes" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/storage/volumes" />
+ <link rel="configurations" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/network/configurations" />
+ <cpu>0</cpu>
+ <hdInBytes>0</hdInBytes>
+ <highDisponibility>0</highDisponibility>
+ <id>2</id>
+ <idState>0</idState>
+ <idType>0</idType>
+ <name>VM</name>
+ <ram>0</ram>
+ <vdrpPort>0</vdrpPort>
+ </virtualmachinewithnodeextended>
+</virtualmachineswithnodeextended>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/resources/payloads/vms-page.xml
----------------------------------------------------------------------
diff --git a/abiquo/src/test/resources/payloads/vms-page.xml b/abiquo/src/test/resources/payloads/vms-page.xml
new file mode 100644
index 0000000..4535697
--- /dev/null
+++ b/abiquo/src/test/resources/payloads/vms-page.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<virtualmachineswithnodeextended>
+ <link href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines" rel="first" />
+ <link href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines?startwith=2" rel="next" />
+ <link href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines?startwith=2" rel="last" />
+ <totalSize>2</totalSize>
+ <virtualmachinewithnodeextended>
+ <link rel="deploy" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/action/deploy" />
+ <link rel="disks" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/storage/disks" />
+ <link rel="edit" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1" />
+ <link rel="state" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/state" />
+ <link rel="reset" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/action/reset" />
+ <link rel="tasks" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/tasks" />
+ <link rel="undeploy" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/action/undeploy" />
+ <link rel="persistent" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/action/persistent" />
+ <link rel="virtualappliance" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1" />
+ <link rel="virtualmachinetemplate" href="/admin/enterprises/1/datacenterrepositories/1/virtualmachinetemplates/1" />
+ <link rel="nics" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/network/nics" />
+ <link rel="volumes" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/storage/volumes" />
+ <link rel="configurations" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/network/configurations" />
+ <cpu>0</cpu>
+ <hdInBytes>0</hdInBytes>
+ <highDisponibility>0</highDisponibility>
+ <id>1</id>
+ <idState>0</idState>
+ <idType>0</idType>
+ <name>VM</name>
+ <ram>0</ram>
+ <vdrpPort>0</vdrpPort>
+ </virtualmachinewithnodeextended>
+</virtualmachineswithnodeextended>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/resources/payloads/volumes-lastpage.xml
----------------------------------------------------------------------
diff --git a/abiquo/src/test/resources/payloads/volumes-lastpage.xml b/abiquo/src/test/resources/payloads/volumes-lastpage.xml
new file mode 100644
index 0000000..3df58b0
--- /dev/null
+++ b/abiquo/src/test/resources/payloads/volumes-lastpage.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<volumes>
+ <link href="http://example.com/api/cloud/virtualdatacenters/1/volumes" rel="first" />
+ <link href="http://example.com/api/cloud/virtualdatacenters/1/volumes?startwith=0" rel="previous" />
+ <link href="http://example.com/api/cloud/virtualdatacenters/1/volumes?startwith=1" rel="last" />
+ <totalSize>2</totalSize>
+ <volume>
+ <link href="http://example.com/api/cloud/virtualdatacenters/1/volumes/1531" rel="edit" type="application/vnd.abiquo.volume+xml" />
+ <link href="http://example.com/api/cloud/virtualdatacenters/1/volumes/1531/action/initiatormappings" rel="initiator mappings" type="application/vnd.abiquo.initiatormappings+xml" />
+ <link href="http://example.com/api/cloud/virtualdatacenters/1/tiers/1" rel="tier" title="Default Tier 1" type="application/vnd.abiquo.tier+xml" />
+ <link href="http://example.com/api/cloud/virtualdatacenters/1" rel="virtualdatacenter" title="Aloha updated" type="application/vnd.abiquo.virtualdatacenter+xml" />
+ <id>1531</id>
+ <name>Hawaian volume updated</name>
+ <state>DETACHED</state>
+ <sizeInMB>32</sizeInMB>
+ <sequence>0</sequence>
+ </volume>
+</volumes>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/resources/payloads/volumes-page.xml
----------------------------------------------------------------------
diff --git a/abiquo/src/test/resources/payloads/volumes-page.xml b/abiquo/src/test/resources/payloads/volumes-page.xml
new file mode 100644
index 0000000..d069445
--- /dev/null
+++ b/abiquo/src/test/resources/payloads/volumes-page.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<volumes>
+ <link href="http://example.com/api/cloud/virtualdatacenters/1/volumes" rel="first" />
+ <link href="http://example.com/api/cloud/virtualdatacenters/1/volumes?startwith=1" rel="next" />
+ <link href="http://example.com/api/cloud/virtualdatacenters/1/volumes?startwith=1" rel="last" />
+ <totalSize>2</totalSize>
+ <volume>
+ <link href="http://example.com/api/cloud/virtualdatacenters/1/volumes/1530" rel="edit" type="application/vnd.abiquo.volume+xml" />
+ <link href="http://example.com/api/cloud/virtualdatacenters/1/volumes/1530/action/initiatormappings" rel="initiator mappings" type="application/vnd.abiquo.initiatormappings+xml" />
+ <link href="http://example.com/api/cloud/virtualdatacenters/1/tiers/1" rel="tier" title="Default Tier 1" type="application/vnd.abiquo.tier+xml" />
+ <link href="http://example.com/api/cloud/virtualdatacenters/1" rel="virtualdatacenter" title="Aloha updated" type="application/vnd.abiquo.virtualdatacenter+xml" />
+ <id>1530</id>
+ <name>Hawaian volume updated</name>
+ <state>DETACHED</state>
+ <sizeInMB>32</sizeInMB>
+ <sequence>0</sequence>
+ </volume>
+</volumes>
\ No newline at end of file
[4/5] JCLOUDS-198: Implemented the PagedIterable in Abiquo
Posted by na...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/network/PublicNetwork.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/network/PublicNetwork.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/network/PublicNetwork.java
index e1c1dce..aa3f562 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/network/PublicNetwork.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/network/PublicNetwork.java
@@ -18,13 +18,13 @@ package org.jclouds.abiquo.domain.network;
import static com.google.common.base.Preconditions.checkNotNull;
-import java.util.List;
-
import org.jclouds.abiquo.AbiquoApi;
+import org.jclouds.abiquo.domain.PaginatedCollection;
import org.jclouds.abiquo.domain.infrastructure.Datacenter;
import org.jclouds.abiquo.domain.network.options.IpOptions;
import org.jclouds.abiquo.reference.ValidationErrors;
import org.jclouds.abiquo.reference.rest.ParentLinkName;
+import org.jclouds.collect.PagedIterable;
import org.jclouds.http.HttpResponse;
import org.jclouds.http.functions.ParseXMLWithJAXB;
import org.jclouds.rest.ApiContext;
@@ -92,16 +92,17 @@ public class PublicNetwork extends Network<PublicIp> {
target = context.getApi().getInfrastructureApi().updateNetwork(target);
}
- /**
- * @see API: <a href=
- * "http://community.abiquo.com/display/ABI20/Public+IPs+Resource#PublicIPsResource-ReturnthelistofIPsforaPublicNetwork"
- * > http://community.abiquo.com/display/ABI20/Public+IPs+Resource#
- * PublicIPsResource- ReturnthelistofIPsforaPublicNetwork</a>
- */
@Override
- public List<PublicIp> listIps(final IpOptions options) {
- PublicIpsDto ips = context.getApi().getInfrastructureApi().listPublicIps(target, options);
- return wrap(context, PublicIp.class, ips.getCollection());
+ public Iterable<PublicIp> listIps() {
+ PagedIterable<PublicIpDto> ips = context.getApi().getInfrastructureApi().listPublicIps(target);
+ return wrap(context, PublicIp.class, ips.concat());
+ }
+
+ @Override
+ public Iterable<PublicIp> listIps(final IpOptions options) {
+ PaginatedCollection<PublicIpDto, PublicIpsDto> ips = context.getApi().getInfrastructureApi()
+ .listPublicIps(target, options);
+ return wrap(context, PublicIp.class, ips.toPagedIterable().concat());
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/network/UnmanagedNetwork.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/network/UnmanagedNetwork.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/network/UnmanagedNetwork.java
index 15f6bb3..6de0a29 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/network/UnmanagedNetwork.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/network/UnmanagedNetwork.java
@@ -18,14 +18,14 @@ package org.jclouds.abiquo.domain.network;
import static com.google.common.base.Preconditions.checkNotNull;
-import java.util.List;
-
import org.jclouds.abiquo.AbiquoApi;
+import org.jclouds.abiquo.domain.PaginatedCollection;
import org.jclouds.abiquo.domain.enterprise.Enterprise;
import org.jclouds.abiquo.domain.infrastructure.Datacenter;
import org.jclouds.abiquo.domain.network.options.IpOptions;
import org.jclouds.abiquo.reference.ValidationErrors;
import org.jclouds.abiquo.reference.rest.ParentLinkName;
+import org.jclouds.collect.PagedIterable;
import org.jclouds.http.HttpResponse;
import org.jclouds.http.functions.ParseXMLWithJAXB;
import org.jclouds.rest.ApiContext;
@@ -98,16 +98,17 @@ public class UnmanagedNetwork extends Network<UnmanagedIp> {
target = context.getApi().getInfrastructureApi().updateNetwork(target);
}
- /**
- * @see API: <a href=
- * "http://community.abiquo.com/display/ABI20/Public+IPs+Resource#PublicIPsResource-ReturnthelistofIPsforaPublicNetwork"
- * > http://community.abiquo.com/display/ABI20/Public+IPs+Resource#
- * PublicIPsResource- ReturnthelistofIPsforaPublicNetwork</a>
- */
@Override
- public List<UnmanagedIp> listIps(final IpOptions options) {
- UnmanagedIpsDto ips = context.getApi().getInfrastructureApi().listUnmanagedIps(target, options);
- return wrap(context, UnmanagedIp.class, ips.getCollection());
+ public Iterable<UnmanagedIp> listIps() {
+ PagedIterable<UnmanagedIpDto> ips = context.getApi().getInfrastructureApi().listUnmanagedIps(target);
+ return wrap(context, UnmanagedIp.class, ips.concat());
+ }
+
+ @Override
+ public Iterable<UnmanagedIp> listIps(final IpOptions options) {
+ PaginatedCollection<UnmanagedIpDto, UnmanagedIpsDto> ips = context.getApi().getInfrastructureApi()
+ .listUnmanagedIps(target, options);
+ return wrap(context, UnmanagedIp.class, ips.toPagedIterable().concat());
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/options/FilterOptions.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/options/FilterOptions.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/options/FilterOptions.java
index 2bcf022..c8cfc45 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/options/FilterOptions.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/options/FilterOptions.java
@@ -76,21 +76,11 @@ public class FilterOptions extends BaseHttpRequestOptions {
return (T) this;
}
- public T ascendant(final boolean asc) {
+ public T asc(final boolean asc) {
this.asc = asc;
return (T) this;
}
- public T descendant(final boolean desc) {
- this.asc = !desc;
- return (T) this;
- }
-
- public T disablePagination() {
- this.limit = 0;
- return (T) this;
- }
-
protected <O extends BaseHttpRequestOptions> O addFilterOptions(final O options) {
Multimap<String, String> queryParameters = options.buildQueryParameters();
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/task/AsyncTask.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/task/AsyncTask.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/task/AsyncTask.java
index fca2827..1594184 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/task/AsyncTask.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/task/AsyncTask.java
@@ -18,8 +18,6 @@ package org.jclouds.abiquo.domain.task;
import static com.google.common.base.Preconditions.checkNotNull;
-import java.util.List;
-
import org.jclouds.abiquo.AbiquoApi;
import org.jclouds.abiquo.domain.DomainWrapper;
import org.jclouds.abiquo.reference.ValidationErrors;
@@ -93,7 +91,7 @@ public abstract class AsyncTask<T extends DomainWrapper<D>, D extends SingleReso
/**
* Get the individual jobs that compose the current task.
*/
- public List<AsyncJob> getJobs() {
+ public Iterable<AsyncJob> getJobs() {
return wrap(context, AsyncJob.class, target.getJobs().getCollection());
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/features/CloudApi.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/features/CloudApi.java b/abiquo/src/main/java/org/jclouds/abiquo/features/CloudApi.java
index 3906e63..fa34f17 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/features/CloudApi.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/features/CloudApi.java
@@ -40,6 +40,7 @@ import org.jclouds.abiquo.binders.cloud.BindNetworkConfigurationRefToPayload;
import org.jclouds.abiquo.binders.cloud.BindNetworkRefToPayload;
import org.jclouds.abiquo.binders.cloud.BindVirtualDatacenterRefToPayload;
import org.jclouds.abiquo.binders.cloud.BindVolumeRefsToPayload;
+import org.jclouds.abiquo.domain.PaginatedCollection;
import org.jclouds.abiquo.domain.cloud.options.VirtualApplianceOptions;
import org.jclouds.abiquo.domain.cloud.options.VirtualDatacenterOptions;
import org.jclouds.abiquo.domain.cloud.options.VirtualMachineOptions;
@@ -50,9 +51,15 @@ import org.jclouds.abiquo.fallbacks.MovedVolume;
import org.jclouds.abiquo.functions.ReturnTaskReferenceOrNull;
import org.jclouds.abiquo.functions.enterprise.ParseEnterpriseId;
import org.jclouds.abiquo.functions.infrastructure.ParseDatacenterId;
+import org.jclouds.abiquo.functions.pagination.ParsePrivateIps;
+import org.jclouds.abiquo.functions.pagination.ParsePublicIps;
+import org.jclouds.abiquo.functions.pagination.ParseVirtualMachineTemplates;
+import org.jclouds.abiquo.functions.pagination.ParseVirtualMachines;
+import org.jclouds.abiquo.functions.pagination.ParseVolumes;
import org.jclouds.abiquo.http.filters.AbiquoAuthentication;
import org.jclouds.abiquo.http.filters.AppendApiVersionToMediaType;
import org.jclouds.abiquo.rest.annotations.EndpointLink;
+import org.jclouds.collect.PagedIterable;
import org.jclouds.http.functions.ReturnStringIf2xx;
import org.jclouds.rest.annotations.BinderParam;
import org.jclouds.rest.annotations.Fallback;
@@ -61,6 +68,7 @@ import org.jclouds.rest.annotations.ParamParser;
import org.jclouds.rest.annotations.RequestFilters;
import org.jclouds.rest.annotations.ResponseParser;
import org.jclouds.rest.annotations.SinceApiVersion;
+import org.jclouds.rest.annotations.Transform;
import org.jclouds.rest.binders.BindToXMLPayload;
import com.abiquo.model.transport.AcceptedRequestDto;
@@ -195,8 +203,9 @@ public interface CloudApi extends Closeable {
@Named("vdc:listtemplates")
@GET
@Consumes(VirtualMachineTemplatesDto.BASE_MEDIA_TYPE)
- @JAXBResponseParser
- VirtualMachineTemplatesDto listAvailableTemplates(
+ @ResponseParser(ParseVirtualMachineTemplates.class)
+ @Transform(ParseVirtualMachineTemplates.ToPagedIterable.class)
+ PagedIterable<VirtualMachineTemplateDto> listAvailableTemplates(
@EndpointLink("templates") @BinderParam(BindToPath.class) VirtualDatacenterDto virtualDatacenter);
/**
@@ -211,8 +220,8 @@ public interface CloudApi extends Closeable {
@Named("vdc:listtemplates")
@GET
@Consumes(VirtualMachineTemplatesDto.BASE_MEDIA_TYPE)
- @JAXBResponseParser
- VirtualMachineTemplatesDto listAvailableTemplates(
+ @ResponseParser(ParseVirtualMachineTemplates.class)
+ PaginatedCollection<VirtualMachineTemplateDto, VirtualMachineTemplatesDto> listAvailableTemplates(
@EndpointLink("templates") @BinderParam(BindToPath.class) VirtualDatacenterDto virtualDatacenter,
VirtualMachineTemplateOptions options);
@@ -229,8 +238,26 @@ public interface CloudApi extends Closeable {
@Named("vdc:listavailablepublicips")
@GET
@Consumes(PublicIpsDto.BASE_MEDIA_TYPE)
- @JAXBResponseParser
- PublicIpsDto listAvailablePublicIps(
+ @ResponseParser(ParsePublicIps.class)
+ @Transform(ParsePublicIps.ToPagedIterable.class)
+ PagedIterable<PublicIpDto> listAvailablePublicIps(
+ @EndpointLink("topurchase") @BinderParam(BindToPath.class) VirtualDatacenterDto virtualDatacenter);
+
+ /**
+ * List all available ips to purchase in the datacenter by the virtual
+ * datacenter.
+ *
+ * @param virtualDatacenter
+ * The virtual datacenter.
+ * @param options
+ * Filtering options.
+ * @return The list of available ips.
+ */
+ @Named("vdc:listavailablepublicips")
+ @GET
+ @Consumes(PublicIpsDto.BASE_MEDIA_TYPE)
+ @ResponseParser(ParsePublicIps.class)
+ PaginatedCollection<PublicIpDto, PublicIpsDto> listAvailablePublicIps(
@EndpointLink("topurchase") @BinderParam(BindToPath.class) VirtualDatacenterDto virtualDatacenter,
IpOptions options);
@@ -246,8 +273,25 @@ public interface CloudApi extends Closeable {
@Named("vdc:listpurchasedpublicips")
@GET
@Consumes(PublicIpsDto.BASE_MEDIA_TYPE)
- @JAXBResponseParser
- PublicIpsDto listPurchasedPublicIps(
+ @ResponseParser(ParsePublicIps.class)
+ @Transform(ParsePublicIps.ToPagedIterable.class)
+ PagedIterable<PublicIpDto> listPurchasedPublicIps(
+ @EndpointLink("purchased") @BinderParam(BindToPath.class) VirtualDatacenterDto virtualDatacenter);
+
+ /**
+ * List all purchased public ip addresses in the virtual datacenter.
+ *
+ * @param virtualDatacenter
+ * The virtual datacenter.
+ * @param options
+ * Filtering options.
+ * @return The list of purchased ips.
+ */
+ @Named("vdc:listpurchasedpublicips")
+ @GET
+ @Consumes(PublicIpsDto.BASE_MEDIA_TYPE)
+ @ResponseParser(ParsePublicIps.class)
+ PaginatedCollection<PublicIpDto, PublicIpsDto> listPurchasedPublicIps(
@EndpointLink("purchased") @BinderParam(BindToPath.class) VirtualDatacenterDto virtualDatacenter,
IpOptions options);
@@ -426,8 +470,10 @@ public interface CloudApi extends Closeable {
@Named("privatenetwork:listips")
@GET
@Consumes(PrivateIpsDto.BASE_MEDIA_TYPE)
- @JAXBResponseParser
- PrivateIpsDto listPrivateNetworkIps(@EndpointLink("ips") @BinderParam(BindToPath.class) VLANNetworkDto network);
+ @ResponseParser(ParsePrivateIps.class)
+ @Transform(ParsePrivateIps.ToPagedIterable.class)
+ PagedIterable<PrivateIpDto> listPrivateNetworkIps(
+ @EndpointLink("ips") @BinderParam(BindToPath.class) VLANNetworkDto network);
/**
* List all ips for a private network with options.
@@ -441,9 +487,9 @@ public interface CloudApi extends Closeable {
@Named("privatenetwork:listips")
@GET
@Consumes(PrivateIpsDto.BASE_MEDIA_TYPE)
- @JAXBResponseParser
- PrivateIpsDto listPrivateNetworkIps(@EndpointLink("ips") @BinderParam(BindToPath.class) VLANNetworkDto network,
- IpOptions options);
+ @ResponseParser(ParsePrivateIps.class)
+ PaginatedCollection<PrivateIpDto, PrivateIpsDto> listPrivateNetworkIps(
+ @EndpointLink("ips") @BinderParam(BindToPath.class) VLANNetworkDto network, IpOptions options);
/**
* Get the requested ip from the given private network.
@@ -630,8 +676,25 @@ public interface CloudApi extends Closeable {
@GET
@Path("/virtualmachines")
@Consumes(VirtualMachinesWithNodeExtendedDto.BASE_MEDIA_TYPE)
- @JAXBResponseParser
- VirtualMachinesWithNodeExtendedDto listAllVirtualMachines();
+ @ResponseParser(ParseVirtualMachines.class)
+ @Transform(ParseVirtualMachines.ToPagedIterable.class)
+ PagedIterable<VirtualMachineWithNodeExtendedDto> listAllVirtualMachines();
+
+ /**
+ * List all virtual machines available to the current user.
+ *
+ * @param options
+ * The filter options.
+ * @return The list of all virtual machines available to the current user.
+ */
+ @SinceApiVersion("2.4")
+ @Named("vm:listall")
+ @GET
+ @Path("/virtualmachines")
+ @Consumes(VirtualMachinesWithNodeExtendedDto.BASE_MEDIA_TYPE)
+ @ResponseParser(ParseVirtualMachines.class)
+ PaginatedCollection<VirtualMachineWithNodeExtendedDto, VirtualMachinesWithNodeExtendedDto> listAllVirtualMachines(
+ VirtualMachineOptions options);
/**
* List all virtual machines for a virtual appliance.
@@ -643,8 +706,9 @@ public interface CloudApi extends Closeable {
@Named("vm:list")
@GET
@Consumes(VirtualMachinesWithNodeExtendedDto.BASE_MEDIA_TYPE)
- @JAXBResponseParser
- VirtualMachinesWithNodeExtendedDto listVirtualMachines(
+ @ResponseParser(ParseVirtualMachines.class)
+ @Transform(ParseVirtualMachines.ToPagedIterable.class)
+ PagedIterable<VirtualMachineWithNodeExtendedDto> listVirtualMachines(
@EndpointLink("virtualmachines") @BinderParam(BindToPath.class) VirtualApplianceDto virtualAppliance);
/**
@@ -659,8 +723,8 @@ public interface CloudApi extends Closeable {
@Named("vm:list")
@GET
@Consumes(VirtualMachinesWithNodeExtendedDto.BASE_MEDIA_TYPE)
- @JAXBResponseParser
- VirtualMachinesWithNodeExtendedDto listVirtualMachines(
+ @ResponseParser(ParseVirtualMachines.class)
+ PaginatedCollection<VirtualMachineWithNodeExtendedDto, VirtualMachinesWithNodeExtendedDto> listVirtualMachines(
@EndpointLink("virtualmachines") @BinderParam(BindToPath.class) VirtualApplianceDto virtualAppliance,
VirtualMachineOptions options);
@@ -1079,8 +1143,9 @@ public interface CloudApi extends Closeable {
@Named("volume:list")
@GET
@Consumes(VolumesManagementDto.BASE_MEDIA_TYPE)
- @JAXBResponseParser
- VolumesManagementDto listVolumes(
+ @ResponseParser(ParseVolumes.class)
+ @Transform(ParseVolumes.ToPagedIterable.class)
+ PagedIterable<VolumeManagementDto> listVolumes(
@EndpointLink("volumes") @BinderParam(BindToPath.class) VirtualDatacenterDto virtualDatacenter);
/**
@@ -1095,8 +1160,8 @@ public interface CloudApi extends Closeable {
@Named("volume:list")
@GET
@Consumes(VolumesManagementDto.BASE_MEDIA_TYPE)
- @JAXBResponseParser
- VolumesManagementDto listVolumes(
+ @ResponseParser(ParseVolumes.class)
+ PaginatedCollection<VolumeManagementDto, VolumesManagementDto> listVolumes(
@EndpointLink("volumes") @BinderParam(BindToPath.class) VirtualDatacenterDto virtualDatacenter,
VolumeOptions options);
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/features/EnterpriseApi.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/features/EnterpriseApi.java b/abiquo/src/main/java/org/jclouds/abiquo/features/EnterpriseApi.java
index 668e288..a7d1b04 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/features/EnterpriseApi.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/features/EnterpriseApi.java
@@ -33,17 +33,23 @@ import org.jclouds.Fallbacks.NullOnNotFoundOr404;
import org.jclouds.abiquo.binders.AppendToPath;
import org.jclouds.abiquo.binders.BindToPath;
import org.jclouds.abiquo.binders.BindToXMLPayloadAndPath;
+import org.jclouds.abiquo.domain.PaginatedCollection;
import org.jclouds.abiquo.domain.enterprise.options.EnterpriseOptions;
import org.jclouds.abiquo.domain.enterprise.options.UserOptions;
import org.jclouds.abiquo.functions.infrastructure.ParseDatacenterId;
+import org.jclouds.abiquo.functions.pagination.ParseEnterprises;
+import org.jclouds.abiquo.functions.pagination.ParseUsers;
import org.jclouds.abiquo.http.filters.AbiquoAuthentication;
import org.jclouds.abiquo.http.filters.AppendApiVersionToMediaType;
import org.jclouds.abiquo.rest.annotations.EndpointLink;
+import org.jclouds.collect.PagedIterable;
import org.jclouds.rest.annotations.BinderParam;
import org.jclouds.rest.annotations.Fallback;
import org.jclouds.rest.annotations.JAXBResponseParser;
import org.jclouds.rest.annotations.ParamParser;
import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.ResponseParser;
+import org.jclouds.rest.annotations.Transform;
import org.jclouds.rest.binders.BindToXMLPayload;
import com.abiquo.am.model.TemplatesStateDto;
@@ -88,8 +94,9 @@ public interface EnterpriseApi extends Closeable {
@GET
@Path("/enterprises")
@Consumes(EnterprisesDto.BASE_MEDIA_TYPE)
- @JAXBResponseParser
- EnterprisesDto listEnterprises();
+ @ResponseParser(ParseEnterprises.class)
+ @Transform(ParseEnterprises.ToPagedIterable.class)
+ PagedIterable<EnterpriseDto> listEnterprises();
/**
* List enterprises with options.
@@ -102,8 +109,8 @@ public interface EnterpriseApi extends Closeable {
@GET
@Path("/enterprises")
@Consumes(EnterprisesDto.BASE_MEDIA_TYPE)
- @JAXBResponseParser
- EnterprisesDto listEnterprises(EnterpriseOptions options);
+ @ResponseParser(ParseEnterprises.class)
+ PaginatedCollection<EnterpriseDto, EnterprisesDto> listEnterprises(EnterpriseOptions options);
/**
* List filtered enterprises by datacenter.
@@ -117,9 +124,9 @@ public interface EnterpriseApi extends Closeable {
@Named("enterprise:list")
@GET
@Consumes(EnterprisesDto.BASE_MEDIA_TYPE)
- @JAXBResponseParser
- EnterprisesDto listEnterprises(@EndpointLink("enterprises") @BinderParam(BindToPath.class) DatacenterDto datacenter,
- EnterpriseOptions options);
+ @ResponseParser(ParseEnterprises.class)
+ PaginatedCollection<EnterpriseDto, EnterprisesDto> listEnterprises(
+ @EndpointLink("enterprises") @BinderParam(BindToPath.class) DatacenterDto datacenter, EnterpriseOptions options);
/**
* Create a new enterprise.
@@ -327,9 +334,10 @@ public interface EnterpriseApi extends Closeable {
@Named("user:list")
@GET
@Consumes(UsersDto.BASE_MEDIA_TYPE)
- @JAXBResponseParser
- UsersDto listUsers(@EndpointLink("users") @BinderParam(BindToPath.class) EnterpriseDto enterprise);
-
+ @ResponseParser(ParseUsers.class)
+ @Transform(ParseUsers.ToPagedIterable.class)
+ PagedIterable<UserDto> listUsers(@EndpointLink("users") @BinderParam(BindToPath.class) EnterpriseDto enterprise);
+
/**
* List filtered users by enterprise.
*
@@ -342,9 +350,9 @@ public interface EnterpriseApi extends Closeable {
@Named("user:list")
@GET
@Consumes(UsersDto.BASE_MEDIA_TYPE)
- @JAXBResponseParser
- UsersDto listUsers(@EndpointLink("users") @BinderParam(BindToPath.class) EnterpriseDto enterprise,
- UserOptions options);
+ @ResponseParser(ParseUsers.class)
+ PaginatedCollection<UserDto, UsersDto> listUsers(
+ @EndpointLink("users") @BinderParam(BindToPath.class) EnterpriseDto enterprise, UserOptions options);
/**
* Create a new user in the given enterprise.
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/features/EventApi.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/features/EventApi.java b/abiquo/src/main/java/org/jclouds/abiquo/features/EventApi.java
index 3e3ef1b..e9040fd 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/features/EventApi.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/features/EventApi.java
@@ -23,12 +23,17 @@ import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
+import org.jclouds.abiquo.domain.PaginatedCollection;
import org.jclouds.abiquo.domain.event.options.EventOptions;
+import org.jclouds.abiquo.functions.pagination.ParseEvents;
import org.jclouds.abiquo.http.filters.AbiquoAuthentication;
import org.jclouds.abiquo.http.filters.AppendApiVersionToMediaType;
-import org.jclouds.rest.annotations.JAXBResponseParser;
+import org.jclouds.collect.PagedIterable;
import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.ResponseParser;
+import org.jclouds.rest.annotations.Transform;
+import com.abiquo.server.core.event.EventDto;
import com.abiquo.server.core.event.EventsDto;
/**
@@ -50,8 +55,9 @@ public interface EventApi extends Closeable {
@Named("event:list")
@GET
@Consumes(EventsDto.BASE_MEDIA_TYPE)
- @JAXBResponseParser
- EventsDto listEvents();
+ @ResponseParser(ParseEvents.class)
+ @Transform(ParseEvents.ToPagedIterable.class)
+ PagedIterable<EventDto> listEvents();
/**
* List events using filters.
@@ -61,6 +67,6 @@ public interface EventApi extends Closeable {
@Named("event:list")
@GET
@Consumes(EventsDto.BASE_MEDIA_TYPE)
- @JAXBResponseParser
- EventsDto listEvents(EventOptions options);
+ @ResponseParser(ParseEvents.class)
+ PaginatedCollection<EventDto, EventsDto> listEvents(EventOptions options);
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/features/InfrastructureApi.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/features/InfrastructureApi.java b/abiquo/src/main/java/org/jclouds/abiquo/features/InfrastructureApi.java
index 391d48d..85b799f 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/features/InfrastructureApi.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/features/InfrastructureApi.java
@@ -39,6 +39,7 @@ import org.jclouds.abiquo.binders.BindToXMLPayloadAndPath;
import org.jclouds.abiquo.binders.infrastructure.AppendMachineIdToPath;
import org.jclouds.abiquo.binders.infrastructure.AppendRemoteServiceTypeToPath;
import org.jclouds.abiquo.binders.infrastructure.BindSupportedDevicesLinkToPath;
+import org.jclouds.abiquo.domain.PaginatedCollection;
import org.jclouds.abiquo.domain.infrastructure.options.DatacenterOptions;
import org.jclouds.abiquo.domain.infrastructure.options.IpmiOptions;
import org.jclouds.abiquo.domain.infrastructure.options.MachineOptions;
@@ -46,9 +47,13 @@ import org.jclouds.abiquo.domain.infrastructure.options.StoragePoolOptions;
import org.jclouds.abiquo.domain.network.options.IpOptions;
import org.jclouds.abiquo.domain.network.options.NetworkOptions;
import org.jclouds.abiquo.functions.infrastructure.ParseDatacenterId;
+import org.jclouds.abiquo.functions.pagination.ParseExternalIps;
+import org.jclouds.abiquo.functions.pagination.ParsePublicIps;
+import org.jclouds.abiquo.functions.pagination.ParseUnmanagedIps;
import org.jclouds.abiquo.http.filters.AbiquoAuthentication;
import org.jclouds.abiquo.http.filters.AppendApiVersionToMediaType;
import org.jclouds.abiquo.rest.annotations.EndpointLink;
+import org.jclouds.collect.PagedIterable;
import org.jclouds.http.functions.ReturnStringIf2xx;
import org.jclouds.rest.annotations.BinderParam;
import org.jclouds.rest.annotations.Fallback;
@@ -56,6 +61,8 @@ import org.jclouds.rest.annotations.JAXBResponseParser;
import org.jclouds.rest.annotations.ParamParser;
import org.jclouds.rest.annotations.RequestFilters;
import org.jclouds.rest.annotations.ResponseParser;
+import org.jclouds.rest.annotations.SinceApiVersion;
+import org.jclouds.rest.annotations.Transform;
import org.jclouds.rest.binders.BindToXMLPayload;
import com.abiquo.model.enumerator.HypervisorType;
@@ -1141,13 +1148,14 @@ public interface InfrastructureApi extends Closeable {
* @param network
* The public network.
* @return The IPs in the given public network.
- * @since 2.3
*/
+ @SinceApiVersion("2.3")
@Named("publicnetwork:listips")
@GET
@Consumes(PublicIpsDto.BASE_MEDIA_TYPE)
- @JAXBResponseParser
- PublicIpsDto listPublicIps(@EndpointLink("ips") @BinderParam(BindToPath.class) VLANNetworkDto network);
+ @ResponseParser(ParsePublicIps.class)
+ @Transform(ParsePublicIps.ToPagedIterable.class)
+ PagedIterable<PublicIpDto> listPublicIps(@EndpointLink("ips") @BinderParam(BindToPath.class) VLANNetworkDto network);
/**
* List all the IPs in the given public network.
@@ -1157,14 +1165,14 @@ public interface InfrastructureApi extends Closeable {
* @param options
* The filtering options.
* @return The IPs in the given public network.
- * @since 2.3
*/
+ @SinceApiVersion("2.3")
@Named("publicnetwork:listips")
@GET
@Consumes(PublicIpsDto.BASE_MEDIA_TYPE)
- @JAXBResponseParser
- PublicIpsDto listPublicIps(@EndpointLink("ips") @BinderParam(BindToPath.class) VLANNetworkDto network,
- IpOptions options);
+ @ResponseParser(ParsePublicIps.class)
+ PaginatedCollection<PublicIpDto, PublicIpsDto> listPublicIps(
+ @EndpointLink("ips") @BinderParam(BindToPath.class) VLANNetworkDto network, IpOptions options);
/**
* Get the given public ip.
@@ -1174,8 +1182,8 @@ public interface InfrastructureApi extends Closeable {
* @param ipId
* The id of the ip to get.
* @return The requested ip.
- * @since 2.3
*/
+ @SinceApiVersion("2.3")
@Named("publicnetwork:getip")
@GET
@Consumes(PublicIpDto.BASE_MEDIA_TYPE)
@@ -1189,13 +1197,15 @@ public interface InfrastructureApi extends Closeable {
* @param network
* The external network.
* @return The IPs in the given external network.
- * @since 2.3
*/
+ @SinceApiVersion("2.3")
@Named("externalnetwork:listips")
@GET
@Consumes(ExternalIpsDto.BASE_MEDIA_TYPE)
- @JAXBResponseParser
- ExternalIpsDto listExternalIps(@EndpointLink("ips") @BinderParam(BindToPath.class) VLANNetworkDto network);
+ @ResponseParser(ParseExternalIps.class)
+ @Transform(ParseExternalIps.ToPagedIterable.class)
+ PagedIterable<ExternalIpDto> listExternalIps(
+ @EndpointLink("ips") @BinderParam(BindToPath.class) VLANNetworkDto network);
/**
* List all the IPs in the given external network.
@@ -1205,14 +1215,14 @@ public interface InfrastructureApi extends Closeable {
* @param options
* The filtering options.
* @return The IPs in the given external network.
- * @since 2.3
*/
+ @SinceApiVersion("2.3")
@Named("externalnetwork:listips")
@GET
@Consumes(ExternalIpsDto.BASE_MEDIA_TYPE)
- @JAXBResponseParser
- ExternalIpsDto listExternalIps(@EndpointLink("ips") @BinderParam(BindToPath.class) VLANNetworkDto network,
- IpOptions options);
+ @ResponseParser(ParseExternalIps.class)
+ PaginatedCollection<ExternalIpDto, ExternalIpsDto> listExternalIps(
+ @EndpointLink("ips") @BinderParam(BindToPath.class) VLANNetworkDto network, IpOptions options);
/**
* Get the given external ip.
@@ -1222,8 +1232,8 @@ public interface InfrastructureApi extends Closeable {
* @param ipId
* The id of the ip to get.
* @return The requested ip.
- * @since 2.3
*/
+ @SinceApiVersion("2.3")
@Named("externalnetwork:getip")
@GET
@Consumes(ExternalIpDto.BASE_MEDIA_TYPE)
@@ -1237,13 +1247,15 @@ public interface InfrastructureApi extends Closeable {
* @param network
* The unmanaged network.
* @return The IPs in the given unmanaged network.
- * @since 2.3
*/
+ @SinceApiVersion("2.3")
@Named("unmanagednetwork:listips")
@GET
@Consumes(UnmanagedIpsDto.BASE_MEDIA_TYPE)
- @JAXBResponseParser
- UnmanagedIpsDto listUnmanagedIps(@EndpointLink("ips") @BinderParam(BindToPath.class) VLANNetworkDto network);
+ @ResponseParser(ParseUnmanagedIps.class)
+ @Transform(ParseUnmanagedIps.ToPagedIterable.class)
+ PagedIterable<UnmanagedIpDto> listUnmanagedIps(
+ @EndpointLink("ips") @BinderParam(BindToPath.class) VLANNetworkDto network);
/**
* List all the IPs in the given unmanaged network.
@@ -1253,14 +1265,14 @@ public interface InfrastructureApi extends Closeable {
* @param options
* The filtering options.
* @return The IPs in the given unmanaged network.
- * @since 2.3
*/
+ @SinceApiVersion("2.3")
@Named("unmanagednetwork:listips")
@GET
@Consumes(UnmanagedIpsDto.BASE_MEDIA_TYPE)
- @JAXBResponseParser
- UnmanagedIpsDto listUnmanagedIps(@EndpointLink("ips") @BinderParam(BindToPath.class) VLANNetworkDto network,
- IpOptions options);
+ @ResponseParser(ParseUnmanagedIps.class)
+ PaginatedCollection<UnmanagedIpDto, UnmanagedIpsDto> listUnmanagedIps(
+ @EndpointLink("ips") @BinderParam(BindToPath.class) VLANNetworkDto network, IpOptions options);
/**
* Get the given unmanaged ip.
@@ -1270,8 +1282,8 @@ public interface InfrastructureApi extends Closeable {
* @param ipId
* The id of the ip to get.
* @return The requested ip.
- * @since 2.3
*/
+ @SinceApiVersion("2.3")
@Named("unmanagednetwork:getip")
@GET
@Consumes(UnmanagedIpDto.BASE_MEDIA_TYPE)
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/features/VirtualMachineTemplateApi.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/features/VirtualMachineTemplateApi.java b/abiquo/src/main/java/org/jclouds/abiquo/features/VirtualMachineTemplateApi.java
index 6fa4f58..30e8680 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/features/VirtualMachineTemplateApi.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/features/VirtualMachineTemplateApi.java
@@ -32,17 +32,21 @@ import org.jclouds.Fallbacks.NullOnNotFoundOr404;
import org.jclouds.abiquo.binders.AppendToPath;
import org.jclouds.abiquo.binders.BindToPath;
import org.jclouds.abiquo.binders.BindToXMLPayloadAndPath;
+import org.jclouds.abiquo.domain.PaginatedCollection;
import org.jclouds.abiquo.domain.cloud.options.ConversionOptions;
import org.jclouds.abiquo.domain.cloud.options.VirtualMachineTemplateOptions;
import org.jclouds.abiquo.functions.ReturnTaskReferenceOrNull;
+import org.jclouds.abiquo.functions.pagination.ParseVirtualMachineTemplates;
import org.jclouds.abiquo.http.filters.AbiquoAuthentication;
import org.jclouds.abiquo.http.filters.AppendApiVersionToMediaType;
import org.jclouds.abiquo.rest.annotations.EndpointLink;
+import org.jclouds.collect.PagedIterable;
import org.jclouds.rest.annotations.BinderParam;
import org.jclouds.rest.annotations.Fallback;
import org.jclouds.rest.annotations.JAXBResponseParser;
import org.jclouds.rest.annotations.RequestFilters;
import org.jclouds.rest.annotations.ResponseParser;
+import org.jclouds.rest.annotations.Transform;
import org.jclouds.rest.binders.BindToXMLPayload;
import com.abiquo.model.enumerator.DiskFormatType;
@@ -81,8 +85,9 @@ public interface VirtualMachineTemplateApi extends Closeable {
@GET
@Path("/{enterprise}/datacenterrepositories/{datacenterrepository}/virtualmachinetemplates")
@Consumes(VirtualMachineTemplatesDto.BASE_MEDIA_TYPE)
- @JAXBResponseParser
- VirtualMachineTemplatesDto listVirtualMachineTemplates(@PathParam("enterprise") Integer enterpriseId,
+ @ResponseParser(ParseVirtualMachineTemplates.class)
+ @Transform(ParseVirtualMachineTemplates.ToPagedIterable.class)
+ PagedIterable<VirtualMachineTemplateDto> listVirtualMachineTemplates(@PathParam("enterprise") Integer enterpriseId,
@PathParam("datacenterrepository") Integer datacenterRepositoryId);
/**
@@ -102,8 +107,9 @@ public interface VirtualMachineTemplateApi extends Closeable {
@GET
@Path("/{enterprise}/datacenterrepositories/{datacenterrepository}/virtualmachinetemplates")
@Consumes(VirtualMachineTemplatesDto.BASE_MEDIA_TYPE)
- @JAXBResponseParser
- VirtualMachineTemplatesDto listVirtualMachineTemplates(@PathParam("enterprise") Integer enterpriseId,
+ @ResponseParser(ParseVirtualMachineTemplates.class)
+ PaginatedCollection<VirtualMachineTemplateDto, VirtualMachineTemplatesDto> listVirtualMachineTemplates(
+ @PathParam("enterprise") Integer enterpriseId,
@PathParam("datacenterrepository") Integer datacenterRepositoryId, VirtualMachineTemplateOptions options);
/**
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/features/services/AdministrationService.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/features/services/AdministrationService.java b/abiquo/src/main/java/org/jclouds/abiquo/features/services/AdministrationService.java
index 2278708..929ae4c 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/features/services/AdministrationService.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/features/services/AdministrationService.java
@@ -24,6 +24,7 @@ import org.jclouds.abiquo.domain.enterprise.Enterprise;
import org.jclouds.abiquo.domain.enterprise.EnterpriseProperties;
import org.jclouds.abiquo.domain.enterprise.Role;
import org.jclouds.abiquo.domain.enterprise.User;
+import org.jclouds.abiquo.domain.enterprise.options.EnterpriseOptions;
import org.jclouds.abiquo.domain.infrastructure.Datacenter;
import org.jclouds.abiquo.domain.infrastructure.Machine;
import org.jclouds.abiquo.internal.BaseAdministrationService;
@@ -65,6 +66,11 @@ public interface AdministrationService {
Iterable<Enterprise> listEnterprises();
/**
+ * Get the list of all enterprises, filtered with the given options.
+ */
+ Iterable<Enterprise> listEnterprises(EnterpriseOptions options);
+
+ /**
* Get the enterprise with the given id.
*/
Enterprise getEnterprise(final Integer enterpriseId);
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/features/services/CloudService.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/features/services/CloudService.java b/abiquo/src/main/java/org/jclouds/abiquo/features/services/CloudService.java
index fc1aeed..080fc8f 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/features/services/CloudService.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/features/services/CloudService.java
@@ -21,6 +21,7 @@ import java.util.List;
import org.jclouds.abiquo.domain.cloud.VirtualAppliance;
import org.jclouds.abiquo.domain.cloud.VirtualDatacenter;
import org.jclouds.abiquo.domain.cloud.VirtualMachine;
+import org.jclouds.abiquo.domain.cloud.options.VirtualMachineOptions;
import org.jclouds.abiquo.domain.enterprise.Enterprise;
import org.jclouds.abiquo.internal.BaseCloudService;
@@ -75,4 +76,9 @@ public interface CloudService {
*/
Iterable<VirtualMachine> listVirtualMachines();
+ /**
+ * Get the list of all virtual machines filtered with the given options.
+ */
+ Iterable<VirtualMachine> listVirtualMachines(VirtualMachineOptions options);
+
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/BasePaginationParser.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/BasePaginationParser.java b/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/BasePaginationParser.java
new file mode 100644
index 0000000..0fcf254
--- /dev/null
+++ b/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/BasePaginationParser.java
@@ -0,0 +1,56 @@
+/*
+ * 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.jclouds.abiquo.functions.pagination;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import org.jclouds.abiquo.AbiquoApi;
+import org.jclouds.abiquo.domain.PaginatedCollection;
+import org.jclouds.collect.PagedIterable;
+import org.jclouds.http.HttpResponse;
+import org.jclouds.http.functions.ParseXMLWithJAXB;
+
+import com.abiquo.model.transport.WrapperDto;
+import com.google.common.base.Function;
+
+/**
+ * Base class for all pagination response parsers.
+ * <p>
+ * Parses the response with the given parser, and wraps the results in a
+ * {@link PaginatedCollection} so it can be properly iterated.
+ *
+ * @author Ignasi Barrera
+ *
+ * @see PaginatedCollection
+ * @see PagedIterable
+ */
+public abstract class BasePaginationParser<T, W extends WrapperDto<T>> implements
+ Function<HttpResponse, PaginatedCollection<T, W>> {
+ protected final AbiquoApi api;
+ protected final ParseXMLWithJAXB<W> parser;
+
+ public BasePaginationParser(AbiquoApi api, ParseXMLWithJAXB<W> parser) {
+ this.api = checkNotNull(api, "api must not be null");
+ this.parser = checkNotNull(parser, "parser must not be null");
+ }
+
+ @Override
+ public PaginatedCollection<T, W> apply(HttpResponse input) {
+ return new PaginatedCollection<T, W>(api, parser.apply(input), parser);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParseEnterprises.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParseEnterprises.java b/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParseEnterprises.java
new file mode 100644
index 0000000..99fcc1d
--- /dev/null
+++ b/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParseEnterprises.java
@@ -0,0 +1,49 @@
+/*
+ * 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.jclouds.abiquo.functions.pagination;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import org.jclouds.abiquo.AbiquoApi;
+import org.jclouds.abiquo.domain.PaginatedCollection;
+import org.jclouds.http.functions.ParseXMLWithJAXB;
+
+import com.abiquo.server.core.enterprise.EnterpriseDto;
+import com.abiquo.server.core.enterprise.EnterprisesDto;
+
+/**
+ * Parses a paginated enterprise list.
+ *
+ * @author Ignasi Barrera
+ */
+@Singleton
+public class ParseEnterprises extends BasePaginationParser<EnterpriseDto, EnterprisesDto> {
+ @Inject
+ public ParseEnterprises(AbiquoApi api, ParseXMLWithJAXB<EnterprisesDto> parser) {
+ super(api, parser);
+ }
+
+ @Singleton
+ public static class ToPagedIterable extends PaginatedCollection.ToPagedIterable<EnterpriseDto, EnterprisesDto> {
+ @Inject
+ public ToPagedIterable(AbiquoApi api, ParseXMLWithJAXB<EnterprisesDto> parser) {
+ super(api, parser);
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParseEvents.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParseEvents.java b/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParseEvents.java
new file mode 100644
index 0000000..2cbcd0d
--- /dev/null
+++ b/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParseEvents.java
@@ -0,0 +1,49 @@
+/*
+ * 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.jclouds.abiquo.functions.pagination;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import org.jclouds.abiquo.AbiquoApi;
+import org.jclouds.abiquo.domain.PaginatedCollection;
+import org.jclouds.http.functions.ParseXMLWithJAXB;
+
+import com.abiquo.server.core.event.EventDto;
+import com.abiquo.server.core.event.EventsDto;
+
+/**
+ * Parses a paginated event list.
+ *
+ * @author Ignasi Barrera
+ */
+@Singleton
+public class ParseEvents extends BasePaginationParser<EventDto, EventsDto> {
+ @Inject
+ public ParseEvents(AbiquoApi api, ParseXMLWithJAXB<EventsDto> parser) {
+ super(api, parser);
+ }
+
+ @Singleton
+ public static class ToPagedIterable extends PaginatedCollection.ToPagedIterable<EventDto, EventsDto> {
+ @Inject
+ public ToPagedIterable(AbiquoApi api, ParseXMLWithJAXB<EventsDto> parser) {
+ super(api, parser);
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParseExternalIps.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParseExternalIps.java b/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParseExternalIps.java
new file mode 100644
index 0000000..86a67e0
--- /dev/null
+++ b/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParseExternalIps.java
@@ -0,0 +1,49 @@
+/*
+ * 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.jclouds.abiquo.functions.pagination;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import org.jclouds.abiquo.AbiquoApi;
+import org.jclouds.abiquo.domain.PaginatedCollection;
+import org.jclouds.http.functions.ParseXMLWithJAXB;
+
+import com.abiquo.server.core.infrastructure.network.ExternalIpDto;
+import com.abiquo.server.core.infrastructure.network.ExternalIpsDto;
+
+/**
+ * Parses a paginated external ip list.
+ *
+ * @author Ignasi Barrera
+ */
+@Singleton
+public class ParseExternalIps extends BasePaginationParser<ExternalIpDto, ExternalIpsDto> {
+ @Inject
+ public ParseExternalIps(AbiquoApi api, ParseXMLWithJAXB<ExternalIpsDto> parser) {
+ super(api, parser);
+ }
+
+ @Singleton
+ public static class ToPagedIterable extends PaginatedCollection.ToPagedIterable<ExternalIpDto, ExternalIpsDto> {
+ @Inject
+ public ToPagedIterable(AbiquoApi api, ParseXMLWithJAXB<ExternalIpsDto> parser) {
+ super(api, parser);
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParsePrivateIps.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParsePrivateIps.java b/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParsePrivateIps.java
new file mode 100644
index 0000000..a56688a
--- /dev/null
+++ b/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParsePrivateIps.java
@@ -0,0 +1,49 @@
+/*
+ * 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.jclouds.abiquo.functions.pagination;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import org.jclouds.abiquo.AbiquoApi;
+import org.jclouds.abiquo.domain.PaginatedCollection;
+import org.jclouds.http.functions.ParseXMLWithJAXB;
+
+import com.abiquo.server.core.infrastructure.network.PrivateIpDto;
+import com.abiquo.server.core.infrastructure.network.PrivateIpsDto;
+
+/**
+ * Parses a paginated private ip list.
+ *
+ * @author Ignasi Barrera
+ */
+@Singleton
+public class ParsePrivateIps extends BasePaginationParser<PrivateIpDto, PrivateIpsDto> {
+ @Inject
+ public ParsePrivateIps(AbiquoApi api, ParseXMLWithJAXB<PrivateIpsDto> parser) {
+ super(api, parser);
+ }
+
+ @Singleton
+ public static class ToPagedIterable extends PaginatedCollection.ToPagedIterable<PrivateIpDto, PrivateIpsDto> {
+ @Inject
+ public ToPagedIterable(AbiquoApi api, ParseXMLWithJAXB<PrivateIpsDto> parser) {
+ super(api, parser);
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParsePublicIps.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParsePublicIps.java b/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParsePublicIps.java
new file mode 100644
index 0000000..7671024
--- /dev/null
+++ b/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParsePublicIps.java
@@ -0,0 +1,49 @@
+/*
+ * 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.jclouds.abiquo.functions.pagination;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import org.jclouds.abiquo.AbiquoApi;
+import org.jclouds.abiquo.domain.PaginatedCollection;
+import org.jclouds.http.functions.ParseXMLWithJAXB;
+
+import com.abiquo.server.core.infrastructure.network.PublicIpDto;
+import com.abiquo.server.core.infrastructure.network.PublicIpsDto;
+
+/**
+ * Parses a paginated public ip list.
+ *
+ * @author Ignasi Barrera
+ */
+@Singleton
+public class ParsePublicIps extends BasePaginationParser<PublicIpDto, PublicIpsDto> {
+ @Inject
+ public ParsePublicIps(AbiquoApi api, ParseXMLWithJAXB<PublicIpsDto> parser) {
+ super(api, parser);
+ }
+
+ @Singleton
+ public static class ToPagedIterable extends PaginatedCollection.ToPagedIterable<PublicIpDto, PublicIpsDto> {
+ @Inject
+ public ToPagedIterable(AbiquoApi api, ParseXMLWithJAXB<PublicIpsDto> parser) {
+ super(api, parser);
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParseUnmanagedIps.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParseUnmanagedIps.java b/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParseUnmanagedIps.java
new file mode 100644
index 0000000..33ee503
--- /dev/null
+++ b/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParseUnmanagedIps.java
@@ -0,0 +1,49 @@
+/*
+ * 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.jclouds.abiquo.functions.pagination;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import org.jclouds.abiquo.AbiquoApi;
+import org.jclouds.abiquo.domain.PaginatedCollection;
+import org.jclouds.http.functions.ParseXMLWithJAXB;
+
+import com.abiquo.server.core.infrastructure.network.UnmanagedIpDto;
+import com.abiquo.server.core.infrastructure.network.UnmanagedIpsDto;
+
+/**
+ * Parses a paginated unmnaged ip list.
+ *
+ * @author Ignasi Barrera
+ */
+@Singleton
+public class ParseUnmanagedIps extends BasePaginationParser<UnmanagedIpDto, UnmanagedIpsDto> {
+ @Inject
+ public ParseUnmanagedIps(AbiquoApi api, ParseXMLWithJAXB<UnmanagedIpsDto> parser) {
+ super(api, parser);
+ }
+
+ @Singleton
+ public static class ToPagedIterable extends PaginatedCollection.ToPagedIterable<UnmanagedIpDto, UnmanagedIpsDto> {
+ @Inject
+ public ToPagedIterable(AbiquoApi api, ParseXMLWithJAXB<UnmanagedIpsDto> parser) {
+ super(api, parser);
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParseUsers.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParseUsers.java b/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParseUsers.java
new file mode 100644
index 0000000..f782ccb
--- /dev/null
+++ b/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParseUsers.java
@@ -0,0 +1,157 @@
+/*
+ * 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.jclouds.abiquo.functions.pagination;
+
+import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.collect.Iterables.getFirst;
+import static org.jclouds.http.utils.Queries.encodeQueryLine;
+import static org.jclouds.http.utils.Queries.queryParser;
+
+import java.net.URI;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import org.jclouds.abiquo.AbiquoApi;
+import org.jclouds.abiquo.domain.PaginatedCollection;
+import org.jclouds.collect.IterableWithMarker;
+import org.jclouds.collect.PagedIterable;
+import org.jclouds.http.HttpResponse;
+import org.jclouds.http.functions.ParseXMLWithJAXB;
+
+import com.abiquo.model.rest.RESTLink;
+import com.abiquo.server.core.enterprise.UserDto;
+import com.abiquo.server.core.enterprise.UsersDto;
+import com.google.common.base.Function;
+import com.google.common.base.Optional;
+import com.google.common.collect.Multimap;
+
+/**
+ * Parses a paginated user list.
+ *
+ * @author Ignasi Barrera
+ */
+@Singleton
+public class ParseUsers extends BasePaginationParser<UserDto, UsersDto> {
+ @Inject
+ public ParseUsers(AbiquoApi api, ParseXMLWithJAXB<UsersDto> parser) {
+ super(api, parser);
+ }
+
+ // Return a custom class to bypass
+ // http://jira.abiquo.com/browse/ABICLOUDPREMIUM-5927
+ // Remove once the fix has been deployed to production
+ @Override
+ public PaginatedCollection<UserDto, UsersDto> apply(HttpResponse input) {
+ return new UserPaginatedCollection(api, parser.apply(input), parser);
+ }
+
+ @Singleton
+ public static class ToPagedIterable extends PaginatedCollection.ToPagedIterable<UserDto, UsersDto> {
+ @Inject
+ public ToPagedIterable(AbiquoApi api, ParseXMLWithJAXB<UsersDto> parser) {
+ super(api, parser);
+ }
+
+ // Overwrite to return a custom class and bypass
+ // http://jira.abiquo.com/browse/ABICLOUDPREMIUM-5927
+ // Remove once the fix has been deployed to production
+ @Override
+ protected Function<Object, IterableWithMarker<UserDto>> nextPage(PaginatedCollection<UserDto, UsersDto> input) {
+ return new Function<Object, IterableWithMarker<UserDto>>() {
+ @Override
+ public IterableWithMarker<UserDto> apply(Object marker) {
+ checkArgument(marker instanceof RESTLink, "Marker must be a RESTLink");
+ RESTLink next = RESTLink.class.cast(marker);
+
+ // The Abiquo API does not provide the media types in the
+ // pagination links, but it will be the same type than the
+ // current page, so just set it.
+ next.setType(UsersDto.BASE_MEDIA_TYPE);
+
+ UsersDto nextPage = parser.apply(api.get(next));
+ return new UserPaginatedCollection(api, nextPage, parser);
+ }
+ };
+ }
+ }
+
+ /**
+ * This class is used to bypass
+ * http://jira.abiquo.com/browse/ABICLOUDPREMIUM-5927
+ * <p>
+ * The issue has already been fixed but still not been deployed in
+ * production. Once that is done, this class should be removed.
+ *
+ * @author Ignasi Barrera
+ */
+ private static class UserPaginatedCollection extends PaginatedCollection<UserDto, UsersDto> {
+ public UserPaginatedCollection(AbiquoApi api, UsersDto delegate, ParseXMLWithJAXB<UsersDto> parser) {
+ super(api, delegate, parser);
+ }
+
+ @Override
+ public Optional<Object> nextMarker() {
+ Optional<Object> next = super.nextMarker();
+ // Pagination links are not consistent and a "next" link can be
+ // returned even if there are no more pages. Overwrite the
+ // default behavior to handle this, and to adapt the query
+ // parameters returned in the pagination links to what the api
+ // expects in the GET requests
+ if (next.isPresent()) {
+ checkArgument(next.get() instanceof RESTLink, "Marker must be a RESTLink");
+ RESTLink link = RESTLink.class.cast(next.get());
+
+ // Get the conflicting query parameters and remove them from the
+ // query parameter map
+ Multimap<String, String> params = queryParser().apply(URI.create(link.getHref()).getRawQuery());
+ String limit = getFirst(params.removeAll("limit"), null);
+ String startwith = getFirst(params.removeAll("startwith"), null);
+
+ // Next page links always have both query parameters. Otherwise
+ // assume there is no next page
+ if (limit != null && startwith != null) {
+ int resultsPerPage = Integer.parseInt(limit);
+ int totalResults = delegate.getTotalSize();
+ int pageNumber = Integer.parseInt(startwith) - resultsPerPage;
+
+ // Check if there is really a next page, and then return the
+ // marker with the appropriate values
+ if (totalResults / (double) resultsPerPage > pageNumber + 1) {
+ params.put("numResults", limit);
+ params.put("page", String.valueOf(pageNumber + 1));
+
+ // Build the new URI stripping the existing query
+ // parameters and using the new ones
+ String uri = link.getHref().substring(0, link.getHref().indexOf('?') + 1);
+ uri += encodeQueryLine(params);
+
+ return Optional.<Object> of(new RESTLink(link.getRel(), uri));
+ }
+ }
+ }
+
+ return Optional.absent();
+ }
+
+ @Override
+ public PagedIterable<UserDto> toPagedIterable() {
+ return new ParseUsers.ToPagedIterable(api, parser).apply(this);
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParseVirtualMachineTemplates.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParseVirtualMachineTemplates.java b/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParseVirtualMachineTemplates.java
new file mode 100644
index 0000000..a26766c
--- /dev/null
+++ b/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParseVirtualMachineTemplates.java
@@ -0,0 +1,51 @@
+/*
+ * 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.jclouds.abiquo.functions.pagination;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import org.jclouds.abiquo.AbiquoApi;
+import org.jclouds.abiquo.domain.PaginatedCollection;
+import org.jclouds.http.functions.ParseXMLWithJAXB;
+
+import com.abiquo.server.core.appslibrary.VirtualMachineTemplateDto;
+import com.abiquo.server.core.appslibrary.VirtualMachineTemplatesDto;
+
+/**
+ * Parses a paginated virtual machine template list.
+ *
+ * @author Ignasi Barrera
+ */
+@Singleton
+public class ParseVirtualMachineTemplates extends
+ BasePaginationParser<VirtualMachineTemplateDto, VirtualMachineTemplatesDto> {
+ @Inject
+ public ParseVirtualMachineTemplates(AbiquoApi api, ParseXMLWithJAXB<VirtualMachineTemplatesDto> parser) {
+ super(api, parser);
+ }
+
+ @Singleton
+ public static class ToPagedIterable extends
+ PaginatedCollection.ToPagedIterable<VirtualMachineTemplateDto, VirtualMachineTemplatesDto> {
+ @Inject
+ public ToPagedIterable(AbiquoApi api, ParseXMLWithJAXB<VirtualMachineTemplatesDto> parser) {
+ super(api, parser);
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParseVirtualMachines.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParseVirtualMachines.java b/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParseVirtualMachines.java
new file mode 100644
index 0000000..2103a77
--- /dev/null
+++ b/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParseVirtualMachines.java
@@ -0,0 +1,51 @@
+/*
+ * 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.jclouds.abiquo.functions.pagination;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import org.jclouds.abiquo.AbiquoApi;
+import org.jclouds.abiquo.domain.PaginatedCollection;
+import org.jclouds.http.functions.ParseXMLWithJAXB;
+
+import com.abiquo.server.core.cloud.VirtualMachineWithNodeExtendedDto;
+import com.abiquo.server.core.cloud.VirtualMachinesWithNodeExtendedDto;
+
+/**
+ * Parses a paginated virtual machine list.
+ *
+ * @author Ignasi Barrera
+ */
+@Singleton
+public class ParseVirtualMachines extends
+ BasePaginationParser<VirtualMachineWithNodeExtendedDto, VirtualMachinesWithNodeExtendedDto> {
+ @Inject
+ public ParseVirtualMachines(AbiquoApi api, ParseXMLWithJAXB<VirtualMachinesWithNodeExtendedDto> parser) {
+ super(api, parser);
+ }
+
+ @Singleton
+ public static class ToPagedIterable extends
+ PaginatedCollection.ToPagedIterable<VirtualMachineWithNodeExtendedDto, VirtualMachinesWithNodeExtendedDto> {
+ @Inject
+ public ToPagedIterable(AbiquoApi api, ParseXMLWithJAXB<VirtualMachinesWithNodeExtendedDto> parser) {
+ super(api, parser);
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParseVolumes.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParseVolumes.java b/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParseVolumes.java
new file mode 100644
index 0000000..d9f9ab2
--- /dev/null
+++ b/abiquo/src/main/java/org/jclouds/abiquo/functions/pagination/ParseVolumes.java
@@ -0,0 +1,50 @@
+/*
+ * 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.jclouds.abiquo.functions.pagination;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import org.jclouds.abiquo.AbiquoApi;
+import org.jclouds.abiquo.domain.PaginatedCollection;
+import org.jclouds.http.functions.ParseXMLWithJAXB;
+
+import com.abiquo.server.core.infrastructure.storage.VolumeManagementDto;
+import com.abiquo.server.core.infrastructure.storage.VolumesManagementDto;
+
+/**
+ * Parses a paginated volume list.
+ *
+ * @author Ignasi Barrera
+ */
+@Singleton
+public class ParseVolumes extends BasePaginationParser<VolumeManagementDto, VolumesManagementDto> {
+ @Inject
+ public ParseVolumes(AbiquoApi api, ParseXMLWithJAXB<VolumesManagementDto> parser) {
+ super(api, parser);
+ }
+
+ @Singleton
+ public static class ToPagedIterable extends
+ PaginatedCollection.ToPagedIterable<VolumeManagementDto, VolumesManagementDto> {
+ @Inject
+ public ToPagedIterable(AbiquoApi api, ParseXMLWithJAXB<VolumesManagementDto> parser) {
+ super(api, parser);
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/internal/BaseAdministrationService.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/internal/BaseAdministrationService.java b/abiquo/src/main/java/org/jclouds/abiquo/internal/BaseAdministrationService.java
index ceffaa4..290f0fd 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/internal/BaseAdministrationService.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/internal/BaseAdministrationService.java
@@ -24,6 +24,7 @@ import javax.inject.Inject;
import javax.inject.Singleton;
import org.jclouds.abiquo.AbiquoApi;
+import org.jclouds.abiquo.domain.PaginatedCollection;
import org.jclouds.abiquo.domain.config.Category;
import org.jclouds.abiquo.domain.config.License;
import org.jclouds.abiquo.domain.config.Privilege;
@@ -34,12 +35,14 @@ import org.jclouds.abiquo.domain.enterprise.Enterprise;
import org.jclouds.abiquo.domain.enterprise.EnterpriseProperties;
import org.jclouds.abiquo.domain.enterprise.Role;
import org.jclouds.abiquo.domain.enterprise.User;
+import org.jclouds.abiquo.domain.enterprise.options.EnterpriseOptions;
import org.jclouds.abiquo.domain.infrastructure.Datacenter;
import org.jclouds.abiquo.domain.infrastructure.Machine;
import org.jclouds.abiquo.features.services.AdministrationService;
import org.jclouds.abiquo.reference.ValidationErrors;
import org.jclouds.abiquo.strategy.infrastructure.ListMachines;
import org.jclouds.collect.Memoized;
+import org.jclouds.collect.PagedIterable;
import org.jclouds.rest.ApiContext;
import com.abiquo.server.core.appslibrary.CategoriesDto;
@@ -112,8 +115,15 @@ public class BaseAdministrationService implements AdministrationService {
@Override
public Iterable<Enterprise> listEnterprises() {
- EnterprisesDto result = context.getApi().getEnterpriseApi().listEnterprises();
- return wrap(context, Enterprise.class, result.getCollection());
+ PagedIterable<EnterpriseDto> result = context.getApi().getEnterpriseApi().listEnterprises();
+ return wrap(context, Enterprise.class, result.concat());
+ }
+
+ @Override
+ public Iterable<Enterprise> listEnterprises(EnterpriseOptions options) {
+ PaginatedCollection<EnterpriseDto, EnterprisesDto> result = context.getApi().getEnterpriseApi()
+ .listEnterprises(options);
+ return wrap(context, Enterprise.class, result.toPagedIterable().concat());
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/internal/BaseCloudService.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/internal/BaseCloudService.java b/abiquo/src/main/java/org/jclouds/abiquo/internal/BaseCloudService.java
index 1ef28af..a8df42d 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/internal/BaseCloudService.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/internal/BaseCloudService.java
@@ -25,18 +25,22 @@ import javax.inject.Inject;
import javax.inject.Singleton;
import org.jclouds.abiquo.AbiquoApi;
+import org.jclouds.abiquo.domain.PaginatedCollection;
import org.jclouds.abiquo.domain.cloud.VirtualAppliance;
import org.jclouds.abiquo.domain.cloud.VirtualDatacenter;
import org.jclouds.abiquo.domain.cloud.VirtualMachine;
import org.jclouds.abiquo.domain.cloud.options.VirtualDatacenterOptions;
+import org.jclouds.abiquo.domain.cloud.options.VirtualMachineOptions;
import org.jclouds.abiquo.domain.enterprise.Enterprise;
import org.jclouds.abiquo.features.services.CloudService;
import org.jclouds.abiquo.reference.ValidationErrors;
import org.jclouds.abiquo.strategy.cloud.ListVirtualAppliances;
import org.jclouds.abiquo.strategy.cloud.ListVirtualDatacenters;
+import org.jclouds.collect.PagedIterable;
import org.jclouds.rest.ApiContext;
import com.abiquo.server.core.cloud.VirtualDatacenterDto;
+import com.abiquo.server.core.cloud.VirtualMachineWithNodeExtendedDto;
import com.abiquo.server.core.cloud.VirtualMachinesWithNodeExtendedDto;
import com.google.common.annotations.VisibleForTesting;
@@ -104,7 +108,14 @@ public class BaseCloudService implements CloudService {
@Override
public Iterable<VirtualMachine> listVirtualMachines() {
- VirtualMachinesWithNodeExtendedDto vms = context.getApi().getCloudApi().listAllVirtualMachines();
- return wrap(context, VirtualMachine.class, vms.getCollection());
+ PagedIterable<VirtualMachineWithNodeExtendedDto> vms = context.getApi().getCloudApi().listAllVirtualMachines();
+ return wrap(context, VirtualMachine.class, vms.concat());
+ }
+
+ @Override
+ public Iterable<VirtualMachine> listVirtualMachines(VirtualMachineOptions options) {
+ PaginatedCollection<VirtualMachineWithNodeExtendedDto, VirtualMachinesWithNodeExtendedDto> vms = context.getApi()
+ .getCloudApi().listAllVirtualMachines(options);
+ return wrap(context, VirtualMachine.class, vms.toPagedIterable().concat());
}
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/internal/BaseEventService.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/internal/BaseEventService.java b/abiquo/src/main/java/org/jclouds/abiquo/internal/BaseEventService.java
index 38f5e43..669ed4d 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/internal/BaseEventService.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/internal/BaseEventService.java
@@ -23,11 +23,14 @@ import javax.inject.Inject;
import javax.inject.Singleton;
import org.jclouds.abiquo.AbiquoApi;
+import org.jclouds.abiquo.domain.PaginatedCollection;
import org.jclouds.abiquo.domain.event.Event;
import org.jclouds.abiquo.domain.event.options.EventOptions;
import org.jclouds.abiquo.features.services.EventService;
+import org.jclouds.collect.PagedIterable;
import org.jclouds.rest.ApiContext;
+import com.abiquo.server.core.event.EventDto;
import com.abiquo.server.core.event.EventsDto;
import com.google.common.annotations.VisibleForTesting;
@@ -49,13 +52,13 @@ public class BaseEventService implements EventService {
@Override
public Iterable<Event> listEvents() {
- EventsDto result = context.getApi().getEventApi().listEvents();
- return wrap(context, Event.class, result.getCollection());
+ PagedIterable<EventDto> result = context.getApi().getEventApi().listEvents();
+ return wrap(context, Event.class, result.concat());
}
@Override
public Iterable<Event> listEvents(final EventOptions options) {
- EventsDto result = context.getApi().getEventApi().listEvents(options);
- return wrap(context, Event.class, result.getCollection());
+ PaginatedCollection<EventDto, EventsDto> result = context.getApi().getEventApi().listEvents(options);
+ return wrap(context, Event.class, result.toPagedIterable().concat());
}
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/predicates/VirtualDatacenterPredicates.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/predicates/VirtualDatacenterPredicates.java b/abiquo/src/main/java/org/jclouds/abiquo/predicates/VirtualDatacenterPredicates.java
index ac71720..97e4695 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/predicates/VirtualDatacenterPredicates.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/predicates/VirtualDatacenterPredicates.java
@@ -17,8 +17,7 @@
package org.jclouds.abiquo.predicates;
import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.List;
+import static com.google.common.collect.Iterables.isEmpty;
import org.jclouds.abiquo.domain.cloud.Conversion;
import org.jclouds.abiquo.domain.cloud.VirtualDatacenter;
@@ -71,8 +70,8 @@ public class VirtualDatacenterPredicates {
HypervisorType type = vdc.getHypervisorType();
boolean compatible = type.isCompatible(template.getDiskFormatType());
if (!compatible) {
- List<Conversion> compatibleConversions = template.listConversions(type, ConversionState.FINISHED);
- compatible = compatibleConversions != null && !compatibleConversions.isEmpty();
+ Iterable<Conversion> compatibleConversions = template.listConversions(type, ConversionState.FINISHED);
+ compatible = compatibleConversions != null && !isEmpty(compatibleConversions);
}
return compatible;
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/strategy/enterprise/ListVirtualMachineTemplates.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/strategy/enterprise/ListVirtualMachineTemplates.java b/abiquo/src/main/java/org/jclouds/abiquo/strategy/enterprise/ListVirtualMachineTemplates.java
index d82d3ad..989e42e 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/strategy/enterprise/ListVirtualMachineTemplates.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/strategy/enterprise/ListVirtualMachineTemplates.java
@@ -17,6 +17,7 @@
package org.jclouds.abiquo.strategy.enterprise;
import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.collect.Iterables.concat;
import static com.google.common.collect.Iterables.filter;
import static com.google.common.collect.Iterables.transform;
import static com.google.common.util.concurrent.Futures.allAsList;
@@ -31,16 +32,15 @@ import javax.inject.Named;
import org.jclouds.Constants;
import org.jclouds.abiquo.AbiquoApi;
-import org.jclouds.abiquo.domain.DomainWrapper;
import org.jclouds.abiquo.domain.cloud.VirtualMachineTemplate;
import org.jclouds.abiquo.domain.enterprise.Enterprise;
import org.jclouds.abiquo.domain.infrastructure.Datacenter;
import org.jclouds.abiquo.strategy.ListEntities;
+import org.jclouds.collect.PagedIterable;
import org.jclouds.logging.Logger;
import org.jclouds.rest.ApiContext;
import com.abiquo.server.core.appslibrary.VirtualMachineTemplateDto;
-import com.abiquo.server.core.appslibrary.VirtualMachineTemplatesDto;
import com.google.common.base.Function;
import com.google.common.base.Predicate;
import com.google.common.util.concurrent.ListenableFuture;
@@ -90,21 +90,23 @@ public class ListVirtualMachineTemplates implements ListEntities<VirtualMachineT
private Iterable<VirtualMachineTemplateDto> listConcurrentTemplates(final ListeningExecutorService executor,
final Enterprise parent, final Iterable<Datacenter> dcs) {
- ListenableFuture<List<VirtualMachineTemplatesDto>> futures = allAsList(transform(dcs,
- new Function<Datacenter, ListenableFuture<VirtualMachineTemplatesDto>>() {
+ ListenableFuture<List<Iterable<VirtualMachineTemplateDto>>> futures = allAsList(transform(dcs,
+ new Function<Datacenter, ListenableFuture<Iterable<VirtualMachineTemplateDto>>>() {
@Override
- public ListenableFuture<VirtualMachineTemplatesDto> apply(final Datacenter input) {
- return executor.submit(new Callable<VirtualMachineTemplatesDto>() {
+ public ListenableFuture<Iterable<VirtualMachineTemplateDto>> apply(final Datacenter input) {
+ return executor.submit(new Callable<Iterable<VirtualMachineTemplateDto>>() {
@Override
- public VirtualMachineTemplatesDto call() throws Exception {
- return context.getApi().getVirtualMachineTemplateApi()
+ public Iterable<VirtualMachineTemplateDto> call() throws Exception {
+ PagedIterable<VirtualMachineTemplateDto> templates = context.getApi()
+ .getVirtualMachineTemplateApi()
.listVirtualMachineTemplates(parent.getId(), input.getId());
+ return templates.concat();
}
});
}
}));
logger.trace("getting virtual machine templates");
- return DomainWrapper.join(getUnchecked(futures));
+ return concat(getUnchecked(futures));
}
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/AccountLiveTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/AccountLiveTest.java b/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/AccountLiveTest.java
index 144280d..a2599cd 100644
--- a/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/AccountLiveTest.java
+++ b/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/AccountLiveTest.java
@@ -16,6 +16,7 @@
*/
package org.jclouds.abiquo.domain.cloud;
+import static com.google.common.collect.Iterables.size;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertTrue;
@@ -46,11 +47,11 @@ public class AccountLiveTest extends BaseAbiquoLiveApiTest {
}
public void testAllowedDatacenters() {
- assertTrue(enterprise.listAllowedDatacenters().size() > 0);
+ assertTrue(size(enterprise.listAllowedDatacenters()) > 0);
}
public void testAvailableTemplates() {
- assertTrue(enterprise.listTemplates().size() > 0);
+ assertTrue(size(enterprise.listTemplates()) > 0);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/VirtualDatacenterLiveApiTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/VirtualDatacenterLiveApiTest.java b/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/VirtualDatacenterLiveApiTest.java
index c6c6fdd..5f8ac67 100644
--- a/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/VirtualDatacenterLiveApiTest.java
+++ b/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/VirtualDatacenterLiveApiTest.java
@@ -17,7 +17,9 @@
package org.jclouds.abiquo.domain.cloud;
import static com.google.common.collect.Iterables.find;
+import static com.google.common.collect.Iterables.get;
import static com.google.common.collect.Iterables.size;
+import static com.google.common.collect.Lists.newArrayList;
import static org.jclouds.abiquo.reference.AbiquoTestConstants.PREFIX;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertFalse;
@@ -79,13 +81,13 @@ public class VirtualDatacenterLiveApiTest extends BaseAbiquoApiLiveApiTest {
Enterprise enterprise = env.enterpriseAdminContext.getAdministrationService().getCurrentUser().getEnterprise();
assertNotNull(enterprise);
- List<Datacenter> datacenters = enterprise.listAllowedDatacenters();
+ List<Datacenter> datacenters = newArrayList(enterprise.listAllowedDatacenters());
assertNotNull(datacenters);
assertTrue(size(datacenters) > 0);
Datacenter datacenter = datacenters.get(0);
- List<HypervisorType> hypervisors = datacenter.listAvailableHypervisors();
+ List<HypervisorType> hypervisors = newArrayList(datacenter.listAvailableHypervisors());
assertNotNull(datacenters);
assertTrue(size(datacenters) > 0);
@@ -130,7 +132,7 @@ public class VirtualDatacenterLiveApiTest extends BaseAbiquoApiLiveApiTest {
}
public void testPurchaseIp() {
- final PublicIp publicIp = env.virtualDatacenter.listAvailablePublicIps().get(0);
+ final PublicIp publicIp = get(env.virtualDatacenter.listAvailablePublicIps(), 0);
assertNotNull(publicIp);
env.virtualDatacenter.purchasePublicIp(publicIp);
@@ -160,7 +162,7 @@ public class VirtualDatacenterLiveApiTest extends BaseAbiquoApiLiveApiTest {
}
public void testGetAvailableTemplates() {
- List<VirtualMachineTemplate> templates = env.virtualDatacenter.listAvailableTemplates();
+ List<VirtualMachineTemplate> templates = newArrayList(env.virtualDatacenter.listAvailableTemplates());
assertNotNull(templates);
assertFalse(templates.isEmpty());
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/VirtualMachineLiveApiTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/VirtualMachineLiveApiTest.java b/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/VirtualMachineLiveApiTest.java
index d838438..fab4988 100644
--- a/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/VirtualMachineLiveApiTest.java
+++ b/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/VirtualMachineLiveApiTest.java
@@ -27,8 +27,6 @@ import static org.testng.Assert.assertNull;
import static org.testng.Assert.assertTrue;
import static org.testng.Assert.fail;
-import java.util.List;
-
import javax.ws.rs.core.Response.Status;
import org.jclouds.abiquo.domain.exception.AbiquoException;
@@ -77,7 +75,7 @@ public class VirtualMachineLiveApiTest extends BaseAbiquoApiLiveApiTest {
}
public void testGetTasks() {
- List<AsyncTask<?, ?>> tasks = env.virtualMachine.listTasks();
+ Iterable<AsyncTask<?, ?>> tasks = env.virtualMachine.listTasks();
assertNotNull(tasks);
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/VirtualMachineLiveTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/VirtualMachineLiveTest.java b/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/VirtualMachineLiveTest.java
index 3a2eb1a..c5e67a4 100644
--- a/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/VirtualMachineLiveTest.java
+++ b/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/VirtualMachineLiveTest.java
@@ -18,6 +18,7 @@ package org.jclouds.abiquo.domain.cloud;
import static com.google.common.collect.Iterables.find;
import static com.google.common.collect.Iterables.getLast;
+import static org.jclouds.abiquo.environment.CloudTestEnvironment.templateBySize;
import static org.jclouds.abiquo.reference.AbiquoTestConstants.PREFIX;
import static org.jclouds.abiquo.util.Assert.assertHasError;
import static org.testng.Assert.assertEquals;
@@ -42,8 +43,6 @@ import org.testng.annotations.Test;
import com.abiquo.server.core.cloud.VirtualMachineState;
import com.google.common.base.Predicate;
import com.google.common.collect.Lists;
-import com.google.common.collect.Ordering;
-import com.google.common.primitives.Longs;
/**
* Live integration tests for the {@link VirtualMachine} domain class.
@@ -179,13 +178,4 @@ public class VirtualMachineLiveTest extends BaseAbiquoLiveApiTest {
assertNull(vapp.getVirtualMachine(vmId));
}
- private static Ordering<VirtualMachineTemplate> templateBySize() {
- return new Ordering<VirtualMachineTemplate>() {
- @Override
- public int compare(final VirtualMachineTemplate left, final VirtualMachineTemplate right) {
- return Longs.compare(left.getDiskFileSize(), right.getDiskFileSize());
- }
- };
- }
-
}
[2/5] JCLOUDS-198: Implemented the PagedIterable in Abiquo
Posted by na...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/java/org/jclouds/abiquo/features/CloudApiTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/features/CloudApiTest.java b/abiquo/src/test/java/org/jclouds/abiquo/features/CloudApiTest.java
index 249b62f..baa36d5 100644
--- a/abiquo/src/test/java/org/jclouds/abiquo/features/CloudApiTest.java
+++ b/abiquo/src/test/java/org/jclouds/abiquo/features/CloudApiTest.java
@@ -30,9 +30,6 @@ import org.jclouds.abiquo.domain.InfrastructureResources;
import org.jclouds.abiquo.domain.NetworkResources;
import org.jclouds.abiquo.domain.cloud.options.VirtualDatacenterOptions;
import org.jclouds.abiquo.domain.cloud.options.VirtualMachineOptions;
-import org.jclouds.abiquo.domain.cloud.options.VirtualMachineTemplateOptions;
-import org.jclouds.abiquo.domain.cloud.options.VolumeOptions;
-import org.jclouds.abiquo.domain.network.options.IpOptions;
import org.jclouds.abiquo.fallbacks.MovedVolume;
import org.jclouds.abiquo.functions.ReturnTaskReferenceOrNull;
import org.jclouds.http.functions.ParseXMLWithJAXB;
@@ -42,12 +39,10 @@ import org.jclouds.reflect.Invocation;
import org.jclouds.rest.internal.GeneratedHttpRequest;
import org.testng.annotations.Test;
-import com.abiquo.model.enumerator.HypervisorType;
import com.abiquo.model.rest.RESTLink;
import com.abiquo.model.transport.AcceptedRequestDto;
import com.abiquo.model.transport.LinksDto;
import com.abiquo.server.core.appslibrary.VirtualMachineTemplateDto;
-import com.abiquo.server.core.appslibrary.VirtualMachineTemplatesDto;
import com.abiquo.server.core.cloud.VirtualApplianceDto;
import com.abiquo.server.core.cloud.VirtualApplianceStateDto;
import com.abiquo.server.core.cloud.VirtualAppliancesDto;
@@ -57,13 +52,10 @@ import com.abiquo.server.core.cloud.VirtualMachineDto;
import com.abiquo.server.core.cloud.VirtualMachineStateDto;
import com.abiquo.server.core.cloud.VirtualMachineTaskDto;
import com.abiquo.server.core.cloud.VirtualMachineWithNodeExtendedDto;
-import com.abiquo.server.core.cloud.VirtualMachinesWithNodeExtendedDto;
import com.abiquo.server.core.enterprise.EnterpriseDto;
import com.abiquo.server.core.infrastructure.DatacenterDto;
import com.abiquo.server.core.infrastructure.network.PrivateIpDto;
-import com.abiquo.server.core.infrastructure.network.PrivateIpsDto;
import com.abiquo.server.core.infrastructure.network.PublicIpDto;
-import com.abiquo.server.core.infrastructure.network.PublicIpsDto;
import com.abiquo.server.core.infrastructure.network.VLANNetworkDto;
import com.abiquo.server.core.infrastructure.network.VLANNetworksDto;
import com.abiquo.server.core.infrastructure.network.VMNetworkConfigurationsDto;
@@ -190,44 +182,6 @@ public class CloudApiTest extends BaseAbiquoApiTest<CloudApi> {
/*********************** Ips ***********************/
- public void testListAvailablePublicIpsWithOptions() throws SecurityException, NoSuchMethodException, IOException {
- IpOptions options = IpOptions.builder().limit(5).build();
- Invokable<?, ?> method = method(CloudApi.class, "listAvailablePublicIps", VirtualDatacenterDto.class,
- IpOptions.class);
- GeneratedHttpRequest request = processor.apply(Invocation.create(method,
- ImmutableList.<Object> of(CloudResources.virtualDatacenterPut(), options)));
-
- assertRequestLineEquals(request,
- "GET http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase?limit=5 HTTP/1.1");
- assertNonPayloadHeadersEqual(request, "Accept: " + PublicIpsDto.BASE_MEDIA_TYPE + "\n");
- assertPayloadEquals(request, null, null, false);
-
- assertResponseParserClassEquals(method, request, ParseXMLWithJAXB.class);
- assertSaxResponseParserClassEquals(method, null);
- assertFallbackClassEquals(method, null);
-
- checkFilters(request);
- }
-
- public void testListPurchasedPublicIpsWithOptions() throws SecurityException, NoSuchMethodException, IOException {
- IpOptions options = IpOptions.builder().limit(5).build();
- Invokable<?, ?> method = method(CloudApi.class, "listPurchasedPublicIps", VirtualDatacenterDto.class,
- IpOptions.class);
- GeneratedHttpRequest request = processor.apply(Invocation.create(method,
- ImmutableList.<Object> of(CloudResources.virtualDatacenterPut(), options)));
-
- assertRequestLineEquals(request,
- "GET http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased?limit=5 HTTP/1.1");
- assertNonPayloadHeadersEqual(request, "Accept: " + PublicIpsDto.BASE_MEDIA_TYPE + "\n");
- assertPayloadEquals(request, null, null, false);
-
- assertResponseParserClassEquals(method, request, ParseXMLWithJAXB.class);
- assertSaxResponseParserClassEquals(method, null);
- assertFallbackClassEquals(method, null);
-
- checkFilters(request);
- }
-
public void testPurchasePublicIp() throws SecurityException, NoSuchMethodException, IOException {
Invokable<?, ?> method = method(CloudApi.class, "purchasePublicIp", PublicIpDto.class);
GeneratedHttpRequest request = processor.apply(Invocation.create(method,
@@ -264,42 +218,6 @@ public class CloudApiTest extends BaseAbiquoApiTest<CloudApi> {
/*********************** Available templates ***********************/
- public void testListAvailableTemplates() throws SecurityException, NoSuchMethodException, IOException {
- Invokable<?, ?> method = method(CloudApi.class, "listAvailableTemplates", VirtualDatacenterDto.class);
- GeneratedHttpRequest request = processor.apply(Invocation.create(method,
- ImmutableList.<Object> of(CloudResources.virtualDatacenterPut())));
-
- assertRequestLineEquals(request, "GET http://localhost/api/cloud/virtualdatacenters/1/action/templates HTTP/1.1");
- assertNonPayloadHeadersEqual(request, "Accept: " + VirtualMachineTemplatesDto.BASE_MEDIA_TYPE + "\n");
- assertPayloadEquals(request, null, null, false);
-
- assertResponseParserClassEquals(method, request, ParseXMLWithJAXB.class);
- assertSaxResponseParserClassEquals(method, null);
- assertFallbackClassEquals(method, null);
-
- checkFilters(request);
- }
-
- public void testListAvailableTemplatesWithOptions() throws SecurityException, NoSuchMethodException, IOException {
- Invokable<?, ?> method = method(CloudApi.class, "listAvailableTemplates", VirtualDatacenterDto.class,
- VirtualMachineTemplateOptions.class);
- GeneratedHttpRequest request = processor.apply(Invocation.create(
- method,
- ImmutableList.<Object> of(CloudResources.virtualDatacenterPut(), VirtualMachineTemplateOptions.builder()
- .hypervisorType(HypervisorType.XENSERVER).categoryName("Firewalls").idTemplate(1).build())));
-
- assertRequestLineEquals(request, "GET http://localhost/api/cloud/virtualdatacenters/1/action/templates"
- + "?hypervisorTypeName=XENSERVER&categoryName=Firewalls&idTemplate=1 HTTP/1.1");
- assertNonPayloadHeadersEqual(request, "Accept: " + VirtualMachineTemplatesDto.BASE_MEDIA_TYPE + "\n");
- assertPayloadEquals(request, null, null, false);
-
- assertResponseParserClassEquals(method, request, ParseXMLWithJAXB.class);
- assertSaxResponseParserClassEquals(method, null);
- assertFallbackClassEquals(method, null);
-
- checkFilters(request);
- }
-
/*********************** Storage Tiers ***********************/
public void testListStorageTiers() throws SecurityException, NoSuchMethodException, IOException {
@@ -480,41 +398,6 @@ public class CloudApiTest extends BaseAbiquoApiTest<CloudApi> {
/*********************** Private Network IPs ***********************/
- public void testListPrivateNetworkIps() throws SecurityException, NoSuchMethodException, IOException {
- Invokable<?, ?> method = method(CloudApi.class, "listPrivateNetworkIps", VLANNetworkDto.class);
- GeneratedHttpRequest request = processor.apply(Invocation.create(method,
- ImmutableList.<Object> of(NetworkResources.privateNetworkPut())));
-
- assertRequestLineEquals(request,
- "GET http://localhost/api/cloud/virtualdatacenters/1/privatenetworks/1/ips HTTP/1.1");
- assertNonPayloadHeadersEqual(request, "Accept: " + PrivateIpsDto.BASE_MEDIA_TYPE + "\n");
- assertPayloadEquals(request, null, null, false);
-
- assertResponseParserClassEquals(method, request, ParseXMLWithJAXB.class);
- assertSaxResponseParserClassEquals(method, null);
- assertFallbackClassEquals(method, null);
-
- checkFilters(request);
- }
-
- public void testListPrivateNetworkIpsWithOptions() throws SecurityException, NoSuchMethodException, IOException {
- IpOptions options = IpOptions.builder().startWith(10).build();
- Invokable<?, ?> method = method(CloudApi.class, "listPrivateNetworkIps", VLANNetworkDto.class, IpOptions.class);
- GeneratedHttpRequest request = processor.apply(Invocation.create(method,
- ImmutableList.<Object> of(NetworkResources.privateNetworkPut(), options)));
-
- assertRequestLineEquals(request,
- "GET http://localhost/api/cloud/virtualdatacenters/1/privatenetworks/1/ips?startwith=10 HTTP/1.1");
- assertNonPayloadHeadersEqual(request, "Accept: " + PrivateIpsDto.BASE_MEDIA_TYPE + "\n");
- assertPayloadEquals(request, null, null, false);
-
- assertResponseParserClassEquals(method, request, ParseXMLWithJAXB.class);
- assertSaxResponseParserClassEquals(method, null);
- assertFallbackClassEquals(method, null);
-
- checkFilters(request);
- }
-
public void testGetPrivateNetworkIp() throws SecurityException, NoSuchMethodException, IOException {
Invokable<?, ?> method = method(CloudApi.class, "getPrivateNetworkIp", VLANNetworkDto.class, Integer.class);
GeneratedHttpRequest request = processor.apply(Invocation.create(method,
@@ -695,43 +578,6 @@ public class CloudApiTest extends BaseAbiquoApiTest<CloudApi> {
/*********************** Virtual Machine ***********************/
- public void testListVirtualMachines() throws SecurityException, NoSuchMethodException, IOException {
- Invokable<?, ?> method = method(CloudApi.class, "listVirtualMachines", VirtualApplianceDto.class);
- GeneratedHttpRequest request = processor.apply(Invocation.create(method,
- ImmutableList.<Object> of(CloudResources.virtualAppliancePut())));
-
- assertRequestLineEquals(request,
- "GET http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines HTTP/1.1");
- assertNonPayloadHeadersEqual(request, "Accept: " + VirtualMachinesWithNodeExtendedDto.BASE_MEDIA_TYPE + "\n");
- assertPayloadEquals(request, null, null, false);
-
- assertResponseParserClassEquals(method, request, ParseXMLWithJAXB.class);
- assertSaxResponseParserClassEquals(method, null);
- assertFallbackClassEquals(method, null);
-
- checkFilters(request);
- }
-
- public void testListVirtualMachinesWithOptions() throws SecurityException, NoSuchMethodException, IOException {
- Invokable<?, ?> method = method(CloudApi.class, "listVirtualMachines", VirtualApplianceDto.class,
- VirtualMachineOptions.class);
- GeneratedHttpRequest request = processor.apply(Invocation.create(
- method,
- ImmutableList.<Object> of(CloudResources.virtualAppliancePut(), VirtualMachineOptions.builder()
- .disablePagination().build())));
-
- assertRequestLineEquals(request,
- "GET http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines?limit=0 HTTP/1.1");
- assertNonPayloadHeadersEqual(request, "Accept: " + VirtualMachinesWithNodeExtendedDto.BASE_MEDIA_TYPE + "\n");
- assertPayloadEquals(request, null, null, false);
-
- assertResponseParserClassEquals(method, request, ParseXMLWithJAXB.class);
- assertSaxResponseParserClassEquals(method, null);
- assertFallbackClassEquals(method, null);
-
- checkFilters(request);
- }
-
public void testGetVirtualMachine() throws SecurityException, NoSuchMethodException, IOException {
Invokable<?, ?> method = method(CloudApi.class, "getVirtualMachine", VirtualApplianceDto.class, Integer.class);
GeneratedHttpRequest request = processor.apply(Invocation.create(method,
@@ -1166,61 +1012,6 @@ public class CloudApiTest extends BaseAbiquoApiTest<CloudApi> {
/*********************** Volumes ***********************/
- public void testListVolumes() throws SecurityException, NoSuchMethodException, IOException {
- Invokable<?, ?> method = method(CloudApi.class, "listVolumes", VirtualDatacenterDto.class);
- GeneratedHttpRequest request = processor.apply(Invocation.create(method,
- ImmutableList.<Object> of(CloudResources.virtualDatacenterPut())));
-
- assertRequestLineEquals(request, "GET http://localhost/api/cloud/virtualdatacenters/1/volumes HTTP/1.1");
- assertNonPayloadHeadersEqual(request, "Accept: " + VolumesManagementDto.BASE_MEDIA_TYPE + "\n");
- assertPayloadEquals(request, null, null, false);
-
- assertResponseParserClassEquals(method, request, ParseXMLWithJAXB.class);
- assertSaxResponseParserClassEquals(method, null);
- assertFallbackClassEquals(method, null);
-
- checkFilters(request);
- }
-
- public void testListVolumesWithOptions() throws SecurityException, NoSuchMethodException, IOException {
- Invokable<?, ?> method = method(CloudApi.class, "listVolumes", VirtualDatacenterDto.class, VolumeOptions.class);
- GeneratedHttpRequest request = processor.apply(Invocation.create(
- method,
- ImmutableList.<Object> of(CloudResources.virtualDatacenterPut(), VolumeOptions.builder()
- .onlyAvailable(true).build())));
-
- assertRequestLineEquals(request,
- "GET http://localhost/api/cloud/virtualdatacenters/1/volumes?available=true HTTP/1.1");
- assertNonPayloadHeadersEqual(request, "Accept: " + VolumesManagementDto.BASE_MEDIA_TYPE + "\n");
- assertPayloadEquals(request, null, null, false);
-
- assertResponseParserClassEquals(method, request, ParseXMLWithJAXB.class);
- assertSaxResponseParserClassEquals(method, null);
- assertFallbackClassEquals(method, null);
-
- checkFilters(request);
- }
-
- public void testListVolumesWithFilterOptions() throws SecurityException, NoSuchMethodException, IOException {
- Invokable<?, ?> method = method(CloudApi.class, "listVolumes", VirtualDatacenterDto.class, VolumeOptions.class);
-
- GeneratedHttpRequest request = processor.apply(Invocation.create(
- method,
- ImmutableList.<Object> of(CloudResources.virtualDatacenterPut(), VolumeOptions.builder().has("vol")
- .orderBy("name").ascendant(true).build())));
-
- assertRequestLineEquals(request,
- "GET http://localhost/api/cloud/virtualdatacenters/1/volumes?has=vol&by=name&asc=true HTTP/1.1");
- assertNonPayloadHeadersEqual(request, "Accept: " + VolumesManagementDto.BASE_MEDIA_TYPE + "\n");
- assertPayloadEquals(request, null, null, false);
-
- assertResponseParserClassEquals(method, request, ParseXMLWithJAXB.class);
- assertSaxResponseParserClassEquals(method, null);
- assertFallbackClassEquals(method, null);
-
- checkFilters(request);
- }
-
public void testGetVolume() throws SecurityException, NoSuchMethodException, IOException {
Invokable<?, ?> method = method(CloudApi.class, "getVolume", VirtualDatacenterDto.class, Integer.class);
GeneratedHttpRequest request = processor.apply(Invocation.create(method,
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/java/org/jclouds/abiquo/features/EnterpriseApiExpectTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/features/EnterpriseApiExpectTest.java b/abiquo/src/test/java/org/jclouds/abiquo/features/EnterpriseApiExpectTest.java
index cd05564..4bc3ff2 100644
--- a/abiquo/src/test/java/org/jclouds/abiquo/features/EnterpriseApiExpectTest.java
+++ b/abiquo/src/test/java/org/jclouds/abiquo/features/EnterpriseApiExpectTest.java
@@ -17,78 +17,194 @@
package org.jclouds.abiquo.features;
import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
import java.net.URI;
+import java.util.List;
import org.jclouds.abiquo.AbiquoApi;
+import org.jclouds.abiquo.domain.PaginatedCollection;
+import org.jclouds.abiquo.domain.enterprise.options.EnterpriseOptions;
import org.jclouds.abiquo.domain.enterprise.options.UserOptions;
+import org.jclouds.collect.PagedIterable;
import org.jclouds.http.HttpRequest;
-import org.jclouds.http.HttpRequest.Builder;
import org.jclouds.http.HttpResponse;
import org.testng.annotations.Test;
import com.abiquo.model.rest.RESTLink;
import com.abiquo.server.core.enterprise.EnterpriseDto;
+import com.abiquo.server.core.enterprise.EnterprisesDto;
+import com.abiquo.server.core.enterprise.UserDto;
import com.abiquo.server.core.enterprise.UsersDto;
+import com.abiquo.server.core.infrastructure.DatacenterDto;
/**
* Expect tests for the {@link EnterpriseApi} class.
*
* @author Carlos Garcia
+ * @author Ignasi Barrera
*/
@Test(groups = "unit", testName = "EnterpriseApiExpectTest")
public class EnterpriseApiExpectTest extends BaseAbiquoApiExpectTest<EnterpriseApi> {
- private EnterpriseApi buildMockEnterpriseApi(String payloadFile, Builder<?> requestBuilder) {
- return requestSendsResponse(requestBuilder.build(),
- HttpResponse.builder().statusCode(200).payload(
- payloadFromResourceWithContentType(payloadFile,
- normalize(UsersDto.MEDIA_TYPE))) //
- .build());
- }
-
- public Builder<?> getRequestBuilder() {
- return HttpRequest.builder() //
- .method("GET")
- .endpoint(URI.create("http://localhost/api/admin/enterprises/1/users"))
- .addHeader("Cookie", tokenAuth)
- .addHeader("Accept", normalize(UsersDto.MEDIA_TYPE));
- }
-
public void testListUsersWithoutPagination() {
- EnterpriseApi api = buildMockEnterpriseApi("/payloads/usr-list.xml",
- getRequestBuilder());
+ EnterpriseApi api = requestsSendResponses(
+ HttpRequest.builder().method("GET").endpoint(URI.create("http://localhost/api/admin/enterprises/1/users")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(UsersDto.MEDIA_TYPE)) //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/users-page.xml", normalize(UsersDto.MEDIA_TYPE))) //
+ .build(),
+ HttpRequest.builder().method("GET").endpoint(URI.create("http://localhost/api/admin/enterprises/1/users")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(UsersDto.MEDIA_TYPE)) //
+ .addQueryParam("numResults", "2") //
+ .addQueryParam("page", "1") //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/users-lastpage.xml",
+ normalize(UsersDto.MEDIA_TYPE))) //
+ .build());
EnterpriseDto enterprise = new EnterpriseDto();
- enterprise.addLink(new RESTLink("users",
- "http://localhost/api/admin/enterprises/1/users"));
-
- UsersDto users = api.listUsers(enterprise);
- assertEquals(users.getCollection().size(), 3);
- assertEquals(users.getCollection().get(0).getNick(), "potter");
- assertEquals(users.getCollection().get(1).getNick(), "granger");
- assertEquals(users.getCollection().get(2).getNick(), "ron");
+ enterprise.addLink(new RESTLink("users", "http://localhost/api/admin/enterprises/1/users"));
+
+ PagedIterable<UserDto> result = api.listUsers(enterprise);
+ List<UserDto> all = result.concat().toList();
+
+ assertEquals(all.size(), 3);
+ assertEquals(all.get(0).getId().intValue(), 1);
+ assertEquals(all.get(1).getId().intValue(), 2);
+ assertEquals(all.get(2).getId().intValue(), 3);
}
public void testListUsersWithPagination() {
- Builder<?> builder = getRequestBuilder();
- builder.addQueryParam("numResults", "2");
- builder.addQueryParam("page", "2");
- EnterpriseApi api = buildMockEnterpriseApi("/payloads/usr-list-page-2.xml", builder);
+ EnterpriseApi api = requestSendsResponse(
+ HttpRequest.builder().method("GET").endpoint(URI.create("http://localhost/api/admin/enterprises/1/users")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(UsersDto.MEDIA_TYPE)) //
+ .addQueryParam("page", "1") //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/users-lastpage.xml",
+ normalize(UsersDto.MEDIA_TYPE))) //
+ .build());
EnterpriseDto enterprise = new EnterpriseDto();
- enterprise.addLink(new RESTLink("users",
- "http://localhost/api/admin/enterprises/1/users"));
+ enterprise.addLink(new RESTLink("users", "http://localhost/api/admin/enterprises/1/users"));
+
+ UserOptions options = UserOptions.builder().page(1).build();
+ PaginatedCollection<UserDto, UsersDto> result = api.listUsers(enterprise, options);
+
+ assertEquals(result.size(), 1);
+ assertEquals(result.getTotalSize().intValue(), 3);
+ assertEquals(result.get(0).getId().intValue(), 3);
+ assertNotNull(result.searchLink("first"));
+ assertNotNull(result.searchLink("last"));
+ }
+
+ public void testListEnterprises() {
+ EnterpriseApi api = requestSendsResponse(
+ HttpRequest.builder().method("GET").endpoint(URI.create("http://localhost/api/admin/enterprises")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(EnterprisesDto.MEDIA_TYPE)) //
+ .addQueryParam("limit", "1") //
+ .addQueryParam("has", "text") //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/enterprises-page.xml",
+ normalize(EnterprisesDto.MEDIA_TYPE))) //
+ .build());
+
+ EnterpriseOptions options = EnterpriseOptions.builder().limit(1).has("text").build();
+ PaginatedCollection<EnterpriseDto, EnterprisesDto> result = api.listEnterprises(options);
- UsersDto users = api.listUsers(enterprise,
- UserOptions.builder().limit(2).page(2).build());
- assertEquals(users.getCollection().size(), 1);
- assertEquals(users.getCollection().get(0).getNick(), "ron");
+ assertEquals(result.size(), 1);
+ assertEquals(result.getTotalSize().intValue(), 2);
+ assertEquals(result.get(0).getId().intValue(), 1);
+ assertNotNull(result.searchLink("first"));
+ assertNotNull(result.searchLink("last"));
+ }
+
+ public void testListEnterprisesByDatacenterWithOptions() {
+ EnterpriseApi api = requestSendsResponse(
+ HttpRequest.builder().method("GET")
+ .endpoint(URI.create("http://localhost/api/admin/datacenters/1/action/enterprises")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(EnterprisesDto.MEDIA_TYPE)) //
+ .addQueryParam("limit", "1") //
+ .addQueryParam("has", "text") //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/enterprises-page.xml",
+ normalize(EnterprisesDto.MEDIA_TYPE))) //
+ .build());
+
+ DatacenterDto datacenter = new DatacenterDto();
+ datacenter.addLink(new RESTLink("enterprises", "http://localhost/api/admin/datacenters/1/action/enterprises"));
+
+ EnterpriseOptions options = EnterpriseOptions.builder().limit(1).has("text").build();
+ PaginatedCollection<EnterpriseDto, EnterprisesDto> result = api.listEnterprises(datacenter, options);
+
+ assertEquals(result.size(), 1);
+ assertEquals(result.getTotalSize().intValue(), 2);
+ assertEquals(result.get(0).getId().intValue(), 1);
+ assertNotNull(result.searchLink("first"));
+ assertNotNull(result.searchLink("last"));
+ }
+
+ public void testListEnterprisesReturns2xx() {
+ EnterpriseApi api = requestsSendResponses(
+ HttpRequest.builder().method("GET").endpoint(URI.create("http://localhost/api/admin/enterprises")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(EnterprisesDto.MEDIA_TYPE)) //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/enterprises-page.xml",
+ normalize(EnterprisesDto.MEDIA_TYPE))) //
+ .build(),
+ HttpRequest.builder().method("GET").endpoint(URI.create("http://localhost/api/admin/enterprises")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(EnterprisesDto.MEDIA_TYPE)) //
+ .addQueryParam("startwith", "1") //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/enterprises-lastpage.xml",
+ normalize(EnterprisesDto.MEDIA_TYPE))) //
+ .build());
+
+ PagedIterable<EnterpriseDto> result = api.listEnterprises();
+ List<EnterpriseDto> all = result.concat().toList();
+
+ assertEquals(all.size(), 2);
+ assertEquals(all.get(0).getId().intValue(), 1);
+ assertEquals(all.get(1).getId().intValue(), 2);
}
@Override
protected EnterpriseApi clientFrom(AbiquoApi api) {
return api.getEnterpriseApi();
}
-
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/java/org/jclouds/abiquo/features/EnterpriseApiTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/features/EnterpriseApiTest.java b/abiquo/src/test/java/org/jclouds/abiquo/features/EnterpriseApiTest.java
index b6b9f19..dab4357 100644
--- a/abiquo/src/test/java/org/jclouds/abiquo/features/EnterpriseApiTest.java
+++ b/abiquo/src/test/java/org/jclouds/abiquo/features/EnterpriseApiTest.java
@@ -24,7 +24,6 @@ import java.io.IOException;
import org.jclouds.Fallbacks.NullOnNotFoundOr404;
import org.jclouds.abiquo.domain.EnterpriseResources;
import org.jclouds.abiquo.domain.InfrastructureResources;
-import org.jclouds.abiquo.domain.enterprise.options.EnterpriseOptions;
import org.jclouds.fallbacks.MapHttp4xxCodesToExceptions;
import org.jclouds.http.functions.ParseXMLWithJAXB;
import org.jclouds.http.functions.ReleasePayloadAndReturn;
@@ -43,9 +42,7 @@ import com.abiquo.server.core.enterprise.DatacenterLimitsDto;
import com.abiquo.server.core.enterprise.DatacentersLimitsDto;
import com.abiquo.server.core.enterprise.EnterpriseDto;
import com.abiquo.server.core.enterprise.EnterprisePropertiesDto;
-import com.abiquo.server.core.enterprise.EnterprisesDto;
import com.abiquo.server.core.enterprise.UserDto;
-import com.abiquo.server.core.enterprise.UsersDto;
import com.abiquo.server.core.infrastructure.DatacenterDto;
import com.abiquo.server.core.infrastructure.DatacentersDto;
import com.abiquo.server.core.infrastructure.MachinesDto;
@@ -63,58 +60,6 @@ import com.google.common.reflect.Invokable;
public class EnterpriseApiTest extends BaseAbiquoApiTest<EnterpriseApi> {
/*********************** Enterprise ********************** */
- public void testListEnterprises() throws SecurityException, NoSuchMethodException, IOException {
- Invokable<?, ?> method = method(EnterpriseApi.class, "listEnterprises");
- GeneratedHttpRequest request = processor.apply(Invocation.create(method, ImmutableList.of()));
-
- assertRequestLineEquals(request, "GET http://localhost/api/admin/enterprises HTTP/1.1");
- assertNonPayloadHeadersEqual(request, "Accept: " + EnterprisesDto.BASE_MEDIA_TYPE + "\n");
- assertPayloadEquals(request, null, null, false);
-
- assertResponseParserClassEquals(method, request, ParseXMLWithJAXB.class);
- assertSaxResponseParserClassEquals(method, null);
- assertFallbackClassEquals(method, null);
-
- checkFilters(request);
- }
-
- public void testListEnterprisesWithOptions() throws SecurityException, NoSuchMethodException, IOException {
- EnterpriseOptions options = EnterpriseOptions.builder().has("abi").orderBy("name").ascendant(true).build();
-
- Invokable<?, ?> method = method(EnterpriseApi.class, "listEnterprises", EnterpriseOptions.class);
- GeneratedHttpRequest request = processor.apply(Invocation.create(method, ImmutableList.<Object> of(options)));
-
- assertRequestLineEquals(request, "GET http://localhost/api/admin/enterprises?has=abi&by=name&asc=true HTTP/1.1");
- assertNonPayloadHeadersEqual(request, "Accept: " + EnterprisesDto.BASE_MEDIA_TYPE + "\n");
- assertPayloadEquals(request, null, null, false);
-
- assertResponseParserClassEquals(method, request, ParseXMLWithJAXB.class);
- assertSaxResponseParserClassEquals(method, null);
- assertFallbackClassEquals(method, null);
-
- checkFilters(request);
- }
-
- public void testListEnterprisesByDatacenter() throws SecurityException, NoSuchMethodException, IOException {
- EnterpriseOptions options = EnterpriseOptions.builder().startWith(0).limit(25).network(true).build();
-
- Invokable<?, ?> method = method(EnterpriseApi.class, "listEnterprises", DatacenterDto.class,
- EnterpriseOptions.class);
- GeneratedHttpRequest request = processor.apply(Invocation.create(method,
- ImmutableList.<Object> of(InfrastructureResources.datacenterPut(), options)));
-
- assertRequestLineEquals(request,
- "GET http://localhost/api/admin/datacenters/1/action/enterprises?network=true&startwith=0&limit=25 HTTP/1.1");
- assertNonPayloadHeadersEqual(request, "Accept: " + EnterprisesDto.BASE_MEDIA_TYPE + "\n");
- assertPayloadEquals(request, null, null, false);
-
- assertResponseParserClassEquals(method, request, ParseXMLWithJAXB.class);
- assertSaxResponseParserClassEquals(method, null);
- assertFallbackClassEquals(method, null);
-
- checkFilters(request);
- }
-
public void testCreateEnterprise() throws SecurityException, NoSuchMethodException, IOException {
Invokable<?, ?> method = method(EnterpriseApi.class, "createEnterprise", EnterpriseDto.class);
GeneratedHttpRequest request = processor.apply(Invocation.create(method,
@@ -367,22 +312,6 @@ public class EnterpriseApiTest extends BaseAbiquoApiTest<EnterpriseApi> {
checkFilters(request);
}
- public void testListUsers() throws SecurityException, NoSuchMethodException, IOException {
- Invokable<?, ?> method = method(EnterpriseApi.class, "listUsers", EnterpriseDto.class);
- GeneratedHttpRequest request = processor.apply(Invocation.create(method,
- ImmutableList.<Object> of(EnterpriseResources.enterprisePut())));
-
- assertRequestLineEquals(request, "GET http://localhost/api/admin/enterprises/1/users HTTP/1.1");
- assertNonPayloadHeadersEqual(request, "Accept: " + UsersDto.BASE_MEDIA_TYPE + "\n");
- assertPayloadEquals(request, null, null, false);
-
- assertResponseParserClassEquals(method, request, ParseXMLWithJAXB.class);
- assertSaxResponseParserClassEquals(method, null);
- assertFallbackClassEquals(method, null);
-
- checkFilters(request);
- }
-
public void testCreateUser() throws SecurityException, NoSuchMethodException, IOException {
EnterpriseDto enterprise = EnterpriseResources.enterprisePut();
UserDto user = EnterpriseResources.userPost();
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/java/org/jclouds/abiquo/features/EventApiExpectTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/features/EventApiExpectTest.java b/abiquo/src/test/java/org/jclouds/abiquo/features/EventApiExpectTest.java
new file mode 100644
index 0000000..4c1d3c1
--- /dev/null
+++ b/abiquo/src/test/java/org/jclouds/abiquo/features/EventApiExpectTest.java
@@ -0,0 +1,108 @@
+/*
+ * 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.jclouds.abiquo.features;
+
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+
+import java.net.URI;
+import java.util.List;
+
+import org.jclouds.abiquo.AbiquoApi;
+import org.jclouds.abiquo.domain.PaginatedCollection;
+import org.jclouds.abiquo.domain.event.options.EventOptions;
+import org.jclouds.collect.PagedIterable;
+import org.jclouds.http.HttpRequest;
+import org.jclouds.http.HttpResponse;
+import org.testng.annotations.Test;
+
+import com.abiquo.server.core.event.EventDto;
+import com.abiquo.server.core.event.EventsDto;
+
+/**
+ * Expect tests for the {@link EventApi}.
+ *
+ * @author Ignasi Barrera
+ */
+@Test(groups = "unit", testName = "EventApiExpectTest")
+public class EventApiExpectTest extends BaseAbiquoApiExpectTest<EventApi> {
+
+ public void testListEventsWithPagination() {
+ EventApi api = requestSendsResponse(
+ HttpRequest.builder().method("GET").endpoint(URI.create("http://localhost/api/events")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(EventsDto.MEDIA_TYPE)) //
+ .addQueryParam("limit", "1") //
+ .addQueryParam("has", "text") //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/events-page.xml", normalize(EventsDto.MEDIA_TYPE))) //
+ .build());
+
+ EventOptions options = EventOptions.builder().limit(1).has("text").build();
+ PaginatedCollection<EventDto, EventsDto> result = api.listEvents(options);
+
+ assertEquals(result.size(), 2);
+ assertEquals(result.getTotalSize().intValue(), 4);
+ assertEquals(result.get(0).getId().intValue(), 109);
+ assertNotNull(result.searchLink("first"));
+ assertNotNull(result.searchLink("last"));
+ }
+
+ public void testListEventsReturns2xx() {
+ EventApi api = requestsSendResponses(
+ HttpRequest.builder().method("GET").endpoint(URI.create("http://localhost/api/events")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(EventsDto.MEDIA_TYPE)) //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/events-page.xml", normalize(EventsDto.MEDIA_TYPE))) //
+ .build(),
+ HttpRequest.builder().method("GET").endpoint(URI.create("http://localhost/api/events")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(EventsDto.MEDIA_TYPE)) //
+ .addQueryParam("startwith", "1") //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/events-lastpage.xml",
+ normalize(EventsDto.MEDIA_TYPE))) //
+ .build());
+
+ PagedIterable<EventDto> result = api.listEvents();
+ List<EventDto> all = result.concat().toList();
+
+ assertEquals(all.size(), 4);
+ assertEquals(all.get(0).getId().intValue(), 109);
+ assertEquals(all.get(1).getId().intValue(), 108);
+ assertEquals(all.get(2).getId().intValue(), 110);
+ assertEquals(all.get(3).getId().intValue(), 111);
+ }
+
+ @Override
+ protected EventApi clientFrom(AbiquoApi api) {
+ return api.getEventApi();
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/java/org/jclouds/abiquo/features/EventApiTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/features/EventApiTest.java b/abiquo/src/test/java/org/jclouds/abiquo/features/EventApiTest.java
deleted file mode 100644
index b0aa4a6..0000000
--- a/abiquo/src/test/java/org/jclouds/abiquo/features/EventApiTest.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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.jclouds.abiquo.features;
-
-import static org.jclouds.reflect.Reflection2.method;
-
-import java.io.IOException;
-
-import org.jclouds.http.functions.ParseXMLWithJAXB;
-import org.jclouds.reflect.Invocation;
-import org.jclouds.rest.internal.GeneratedHttpRequest;
-import org.testng.annotations.Test;
-
-import com.abiquo.server.core.event.EventsDto;
-import com.google.common.collect.ImmutableList;
-import com.google.common.reflect.Invokable;
-
-/**
- * Tests annotation parsing of {@code EventApi}
- *
- * @author Ignasi Barrera
- * @author Vivien Mahé
- */
-@Test(groups = "unit", testName = "EventApiTest")
-public class EventApiTest extends BaseAbiquoApiTest<EventApi> {
- public void testListEvents() throws SecurityException, NoSuchMethodException, IOException {
- Invokable<?, ?> method = method(EventApi.class, "listEvents");
- GeneratedHttpRequest request = processor.apply(Invocation.create(method, ImmutableList.of()));
-
- assertRequestLineEquals(request, "GET http://localhost/api/events HTTP/1.1");
- assertNonPayloadHeadersEqual(request, "Accept: " + EventsDto.BASE_MEDIA_TYPE + "\n");
- assertPayloadEquals(request, null, null, false);
-
- assertResponseParserClassEquals(method, request, ParseXMLWithJAXB.class);
- assertSaxResponseParserClassEquals(method, null);
- assertFallbackClassEquals(method, null);
-
- checkFilters(request);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/java/org/jclouds/abiquo/features/InfrastructureApiExpectTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/features/InfrastructureApiExpectTest.java b/abiquo/src/test/java/org/jclouds/abiquo/features/InfrastructureApiExpectTest.java
index 90683ed..fcdc3a3 100644
--- a/abiquo/src/test/java/org/jclouds/abiquo/features/InfrastructureApiExpectTest.java
+++ b/abiquo/src/test/java/org/jclouds/abiquo/features/InfrastructureApiExpectTest.java
@@ -21,16 +21,27 @@ import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertNull;
import java.net.URI;
+import java.util.List;
import org.jclouds.abiquo.AbiquoApi;
+import org.jclouds.abiquo.domain.PaginatedCollection;
+import org.jclouds.abiquo.domain.network.options.IpOptions;
+import org.jclouds.collect.PagedIterable;
import org.jclouds.http.HttpRequest;
import org.jclouds.http.HttpResponse;
import org.testng.annotations.Test;
import com.abiquo.model.rest.RESTLink;
import com.abiquo.server.core.infrastructure.DatacenterDto;
+import com.abiquo.server.core.infrastructure.network.ExternalIpDto;
+import com.abiquo.server.core.infrastructure.network.ExternalIpsDto;
import com.abiquo.server.core.infrastructure.network.NetworkServiceTypeDto;
import com.abiquo.server.core.infrastructure.network.NetworkServiceTypesDto;
+import com.abiquo.server.core.infrastructure.network.PublicIpDto;
+import com.abiquo.server.core.infrastructure.network.PublicIpsDto;
+import com.abiquo.server.core.infrastructure.network.UnmanagedIpDto;
+import com.abiquo.server.core.infrastructure.network.UnmanagedIpsDto;
+import com.abiquo.server.core.infrastructure.network.VLANNetworkDto;
/**
* Expect tests for the {@link InfrastructureApi} class.
@@ -191,6 +202,222 @@ public class InfrastructureApiExpectTest extends BaseAbiquoApiExpectTest<Infrast
api.deleteNetworkServiceType(nst);
}
+ public void testListPublicIps() {
+ InfrastructureApi api = requestsSendResponses(
+ HttpRequest.builder() //
+ .method("GET") //
+ .endpoint(URI.create("http://localhost/api/admin/datacenters/1/network/1/ips")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(PublicIpsDto.MEDIA_TYPE)) //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/publicips-page.xml",
+ normalize(PublicIpsDto.MEDIA_TYPE))) //
+ .build(),
+ HttpRequest.builder() //
+ .method("GET") //
+ .endpoint(URI.create("http://localhost/api/admin/datacenters/1/network/1/ips")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(PublicIpsDto.MEDIA_TYPE)) //
+ .addQueryParam("startwith", "3") //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/publicips-lastpage.xml",
+ normalize(PublicIpsDto.MEDIA_TYPE))) //
+ .build());
+
+ VLANNetworkDto vlan = new VLANNetworkDto();
+ vlan.addLink(new RESTLink("ips", "http://localhost/api/admin/datacenters/1/network/1/ips"));
+
+ PagedIterable<PublicIpDto> publicIps = api.listPublicIps(vlan);
+ List<PublicIpDto> ips = publicIps.concat().toList();
+
+ assertEquals(ips.size(), 4);
+ assertEquals(ips.get(0).getId().intValue(), 1);
+ assertEquals(ips.get(1).getId().intValue(), 2);
+ assertEquals(ips.get(2).getId().intValue(), 3);
+ assertEquals(ips.get(3).getId().intValue(), 4);
+ }
+
+ public void testListPublicIpsWithPagination() {
+ InfrastructureApi api = requestSendsResponse(
+ HttpRequest.builder() //
+ .method("GET") //
+ .endpoint(URI.create("http://localhost/api/admin/datacenters/1/network/1/ips")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(PublicIpsDto.MEDIA_TYPE)) //
+ .addQueryParam("startwith", "3") //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/publicips-lastpage.xml",
+ normalize(PublicIpsDto.MEDIA_TYPE))) //
+ .build());
+
+ VLANNetworkDto vlan = new VLANNetworkDto();
+ vlan.addLink(new RESTLink("ips", "http://localhost/api/admin/datacenters/1/network/1/ips"));
+
+ IpOptions options = IpOptions.builder().startWith(3).build();
+ PaginatedCollection<PublicIpDto, PublicIpsDto> ips = api.listPublicIps(vlan, options);
+
+ assertEquals(ips.size(), 2);
+ assertEquals(ips.getTotalSize().intValue(), 4);
+ assertEquals(ips.get(0).getId().intValue(), 3);
+ assertEquals(ips.get(1).getId().intValue(), 4);
+ }
+
+ public void testListExternalIps() {
+ InfrastructureApi api = requestsSendResponses(
+ HttpRequest.builder() //
+ .method("GET") //
+ .endpoint(URI.create("http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(ExternalIpsDto.MEDIA_TYPE)) //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/externalips-page.xml",
+ normalize(ExternalIpsDto.MEDIA_TYPE))) //
+ .build(),
+ HttpRequest.builder() //
+ .method("GET") //
+ .endpoint(URI.create("http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(ExternalIpsDto.MEDIA_TYPE)) //
+ .addQueryParam("startwith", "3") //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/externalips-lastpage.xml",
+ normalize(ExternalIpsDto.MEDIA_TYPE))) //
+ .build());
+
+ VLANNetworkDto vlan = new VLANNetworkDto();
+ vlan.addLink(new RESTLink("ips", "http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips"));
+
+ PagedIterable<ExternalIpDto> publicIps = api.listExternalIps(vlan);
+ List<ExternalIpDto> ips = publicIps.concat().toList();
+
+ assertEquals(ips.size(), 4);
+ assertEquals(ips.get(0).getId().intValue(), 1);
+ assertEquals(ips.get(1).getId().intValue(), 2);
+ assertEquals(ips.get(2).getId().intValue(), 3);
+ assertEquals(ips.get(3).getId().intValue(), 4);
+ }
+
+ public void testListExternalIpsWithPagination() {
+ InfrastructureApi api = requestSendsResponse(
+ HttpRequest.builder() //
+ .method("GET") //
+ .endpoint(URI.create("http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(ExternalIpsDto.MEDIA_TYPE)) //
+ .addQueryParam("startwith", "3") //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/externalips-lastpage.xml",
+ normalize(ExternalIpsDto.MEDIA_TYPE))) //
+ .build());
+
+ VLANNetworkDto vlan = new VLANNetworkDto();
+ vlan.addLink(new RESTLink("ips", "http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips"));
+
+ IpOptions options = IpOptions.builder().startWith(3).build();
+ PaginatedCollection<ExternalIpDto, ExternalIpsDto> ips = api.listExternalIps(vlan, options);
+
+ assertEquals(ips.size(), 2);
+ assertEquals(ips.getTotalSize().intValue(), 4);
+ assertEquals(ips.get(0).getId().intValue(), 3);
+ assertEquals(ips.get(1).getId().intValue(), 4);
+ }
+
+ public void testListUnmanagedIps() {
+ InfrastructureApi api = requestsSendResponses(
+ HttpRequest.builder() //
+ .method("GET") //
+ .endpoint(URI.create("http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(UnmanagedIpsDto.MEDIA_TYPE)) //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/unmanagedips-page.xml",
+ normalize(UnmanagedIpsDto.MEDIA_TYPE))) //
+ .build(),
+ HttpRequest.builder() //
+ .method("GET") //
+ .endpoint(URI.create("http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(UnmanagedIpsDto.MEDIA_TYPE)) //
+ .addQueryParam("startwith", "3") //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/unmanagedips-lastpage.xml",
+ normalize(UnmanagedIpsDto.MEDIA_TYPE))) //
+ .build());
+
+ VLANNetworkDto vlan = new VLANNetworkDto();
+ vlan.addLink(new RESTLink("ips", "http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips"));
+
+ PagedIterable<UnmanagedIpDto> unmanagedIps = api.listUnmanagedIps(vlan);
+ List<UnmanagedIpDto> ips = unmanagedIps.concat().toList();
+
+ assertEquals(ips.size(), 4);
+ assertEquals(ips.get(0).getId().intValue(), 1);
+ assertEquals(ips.get(1).getId().intValue(), 2);
+ assertEquals(ips.get(2).getId().intValue(), 3);
+ assertEquals(ips.get(3).getId().intValue(), 4);
+ }
+
+ public void testListUnmanagedIpsWithPagination() {
+ InfrastructureApi api = requestSendsResponse(
+ HttpRequest.builder() //
+ .method("GET") //
+ .endpoint(URI.create("http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(UnmanagedIpsDto.MEDIA_TYPE)) //
+ .addQueryParam("startwith", "3") //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/unmanagedips-lastpage.xml",
+ normalize(UnmanagedIpsDto.MEDIA_TYPE))) //
+ .build());
+
+ VLANNetworkDto vlan = new VLANNetworkDto();
+ vlan.addLink(new RESTLink("ips", "http://localhost/api/admin/enterprises/2/limits/2/externalnetworks/2/ips"));
+
+ IpOptions options = IpOptions.builder().startWith(3).build();
+ PaginatedCollection<UnmanagedIpDto, UnmanagedIpsDto> ips = api.listUnmanagedIps(vlan, options);
+
+ assertEquals(ips.size(), 2);
+ assertEquals(ips.getTotalSize().intValue(), 4);
+ assertEquals(ips.get(0).getId().intValue(), 3);
+ assertEquals(ips.get(1).getId().intValue(), 4);
+ }
+
@Override
protected InfrastructureApi clientFrom(AbiquoApi api) {
return api.getInfrastructureApi();
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/java/org/jclouds/abiquo/features/InfrastructureApiTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/features/InfrastructureApiTest.java b/abiquo/src/test/java/org/jclouds/abiquo/features/InfrastructureApiTest.java
index 3064935..36eb667 100644
--- a/abiquo/src/test/java/org/jclouds/abiquo/features/InfrastructureApiTest.java
+++ b/abiquo/src/test/java/org/jclouds/abiquo/features/InfrastructureApiTest.java
@@ -33,7 +33,6 @@ import org.jclouds.abiquo.domain.infrastructure.options.DatacenterOptions;
import org.jclouds.abiquo.domain.infrastructure.options.IpmiOptions;
import org.jclouds.abiquo.domain.infrastructure.options.MachineOptions;
import org.jclouds.abiquo.domain.infrastructure.options.StoragePoolOptions;
-import org.jclouds.abiquo.domain.network.options.IpOptions;
import org.jclouds.abiquo.domain.network.options.NetworkOptions;
import org.jclouds.fallbacks.MapHttp4xxCodesToExceptions;
import org.jclouds.http.functions.ParseXMLWithJAXB;
@@ -63,11 +62,8 @@ import com.abiquo.server.core.infrastructure.RacksDto;
import com.abiquo.server.core.infrastructure.RemoteServiceDto;
import com.abiquo.server.core.infrastructure.RemoteServicesDto;
import com.abiquo.server.core.infrastructure.network.ExternalIpDto;
-import com.abiquo.server.core.infrastructure.network.ExternalIpsDto;
import com.abiquo.server.core.infrastructure.network.PublicIpDto;
-import com.abiquo.server.core.infrastructure.network.PublicIpsDto;
import com.abiquo.server.core.infrastructure.network.UnmanagedIpDto;
-import com.abiquo.server.core.infrastructure.network.UnmanagedIpsDto;
import com.abiquo.server.core.infrastructure.network.VLANNetworkDto;
import com.abiquo.server.core.infrastructure.network.VLANNetworksDto;
import com.abiquo.server.core.infrastructure.network.VlanTagAvailabilityDto;
@@ -1231,40 +1227,6 @@ public class InfrastructureApiTest extends BaseAbiquoApiTest<InfrastructureApi>
/*********************** Network IPs ***********************/
- public void testListPublicIps() throws SecurityException, NoSuchMethodException, IOException {
- Invokable<?, ?> method = method(InfrastructureApi.class, "listPublicIps", VLANNetworkDto.class);
- GeneratedHttpRequest request = processor.apply(Invocation.create(method,
- ImmutableList.<Object> of(NetworkResources.publicNetworkPut())));
-
- assertRequestLineEquals(request, "GET http://localhost/api/admin/datacenters/1/network/1/ips HTTP/1.1");
- assertNonPayloadHeadersEqual(request, "Accept: " + PublicIpsDto.BASE_MEDIA_TYPE + "\n");
- assertPayloadEquals(request, null, null, false);
-
- assertResponseParserClassEquals(method, request, ParseXMLWithJAXB.class);
- assertSaxResponseParserClassEquals(method, null);
- assertFallbackClassEquals(method, null);
-
- checkFilters(request);
- }
-
- public void testListPublicIpsWithOptions() throws SecurityException, NoSuchMethodException, IOException {
- IpOptions options = IpOptions.builder().startWith(10).build();
- Invokable<?, ?> method = method(InfrastructureApi.class, "listPublicIps", VLANNetworkDto.class, IpOptions.class);
- GeneratedHttpRequest request = processor.apply(Invocation.create(method,
- ImmutableList.<Object> of(NetworkResources.publicNetworkPut(), options)));
-
- assertRequestLineEquals(request,
- "GET http://localhost/api/admin/datacenters/1/network/1/ips?startwith=10 HTTP/1.1");
- assertNonPayloadHeadersEqual(request, "Accept: " + PublicIpsDto.BASE_MEDIA_TYPE + "\n");
- assertPayloadEquals(request, null, null, false);
-
- assertResponseParserClassEquals(method, request, ParseXMLWithJAXB.class);
- assertSaxResponseParserClassEquals(method, null);
- assertFallbackClassEquals(method, null);
-
- checkFilters(request);
- }
-
public void testGetPublicIp() throws SecurityException, NoSuchMethodException, IOException {
Invokable<?, ?> method = method(InfrastructureApi.class, "getPublicIp", VLANNetworkDto.class, Integer.class);
GeneratedHttpRequest request = processor.apply(Invocation.create(method,
@@ -1281,41 +1243,6 @@ public class InfrastructureApiTest extends BaseAbiquoApiTest<InfrastructureApi>
checkFilters(request);
}
- public void testListExternalIps() throws SecurityException, NoSuchMethodException, IOException {
- Invokable<?, ?> method = method(InfrastructureApi.class, "listExternalIps", VLANNetworkDto.class);
- GeneratedHttpRequest request = processor.apply(Invocation.create(method,
- ImmutableList.<Object> of(NetworkResources.externalNetworkPut())));
-
- assertRequestLineEquals(request,
- "GET http://localhost/api/admin/enterprises/1/limits/1/externalnetworks/1/ips HTTP/1.1");
- assertNonPayloadHeadersEqual(request, "Accept: " + ExternalIpsDto.BASE_MEDIA_TYPE + "\n");
- assertPayloadEquals(request, null, null, false);
-
- assertResponseParserClassEquals(method, request, ParseXMLWithJAXB.class);
- assertSaxResponseParserClassEquals(method, null);
- assertFallbackClassEquals(method, null);
-
- checkFilters(request);
- }
-
- public void testListExternalIpsWithOptions() throws SecurityException, NoSuchMethodException, IOException {
- IpOptions options = IpOptions.builder().startWith(10).build();
- Invokable<?, ?> method = method(InfrastructureApi.class, "listExternalIps", VLANNetworkDto.class, IpOptions.class);
- GeneratedHttpRequest request = processor.apply(Invocation.create(method,
- ImmutableList.<Object> of(NetworkResources.externalNetworkPut(), options)));
-
- assertRequestLineEquals(request,
- "GET http://localhost/api/admin/enterprises/1/limits/1/externalnetworks/1/ips?startwith=10 HTTP/1.1");
- assertNonPayloadHeadersEqual(request, "Accept: " + ExternalIpsDto.BASE_MEDIA_TYPE + "\n");
- assertPayloadEquals(request, null, null, false);
-
- assertResponseParserClassEquals(method, request, ParseXMLWithJAXB.class);
- assertSaxResponseParserClassEquals(method, null);
- assertFallbackClassEquals(method, null);
-
- checkFilters(request);
- }
-
public void testGetExternalIp() throws SecurityException, NoSuchMethodException, IOException {
Invokable<?, ?> method = method(InfrastructureApi.class, "getExternalIp", VLANNetworkDto.class, Integer.class);
GeneratedHttpRequest request = processor.apply(Invocation.create(method,
@@ -1333,42 +1260,6 @@ public class InfrastructureApiTest extends BaseAbiquoApiTest<InfrastructureApi>
checkFilters(request);
}
- public void testListUnmanagedIps() throws SecurityException, NoSuchMethodException, IOException {
- Invokable<?, ?> method = method(InfrastructureApi.class, "listUnmanagedIps", VLANNetworkDto.class);
- GeneratedHttpRequest request = processor.apply(Invocation.create(method,
- ImmutableList.<Object> of(NetworkResources.unmanagedNetworkPut())));
-
- assertRequestLineEquals(request,
- "GET http://localhost/api/admin/enterprises/1/limits/1/externalnetworks/1/ips HTTP/1.1");
- assertNonPayloadHeadersEqual(request, "Accept: " + UnmanagedIpsDto.BASE_MEDIA_TYPE + "\n");
- assertPayloadEquals(request, null, null, false);
-
- assertResponseParserClassEquals(method, request, ParseXMLWithJAXB.class);
- assertSaxResponseParserClassEquals(method, null);
- assertFallbackClassEquals(method, null);
-
- checkFilters(request);
- }
-
- public void testListUnmanagedIpsWithOptions() throws SecurityException, NoSuchMethodException, IOException {
- IpOptions options = IpOptions.builder().startWith(10).build();
- Invokable<?, ?> method = method(InfrastructureApi.class, "listUnmanagedIps", VLANNetworkDto.class,
- IpOptions.class);
- GeneratedHttpRequest request = processor.apply(Invocation.create(method,
- ImmutableList.<Object> of(NetworkResources.unmanagedNetworkPut(), options)));
-
- assertRequestLineEquals(request,
- "GET http://localhost/api/admin/enterprises/1/limits/1/externalnetworks/1/ips?startwith=10 HTTP/1.1");
- assertNonPayloadHeadersEqual(request, "Accept: " + UnmanagedIpsDto.BASE_MEDIA_TYPE + "\n");
- assertPayloadEquals(request, null, null, false);
-
- assertResponseParserClassEquals(method, request, ParseXMLWithJAXB.class);
- assertSaxResponseParserClassEquals(method, null);
- assertFallbackClassEquals(method, null);
-
- checkFilters(request);
- }
-
public void testGetUnmanagedIp() throws SecurityException, NoSuchMethodException, IOException {
Invokable<?, ?> method = method(InfrastructureApi.class, "getUnmanagedIp", VLANNetworkDto.class, Integer.class);
GeneratedHttpRequest request = processor.apply(Invocation.create(method,
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/java/org/jclouds/abiquo/features/VirtualMachineTemplateApiExpectTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/features/VirtualMachineTemplateApiExpectTest.java b/abiquo/src/test/java/org/jclouds/abiquo/features/VirtualMachineTemplateApiExpectTest.java
index e9aabe4..7f8f267 100644
--- a/abiquo/src/test/java/org/jclouds/abiquo/features/VirtualMachineTemplateApiExpectTest.java
+++ b/abiquo/src/test/java/org/jclouds/abiquo/features/VirtualMachineTemplateApiExpectTest.java
@@ -20,13 +20,17 @@ import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
import java.net.URI;
+import java.util.List;
import org.jclouds.abiquo.AbiquoApi;
+import org.jclouds.abiquo.domain.PaginatedCollection;
import org.jclouds.abiquo.domain.cloud.options.VirtualMachineTemplateOptions;
+import org.jclouds.collect.PagedIterable;
import org.jclouds.http.HttpRequest;
import org.jclouds.http.HttpResponse;
import org.testng.annotations.Test;
+import com.abiquo.server.core.appslibrary.VirtualMachineTemplateDto;
import com.abiquo.server.core.appslibrary.VirtualMachineTemplatesDto;
/**
@@ -59,16 +63,59 @@ public class VirtualMachineTemplateApiExpectTest extends BaseAbiquoApiExpectTest
.build());
VirtualMachineTemplateOptions options = VirtualMachineTemplateOptions.builder().limit(1).has("text").build();
- VirtualMachineTemplatesDto result = api.listVirtualMachineTemplates(1, 1, options);
+ PaginatedCollection<VirtualMachineTemplateDto, VirtualMachineTemplatesDto> result = api
+ .listVirtualMachineTemplates(1, 1, options);
- assertEquals(result.getCollection().size(), 1);
+ assertEquals(result.size(), 1);
assertEquals(result.getTotalSize().intValue(), 2);
- assertEquals(result.getCollection().get(0).getId().intValue(), 151);
+ assertEquals(result.get(0).getId().intValue(), 151);
assertNotNull(result.searchLink("first"));
assertNotNull(result.searchLink("last"));
assertNotNull(result.searchLink("next"));
}
+ public void testListVirtualMachineTemplatesReturns2xx() {
+ VirtualMachineTemplateApi api = requestsSendResponses(
+ HttpRequest
+ .builder()
+ .method("GET")
+ .endpoint(
+ URI.create("http://localhost/api/admin/enterprises/1/datacenterrepositories/1/virtualmachinetemplates")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(VirtualMachineTemplatesDto.MEDIA_TYPE)) //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/templates-page.xml",
+ normalize(VirtualMachineTemplatesDto.MEDIA_TYPE))) //
+ .build(),
+ HttpRequest
+ .builder()
+ .method("GET")
+ .endpoint(
+ URI.create("http://localhost/api/admin/enterprises/1/datacenterrepositories/1/virtualmachinetemplates")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(VirtualMachineTemplatesDto.MEDIA_TYPE)) //
+ .addQueryParam("startwith", "1") //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/templates-lastpage.xml",
+ normalize(VirtualMachineTemplatesDto.MEDIA_TYPE))) //
+ .build());
+
+ PagedIterable<VirtualMachineTemplateDto> result = api.listVirtualMachineTemplates(1, 1);
+ List<VirtualMachineTemplateDto> all = result.concat().toList();
+
+ assertEquals(all.size(), 2);
+ assertEquals(all.get(0).getId().intValue(), 151);
+ assertEquals(all.get(1).getId().intValue(), 152);
+ }
+
@Override
protected VirtualMachineTemplateApi clientFrom(AbiquoApi api) {
return api.getVirtualMachineTemplateApi();
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/java/org/jclouds/abiquo/features/VirtualMachineTemplateApiTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/features/VirtualMachineTemplateApiTest.java b/abiquo/src/test/java/org/jclouds/abiquo/features/VirtualMachineTemplateApiTest.java
index 86a0046..4739871 100644
--- a/abiquo/src/test/java/org/jclouds/abiquo/features/VirtualMachineTemplateApiTest.java
+++ b/abiquo/src/test/java/org/jclouds/abiquo/features/VirtualMachineTemplateApiTest.java
@@ -24,7 +24,6 @@ import java.io.IOException;
import org.jclouds.Fallbacks.NullOnNotFoundOr404;
import org.jclouds.abiquo.domain.TemplateResources;
import org.jclouds.abiquo.domain.cloud.options.ConversionOptions;
-import org.jclouds.abiquo.domain.cloud.options.VirtualMachineTemplateOptions;
import org.jclouds.abiquo.functions.ReturnTaskReferenceOrNull;
import org.jclouds.http.functions.ParseXMLWithJAXB;
import org.jclouds.http.functions.ReleasePayloadAndReturn;
@@ -40,7 +39,6 @@ import com.abiquo.server.core.appslibrary.ConversionDto;
import com.abiquo.server.core.appslibrary.ConversionsDto;
import com.abiquo.server.core.appslibrary.VirtualMachineTemplateDto;
import com.abiquo.server.core.appslibrary.VirtualMachineTemplatePersistentDto;
-import com.abiquo.server.core.appslibrary.VirtualMachineTemplatesDto;
import com.google.common.collect.ImmutableList;
import com.google.common.reflect.Invokable;
@@ -54,48 +52,6 @@ import com.google.common.reflect.Invokable;
public class VirtualMachineTemplateApiTest extends BaseAbiquoApiTest<VirtualMachineTemplateApi> {
/*********************** Virtual Machine Template ***********************/
- public void testListVirtualMachineTemplates() throws SecurityException, NoSuchMethodException, IOException {
- Invokable<?, ?> method = method(VirtualMachineTemplateApi.class, "listVirtualMachineTemplates", Integer.class,
- Integer.class);
- GeneratedHttpRequest request = processor.apply(Invocation.create(method, ImmutableList.<Object> of(1, 1)));
-
- assertRequestLineEquals(request,
- "GET http://localhost/api/admin/enterprises/1/datacenterrepositories/1/virtualmachinetemplates HTTP/1.1");
- assertNonPayloadHeadersEqual(request, "Accept: " + VirtualMachineTemplatesDto.BASE_MEDIA_TYPE + "\n");
- assertPayloadEquals(request, null, null, false);
-
- assertResponseParserClassEquals(method, request, ParseXMLWithJAXB.class);
- assertSaxResponseParserClassEquals(method, null);
- assertFallbackClassEquals(method, null);
-
- checkFilters(request);
- }
-
- public void testListVirtualMachineTemplatesWithOptions() throws SecurityException, NoSuchMethodException,
- IOException {
- Invokable<?, ?> method = method(VirtualMachineTemplateApi.class, "listVirtualMachineTemplates", Integer.class,
- Integer.class, VirtualMachineTemplateOptions.class);
- GeneratedHttpRequest request = processor.apply(Invocation.create(
- method,
- ImmutableList.<Object> of(
- 1,
- 1,
- VirtualMachineTemplateOptions.builder().hypervisorType(HypervisorType.XENSERVER)
- .categoryName("Firewalls").build())));
-
- assertRequestLineEquals(request,
- "GET http://localhost/api/admin/enterprises/1/datacenterrepositories/1/virtualmachinetemplates"
- + "?hypervisorTypeName=XENSERVER&categoryName=Firewalls HTTP/1.1");
- assertNonPayloadHeadersEqual(request, "Accept: " + VirtualMachineTemplatesDto.BASE_MEDIA_TYPE + "\n");
- assertPayloadEquals(request, null, null, false);
-
- assertResponseParserClassEquals(method, request, ParseXMLWithJAXB.class);
- assertSaxResponseParserClassEquals(method, null);
- assertFallbackClassEquals(method, null);
-
- checkFilters(request);
- }
-
public void testGetVirtualMachineTemplate() throws SecurityException, NoSuchMethodException, IOException {
Invokable<?, ?> method = method(VirtualMachineTemplateApi.class, "getVirtualMachineTemplate", Integer.class,
Integer.class, Integer.class);
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/java/org/jclouds/abiquo/strategy/cloud/ListAttachedNicsLiveApiTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/strategy/cloud/ListAttachedNicsLiveApiTest.java b/abiquo/src/test/java/org/jclouds/abiquo/strategy/cloud/ListAttachedNicsLiveApiTest.java
index 7bb9a7b..643254f 100644
--- a/abiquo/src/test/java/org/jclouds/abiquo/strategy/cloud/ListAttachedNicsLiveApiTest.java
+++ b/abiquo/src/test/java/org/jclouds/abiquo/strategy/cloud/ListAttachedNicsLiveApiTest.java
@@ -17,6 +17,7 @@
package org.jclouds.abiquo.strategy.cloud;
import static com.google.common.collect.Iterables.find;
+import static com.google.common.collect.Iterables.getLast;
import static com.google.common.collect.Iterables.size;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
@@ -55,13 +56,10 @@ public class ListAttachedNicsLiveApiTest extends BaseAbiquoStrategyLiveApiTest {
protected void setupStrategy() {
this.strategy = env.context.utils().injector().getInstance(ListAttachedNics.class);
- privateIp = env.privateNetwork.listUnusedIps().get(0);
- assertNotNull(privateIp);
+ privateIp = getLast(env.privateNetwork.listUnusedIps());
+ externalIp = getLast(env.externalNetwork.listUnusedIps());
- externalIp = env.externalNetwork.listUnusedIps().get(0);
- assertNotNull(externalIp);
-
- publicIp = env.virtualDatacenter.listAvailablePublicIps().get(0);
+ publicIp = getLast(env.virtualDatacenter.listAvailablePublicIps());
env.virtualDatacenter.purchasePublicIp(publicIp);
publicIp = find(env.virtualDatacenter.listPurchasedPublicIps(), new Predicate<PublicIp>() {
@Override
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/resources/logback-test.xml
----------------------------------------------------------------------
diff --git a/abiquo/src/test/resources/logback-test.xml b/abiquo/src/test/resources/logback-test.xml
index 70a88e8..ebdf6c0 100644
--- a/abiquo/src/test/resources/logback-test.xml
+++ b/abiquo/src/test/resources/logback-test.xml
@@ -15,8 +15,8 @@
<maxHistory>5</maxHistory>
</rollingPolicy>
</appender>
- <appender name="PAYLOADFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
- <file>target/test-data/jclouds-payloads.log</file>
+ <appender name="WIREFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>target/test-data/jclouds-wire.log</file>
<append>true</append>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>TRACE</level>
@@ -72,11 +72,11 @@
<logger name="jclouds.headers">
<level value="DEBUG" />
<appender-ref ref="HEADERSFILE" />
- <appender-ref ref="PAYLOADFILE" />
+ <appender-ref ref="WIREFILE" />
</logger>
<logger name="jclouds.wire">
<level value="DEBUG" />
- <appender-ref ref="PAYLOADFILE" />
+ <appender-ref ref="WIREFILE" />
</logger>
<logger name="jclouds.compute">
<level value="DEBUG" />
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/resources/payloads/all-vms-lastpage.xml
----------------------------------------------------------------------
diff --git a/abiquo/src/test/resources/payloads/all-vms-lastpage.xml b/abiquo/src/test/resources/payloads/all-vms-lastpage.xml
new file mode 100644
index 0000000..05ae6eb
--- /dev/null
+++ b/abiquo/src/test/resources/payloads/all-vms-lastpage.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<virtualmachineswithnodeextended>
+ <link href="http://localhost/api/cloud/virtualmachines" rel="first" />
+ <link href="http://localhost/api/cloud/virtualmachines?startwith=0" rel="previous" />
+ <link href="http://localhost/api/cloud/virtualmachines?startwith=2" rel="last" />
+ <totalSize>2</totalSize>
+ <virtualmachinewithnodeextended>
+ <link rel="deploy" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/action/deploy" />
+ <link rel="disks" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/storage/disks" />
+ <link rel="edit" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1" />
+ <link rel="state" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/state" />
+ <link rel="reset" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/action/reset" />
+ <link rel="tasks" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/tasks" />
+ <link rel="undeploy" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/action/undeploy" />
+ <link rel="persistent" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/action/persistent" />
+ <link rel="virtualappliance" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1" />
+ <link rel="virtualmachinetemplate" href="/admin/enterprises/1/datacenterrepositories/1/virtualmachinetemplates/1" />
+ <link rel="nics" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/network/nics" />
+ <link rel="volumes" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/storage/volumes" />
+ <link rel="configurations" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/network/configurations" />
+ <cpu>0</cpu>
+ <hdInBytes>0</hdInBytes>
+ <highDisponibility>0</highDisponibility>
+ <id>2</id>
+ <idState>0</idState>
+ <idType>0</idType>
+ <name>VM</name>
+ <ram>0</ram>
+ <vdrpPort>0</vdrpPort>
+ </virtualmachinewithnodeextended>
+</virtualmachineswithnodeextended>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/resources/payloads/all-vms.xml
----------------------------------------------------------------------
diff --git a/abiquo/src/test/resources/payloads/all-vms.xml b/abiquo/src/test/resources/payloads/all-vms.xml
index 329f202..007fe11 100644
--- a/abiquo/src/test/resources/payloads/all-vms.xml
+++ b/abiquo/src/test/resources/payloads/all-vms.xml
@@ -1,5 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<virtualmachineswithnodeextended>
+ <link href="http://localhost/api/cloud/virtualmachines" rel="first" />
+ <link href="http://localhost/api/cloud/virtualmachines?startwith=2" rel="next" />
+ <link href="http://localhost/api/cloud/virtualmachines?startwith=2" rel="last" />
+ <totalSize>2</totalSize>
<virtualmachinewithnodeextended>
<link rel="deploy" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/action/deploy" />
<link rel="disks" href="http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/storage/disks" />
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/resources/payloads/available-templates-lastpage.xml
----------------------------------------------------------------------
diff --git a/abiquo/src/test/resources/payloads/available-templates-lastpage.xml b/abiquo/src/test/resources/payloads/available-templates-lastpage.xml
new file mode 100644
index 0000000..4e8b2f7
--- /dev/null
+++ b/abiquo/src/test/resources/payloads/available-templates-lastpage.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<virtualMachineTemplates>
+ <link href="http://example.com/api/cloud/virtualdatacenters/1/action/templates" rel="first" />
+ <link href="http://example.com/api/cloud/virtualdatacenters/1/action/templates?startwith=0" rel="previous" />
+ <link href="http://example.com/api/cloud/virtualdatacenters/1/action/templates?startwith=1" rel="last" />
+ <totalSize>2</totalSize>
+ <virtualMachineTemplate>
+ <link href="http://example.com/api/config/categories/1" rel="category" title="Others" type="application/vnd.abiquo.category+xml" />
+ <link href="http://example.com/api/admin/enterprises/1/datacenterrepositories/1/virtualmachinetemplates/16/conversions" rel="conversions" type="application/vnd.abiquo.conversions+xml" />
+ <link href="http://example.com/api/admin/datacenters/1" rel="datacenter" type="application/vnd.abiquo.datacenter+xml" />
+ <link href="http://example.com/api/admin/enterprises/1/datacenterrepositories/1" rel="datacenterrepository" type="application/vnd.abiquo.datacenterrepository+xml" />
+ <link href="http://example.com/am/erepos/1/templates/rs.bcn.abiquo.com%253A9000%252Fovf%252F71%252Fdesc.ovf?format=diskFile" rel="diskfile" />
+ <link href="http://example.com/api/admin/enterprises/1/datacenterrepositories/1/virtualmachinetemplates/16" rel="edit" title="Abiquo KVM" type="application/vnd.abiquo.virtualmachinetemplate+xml" />
+ <link href="http://example.com/api/admin/enterprises/1" rel="enterprise" type="application/vnd.abiquo.enterprise+xml" />
+ <link href="http://example.com/am/erepos/1/templates/rs.bcn.abiquo.com%253A9000%252Fovf%252F71%252Fdesc.ovf?format=envelope" rel="ovfdocument" />
+ <link href="http://example.com/api/admin/enterprises/1/datacenterrepositories/1/virtualmachinetemplates/16/tasks" rel="tasks" type="application/vnd.abiquo.tasks+xml" />
+ <link href="http://example.com/am/erepos/1/templates/rs.bcn.abiquo.com%253A9000%252Fovf%252F71%252Fdesc.ovf" rel="template" />
+ <link href="http://rs.bcn.abiquo.com:9000/ovf/71/desc.ovf" rel="templatedefinition" />
+ <link href="http://example.com/am/erepos/1/templates/rs.bcn.abiquo.com%253A9000%252Fovf%252F71%252Fdesc.ovf?format=status" rel="templatestatus" />
+ <id>16</id>
+ <name>Abiquo KVM</name>
+ <description />
+ <osType>UNRECOGNIZED</osType>
+ <osVersion />
+ <path>1/rs.bcn.abiquo.com/abiport9000/ovf/71/KVM-Recursion.qcow2</path>
+ <diskFormatType>QCOW2_SPARSE</diskFormatType>
+ <diskFileSize>320798720</diskFileSize>
+ <cpuRequired>1</cpuRequired>
+ <ramRequired>1024</ramRequired>
+ <hdRequired>4294967296</hdRequired>
+ <shared>false</shared>
+ <state>DONE</state>
+ <costCode>0</costCode>
+ <creationDate>2013-01-16T15:06:14+01:00</creationDate>
+ <creationUser>SYSTEM</creationUser>
+ <chefEnabled>false</chefEnabled>
+ <iconUrl>http://rs.bcn.abiquo.com:9000/public/icons/q.png</iconUrl>
+ <loginUser>user</loginUser>
+ <loginPassword>password</loginPassword>
+ <ethernetDriverType>E1000</ethernetDriverType>
+ <diskControllerType>SCSI</diskControllerType>
+ </virtualMachineTemplate>
+</virtualMachineTemplates>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/resources/payloads/available-templates-page.xml
----------------------------------------------------------------------
diff --git a/abiquo/src/test/resources/payloads/available-templates-page.xml b/abiquo/src/test/resources/payloads/available-templates-page.xml
new file mode 100644
index 0000000..886d364
--- /dev/null
+++ b/abiquo/src/test/resources/payloads/available-templates-page.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<virtualMachineTemplates>
+ <link href="http://example.com/api/cloud/virtualdatacenters/1/action/templates" rel="first" />
+ <link href="http://example.com/api/cloud/virtualdatacenters/1/action/templates?startwith=1" rel="next" />
+ <link href="http://example.com/api/cloud/virtualdatacenters/1/action/templates?startwith=1" rel="last" />
+ <totalSize>2</totalSize>
+ <virtualMachineTemplate>
+ <link href="http://example.com/api/config/categories/1" rel="category" title="Others" type="application/vnd.abiquo.category+xml" />
+ <link href="http://example.com/api/admin/enterprises/1/datacenterrepositories/1/virtualmachinetemplates/15/conversions" rel="conversions" type="application/vnd.abiquo.conversions+xml" />
+ <link href="http://example.com/api/admin/datacenters/1" rel="datacenter" type="application/vnd.abiquo.datacenter+xml" />
+ <link href="http://example.com/api/admin/enterprises/1/datacenterrepositories/1" rel="datacenterrepository" type="application/vnd.abiquo.datacenterrepository+xml" />
+ <link href="http://example.com/am/erepos/1/templates/rs.bcn.abiquo.com%253A9000%252Fovf%252F71%252Fdesc.ovf?format=diskFile" rel="diskfile" />
+ <link href="http://example.com/api/admin/enterprises/1/datacenterrepositories/1/virtualmachinetemplates/15" rel="edit" title="Abiquo KVM" type="application/vnd.abiquo.virtualmachinetemplate+xml" />
+ <link href="http://example.com/api/admin/enterprises/1" rel="enterprise" type="application/vnd.abiquo.enterprise+xml" />
+ <link href="http://example.com/am/erepos/1/templates/rs.bcn.abiquo.com%253A9000%252Fovf%252F71%252Fdesc.ovf?format=envelope" rel="ovfdocument" />
+ <link href="http://example.com/api/admin/enterprises/1/datacenterrepositories/1/virtualmachinetemplates/15/tasks" rel="tasks" type="application/vnd.abiquo.tasks+xml" />
+ <link href="http://example.com/am/erepos/1/templates/rs.bcn.abiquo.com%253A9000%252Fovf%252F71%252Fdesc.ovf" rel="template" />
+ <link href="http://rs.bcn.abiquo.com:9000/ovf/71/desc.ovf" rel="templatedefinition" />
+ <link href="http://example.com/am/erepos/1/templates/rs.bcn.abiquo.com%253A9000%252Fovf%252F71%252Fdesc.ovf?format=status" rel="templatestatus" />
+ <id>15</id>
+ <name>Abiquo KVM</name>
+ <description />
+ <osType>UNRECOGNIZED</osType>
+ <osVersion />
+ <path>1/rs.bcn.abiquo.com/abiport9000/ovf/71/KVM-Recursion.qcow2</path>
+ <diskFormatType>QCOW2_SPARSE</diskFormatType>
+ <diskFileSize>320798720</diskFileSize>
+ <cpuRequired>1</cpuRequired>
+ <ramRequired>1024</ramRequired>
+ <hdRequired>4294967296</hdRequired>
+ <shared>false</shared>
+ <state>DONE</state>
+ <costCode>0</costCode>
+ <creationDate>2013-01-16T15:06:14+01:00</creationDate>
+ <creationUser>SYSTEM</creationUser>
+ <chefEnabled>false</chefEnabled>
+ <iconUrl>http://rs.bcn.abiquo.com:9000/public/icons/q.png</iconUrl>
+ <loginUser>user</loginUser>
+ <loginPassword>password</loginPassword>
+ <ethernetDriverType>E1000</ethernetDriverType>
+ <diskControllerType>SCSI</diskControllerType>
+ </virtualMachineTemplate>
+</virtualMachineTemplates>
\ No newline at end of file
[5/5] git commit: JCLOUDS-198: Implemented the PagedIterable in Abiquo
Posted by na...@apache.org.
JCLOUDS-198: Implemented the PagedIterable in Abiquo
* Refactored all the domain objects to return Iterables
instead of Lists, to allow a more flexible approach when
using the PagedIterable.
* Added a generic PaginatedCollection that knows how to advance
any paginated collection.
* Changed all methods from the Abiquo APIs that allow pagination
to return the corresponding PagedIterables and PaginatedCollections.
* Added Expect tests for every paginated resource.
* Handle the special case of user pagination, to bypass Abiquo issue
http://jira.abiquo.com/browse/ABICLOUDPREMIUM-5927
Project: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/commit/14fbe2d3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/tree/14fbe2d3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/diff/14fbe2d3
Branch: refs/heads/master
Commit: 14fbe2d3861d454283112da848a5a95ab08aa041
Parents: 0cec066
Author: Ignasi Barrera <na...@apache.org>
Authored: Sun Aug 11 22:41:09 2013 +0200
Committer: Ignasi Barrera <na...@apache.org>
Committed: Fri Aug 23 10:33:14 2013 +0200
----------------------------------------------------------------------
.../functions/VirtualMachineToNodeMetadata.java | 4 +-
.../abiquo/config/AbiquoHttpApiModule.java | 9 +-
.../abiquo/domain/DomainWithTasksWrapper.java | 5 +-
.../jclouds/abiquo/domain/DomainWrapper.java | 18 +-
.../abiquo/domain/PaginatedCollection.java | 160 ++++++
.../abiquo/domain/cloud/VirtualAppliance.java | 15 +-
.../abiquo/domain/cloud/VirtualDatacenter.java | 73 +--
.../abiquo/domain/cloud/VirtualMachine.java | 6 +-
.../domain/cloud/VirtualMachineTemplate.java | 5 +-
.../abiquo/domain/enterprise/Enterprise.java | 54 +-
.../jclouds/abiquo/domain/enterprise/Role.java | 3 +-
.../enterprise/TemplateDefinitionList.java | 9 +-
.../jclouds/abiquo/domain/enterprise/User.java | 7 +-
.../enterprise/options/EnterpriseOptions.java | 56 +--
.../domain/enterprise/options/UserOptions.java | 12 -
.../domain/infrastructure/Datacenter.java | 41 +-
.../abiquo/domain/infrastructure/Machine.java | 15 +-
.../abiquo/domain/infrastructure/Rack.java | 4 +-
.../domain/infrastructure/StorageDevice.java | 10 +-
.../abiquo/domain/infrastructure/Tier.java | 4 +-
.../abiquo/domain/network/ExternalNetwork.java | 23 +-
.../jclouds/abiquo/domain/network/Network.java | 20 +-
.../abiquo/domain/network/PrivateNetwork.java | 32 +-
.../abiquo/domain/network/PublicNetwork.java | 23 +-
.../abiquo/domain/network/UnmanagedNetwork.java | 23 +-
.../abiquo/domain/options/FilterOptions.java | 12 +-
.../jclouds/abiquo/domain/task/AsyncTask.java | 4 +-
.../org/jclouds/abiquo/features/CloudApi.java | 111 +++-
.../jclouds/abiquo/features/EnterpriseApi.java | 34 +-
.../org/jclouds/abiquo/features/EventApi.java | 16 +-
.../abiquo/features/InfrastructureApi.java | 60 ++-
.../features/VirtualMachineTemplateApi.java | 14 +-
.../services/AdministrationService.java | 6 +
.../abiquo/features/services/CloudService.java | 6 +
.../pagination/BasePaginationParser.java | 56 +++
.../functions/pagination/ParseEnterprises.java | 49 ++
.../functions/pagination/ParseEvents.java | 49 ++
.../functions/pagination/ParseExternalIps.java | 49 ++
.../functions/pagination/ParsePrivateIps.java | 49 ++
.../functions/pagination/ParsePublicIps.java | 49 ++
.../functions/pagination/ParseUnmanagedIps.java | 49 ++
.../abiquo/functions/pagination/ParseUsers.java | 157 ++++++
.../ParseVirtualMachineTemplates.java | 51 ++
.../pagination/ParseVirtualMachines.java | 51 ++
.../functions/pagination/ParseVolumes.java | 50 ++
.../internal/BaseAdministrationService.java | 14 +-
.../abiquo/internal/BaseCloudService.java | 15 +-
.../abiquo/internal/BaseEventService.java | 11 +-
.../predicates/VirtualDatacenterPredicates.java | 7 +-
.../enterprise/ListVirtualMachineTemplates.java | 20 +-
.../abiquo/domain/cloud/AccountLiveTest.java | 5 +-
.../cloud/VirtualDatacenterLiveApiTest.java | 10 +-
.../domain/cloud/VirtualMachineLiveApiTest.java | 4 +-
.../domain/cloud/VirtualMachineLiveTest.java | 12 +-
.../VirtualMachineNetworkingLiveApiTest.java | 63 ++-
.../cloud/VirtualMachineStorageLiveApiTest.java | 33 +-
.../abiquo/domain/cloud/VolumeLiveApiTest.java | 16 +-
.../enterprise/EnterpriseLiveApiTest.java | 27 +-
.../TemplateDefinitionListLiveApiTest.java | 4 +-
.../domain/enterprise/UserLiveApiTest.java | 11 -
.../infrastructure/DatacenterLiveApiTest.java | 7 +-
.../infrastructure/MachineLiveApiTest.java | 4 +-
.../RemoteServiceLiveApiTest.java | 5 +-
.../domain/infrastructure/TierLiveApiTest.java | 5 +-
.../network/ExternalNetworkLiveApiTest.java | 26 +-
.../network/GenericNetworkLiveApiTest.java | 26 +-
.../network/PrivateNetworkLiveApiTest.java | 22 +-
.../network/PublicNetworkLiveApiTest.java | 26 +-
.../network/UnmanagedNetworkLiveApiTest.java | 26 +-
.../environment/CloudTestEnvironment.java | 29 +-
.../InfrastructureTestEnvironment.java | 8 +-
.../abiquo/features/CloudApiExpectTest.java | 502 ++++++++++++++++++-
.../jclouds/abiquo/features/CloudApiTest.java | 209 --------
.../features/EnterpriseApiExpectTest.java | 192 +++++--
.../abiquo/features/EnterpriseApiTest.java | 71 ---
.../abiquo/features/EventApiExpectTest.java | 108 ++++
.../jclouds/abiquo/features/EventApiTest.java | 54 --
.../features/InfrastructureApiExpectTest.java | 227 +++++++++
.../abiquo/features/InfrastructureApiTest.java | 109 ----
.../VirtualMachineTemplateApiExpectTest.java | 53 +-
.../features/VirtualMachineTemplateApiTest.java | 44 --
.../cloud/ListAttachedNicsLiveApiTest.java | 10 +-
abiquo/src/test/resources/logback-test.xml | 8 +-
.../resources/payloads/all-vms-lastpage.xml | 31 ++
abiquo/src/test/resources/payloads/all-vms.xml | 4 +
.../payloads/available-templates-lastpage.xml | 43 ++
.../payloads/available-templates-page.xml | 43 ++
.../resources/payloads/enterprises-lastpage.xml | 40 ++
.../resources/payloads/enterprises-page.xml | 40 ++
.../test/resources/payloads/events-lastpage.xml | 40 ++
.../src/test/resources/payloads/events-page.xml | 40 ++
.../resources/payloads/externalips-lastpage.xml | 27 +
.../resources/payloads/externalips-page.xml | 27 +
.../resources/payloads/privateips-lastpage.xml | 17 +
.../test/resources/payloads/privateips-page.xml | 17 +
.../payloads/publicips-available-lastpage.xml | 29 ++
.../payloads/publicips-available-page.xml | 29 ++
.../resources/payloads/publicips-lastpage.xml | 25 +
.../test/resources/payloads/publicips-page.xml | 25 +
.../payloads/publicips-purchased-lastpage.xml | 29 ++
.../payloads/publicips-purchased-page.xml | 29 ++
.../resources/payloads/templates-lastpage.xml | 35 ++
.../test/resources/payloads/templates-page.xml | 26 +-
.../payloads/unmanagedips-lastpage.xml | 29 ++
.../resources/payloads/unmanagedips-page.xml | 29 ++
.../test/resources/payloads/users-lastpage.xml | 24 +
.../src/test/resources/payloads/users-page.xml | 39 ++
.../test/resources/payloads/usr-list-page-2.xml | 23 -
abiquo/src/test/resources/payloads/usr-list.xml | 54 --
.../test/resources/payloads/vms-lastpage.xml | 31 ++
abiquo/src/test/resources/payloads/vms-page.xml | 31 ++
.../resources/payloads/volumes-lastpage.xml | 18 +
.../test/resources/payloads/volumes-page.xml | 18 +
113 files changed, 3267 insertions(+), 1201 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/compute/functions/VirtualMachineToNodeMetadata.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/compute/functions/VirtualMachineToNodeMetadata.java b/abiquo/src/main/java/org/jclouds/abiquo/compute/functions/VirtualMachineToNodeMetadata.java
index 16489c4..dbeaa5c 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/compute/functions/VirtualMachineToNodeMetadata.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/compute/functions/VirtualMachineToNodeMetadata.java
@@ -20,8 +20,6 @@ import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.collect.Iterables.filter;
import static com.google.common.collect.Iterables.transform;
-import java.util.List;
-
import javax.annotation.Resource;
import javax.inject.Inject;
import javax.inject.Singleton;
@@ -114,7 +112,7 @@ public class VirtualMachineToNodeMetadata implements Function<VirtualMachine, No
builder.hardware(hardware);
// Networking configuration
- List<Ip<?, ?>> nics = vm.listAttachedNics();
+ Iterable<Ip<?, ?>> nics = vm.listAttachedNics();
builder.privateAddresses(ips(filter(nics, Predicates.instanceOf(PrivateIp.class))));
builder.publicAddresses(ips(filter(nics, Predicates.not(Predicates.instanceOf(PrivateIp.class)))));
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/config/AbiquoHttpApiModule.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/config/AbiquoHttpApiModule.java b/abiquo/src/main/java/org/jclouds/abiquo/config/AbiquoHttpApiModule.java
index e5ec1b2..0e13406 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/config/AbiquoHttpApiModule.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/config/AbiquoHttpApiModule.java
@@ -19,7 +19,6 @@ package org.jclouds.abiquo.config;
import static org.jclouds.Constants.PROPERTY_SESSION_INTERVAL;
import static org.jclouds.abiquo.domain.DomainWrapper.wrap;
-import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
@@ -98,9 +97,9 @@ public class AbiquoHttpApiModule extends HttpApiModule<AbiquoApi> {
final AtomicReference<AuthorizationException> authException,
@Named(PROPERTY_SESSION_INTERVAL) final long seconds, @Memoized final Supplier<Enterprise> currentEnterprise) {
Supplier<Map<Integer, Datacenter>> availableRegionsMapSupplier = Suppliers.compose(
- new Function<List<Datacenter>, Map<Integer, Datacenter>>() {
+ new Function<Iterable<Datacenter>, Map<Integer, Datacenter>>() {
@Override
- public Map<Integer, Datacenter> apply(final List<Datacenter> datacenters) {
+ public Map<Integer, Datacenter> apply(final Iterable<Datacenter> datacenters) {
// Index available regions by id
return Maps.uniqueIndex(datacenters, new Function<Datacenter, Integer>() {
@Override
@@ -109,9 +108,9 @@ public class AbiquoHttpApiModule extends HttpApiModule<AbiquoApi> {
}
});
}
- }, new Supplier<List<Datacenter>>() {
+ }, new Supplier<Iterable<Datacenter>>() {
@Override
- public List<Datacenter> get() {
+ public Iterable<Datacenter> get() {
// Get the list of regions available for the user's tenant
return currentEnterprise.get().listAllowedDatacenters();
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/DomainWithTasksWrapper.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/DomainWithTasksWrapper.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/DomainWithTasksWrapper.java
index 741a87d..2207c24 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/DomainWithTasksWrapper.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/DomainWithTasksWrapper.java
@@ -26,7 +26,6 @@ import org.jclouds.rest.ApiContext;
import com.abiquo.model.transport.SingleResourceTransportDto;
import com.abiquo.server.core.task.TaskDto;
import com.abiquo.server.core.task.TasksDto;
-import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import com.google.common.collect.Ordering;
import com.google.common.primitives.Longs;
@@ -43,7 +42,7 @@ public abstract class DomainWithTasksWrapper<T extends SingleResourceTransportDt
super(context, target);
}
- public List<AsyncTask<?, ?>> listTasks() {
+ public Iterable<AsyncTask<?, ?>> listTasks() {
TasksDto result = context.getApi().getTaskApi().listTasks(target);
List<AsyncTask<?, ?>> tasks = Lists.newArrayList();
for (TaskDto dto : result.getCollection()) {
@@ -58,6 +57,6 @@ public abstract class DomainWithTasksWrapper<T extends SingleResourceTransportDt
}
}.reverse());
- return ImmutableList.copyOf(tasks);
+ return tasks;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/DomainWrapper.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/DomainWrapper.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/DomainWrapper.java
index 4e3e728..dbff107 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/DomainWrapper.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/DomainWrapper.java
@@ -36,6 +36,7 @@ import org.jclouds.abiquo.domain.util.LinkUtils;
import org.jclouds.abiquo.reference.ValidationErrors;
import org.jclouds.http.HttpResponse;
import org.jclouds.http.functions.ParseXMLWithJAXB;
+import org.jclouds.javax.annotation.Nullable;
import org.jclouds.rest.ApiContext;
import com.abiquo.model.rest.RESTLink;
@@ -45,7 +46,6 @@ import com.abiquo.model.transport.WrapperDto;
import com.abiquo.server.core.task.TaskDto;
import com.abiquo.server.core.task.enums.TaskType;
import com.google.common.base.Function;
-import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import com.google.common.reflect.Invokable;
import com.google.inject.TypeLiteral;
@@ -117,7 +117,7 @@ public abstract class DomainWrapper<T extends SingleResourceTransportDto> {
* Wraps an object in the given wrapper class.
*/
public static <T extends SingleResourceTransportDto, W extends DomainWrapper<T>> W wrap(
- final ApiContext<AbiquoApi> context, final Class<W> wrapperClass, final T target) {
+ final ApiContext<AbiquoApi> context, final Class<W> wrapperClass, @Nullable final T target) {
if (target == null) {
return null;
}
@@ -135,31 +135,31 @@ public abstract class DomainWrapper<T extends SingleResourceTransportDto> {
/**
* Wrap a collection of objects to the given wrapper class.
*/
- public static <T extends SingleResourceTransportDto, W extends DomainWrapper<T>> List<W> wrap(
- final ApiContext<AbiquoApi> context, final Class<W> wrapperClass, final Iterable<T> targets) {
+ public static <T extends SingleResourceTransportDto, W extends DomainWrapper<T>> Iterable<W> wrap(
+ final ApiContext<AbiquoApi> context, final Class<W> wrapperClass, @Nullable final Iterable<T> targets) {
if (targets == null) {
return null;
}
- return ImmutableList.copyOf(transform(targets, new Function<T, W>() {
+ return transform(targets, new Function<T, W>() {
@Override
public W apply(final T input) {
return wrap(context, wrapperClass, input);
}
- }));
+ });
}
/**
* Unwrap a collection of objects.
*/
- public static <T extends SingleResourceTransportDto, W extends DomainWrapper<T>> List<T> unwrap(
+ public static <T extends SingleResourceTransportDto, W extends DomainWrapper<T>> Iterable<T> unwrap(
final Iterable<W> targets) {
- return ImmutableList.copyOf(transform(targets, new Function<W, T>() {
+ return transform(targets, new Function<W, T>() {
@Override
public T apply(final W input) {
return input.unwrap();
}
- }));
+ });
}
/**
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/PaginatedCollection.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/PaginatedCollection.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/PaginatedCollection.java
new file mode 100644
index 0000000..694a17a
--- /dev/null
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/PaginatedCollection.java
@@ -0,0 +1,160 @@
+/*
+ * 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.jclouds.abiquo.domain;
+
+import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Preconditions.checkNotNull;
+import static org.jclouds.collect.PagedIterables.advance;
+import static org.jclouds.collect.PagedIterables.onlyPage;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.jclouds.abiquo.AbiquoApi;
+import org.jclouds.collect.IterableWithMarker;
+import org.jclouds.collect.PagedIterable;
+import org.jclouds.http.functions.ParseXMLWithJAXB;
+
+import com.abiquo.model.rest.RESTLink;
+import com.abiquo.model.transport.WrapperDto;
+import com.google.common.base.Function;
+import com.google.common.base.Optional;
+
+/**
+ * This class represents a collection that is paginated.
+ * <p>
+ * Contains a single page of the collection, and all the information needed to
+ * fetch the next page on demand.
+ *
+ * @author Ignasi Barrera
+ *
+ * @see PagedIterable
+ */
+public class PaginatedCollection<T, W extends WrapperDto<T>> extends IterableWithMarker<T> {
+ protected final AbiquoApi api;
+ protected final W delegate;
+ protected final ParseXMLWithJAXB<W> parser;
+
+ public PaginatedCollection(AbiquoApi api, W delegate, ParseXMLWithJAXB<W> parser) {
+ this.api = checkNotNull(api, "api must not be null");
+ this.delegate = checkNotNull(delegate, "delegate must not be null");
+ this.parser = checkNotNull(parser, "parser must not be null");
+ }
+
+ @Override
+ public Iterator<T> iterator() {
+ return delegate.getCollection().iterator();
+ }
+
+ @Override
+ public Optional<Object> nextMarker() {
+ return Optional.<Object> fromNullable(delegate.searchLink("next"));
+ }
+
+ /**
+ * Transforms this {@link PaginatedCollection} into a {@link PagedIterable}
+ * so next the pages can be easily fetched.
+ *
+ * @return A PagedIterable that is capable of fetching more pages.
+ */
+ public PagedIterable<T> toPagedIterable() {
+ return new ToPagedIterable<T, W>(api, parser).apply(this);
+ }
+
+ /**
+ * Returns a function that transforms the PaginatedCollection into a
+ * {@link PagedIterable}.
+ * <p>
+ * The PagedIterable will fetch the next pages based on the <code>next</code>
+ * link of the current object.
+ * <p>
+ * Subclasses may overwrite this one, to provide a concrete type for the
+ * parser parameter, so this function can be injected in the different api
+ * methods and be used as a transformer for the returned collection.
+ *
+ * @author Ignasi Barrera
+ */
+ public static class ToPagedIterable<T, W extends WrapperDto<T>> implements
+ Function<PaginatedCollection<T, W>, PagedIterable<T>> {
+ protected final AbiquoApi api;
+ protected final ParseXMLWithJAXB<W> parser;
+
+ public ToPagedIterable(AbiquoApi api, ParseXMLWithJAXB<W> parser) {
+ this.api = checkNotNull(api, "api must not be null");
+ this.parser = checkNotNull(parser, "parser must not be null");
+ }
+
+ @Override
+ public PagedIterable<T> apply(final PaginatedCollection<T, W> input) {
+ return input.nextMarker().isPresent() ? advance(input, nextPage(input)) : onlyPage(input);
+ }
+
+ protected Function<Object, IterableWithMarker<T>> nextPage(final PaginatedCollection<T, W> input) {
+ return new Function<Object, IterableWithMarker<T>>() {
+ @Override
+ public IterableWithMarker<T> apply(Object marker) {
+ checkArgument(marker instanceof RESTLink, "Marker must be a RESTLink");
+ RESTLink next = RESTLink.class.cast(marker);
+
+ // The Abiquo API does not provide the media types in the
+ // pagination links, but it will be the same type than the
+ // current page, so just set it.
+ next.setType(input.delegate.getMediaType());
+
+ W nextPage = parser.apply(api.get(next));
+ return new PaginatedCollection<T, W>(api, nextPage, parser);
+ }
+ };
+ }
+
+ }
+
+ // Delegate methods
+
+ public Integer getTotalSize() {
+ return delegate.getTotalSize();
+ }
+
+ public List<RESTLink> getLinks() {
+ return delegate.getLinks();
+ }
+
+ public RESTLink searchLink(String rel) {
+ return delegate.searchLink(rel);
+ }
+
+ public List<RESTLink> searchLinks(String rel) {
+ return delegate.searchLinks(rel);
+ }
+
+ public RESTLink searchLink(String rel, String title) {
+ return delegate.searchLink(rel, title);
+ }
+
+ public RESTLink searchLinkByHref(String href) {
+ return delegate.searchLinkByHref(href);
+ }
+
+ public Integer getIdFromLink(String rel) {
+ return delegate.getIdFromLink(rel);
+ }
+
+ public String getMediaType() {
+ return delegate.getMediaType();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualAppliance.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualAppliance.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualAppliance.java
index e37b456..01df495 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualAppliance.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualAppliance.java
@@ -19,16 +19,17 @@ package org.jclouds.abiquo.domain.cloud;
import static com.google.common.base.Preconditions.checkNotNull;
import java.util.Arrays;
-import java.util.List;
import org.jclouds.abiquo.AbiquoApi;
import org.jclouds.abiquo.domain.DomainWrapper;
+import org.jclouds.abiquo.domain.PaginatedCollection;
import org.jclouds.abiquo.domain.cloud.options.VirtualMachineOptions;
import org.jclouds.abiquo.domain.enterprise.Enterprise;
import org.jclouds.abiquo.domain.task.AsyncTask;
import org.jclouds.abiquo.domain.task.VirtualMachineTask;
import org.jclouds.abiquo.reference.ValidationErrors;
import org.jclouds.abiquo.reference.rest.ParentLinkName;
+import org.jclouds.collect.PagedIterable;
import org.jclouds.rest.ApiContext;
import com.abiquo.model.transport.AcceptedRequestDto;
@@ -144,8 +145,9 @@ public class VirtualAppliance extends DomainWrapper<VirtualApplianceDto> {
* > http://community.abiquo.com/display/ABI18/Virtual+Machine+Resource#
* VirtualMachineResource -RetrievethelistofVirtualMachines.</a>
*/
- public List<VirtualMachine> listVirtualMachines() {
- return listVirtualMachines(VirtualMachineOptions.builder().disablePagination().build());
+ public Iterable<VirtualMachine> listVirtualMachines() {
+ PagedIterable<VirtualMachineWithNodeExtendedDto> vms = context.getApi().getCloudApi().listVirtualMachines(target);
+ return wrap(context, VirtualMachine.class, vms.concat());
}
/**
@@ -157,9 +159,10 @@ public class VirtualAppliance extends DomainWrapper<VirtualApplianceDto> {
* > http://community.abiquo.com/display/ABI18/Virtual+Machine+Resource#
* VirtualMachineResource -RetrievethelistofVirtualMachines.</a>
*/
- public List<VirtualMachine> listVirtualMachines(final VirtualMachineOptions options) {
- VirtualMachinesWithNodeExtendedDto vms = context.getApi().getCloudApi().listVirtualMachines(target, options);
- return wrap(context, VirtualMachine.class, vms.getCollection());
+ public Iterable<VirtualMachine> listVirtualMachines(final VirtualMachineOptions options) {
+ PaginatedCollection<VirtualMachineWithNodeExtendedDto, VirtualMachinesWithNodeExtendedDto> vms = context.getApi()
+ .getCloudApi().listVirtualMachines(target, options);
+ return wrap(context, VirtualMachine.class, vms.toPagedIterable().concat());
}
/**
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualDatacenter.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualDatacenter.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualDatacenter.java
index c8e03f1..5bbe292 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualDatacenter.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualDatacenter.java
@@ -19,12 +19,12 @@ package org.jclouds.abiquo.domain.cloud;
import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.collect.Iterables.find;
-import java.util.List;
-
import org.jclouds.abiquo.AbiquoApi;
import org.jclouds.abiquo.domain.DomainWithLimitsWrapper;
+import org.jclouds.abiquo.domain.PaginatedCollection;
import org.jclouds.abiquo.domain.builder.LimitsBuilder;
import org.jclouds.abiquo.domain.cloud.options.VirtualMachineTemplateOptions;
+import org.jclouds.abiquo.domain.cloud.options.VolumeOptions;
import org.jclouds.abiquo.domain.enterprise.Enterprise;
import org.jclouds.abiquo.domain.infrastructure.Datacenter;
import org.jclouds.abiquo.domain.infrastructure.Tier;
@@ -32,19 +32,20 @@ import org.jclouds.abiquo.domain.network.ExternalNetwork;
import org.jclouds.abiquo.domain.network.Network;
import org.jclouds.abiquo.domain.network.PrivateNetwork;
import org.jclouds.abiquo.domain.network.PublicIp;
-import org.jclouds.abiquo.domain.network.options.IpOptions;
import org.jclouds.abiquo.reference.ValidationErrors;
import org.jclouds.abiquo.reference.rest.ParentLinkName;
+import org.jclouds.collect.PagedIterable;
import org.jclouds.rest.ApiContext;
import com.abiquo.model.enumerator.HypervisorType;
import com.abiquo.model.enumerator.NetworkType;
import com.abiquo.model.enumerator.StatefulInclusion;
+import com.abiquo.server.core.appslibrary.VirtualMachineTemplateDto;
import com.abiquo.server.core.appslibrary.VirtualMachineTemplatesDto;
import com.abiquo.server.core.cloud.VirtualApplianceDto;
import com.abiquo.server.core.cloud.VirtualAppliancesDto;
import com.abiquo.server.core.cloud.VirtualDatacenterDto;
-import com.abiquo.server.core.infrastructure.network.PublicIpsDto;
+import com.abiquo.server.core.infrastructure.network.PublicIpDto;
import com.abiquo.server.core.infrastructure.network.VLANNetworkDto;
import com.abiquo.server.core.infrastructure.network.VLANNetworksDto;
import com.abiquo.server.core.infrastructure.storage.DiskManagementDto;
@@ -54,6 +55,7 @@ import com.abiquo.server.core.infrastructure.storage.TiersDto;
import com.abiquo.server.core.infrastructure.storage.VolumeManagementDto;
import com.abiquo.server.core.infrastructure.storage.VolumesManagementDto;
import com.google.common.base.Predicate;
+import com.google.common.collect.FluentIterable;
/**
* Represents a virtual datacenter.
@@ -172,7 +174,7 @@ public class VirtualDatacenter extends DomainWithLimitsWrapper<VirtualDatacenter
* >http://community.abiquo.com/display/ABI20/Virtual+Appliance+Resource
* # VirtualApplianceResource-RetrievethelistofVirtualAppliances</a>
*/
- public List<VirtualAppliance> listVirtualAppliances() {
+ public Iterable<VirtualAppliance> listVirtualAppliances() {
VirtualAppliancesDto vapps = context.getApi().getCloudApi().listVirtualAppliances(target);
return wrap(context, VirtualAppliance.class, vapps.getCollection());
}
@@ -200,7 +202,7 @@ public class VirtualDatacenter extends DomainWithLimitsWrapper<VirtualDatacenter
* > http://community.abiquo.com/display/ABI20/Virtual+Datacenter+
* Resource# VirtualDatacenterResource-Retrieveenabledtiers</a>
*/
- public List<Tier> listStorageTiers() {
+ public Iterable<Tier> listStorageTiers() {
TiersDto tiers = context.getApi().getCloudApi().listStorageTiers(target);
return wrap(context, Tier.class, tiers.getCollection());
}
@@ -227,9 +229,15 @@ public class VirtualDatacenter extends DomainWithLimitsWrapper<VirtualDatacenter
* > http://community.abiquo.com/display/ABI20/Volume+Resource#
* VolumeResource- Retrievethelistofvolumes</a>
*/
- public List<Volume> listVolumes() {
- VolumesManagementDto volumes = context.getApi().getCloudApi().listVolumes(target);
- return wrap(context, Volume.class, volumes.getCollection());
+ public Iterable<Volume> listVolumes() {
+ PagedIterable<VolumeManagementDto> volumes = context.getApi().getCloudApi().listVolumes(target);
+ return wrap(context, Volume.class, volumes.concat());
+ }
+
+ public Iterable<Volume> listVolumes(VolumeOptions options) {
+ PaginatedCollection<VolumeManagementDto, VolumesManagementDto> volumes = context.getApi().getCloudApi()
+ .listVolumes(target, options);
+ return wrap(context, Volume.class, volumes.toPagedIterable().concat());
}
public Volume getVolume(final Integer id) {
@@ -243,7 +251,7 @@ public class VirtualDatacenter extends DomainWithLimitsWrapper<VirtualDatacenter
* > http://community.abiquo.com/display/ABI20/Hard+Disks+Resource#
* HardDisksResource- GetthelistofHardDisksofaVirtualDatacenter</a>
*/
- public List<HardDisk> listHardDisks() {
+ public Iterable<HardDisk> listHardDisks() {
DisksManagementDto hardDisks = context.getApi().getCloudApi().listHardDisks(target);
return wrap(context, HardDisk.class, hardDisks.getCollection());
}
@@ -273,7 +281,7 @@ public class VirtualDatacenter extends DomainWithLimitsWrapper<VirtualDatacenter
* > http://community.abiquo.com/display/ABI20/Private+Network+Resource#
* PrivateNetworkResource -RetrievealistofPrivateNetworks</a>
*/
- public List<PrivateNetwork> listPrivateNetworks() {
+ public Iterable<PrivateNetwork> listPrivateNetworks() {
VLANNetworksDto networks = context.getApi().getCloudApi().listPrivateNetworks(target);
return wrap(context, PrivateNetwork.class, networks.getCollection());
}
@@ -283,35 +291,36 @@ public class VirtualDatacenter extends DomainWithLimitsWrapper<VirtualDatacenter
return wrap(context, PrivateNetwork.class, network);
}
- public List<VirtualMachineTemplate> listAvailableTemplates() {
- VirtualMachineTemplatesDto templates = context.getApi().getCloudApi().listAvailableTemplates(target);
-
- return wrap(context, VirtualMachineTemplate.class, templates.getCollection());
+ public Iterable<VirtualMachineTemplate> listAvailableTemplates() {
+ PagedIterable<VirtualMachineTemplateDto> templates = context.getApi().getCloudApi()
+ .listAvailableTemplates(target);
+ return wrap(context, VirtualMachineTemplate.class, templates.concat());
}
- public List<VirtualMachineTemplate> listAvailableTemplates(final VirtualMachineTemplateOptions options) {
- VirtualMachineTemplatesDto templates = context.getApi().getCloudApi().listAvailableTemplates(target, options);
-
- return wrap(context, VirtualMachineTemplate.class, templates.getCollection());
+ public Iterable<VirtualMachineTemplate> listAvailableTemplates(final VirtualMachineTemplateOptions options) {
+ PaginatedCollection<VirtualMachineTemplateDto, VirtualMachineTemplatesDto> templates = context.getApi()
+ .getCloudApi().listAvailableTemplates(target, options);
+ return wrap(context, VirtualMachineTemplate.class, templates.toPagedIterable().concat());
}
public VirtualMachineTemplate getAvailableTemplate(final Integer id) {
- VirtualMachineTemplatesDto templates = context.getApi().getCloudApi()
+ PaginatedCollection<VirtualMachineTemplateDto, VirtualMachineTemplatesDto> templates = context.getApi()
+ .getCloudApi()
.listAvailableTemplates(target, VirtualMachineTemplateOptions.builder().idTemplate(id).build());
- return templates.getCollection().isEmpty() ? null : //
- wrap(context, VirtualMachineTemplate.class, templates.getCollection().get(0));
+ FluentIterable<VirtualMachineTemplateDto> all = templates.toPagedIterable().concat();
+ return wrap(context, VirtualMachineTemplate.class, all.first().orNull());
}
public VirtualMachineTemplate getAvailablePersistentTemplate(final Integer id) {
- VirtualMachineTemplatesDto templates = context
+ PaginatedCollection<VirtualMachineTemplateDto, VirtualMachineTemplatesDto> templates = context
.getApi()
.getCloudApi()
.listAvailableTemplates(target,
VirtualMachineTemplateOptions.builder().idTemplate(id).persistent(StatefulInclusion.ALL).build());
- return templates.getCollection().isEmpty() ? null : //
- wrap(context, VirtualMachineTemplate.class, templates.getCollection().get(0));
+ FluentIterable<VirtualMachineTemplateDto> all = templates.toPagedIterable().concat();
+ return wrap(context, VirtualMachineTemplate.class, all.first().orNull());
}
/**
@@ -322,10 +331,9 @@ public class VirtualDatacenter extends DomainWithLimitsWrapper<VirtualDatacenter
* VirtualDatacenterResource-ListofPublicIPstopurchasebyVirtualDatacenter
* </a>
*/
- public List<PublicIp> listAvailablePublicIps() {
- IpOptions options = IpOptions.builder().build();
- PublicIpsDto ips = context.getApi().getCloudApi().listAvailablePublicIps(target, options);
- return wrap(context, PublicIp.class, ips.getCollection());
+ public Iterable<PublicIp> listAvailablePublicIps() {
+ PagedIterable<PublicIpDto> ips = context.getApi().getCloudApi().listAvailablePublicIps(target);
+ return wrap(context, PublicIp.class, ips.concat());
}
/**
@@ -336,10 +344,9 @@ public class VirtualDatacenter extends DomainWithLimitsWrapper<VirtualDatacenter
* VirtualDatacenterResource-ListofpurchasedPublicIPsbyVirtualDatacenter
* </a>
*/
- public List<PublicIp> listPurchasedPublicIps() {
- IpOptions options = IpOptions.builder().build();
- PublicIpsDto ips = context.getApi().getCloudApi().listPurchasedPublicIps(target, options);
- return wrap(context, PublicIp.class, ips.getCollection());
+ public Iterable<PublicIp> listPurchasedPublicIps() {
+ PagedIterable<PublicIpDto> ips = context.getApi().getCloudApi().listPurchasedPublicIps(target);
+ return wrap(context, PublicIp.class, ips.concat());
}
public void purchasePublicIp(final PublicIp ip) {
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualMachine.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualMachine.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualMachine.java
index a0df109..d7caaa4 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualMachine.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualMachine.java
@@ -300,19 +300,19 @@ public class VirtualMachine extends DomainWithTasksWrapper<VirtualMachineWithNod
// Children access
- public List<HardDisk> listAttachedHardDisks() {
+ public Iterable<HardDisk> listAttachedHardDisks() {
refresh();
DisksManagementDto hardDisks = context.getApi().getCloudApi().listAttachedHardDisks(target);
return wrap(context, HardDisk.class, hardDisks.getCollection());
}
- public List<Volume> listAttachedVolumes() {
+ public Iterable<Volume> listAttachedVolumes() {
refresh();
VolumesManagementDto volumes = context.getApi().getCloudApi().listAttachedVolumes(target);
return wrap(context, Volume.class, volumes.getCollection());
}
- public List<Ip<?, ?>> listAttachedNics() {
+ public Iterable<Ip<?, ?>> listAttachedNics() {
// The strategy will refresh the vm. There is no need to do it here
ListAttachedNics strategy = context.utils().injector().getInstance(ListAttachedNics.class);
return ImmutableList.copyOf(strategy.execute(this));
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualMachineTemplate.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualMachineTemplate.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualMachineTemplate.java
index b3822d4..6cefa16 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualMachineTemplate.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualMachineTemplate.java
@@ -19,7 +19,6 @@ package org.jclouds.abiquo.domain.cloud;
import static com.google.common.base.Preconditions.checkNotNull;
import java.util.Date;
-import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -204,7 +203,7 @@ public class VirtualMachineTemplate extends DomainWrapper<VirtualMachineTemplate
* ConversionResource- ListConversions</a>
* @return all the conversions of the virtual machine template
*/
- public List<Conversion> listConversions() {
+ public Iterable<Conversion> listConversions() {
ConversionsDto convs = context.getApi().getVirtualMachineTemplateApi().listConversions(target);
return wrap(context, Conversion.class, convs.getCollection());
}
@@ -224,7 +223,7 @@ public class VirtualMachineTemplate extends DomainWrapper<VirtualMachineTemplate
* @return all the conversions of the virtual machine template applying the
* constrains
*/
- public List<Conversion> listConversions(final HypervisorType hypervisor, final ConversionState state) {
+ public Iterable<Conversion> listConversions(final HypervisorType hypervisor, final ConversionState state) {
ConversionsDto convs = context
.getApi()
.getVirtualMachineTemplateApi()
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/Enterprise.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/Enterprise.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/Enterprise.java
index c3e1c12..b198858 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/Enterprise.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/Enterprise.java
@@ -16,10 +16,9 @@
*/
package org.jclouds.abiquo.domain.enterprise;
-import java.util.List;
-
import org.jclouds.abiquo.AbiquoApi;
import org.jclouds.abiquo.domain.DomainWithLimitsWrapper;
+import org.jclouds.abiquo.domain.PaginatedCollection;
import org.jclouds.abiquo.domain.builder.LimitsBuilder;
import org.jclouds.abiquo.domain.cloud.VirtualAppliance;
import org.jclouds.abiquo.domain.cloud.VirtualDatacenter;
@@ -32,6 +31,7 @@ import org.jclouds.abiquo.domain.infrastructure.Machine;
import org.jclouds.abiquo.domain.network.ExternalNetwork;
import org.jclouds.abiquo.domain.network.UnmanagedNetwork;
import org.jclouds.abiquo.strategy.enterprise.ListVirtualMachineTemplates;
+import org.jclouds.collect.PagedIterable;
import org.jclouds.http.HttpResponse;
import org.jclouds.http.functions.ParseXMLWithJAXB;
import org.jclouds.rest.ApiContext;
@@ -40,7 +40,6 @@ import com.abiquo.model.rest.RESTLink;
import com.abiquo.server.core.appslibrary.TemplateDefinitionListDto;
import com.abiquo.server.core.appslibrary.TemplateDefinitionListsDto;
import com.abiquo.server.core.appslibrary.VirtualMachineTemplateDto;
-import com.abiquo.server.core.appslibrary.VirtualMachineTemplatesDto;
import com.abiquo.server.core.cloud.VirtualAppliancesDto;
import com.abiquo.server.core.cloud.VirtualDatacentersDto;
import com.abiquo.server.core.cloud.VirtualMachinesWithNodeExtendedDto;
@@ -55,7 +54,6 @@ import com.abiquo.server.core.infrastructure.DatacentersDto;
import com.abiquo.server.core.infrastructure.MachinesDto;
import com.abiquo.server.core.infrastructure.network.VLANNetworksDto;
import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.inject.TypeLiteral;
@@ -132,7 +130,7 @@ public class Enterprise extends DomainWithLimitsWrapper<EnterpriseDto> {
* RetrievealistofvitualdatacentersbyanEnterprise</a>
* @return List of virtual datacenters in this enterprise.
*/
- public List<VirtualDatacenter> listVirtualDatacenters() {
+ public Iterable<VirtualDatacenter> listVirtualDatacenters() {
VirtualDatacentersDto dto = context.getApi().getEnterpriseApi().listVirtualDatacenters(target);
return wrap(context, VirtualDatacenter.class, dto.getCollection());
}
@@ -147,7 +145,7 @@ public class Enterprise extends DomainWithLimitsWrapper<EnterpriseDto> {
* TemplateDefinitionListResource-Retrievealltemplatedefinitionlists</a>
* @return List of template definition lists of the enterprise.
*/
- public List<TemplateDefinitionList> listTemplateDefinitionLists() {
+ public Iterable<TemplateDefinitionList> listTemplateDefinitionLists() {
TemplateDefinitionListsDto dto = context.getApi().getEnterpriseApi().listTemplateDefinitionLists(target);
return wrap(context, TemplateDefinitionList.class, dto.getCollection());
}
@@ -180,7 +178,7 @@ public class Enterprise extends DomainWithLimitsWrapper<EnterpriseDto> {
* DatacenterLimitsResource-Retrievelimitsbyenterprise</a>
* @return List of datacenter limits by enterprise.
*/
- public List<Limits> listLimits() {
+ public Iterable<Limits> listLimits() {
DatacentersLimitsDto dto = context.getApi().getEnterpriseApi().listLimits(this.unwrap());
return wrap(context, Limits.class, dto.getCollection());
}
@@ -210,10 +208,9 @@ public class Enterprise extends DomainWithLimitsWrapper<EnterpriseDto> {
* Retrievealistofusers</a>
* @return List of users of this enterprise.
*/
- public List<User> listUsers() {
- // Delegate the retrieval of users to the options-enabled version of the
- // method, with pagination disabled
- return listUsers(UserOptions.builder().disablePagination().build());
+ public Iterable<User> listUsers() {
+ PagedIterable<UserDto> dto = context.getApi().getEnterpriseApi().listUsers(target);
+ return wrap(context, User.class, dto.concat());
}
/**
@@ -226,13 +223,12 @@ public class Enterprise extends DomainWithLimitsWrapper<EnterpriseDto> {
* >
* http://community.abiquo.com/display/ABI20/UserResource#UserResource-
* Retrievealistofusers</a>
- * @return List of users of this enterprise, according to the specified
- * pagination options
+ * @return List of users of this enterprise, according to the specified
+ * pagination options
*/
- public List<User> listUsers(final UserOptions options) {
- UsersDto dto = context.getApi().getEnterpriseApi().listUsers(
- this.unwrap(), options);
- return wrap(context, User.class, dto.getCollection());
+ public Iterable<User> listUsers(final UserOptions options) {
+ PaginatedCollection<UserDto, UsersDto> dto = context.getApi().getEnterpriseApi().listUsers(target, options);
+ return wrap(context, User.class, dto.toPagedIterable().concat());
}
/**
@@ -257,15 +253,15 @@ public class Enterprise extends DomainWithLimitsWrapper<EnterpriseDto> {
*
* @return List of roles by this enterprise.
*/
- public List<Role> listRoles() {
+ public Iterable<Role> listRoles() {
RolesDto dto = context.getApi().getAdminApi().listRoles(target);
return wrap(context, Role.class, dto.getCollection());
}
- public List<VirtualMachineTemplate> listTemplatesInRepository(final Datacenter datacenter) {
- VirtualMachineTemplatesDto dto = context.getApi().getVirtualMachineTemplateApi()
+ public Iterable<VirtualMachineTemplate> listTemplatesInRepository(final Datacenter datacenter) {
+ PagedIterable<VirtualMachineTemplateDto> templates = context.getApi().getVirtualMachineTemplateApi()
.listVirtualMachineTemplates(target.getId(), datacenter.getId());
- return wrap(context, VirtualMachineTemplate.class, dto.getCollection());
+ return wrap(context, VirtualMachineTemplate.class, templates.concat());
}
public VirtualMachineTemplate getTemplateInRepository(final Datacenter datacenter, final Integer id) {
@@ -274,12 +270,12 @@ public class Enterprise extends DomainWithLimitsWrapper<EnterpriseDto> {
return wrap(context, VirtualMachineTemplate.class, template);
}
- public List<VirtualMachineTemplate> listTemplates() {
+ public Iterable<VirtualMachineTemplate> listTemplates() {
ListVirtualMachineTemplates strategy = context.utils().injector().getInstance(ListVirtualMachineTemplates.class);
- return ImmutableList.copyOf(strategy.execute(this));
+ return strategy.execute(this);
}
- public List<Datacenter> listAllowedDatacenters() {
+ public Iterable<Datacenter> listAllowedDatacenters() {
DatacentersDto datacenters = context.getApi().getEnterpriseApi().listAllowedDatacenters(target.getId());
return wrap(context, Datacenter.class, datacenters.getCollection());
}
@@ -290,7 +286,7 @@ public class Enterprise extends DomainWithLimitsWrapper<EnterpriseDto> {
* > http://community.abiquo.com/display/ABI20/Enterprise+Resource#
* EnterpriseResource- Getthelistofexternalnetworks</a>
*/
- public List<ExternalNetwork> listExternalNetworks(final Datacenter datacenter) {
+ public Iterable<ExternalNetwork> listExternalNetworks(final Datacenter datacenter) {
DatacenterLimitsDto limitForDatacenter = getLimits(datacenter);
HttpResponse response = context.getApi().get(limitForDatacenter.searchLink("externalnetworks"));
@@ -301,7 +297,7 @@ public class Enterprise extends DomainWithLimitsWrapper<EnterpriseDto> {
return wrap(context, ExternalNetwork.class, parser.apply(response).getCollection());
}
- public List<UnmanagedNetwork> listUnmanagedNetworks(final Datacenter datacenter) {
+ public Iterable<UnmanagedNetwork> listUnmanagedNetworks(final Datacenter datacenter) {
DatacenterLimitsDto limitForDatacenter = getLimits(datacenter);
// The "rel" for the unmanaged networks is the same than the one used for
@@ -324,7 +320,7 @@ public class Enterprise extends DomainWithLimitsWrapper<EnterpriseDto> {
* RetrievethelistofvirtualappliancesbyanEnterprise</a>
* @return List of virtual appliances by this enterprise.
*/
- public List<VirtualAppliance> listVirtualAppliances() {
+ public Iterable<VirtualAppliance> listVirtualAppliances() {
VirtualAppliancesDto virtualAppliances = context.getApi().getEnterpriseApi().listVirtualAppliances(target);
return wrap(context, VirtualAppliance.class, virtualAppliances.getCollection());
}
@@ -338,12 +334,12 @@ public class Enterprise extends DomainWithLimitsWrapper<EnterpriseDto> {
* EnterpriseResource- RetrievealistofvirtualmachinesbyanEnterprise</a>
* @return List of virtual machines by this enterprise.
*/
- public List<VirtualMachine> listVirtualMachines() {
+ public Iterable<VirtualMachine> listVirtualMachines() {
VirtualMachinesWithNodeExtendedDto machines = context.getApi().getEnterpriseApi().listVirtualMachines(target);
return wrap(context, VirtualMachine.class, machines.getCollection());
}
- public List<Machine> listReservedMachines() {
+ public Iterable<Machine> listReservedMachines() {
MachinesDto machines = context.getApi().getEnterpriseApi().listReservedMachines(target);
return wrap(context, Machine.class, machines.getCollection());
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/Role.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/Role.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/Role.java
index ba9b279..b1271a4 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/Role.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/Role.java
@@ -126,9 +126,8 @@ public class Role extends DomainWrapper<RoleDto> {
* > http://community.abiquo.com/display/ABI20/Roles+Resource#
* RolesResource- RetrievealistofprivilegesfromaRole</a>
*/
- public List<Privilege> listPrivileges() {
+ public Iterable<Privilege> listPrivileges() {
PrivilegesDto dto = context.getApi().getAdminApi().listPrivileges(target);
-
return wrap(context, Privilege.class, dto.getCollection());
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/TemplateDefinitionList.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/TemplateDefinitionList.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/TemplateDefinitionList.java
index 48b9089..1afaf8e 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/TemplateDefinitionList.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/TemplateDefinitionList.java
@@ -18,8 +18,6 @@ package org.jclouds.abiquo.domain.enterprise;
import static com.google.common.collect.Iterables.filter;
-import java.util.List;
-
import org.jclouds.abiquo.AbiquoApi;
import org.jclouds.abiquo.domain.DomainWrapper;
import org.jclouds.abiquo.domain.infrastructure.Datacenter;
@@ -28,7 +26,6 @@ import org.jclouds.rest.ApiContext;
import com.abiquo.am.model.TemplatesStateDto;
import com.abiquo.server.core.appslibrary.TemplateDefinitionListDto;
import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableList;
/**
* Adds high level functionality to {@link TemplateDefinitionListDto}. A
@@ -111,7 +108,7 @@ public class TemplateDefinitionList extends DomainWrapper<TemplateDefinitionList
* TemplateDefinitionListResource# TemplateDefinitionListResource-
* Retrievealistofthestatusofalltemplatestatuslist</a>
*/
- public List<TemplateState> listStatus(final Datacenter datacenter) {
+ public Iterable<TemplateState> listStatus(final Datacenter datacenter) {
TemplatesStateDto states = context.getApi().getEnterpriseApi()
.listTemplateListStatus(target, datacenter.unwrap());
return wrap(context, TemplateState.class, states.getCollection());
@@ -134,8 +131,8 @@ public class TemplateDefinitionList extends DomainWrapper<TemplateDefinitionList
* TemplateDefinitionListResource# TemplateDefinitionListResource-
* Retrievealistofthestatusofalltemplatestatuslist</a>
*/
- public List<TemplateState> listStatus(final Predicate<TemplateState> filter, final Datacenter datacenter) {
- return ImmutableList.copyOf(filter(listStatus(datacenter), filter));
+ public Iterable<TemplateState> listStatus(final Predicate<TemplateState> filter, final Datacenter datacenter) {
+ return filter(listStatus(datacenter), filter);
}
// Builder
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/User.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/User.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/User.java
index 4519f5c..dc9d0f6 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/User.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/User.java
@@ -35,7 +35,6 @@ import com.abiquo.server.core.cloud.VirtualMachinesWithNodeExtendedDto;
import com.abiquo.server.core.enterprise.RoleDto;
import com.abiquo.server.core.enterprise.UserDto;
import com.google.common.base.Joiner;
-import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
/**
@@ -112,7 +111,7 @@ public class User extends DomainWrapper<UserDto> {
target = context.getApi().getEnterpriseApi().updateUser(target);
}
- public List<VirtualDatacenter> listPermittedVirtualDatacenters() {
+ public Iterable<VirtualDatacenter> listPermittedVirtualDatacenters() {
List<Integer> ids = extractAvailableDatacenters();
// null value means all virtual datacenters all allowed
@@ -122,7 +121,7 @@ public class User extends DomainWrapper<UserDto> {
ListVirtualDatacenters listVirtualDatacenters = context.utils().injector()
.getInstance(ListVirtualDatacenters.class);
- return ImmutableList.copyOf(listVirtualDatacenters.execute(ids));
+ return listVirtualDatacenters.execute(ids);
}
/**
@@ -175,7 +174,7 @@ public class User extends DomainWrapper<UserDto> {
* > http://community.abiquo.com/display/ABI20/User+resource#
* Userresource- Retrievethelistofvirtualmachinesbyuser</a>
*/
- public List<VirtualMachine> listMachines() {
+ public Iterable<VirtualMachine> listMachines() {
VirtualMachinesWithNodeExtendedDto machines = context.getApi().getEnterpriseApi().listVirtualMachines(target);
return wrap(context, VirtualMachine.class, machines.getCollection());
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/options/EnterpriseOptions.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/options/EnterpriseOptions.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/options/EnterpriseOptions.java
index 4145ba1..b1880ee 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/options/EnterpriseOptions.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/options/EnterpriseOptions.java
@@ -18,11 +18,13 @@ package org.jclouds.abiquo.domain.enterprise.options;
import org.jclouds.abiquo.domain.options.FilterOptions.BaseFilterOptionsBuilder;
import org.jclouds.http.options.BaseHttpRequestOptions;
+import org.jclouds.rest.annotations.SinceApiVersion;
/**
* Available options to query enterprises.
*
* @author Francesc Montserrat
+ * @author Ignasi Barrera
*/
public class EnterpriseOptions extends BaseHttpRequestOptions {
public static Builder builder() {
@@ -39,43 +41,23 @@ public class EnterpriseOptions extends BaseHttpRequestOptions {
public static class Builder extends BaseFilterOptionsBuilder<Builder> {
private String idPricingTemplate;
- private Boolean included;
-
- private String filter;
-
- private Integer page;
-
- private Integer results;
+ private String idScope;
- private Boolean network;
+ private Boolean included;
public Builder pricingTemplate(final String idPricingTemplate) {
this.idPricingTemplate = idPricingTemplate;
return this;
}
- public Builder included(final boolean included) {
- this.included = included;
- return this;
- }
-
- public Builder filter(final String filter) {
- this.filter = filter;
- return this;
- }
-
- public Builder network(final boolean network) {
- this.network = network;
- return this;
- }
-
- public Builder page(final int page) {
- this.page = page;
+ @SinceApiVersion("2.3")
+ public Builder scope(final String scope) {
+ this.idScope = scope;
return this;
}
- public Builder results(final int results) {
- this.results = results;
+ public Builder included(final boolean included) {
+ this.included = included;
return this;
}
@@ -86,24 +68,12 @@ public class EnterpriseOptions extends BaseHttpRequestOptions {
options.queryParameters.put("idPricingTemplate", String.valueOf(idPricingTemplate));
}
- if (included != null) {
- options.queryParameters.put("included", String.valueOf(included));
- }
-
- if (filter != null) {
- options.queryParameters.put("filter", String.valueOf(filter));
- }
-
- if (page != null) {
- options.queryParameters.put("page", String.valueOf(page));
+ if (idScope != null) {
+ options.queryParameters.put("idScope", String.valueOf(idScope));
}
- if (results != null) {
- options.queryParameters.put("numResults", String.valueOf(results));
- }
-
- if (network != null) {
- options.queryParameters.put("network", String.valueOf(network));
+ if (included != null) {
+ options.queryParameters.put("included", String.valueOf(included));
}
return addFilterOptions(options);
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/options/UserOptions.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/options/UserOptions.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/options/UserOptions.java
index 3848bca..5512bef 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/options/UserOptions.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/options/UserOptions.java
@@ -54,17 +54,5 @@ public class UserOptions extends BaseHttpRequestOptions implements Cloneable {
public UserOptions build() {
return addFilterOptions(this.options);
}
-
- // FIXME: This method is overriden to change its behavior until the
- // issue ABICLOUDPREMIUM-5927 in Abiquo isissue is solved (
- // (http://jira.abiquo.com/browse/ABICLOUDPREMIUM-5927)
- // Once its fixed, this method should be deleted
- @Override
- public Builder disablePagination() {
- // Unlike in its parent method, disabling pagination means to set
- // the limit attribute to the biggest value possible
- this.limit = Integer.MAX_VALUE;
- return (Builder) this;
- }
}
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Datacenter.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Datacenter.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Datacenter.java
index 25f8664..4e28d13 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Datacenter.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Datacenter.java
@@ -19,8 +19,6 @@ package org.jclouds.abiquo.domain.infrastructure;
import static com.google.common.collect.Iterables.find;
import static com.google.common.collect.Iterables.transform;
-import java.util.List;
-
import org.jclouds.abiquo.AbiquoApi;
import org.jclouds.abiquo.domain.DomainWrapper;
import org.jclouds.abiquo.domain.cloud.VirtualMachineTemplate;
@@ -34,6 +32,7 @@ import org.jclouds.abiquo.domain.network.NetworkServiceType;
import org.jclouds.abiquo.domain.network.PrivateNetwork;
import org.jclouds.abiquo.domain.network.options.NetworkOptions;
import org.jclouds.abiquo.predicates.NetworkServiceTypePredicates;
+import org.jclouds.collect.PagedIterable;
import org.jclouds.rest.ApiContext;
import com.abiquo.model.enumerator.HypervisorType;
@@ -43,7 +42,6 @@ import com.abiquo.model.enumerator.NetworkType;
import com.abiquo.model.enumerator.RemoteServiceType;
import com.abiquo.model.enumerator.VlanTagAvailabilityType;
import com.abiquo.server.core.appslibrary.VirtualMachineTemplateDto;
-import com.abiquo.server.core.appslibrary.VirtualMachineTemplatesDto;
import com.abiquo.server.core.cloud.HypervisorTypeDto;
import com.abiquo.server.core.cloud.HypervisorTypesDto;
import com.abiquo.server.core.enterprise.DatacentersLimitsDto;
@@ -65,7 +63,6 @@ import com.abiquo.server.core.infrastructure.storage.StorageDevicesDto;
import com.abiquo.server.core.infrastructure.storage.StorageDevicesMetadataDto;
import com.abiquo.server.core.infrastructure.storage.TiersDto;
import com.google.common.base.Function;
-import com.google.common.collect.ImmutableList;
/**
* Adds high level functionality to {@link DatacenterDto}.
@@ -172,7 +169,7 @@ public class Datacenter extends DomainWrapper<DatacenterDto> {
* - RetrievealistofRacks</a>
* @return List of unmanaged racks in this datacenter.
*/
- public List<Rack> listRacks() {
+ public Iterable<Rack> listRacks() {
RacksDto racks = context.getApi().getInfrastructureApi().listRacks(target);
return wrap(context, Rack.class, racks.getCollection());
}
@@ -205,7 +202,7 @@ public class Datacenter extends DomainWrapper<DatacenterDto> {
* information for the storage devices, such as the management and
* iscsi ports, or the default credentials to access the device.
*/
- public List<StorageDeviceMetadata> listSupportedStorageDevices() {
+ public Iterable<StorageDeviceMetadata> listSupportedStorageDevices() {
StorageDevicesMetadataDto devices = context.getApi().getInfrastructureApi().listSupportedStorageDevices(target);
return wrap(context, StorageDeviceMetadata.class, devices.getCollection());
}
@@ -219,7 +216,7 @@ public class Datacenter extends DomainWrapper<DatacenterDto> {
* StorageDeviceResource- Retrievethelistofstoragedevices</a>
* @return List of storage devices in this datacenter.
*/
- public List<StorageDevice> listStorageDevices() {
+ public Iterable<StorageDevice> listStorageDevices() {
StorageDevicesDto devices = context.getApi().getInfrastructureApi().listStorageDevices(target);
return wrap(context, StorageDevice.class, devices.getCollection());
}
@@ -248,7 +245,7 @@ public class Datacenter extends DomainWrapper<DatacenterDto> {
*
* @return List of network services in this datacenter.
*/
- public List<NetworkServiceType> listNetworkServiceTypes() {
+ public Iterable<NetworkServiceType> listNetworkServiceTypes() {
NetworkServiceTypesDto dtos = context.getApi().getInfrastructureApi().listNetworkServiceTypes(target);
return wrap(context, NetworkServiceType.class, dtos.getCollection());
}
@@ -286,7 +283,7 @@ public class Datacenter extends DomainWrapper<DatacenterDto> {
* RemoteServiceResource- RetrievealistofRemoteServices</a>
* @return List of remote services in this datacenter.
*/
- public List<RemoteService> listRemoteServices() {
+ public Iterable<RemoteService> listRemoteServices() {
RemoteServicesDto remoteServices = context.getApi().getInfrastructureApi().listRemoteServices(target);
return wrap(context, RemoteService.class, remoteServices.getCollection());
}
@@ -316,7 +313,7 @@ public class Datacenter extends DomainWrapper<DatacenterDto> {
* DatacenterResource- Retrievelimitsbydatacenter</a>
* @return List of datacenter limits by all enterprises.
*/
- public List<Limits> listLimits() {
+ public Iterable<Limits> listLimits() {
DatacentersLimitsDto dto = context.getApi().getInfrastructureApi().listLimits(this.unwrap());
return DomainWrapper.wrap(context, Limits.class, dto.getCollection());
}
@@ -331,7 +328,7 @@ public class Datacenter extends DomainWrapper<DatacenterDto> {
* Retrievethelistoftiers </a>
* @return List of tiers in this datacenter.
*/
- public List<Tier> listTiers() {
+ public Iterable<Tier> listTiers() {
TiersDto dto = context.getApi().getInfrastructureApi().listTiers(this.unwrap());
return DomainWrapper.wrap(context, Tier.class, dto.getCollection());
}
@@ -347,7 +344,7 @@ public class Datacenter extends DomainWrapper<DatacenterDto> {
* @return List of public, external and unmanaged networks in this
* datacenter.
*/
- public List<Network<?>> listNetworks() {
+ public Iterable<Network<?>> listNetworks() {
VLANNetworksDto networks = context.getApi().getInfrastructureApi().listNetworks(target);
return Network.wrapNetworks(context, networks.getCollection());
}
@@ -363,7 +360,7 @@ public class Datacenter extends DomainWrapper<DatacenterDto> {
* PublicNetworkResource- Getthelistofpublicnetworks</a>
* @return List of networks of this datacenter matching the given type.
*/
- public List<Network<?>> listNetworks(final NetworkType type) {
+ public Iterable<Network<?>> listNetworks(final NetworkType type) {
NetworkOptions options = NetworkOptions.builder().type(type).build();
VLANNetworksDto networks = context.getApi().getInfrastructureApi().listNetworks(target, options);
return Network.wrapNetworks(context, networks.getCollection());
@@ -424,18 +421,18 @@ public class Datacenter extends DomainWrapper<DatacenterDto> {
* DatacenterResource- Retrieveavailablehypervisortypes</a>
* @return List of available hypervisor types in the datacenter.
*/
- public List<HypervisorType> listAvailableHypervisors() {
+ public Iterable<HypervisorType> listAvailableHypervisors() {
HypervisorTypesDto types = context.getApi().getInfrastructureApi().getHypervisorTypes(target);
return getHypervisorTypes(types);
}
- private List<HypervisorType> getHypervisorTypes(final HypervisorTypesDto dtos) {
- return ImmutableList.copyOf(transform(dtos.getCollection(), new Function<HypervisorTypeDto, HypervisorType>() {
+ private Iterable<HypervisorType> getHypervisorTypes(final HypervisorTypesDto dtos) {
+ return transform(dtos.getCollection(), new Function<HypervisorTypeDto, HypervisorType>() {
@Override
public HypervisorType apply(HypervisorTypeDto input) {
return HypervisorType.fromId(input.getId());
}
- }));
+ });
}
/**
@@ -519,7 +516,7 @@ public class Datacenter extends DomainWrapper<DatacenterDto> {
* > http://community.abiquo.com/display/ABI20/DatacenterResource#
* DatacenterResource- Retrievealistofremotemachineinformation</a>
*/
- public List<Machine> discoverMultipleMachines(final String ipFrom, final String ipTo,
+ public Iterable<Machine> discoverMultipleMachines(final String ipFrom, final String ipTo,
final HypervisorType hypervisorType, final String user, final String password) {
return discoverMultipleMachines(ipFrom, ipTo, hypervisorType, user, password, hypervisorType.defaultPort);
}
@@ -547,7 +544,7 @@ public class Datacenter extends DomainWrapper<DatacenterDto> {
* > http://community.abiquo.com/display/ABI20/DatacenterResource#
* DatacenterResource- Retrievealistofremotemachineinformation</a>
*/
- public List<Machine> discoverMultipleMachines(final String ipFrom, final String ipTo,
+ public Iterable<Machine> discoverMultipleMachines(final String ipFrom, final String ipTo,
final HypervisorType hypervisorType, final String user, final String password, final int port) {
MachinesDto dto = context
.getApi()
@@ -687,10 +684,10 @@ public class Datacenter extends DomainWrapper<DatacenterDto> {
* @return List of virtual machine templates in the repository of this
* datacenter.
*/
- public List<VirtualMachineTemplate> listTemplatesInRepository(final Enterprise enterprise) {
- VirtualMachineTemplatesDto dto = context.getApi().getVirtualMachineTemplateApi()
+ public Iterable<VirtualMachineTemplate> listTemplatesInRepository(final Enterprise enterprise) {
+ PagedIterable<VirtualMachineTemplateDto> templates = context.getApi().getVirtualMachineTemplateApi()
.listVirtualMachineTemplates(enterprise.getId(), target.getId());
- return wrap(context, VirtualMachineTemplate.class, dto.getCollection());
+ return wrap(context, VirtualMachineTemplate.class, templates.concat());
}
/**
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Machine.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Machine.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Machine.java
index dd851a8..102f7d4 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Machine.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Machine.java
@@ -17,6 +17,7 @@
package org.jclouds.abiquo.domain.infrastructure;
import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.collect.ImmutableList.copyOf;
import java.util.List;
@@ -138,11 +139,11 @@ public class Machine extends DomainWrapper<MachineDto> {
// Children access
- public List<Datastore> getDatastores() {
+ public Iterable<Datastore> getDatastores() {
return wrap(context, Datastore.class, target.getDatastores().getCollection());
}
- public List<NetworkInterface> getNetworkInterfaces() {
+ public Iterable<NetworkInterface> getNetworkInterfaces() {
return wrap(context, NetworkInterface.class, target.getNetworkInterfaces().getCollection());
}
@@ -156,7 +157,7 @@ public class Machine extends DomainWrapper<MachineDto> {
* MachineResource-
* Retrievethelistofvirtualmachinesbymachine'shypervisor</a>
*/
- public List<VirtualMachine> listVirtualMachines() {
+ public Iterable<VirtualMachine> listVirtualMachines() {
MachineOptions options = MachineOptions.builder().sync(false).build();
VirtualMachinesWithNodeExtendedDto vms = context.getApi().getInfrastructureApi()
.listVirtualMachinesByMachine(target, options);
@@ -180,7 +181,7 @@ public class Machine extends DomainWrapper<MachineDto> {
* MachineResource-
* Retrievethelistofvirtualmachinesbymachine'shypervisor</a>
*/
- public List<VirtualMachine> listRemoteVirtualMachines() {
+ public Iterable<VirtualMachine> listRemoteVirtualMachines() {
MachineOptions options = MachineOptions.builder().sync(true).build();
VirtualMachinesWithNodeExtendedDto vms = context.getApi().getInfrastructureApi()
.listVirtualMachinesByMachine(target, options);
@@ -430,11 +431,11 @@ public class Machine extends DomainWrapper<MachineDto> {
dto.setState(state);
DatastoresDto datastoresDto = new DatastoresDto();
- datastoresDto.getCollection().addAll(unwrap(datastores));
+ datastoresDto.getCollection().addAll(copyOf(unwrap(datastores)));
dto.setDatastores(datastoresDto);
NetworkInterfacesDto networkInterfacesDto = new NetworkInterfacesDto();
- networkInterfacesDto.getCollection().addAll(unwrap(networkInterfaces));
+ networkInterfacesDto.getCollection().addAll(copyOf(unwrap(networkInterfaces)));
dto.setNetworkInterfaces(networkInterfacesDto);
Machine machine = new Machine(context, dto);
@@ -533,7 +534,7 @@ public class Machine extends DomainWrapper<MachineDto> {
public void setDatastores(final List<Datastore> datastores) {
DatastoresDto datastoresDto = new DatastoresDto();
- datastoresDto.getCollection().addAll(DomainWrapper.unwrap(datastores));
+ datastoresDto.getCollection().addAll(copyOf(unwrap(datastores)));
target.setDatastores(datastoresDto);
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Rack.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Rack.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Rack.java
index d8f31c2..0c214e7 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Rack.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Rack.java
@@ -18,8 +18,6 @@ package org.jclouds.abiquo.domain.infrastructure;
import static com.google.common.base.Preconditions.checkNotNull;
-import java.util.List;
-
import org.jclouds.abiquo.AbiquoApi;
import org.jclouds.abiquo.domain.DomainWrapper;
import org.jclouds.abiquo.reference.ValidationErrors;
@@ -127,7 +125,7 @@ public class Rack extends DomainWrapper<RackDto> {
* > http://community.abiquo.com/display/ABI20/MachineResource#
* MachineResource- RetrievealistofMachines</a>
*/
- public List<Machine> listMachines() {
+ public Iterable<Machine> listMachines() {
MachinesDto machines = context.getApi().getInfrastructureApi().listMachines(target);
return wrap(context, Machine.class, machines.getCollection());
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/StorageDevice.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/StorageDevice.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/StorageDevice.java
index 166cf82..bfcead3 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/StorageDevice.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/StorageDevice.java
@@ -18,8 +18,6 @@ package org.jclouds.abiquo.domain.infrastructure;
import static com.google.common.base.Preconditions.checkNotNull;
-import java.util.List;
-
import org.jclouds.abiquo.AbiquoApi;
import org.jclouds.abiquo.domain.DomainWrapper;
import org.jclouds.abiquo.domain.infrastructure.options.StoragePoolOptions;
@@ -121,11 +119,11 @@ public class StorageDevice extends DomainWrapper<StorageDeviceDto> {
* StoragePoolResource- Retrievestoragepools</a>
* @return Synchronized list of storage pools in this device.
*/
- public List<StoragePool> listRemoteStoragePools() {
+ public Iterable<StoragePool> listRemoteStoragePools() {
StoragePoolsDto storagePools = context.getApi().getInfrastructureApi()
.listStoragePools(target, StoragePoolOptions.builder().sync(true).build());
- List<StoragePool> storagePoolList = wrap(context, StoragePool.class, storagePools.getCollection());
+ Iterable<StoragePool> storagePoolList = wrap(context, StoragePool.class, storagePools.getCollection());
for (StoragePool storagePool : storagePoolList) {
storagePool.storageDevice = this;
@@ -144,7 +142,7 @@ public class StorageDevice extends DomainWrapper<StorageDeviceDto> {
* StoragePoolResource- Retrievestoragepools</a>
* @return Unsynchronized list of storage pools in this device.
*/
- public List<StoragePool> listStoragePools() {
+ public Iterable<StoragePool> listStoragePools() {
StoragePoolsDto storagePools = context.getApi().getInfrastructureApi()
.listStoragePools(target, StoragePoolOptions.builder().sync(false).build());
return wrap(context, StoragePool.class, storagePools.getCollection());
@@ -177,7 +175,7 @@ public class StorageDevice extends DomainWrapper<StorageDeviceDto> {
* Retrievethelistoftiers </a>
* @return List of tiers in the datacenter using this device.
*/
- public List<Tier> listTiersFromDatacenter() {
+ public Iterable<Tier> listTiersFromDatacenter() {
DatacenterDto datacenter;
if (this.datacenter == null) {
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Tier.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Tier.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Tier.java
index 0bc615a..190b81f 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Tier.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Tier.java
@@ -16,8 +16,6 @@
*/
package org.jclouds.abiquo.domain.infrastructure;
-import java.util.List;
-
import org.jclouds.abiquo.AbiquoApi;
import org.jclouds.abiquo.domain.DomainWrapper;
import org.jclouds.abiquo.reference.rest.ParentLinkName;
@@ -73,7 +71,7 @@ public class Tier extends DomainWrapper<TierDto> {
* StoragePoolResource- Retrievestoragepools</a>
* @return List of storage pools in this tier.
*/
- public List<StoragePool> listStoragePools() {
+ public Iterable<StoragePool> listStoragePools() {
StoragePoolsDto storagePools = context.getApi().getInfrastructureApi().listStoragePools(target);
return wrap(context, StoragePool.class, storagePools.getCollection());
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/network/ExternalNetwork.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/network/ExternalNetwork.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/network/ExternalNetwork.java
index e6c5f05..dd10ca4 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/network/ExternalNetwork.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/network/ExternalNetwork.java
@@ -18,14 +18,14 @@ package org.jclouds.abiquo.domain.network;
import static com.google.common.base.Preconditions.checkNotNull;
-import java.util.List;
-
import org.jclouds.abiquo.AbiquoApi;
+import org.jclouds.abiquo.domain.PaginatedCollection;
import org.jclouds.abiquo.domain.enterprise.Enterprise;
import org.jclouds.abiquo.domain.infrastructure.Datacenter;
import org.jclouds.abiquo.domain.network.options.IpOptions;
import org.jclouds.abiquo.reference.ValidationErrors;
import org.jclouds.abiquo.reference.rest.ParentLinkName;
+import org.jclouds.collect.PagedIterable;
import org.jclouds.http.HttpResponse;
import org.jclouds.http.functions.ParseXMLWithJAXB;
import org.jclouds.rest.ApiContext;
@@ -98,16 +98,17 @@ public class ExternalNetwork extends Network<ExternalIp> {
target = context.getApi().getInfrastructureApi().updateNetwork(target);
}
- /**
- * @see API: <a href=
- * "http://community.abiquo.com/display/ABI20/Public+IPs+Resource#PublicIPsResource-ReturnthelistofIPsforaPublicNetwork"
- * > http://community.abiquo.com/display/ABI20/Public+IPs+Resource#
- * PublicIPsResource- ReturnthelistofIPsforaPublicNetwork</a>
- */
@Override
- public List<ExternalIp> listIps(final IpOptions options) {
- ExternalIpsDto ips = context.getApi().getInfrastructureApi().listExternalIps(target, options);
- return wrap(context, ExternalIp.class, ips.getCollection());
+ public Iterable<ExternalIp> listIps() {
+ PagedIterable<ExternalIpDto> ips = context.getApi().getInfrastructureApi().listExternalIps(target);
+ return wrap(context, ExternalIp.class, ips.concat());
+ }
+
+ @Override
+ public Iterable<ExternalIp> listIps(final IpOptions options) {
+ PaginatedCollection<ExternalIpDto, ExternalIpsDto> ips = context.getApi().getInfrastructureApi()
+ .listExternalIps(target, options);
+ return wrap(context, ExternalIp.class, ips.toPagedIterable().concat());
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/network/Network.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/network/Network.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/network/Network.java
index 0f1a4e7..f59c7f0 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/network/Network.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/network/Network.java
@@ -32,7 +32,6 @@ import org.jclouds.rest.ApiContext;
import com.abiquo.model.enumerator.NetworkType;
import com.abiquo.server.core.infrastructure.network.VLANNetworkDto;
import com.google.common.base.Function;
-import com.google.common.collect.ImmutableList;
/**
* Adds generic high level functionality to {@link VLANNetworkDto}.
@@ -56,17 +55,14 @@ public abstract class Network<T extends Ip<?, ?>> extends DomainWrapper<VLANNetw
public abstract void delete();
- public abstract List<T> listIps(IpOptions options);
+ public abstract Iterable<T> listIps();
- public abstract T getIp(Integer id);
+ public abstract Iterable<T> listIps(IpOptions options);
- public List<T> listIps() {
- // Disable pagination by default
- return listIps(IpOptions.builder().disablePagination().build());
- }
+ public abstract T getIp(Integer id);
- public List<T> listUnusedIps() {
- return ImmutableList.copyOf(filter(listIps(), IpPredicates.<T> notUsed()));
+ public Iterable<T> listUnusedIps() {
+ return filter(listIps(), IpPredicates.<T> notUsed());
}
// Builder
@@ -302,12 +298,12 @@ public abstract class Network<T extends Ip<?, ?>> extends DomainWrapper<VLANNetw
return network;
}
- public static List<Network<?>> wrapNetworks(final ApiContext<AbiquoApi> context, final List<VLANNetworkDto> dtos) {
- return ImmutableList.copyOf(transform(dtos, new Function<VLANNetworkDto, Network<?>>() {
+ public static Iterable<Network<?>> wrapNetworks(final ApiContext<AbiquoApi> context, final List<VLANNetworkDto> dtos) {
+ return transform(dtos, new Function<VLANNetworkDto, Network<?>>() {
@Override
public Network<?> apply(VLANNetworkDto input) {
return wrapNetwork(context, input);
}
- }));
+ });
}
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/network/PrivateNetwork.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/network/PrivateNetwork.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/network/PrivateNetwork.java
index 531a12c..4d411f5 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/network/PrivateNetwork.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/network/PrivateNetwork.java
@@ -16,11 +16,11 @@
*/
package org.jclouds.abiquo.domain.network;
-import java.util.List;
-
import org.jclouds.abiquo.AbiquoApi;
+import org.jclouds.abiquo.domain.PaginatedCollection;
import org.jclouds.abiquo.domain.cloud.VirtualDatacenter;
import org.jclouds.abiquo.domain.network.options.IpOptions;
+import org.jclouds.collect.PagedIterable;
import org.jclouds.rest.ApiContext;
import com.abiquo.model.enumerator.NetworkType;
@@ -84,24 +84,26 @@ public class PrivateNetwork extends Network<PrivateIp> {
target = context.getApi().getCloudApi().updatePrivateNetwork(target);
}
- /**
- * @see API: <a href=
- * "http://community.abiquo.com/display/ABI20/Private+Network+Resource#PrivateNetworkResource-RetrievethelistofIPSofthePrivateNetwork"
- * > http://community.abiquo.com/display/ABI20/Private+Network+Resource#
- * PrivateNetworkResource -RetrievethelistofIPSofthePrivateNetwork</a>
- */
@Override
- public List<PrivateIp> listIps(final IpOptions options) {
- PrivateIpsDto ips = context.getApi().getCloudApi().listPrivateNetworkIps(target, options);
- return wrap(context, PrivateIp.class, ips.getCollection());
+ public Iterable<PrivateIp> listIps() {
+ PagedIterable<PrivateIpDto> ips = context.getApi().getCloudApi().listPrivateNetworkIps(target);
+ return wrap(context, PrivateIp.class, ips.concat());
+ }
+
+ @Override
+ public Iterable<PrivateIp> listIps(final IpOptions options) {
+ PaginatedCollection<PrivateIpDto, PrivateIpsDto> ips = context.getApi().getCloudApi()
+ .listPrivateNetworkIps(target, options);
+ return wrap(context, PrivateIp.class, ips.toPagedIterable().concat());
}
// Override to apply the filter in the server side
@Override
- public List<PrivateIp> listUnusedIps() {
- IpOptions options = IpOptions.builder().disablePagination().free(true).build();
- PrivateIpsDto ips = context.getApi().getCloudApi().listPrivateNetworkIps(target, options);
- return wrap(context, PrivateIp.class, ips.getCollection());
+ public Iterable<PrivateIp> listUnusedIps() {
+ IpOptions options = IpOptions.builder().free(true).build();
+ PaginatedCollection<PrivateIpDto, PrivateIpsDto> ips = context.getApi().getCloudApi()
+ .listPrivateNetworkIps(target, options);
+ return wrap(context, PrivateIp.class, ips.toPagedIterable().concat());
}
@Override
[3/5] JCLOUDS-198: Implemented the PagedIterable in Abiquo
Posted by na...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/VirtualMachineNetworkingLiveApiTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/VirtualMachineNetworkingLiveApiTest.java b/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/VirtualMachineNetworkingLiveApiTest.java
index ae0a31f..4b60d4a 100644
--- a/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/VirtualMachineNetworkingLiveApiTest.java
+++ b/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/VirtualMachineNetworkingLiveApiTest.java
@@ -17,9 +17,11 @@
package org.jclouds.abiquo.domain.cloud;
import static com.google.common.collect.Iterables.find;
+import static com.google.common.collect.Iterables.get;
+import static com.google.common.collect.Iterables.getLast;
+import static com.google.common.collect.Iterables.size;
import static org.jclouds.abiquo.util.Assert.assertHasError;
import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertNull;
import static org.testng.Assert.fail;
@@ -65,13 +67,10 @@ public class VirtualMachineNetworkingLiveApiTest extends BaseAbiquoApiLiveApiTes
@BeforeClass
public void setupIps() {
- privateIp = env.privateNetwork.listUnusedIps().get(0);
- assertNotNull(privateIp);
+ privateIp = getLast(env.privateNetwork.listUnusedIps());
+ externalIp = getLast(env.externalNetwork.listUnusedIps());
- externalIp = env.externalNetwork.listUnusedIps().get(0);
- assertNotNull(externalIp);
-
- publicIpInfrastructure = env.virtualDatacenter.listAvailablePublicIps().get(0);
+ publicIpInfrastructure = getLast(env.virtualDatacenter.listAvailablePublicIps());
env.virtualDatacenter.purchasePublicIp(publicIpInfrastructure);
publicIpCloud = find(env.virtualDatacenter.listPurchasedPublicIps(), new Predicate<PublicIp>() {
@@ -87,9 +86,9 @@ public class VirtualMachineNetworkingLiveApiTest extends BaseAbiquoApiLiveApiTes
VirtualMachineTask task = env.virtualMachine.setNics(Lists.<Ip<?, ?>> newArrayList(privateIp));
assertNull(task);
- List<Ip<?, ?>> nics = env.virtualMachine.listAttachedNics();
- assertEquals(nics.size(), 1);
- assertEquals(nics.get(0).getId(), privateIp.getId());
+ Iterable<Ip<?, ?>> nics = env.virtualMachine.listAttachedNics();
+ assertEquals(size(nics), 1);
+ assertEquals(get(nics, 0).getId(), privateIp.getId());
final String address = publicIpCloud.getIp();
env.virtualDatacenter.releasePublicIp(publicIpCloud);
@@ -108,18 +107,18 @@ public class VirtualMachineNetworkingLiveApiTest extends BaseAbiquoApiLiveApiTes
VirtualMachineTask task = env.virtualMachine.setNics(Lists.<Ip<?, ?>> newArrayList(publicIpInfrastructure));
assertNull(task);
- List<Ip<?, ?>> nics = env.virtualMachine.listAttachedNics();
- assertEquals(nics.size(), 1);
- assertEquals(nics.get(0).getId(), publicIpInfrastructure.getId());
+ Iterable<Ip<?, ?>> nics = env.virtualMachine.listAttachedNics();
+ assertEquals(size(nics), 1);
+ assertEquals(get(nics, 0).getId(), publicIpInfrastructure.getId());
}
public void testAttachPublicIp() {
VirtualMachineTask task = env.virtualMachine.setNics(Lists.<Ip<?, ?>> newArrayList(publicIpCloud));
assertNull(task);
- List<Ip<?, ?>> nics = env.virtualMachine.listAttachedNics();
- assertEquals(nics.size(), 1);
- assertEquals(nics.get(0).getId(), publicIpCloud.getId());
+ Iterable<Ip<?, ?>> nics = env.virtualMachine.listAttachedNics();
+ assertEquals(size(nics), 1);
+ assertEquals(get(nics, 0).getId(), publicIpCloud.getId());
}
@Test(dependsOnMethods = "testAttachPublicIp")
@@ -130,7 +129,7 @@ public class VirtualMachineNetworkingLiveApiTest extends BaseAbiquoApiLiveApiTes
VirtualMachineTask task = env.virtualMachine.setNics(nics);
assertNull(task);
- nics = env.virtualMachine.listAttachedNics();
+ nics = Lists.newArrayList(env.virtualMachine.listAttachedNics());
assertEquals(nics.size(), 2);
assertEquals(nics.get(0).getId(), publicIpCloud.getId());
assertEquals(nics.get(1).getId(), privateIp.getId());
@@ -144,7 +143,7 @@ public class VirtualMachineNetworkingLiveApiTest extends BaseAbiquoApiLiveApiTes
VirtualMachineTask task = env.virtualMachine.setNics(nics);
assertNull(task);
- nics = env.virtualMachine.listAttachedNics();
+ nics = Lists.newArrayList(env.virtualMachine.listAttachedNics());
assertEquals(nics.size(), 3);
assertEquals(nics.get(0).getId(), publicIpCloud.getId());
assertEquals(nics.get(1).getId(), privateIp.getId());
@@ -153,34 +152,34 @@ public class VirtualMachineNetworkingLiveApiTest extends BaseAbiquoApiLiveApiTes
@Test(dependsOnMethods = "testAttachExternalIp")
public void testAddUnmanagedNics() {
- List<Ip<?, ?>> nics = env.virtualMachine.listAttachedNics();
+ Iterable<Ip<?, ?>> nics = env.virtualMachine.listAttachedNics();
- VirtualMachineTask task = env.virtualMachine.setNics(nics,
+ VirtualMachineTask task = env.virtualMachine.setNics(Lists.newArrayList(nics),
Lists.<UnmanagedNetwork> newArrayList(env.unmanagedNetwork, env.unmanagedNetwork));
assertNull(task);
nics = env.virtualMachine.listAttachedNics();
- assertEquals(nics.size(), 5);
- assertEquals(nics.get(0).getId(), publicIpCloud.getId());
- assertEquals(nics.get(1).getId(), privateIp.getId());
- assertEquals(nics.get(2).getId(), externalIp.getId());
+ assertEquals(size(nics), 5);
+ assertEquals(get(nics, 0).getId(), publicIpCloud.getId());
+ assertEquals(get(nics, 1).getId(), privateIp.getId());
+ assertEquals(get(nics, 2).getId(), externalIp.getId());
// Unmanaged ips are created during the attach.
- assertEquals(nics.get(3).getNetworkName(), env.unmanagedNetwork.getName());
- assertEquals(nics.get(4).getNetworkName(), env.unmanagedNetwork.getName());
+ assertEquals(get(nics, 3).getNetworkName(), env.unmanagedNetwork.getName());
+ assertEquals(get(nics, 4).getNetworkName(), env.unmanagedNetwork.getName());
- unmanagedIp1 = (UnmanagedIp) nics.get(3);
- unmanagedIp2 = (UnmanagedIp) nics.get(4);
+ unmanagedIp1 = (UnmanagedIp) get(nics, 3);
+ unmanagedIp2 = (UnmanagedIp) get(nics, 4);
}
@Test(dependsOnMethods = "testAddUnmanagedNics")
public void testReorderNics() {
- List<Ip<?, ?>> nics = env.virtualMachine.listAttachedNics();
+ List<Ip<?, ?>> nics = Lists.newArrayList(env.virtualMachine.listAttachedNics());
VirtualMachineTask task = env.virtualMachine.setNics(Lists.<Ip<?, ?>> newArrayList(nics.get(2), nics.get(1),
nics.get(0), nics.get(4), nics.get(3)));
assertNull(task);
- nics = env.virtualMachine.listAttachedNics();
+ nics = Lists.newArrayList(env.virtualMachine.listAttachedNics());
assertEquals(nics.size(), 5);
assertEquals(nics.get(0).getId(), externalIp.getId());
assertEquals(nics.get(1).getId(), privateIp.getId());
@@ -191,12 +190,12 @@ public class VirtualMachineNetworkingLiveApiTest extends BaseAbiquoApiLiveApiTes
@Test(dependsOnMethods = "testReorderNics")
public void testDetachNics() {
- List<Ip<?, ?>> nics = env.virtualMachine.listAttachedNics();
+ List<Ip<?, ?>> nics = Lists.newArrayList(env.virtualMachine.listAttachedNics());
VirtualMachineTask task = env.virtualMachine.setNics(Lists.<Ip<?, ?>> newArrayList(nics.get(1), nics.get(2)));
assertNull(task);
- nics = env.virtualMachine.listAttachedNics();
+ nics = Lists.newArrayList(env.virtualMachine.listAttachedNics());
assertEquals(nics.size(), 2);
assertEquals(nics.get(0).getId(), privateIp.getId());
assertEquals(nics.get(1).getId(), publicIpCloud.getId());
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/VirtualMachineStorageLiveApiTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/VirtualMachineStorageLiveApiTest.java b/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/VirtualMachineStorageLiveApiTest.java
index ea060cb..6d5aded 100644
--- a/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/VirtualMachineStorageLiveApiTest.java
+++ b/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/VirtualMachineStorageLiveApiTest.java
@@ -17,14 +17,15 @@
package org.jclouds.abiquo.domain.cloud;
import static com.google.common.collect.Iterables.find;
+import static com.google.common.collect.Iterables.get;
+import static com.google.common.collect.Iterables.isEmpty;
+import static com.google.common.collect.Iterables.size;
import static org.jclouds.abiquo.reference.AbiquoTestConstants.PREFIX;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertNull;
import static org.testng.Assert.assertTrue;
-import java.util.List;
-
import org.jclouds.abiquo.domain.infrastructure.Tier;
import org.jclouds.abiquo.domain.task.VirtualMachineTask;
import org.jclouds.abiquo.internal.BaseAbiquoApiLiveApiTest;
@@ -51,16 +52,16 @@ public class VirtualMachineStorageLiveApiTest extends BaseAbiquoApiLiveApiTest {
VirtualMachineTask task = env.virtualMachine.attachVolumes(volume);
assertNull(task);
- List<Volume> attached = env.virtualMachine.listAttachedVolumes();
- assertEquals(attached.size(), 1);
- assertEquals(attached.get(0).getId(), volume.getId());
+ Iterable<Volume> attached = env.virtualMachine.listAttachedVolumes();
+ assertEquals(size(attached), 1);
+ assertEquals(get(attached, 0).getId(), volume.getId());
}
@Test(dependsOnMethods = "testAttachVolumes")
public void detachVolume() {
env.virtualMachine.detachVolumes(volume);
- List<Volume> attached = env.virtualMachine.listAttachedVolumes();
- assertTrue(attached.isEmpty());
+ Iterable<Volume> attached = env.virtualMachine.listAttachedVolumes();
+ assertTrue(isEmpty(attached));
}
@Test(dependsOnMethods = "detachVolume")
@@ -71,8 +72,8 @@ public class VirtualMachineStorageLiveApiTest extends BaseAbiquoApiLiveApiTest {
assertNull(task);
env.virtualMachine.detachAllVolumes();
- List<Volume> attached = env.virtualMachine.listAttachedVolumes();
- assertTrue(attached.isEmpty());
+ Iterable<Volume> attached = env.virtualMachine.listAttachedVolumes();
+ assertTrue(isEmpty(attached));
deleteVolume(volume);
}
@@ -85,16 +86,16 @@ public class VirtualMachineStorageLiveApiTest extends BaseAbiquoApiLiveApiTest {
VirtualMachineTask task = env.virtualMachine.attachHardDisks(hardDisk);
assertNull(task);
- List<HardDisk> attached = env.virtualMachine.listAttachedHardDisks();
- assertEquals(attached.size(), 1);
- assertEquals(attached.get(0).getId(), hardDisk.getId());
+ Iterable<HardDisk> attached = env.virtualMachine.listAttachedHardDisks();
+ assertEquals(size(attached), 1);
+ assertEquals(get(attached, 0).getId(), hardDisk.getId());
}
@Test(dependsOnMethods = "testAttachHardDisks")
public void detachHardDisk() {
env.virtualMachine.detachHardDisks(hardDisk);
- List<HardDisk> attached = env.virtualMachine.listAttachedHardDisks();
- assertTrue(attached.isEmpty());
+ Iterable<HardDisk> attached = env.virtualMachine.listAttachedHardDisks();
+ assertTrue(isEmpty(attached));
}
@Test(dependsOnMethods = "detachHardDisk")
@@ -105,8 +106,8 @@ public class VirtualMachineStorageLiveApiTest extends BaseAbiquoApiLiveApiTest {
assertNull(task);
env.virtualMachine.detachAllHardDisks();
- List<HardDisk> attached = env.virtualMachine.listAttachedHardDisks();
- assertTrue(attached.isEmpty());
+ Iterable<HardDisk> attached = env.virtualMachine.listAttachedHardDisks();
+ assertTrue(isEmpty(attached));
deleteHardDisk(hardDisk);
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/VolumeLiveApiTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/VolumeLiveApiTest.java b/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/VolumeLiveApiTest.java
index 02ec993..b720be5 100644
--- a/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/VolumeLiveApiTest.java
+++ b/abiquo/src/test/java/org/jclouds/abiquo/domain/cloud/VolumeLiveApiTest.java
@@ -17,14 +17,14 @@
package org.jclouds.abiquo.domain.cloud;
import static com.google.common.collect.Iterables.find;
+import static com.google.common.collect.Iterables.isEmpty;
+import static com.google.common.collect.Iterables.size;
import static org.jclouds.abiquo.reference.AbiquoTestConstants.PREFIX;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertNull;
import static org.testng.Assert.assertTrue;
-import java.util.List;
-
import org.jclouds.abiquo.domain.cloud.options.VolumeOptions;
import org.jclouds.abiquo.domain.infrastructure.Tier;
import org.jclouds.abiquo.domain.network.PrivateNetwork;
@@ -32,7 +32,6 @@ import org.jclouds.abiquo.domain.task.VirtualMachineTask;
import org.jclouds.abiquo.internal.BaseAbiquoApiLiveApiTest;
import org.testng.annotations.Test;
-import com.abiquo.server.core.infrastructure.storage.VolumeManagementDto;
import com.google.common.base.Predicate;
/**
@@ -64,14 +63,11 @@ public class VolumeLiveApiTest extends BaseAbiquoApiLiveApiTest {
VolumeOptions validOptions = VolumeOptions.builder().has("hawa").build();
VolumeOptions invalidOptions = VolumeOptions.builder().has("cacatua").build();
- List<VolumeManagementDto> volumes = env.cloudApi.listVolumes(env.virtualDatacenter.unwrap(), validOptions)
- .getCollection();
-
- assertEquals(volumes.size(), 1);
-
- volumes = env.cloudApi.listVolumes(env.virtualDatacenter.unwrap(), invalidOptions).getCollection();
+ Iterable<Volume> volumes = env.virtualDatacenter.listVolumes(validOptions);
+ assertEquals(size(volumes), 1);
- assertEquals(volumes.size(), 0);
+ volumes = env.virtualDatacenter.listVolumes(invalidOptions);
+ assertTrue(isEmpty(volumes));
}
@Test(dependsOnMethods = "testFilterVolumes")
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/java/org/jclouds/abiquo/domain/enterprise/EnterpriseLiveApiTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/domain/enterprise/EnterpriseLiveApiTest.java b/abiquo/src/test/java/org/jclouds/abiquo/domain/enterprise/EnterpriseLiveApiTest.java
index 473ef5e..24fbd76 100644
--- a/abiquo/src/test/java/org/jclouds/abiquo/domain/enterprise/EnterpriseLiveApiTest.java
+++ b/abiquo/src/test/java/org/jclouds/abiquo/domain/enterprise/EnterpriseLiveApiTest.java
@@ -16,6 +16,9 @@
*/
package org.jclouds.abiquo.domain.enterprise;
+import static com.google.common.collect.Iterables.get;
+import static com.google.common.collect.Iterables.isEmpty;
+import static com.google.common.collect.Iterables.size;
import static org.jclouds.abiquo.reference.AbiquoTestConstants.PREFIX;
import static org.jclouds.abiquo.util.Assert.assertHasError;
import static org.testng.Assert.assertEquals;
@@ -24,8 +27,6 @@ import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertTrue;
import static org.testng.Assert.fail;
-import java.util.List;
-
import javax.ws.rs.core.Response.Status;
import org.jclouds.abiquo.domain.cloud.VirtualAppliance;
@@ -78,9 +79,9 @@ public class EnterpriseLiveApiTest extends BaseAbiquoApiLiveApiTest {
assertHasError(ex, Status.CONFLICT, "ENTERPRISE-10");
}
- List<Datacenter> allowed = enterprise.listAllowedDatacenters();
+ Iterable<Datacenter> allowed = enterprise.listAllowedDatacenters();
assertNotNull(allowed);
- assertTrue(allowed.isEmpty());
+ assertTrue(isEmpty(allowed));
enterprise.delete();
}
@@ -118,9 +119,9 @@ public class EnterpriseLiveApiTest extends BaseAbiquoApiLiveApiTest {
}
public void testListLimits() {
- List<Limits> allLimits = enterprise.listLimits();
+ Iterable<Limits> allLimits = enterprise.listLimits();
assertNotNull(allLimits);
- assertEquals(allLimits.size(), 1);
+ assertEquals(size(allLimits), 1);
}
public void testUpdateInvalidLimits() {
@@ -146,20 +147,20 @@ public class EnterpriseLiveApiTest extends BaseAbiquoApiLiveApiTest {
}
public void testListAllowedDatacenters() {
- List<Datacenter> allowed = enterprise.listAllowedDatacenters();
+ Iterable<Datacenter> allowed = enterprise.listAllowedDatacenters();
assertNotNull(allowed);
- assertFalse(allowed.isEmpty());
- assertEquals(allowed.get(0).getId(), env.datacenter.getId());
+ assertFalse(isEmpty(allowed));
+ assertEquals(get(allowed, 0).getId(), env.datacenter.getId());
}
public void testListVirtualMachines() {
- List<VirtualMachine> machines = env.defaultEnterprise.listVirtualMachines();
- assertTrue(machines.size() > 0);
+ Iterable<VirtualMachine> machines = env.defaultEnterprise.listVirtualMachines();
+ assertTrue(size(machines) > 0);
}
public void testListVirtualAppliances() {
- List<VirtualAppliance> vapps = env.defaultEnterprise.listVirtualAppliances();
- assertTrue(vapps.size() > 0);
+ Iterable<VirtualAppliance> vapps = env.defaultEnterprise.listVirtualAppliances();
+ assertTrue(size(vapps) > 0);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/java/org/jclouds/abiquo/domain/enterprise/TemplateDefinitionListLiveApiTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/domain/enterprise/TemplateDefinitionListLiveApiTest.java b/abiquo/src/test/java/org/jclouds/abiquo/domain/enterprise/TemplateDefinitionListLiveApiTest.java
index b5909a5..c618e93 100644
--- a/abiquo/src/test/java/org/jclouds/abiquo/domain/enterprise/TemplateDefinitionListLiveApiTest.java
+++ b/abiquo/src/test/java/org/jclouds/abiquo/domain/enterprise/TemplateDefinitionListLiveApiTest.java
@@ -22,8 +22,6 @@ import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertNull;
-import java.util.List;
-
import org.jclouds.abiquo.internal.BaseAbiquoApiLiveApiTest;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
@@ -56,7 +54,7 @@ public class TemplateDefinitionListLiveApiTest extends BaseAbiquoApiLiveApiTest
}
public void testListStates() {
- List<TemplateState> states = list.listStatus(env.datacenter);
+ Iterable<TemplateState> states = list.listStatus(env.datacenter);
assertNotNull(states);
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/java/org/jclouds/abiquo/domain/enterprise/UserLiveApiTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/domain/enterprise/UserLiveApiTest.java b/abiquo/src/test/java/org/jclouds/abiquo/domain/enterprise/UserLiveApiTest.java
index b27cb45..14fdc5a 100644
--- a/abiquo/src/test/java/org/jclouds/abiquo/domain/enterprise/UserLiveApiTest.java
+++ b/abiquo/src/test/java/org/jclouds/abiquo/domain/enterprise/UserLiveApiTest.java
@@ -26,7 +26,6 @@ import static org.testng.Assert.fail;
import javax.ws.rs.core.Response.Status;
-import org.jclouds.abiquo.domain.enterprise.options.UserOptions;
import org.jclouds.abiquo.domain.exception.AbiquoException;
import org.jclouds.abiquo.internal.BaseAbiquoApiLiveApiTest;
import org.testng.annotations.Test;
@@ -90,16 +89,6 @@ public class UserLiveApiTest extends BaseAbiquoApiLiveApiTest {
users = filter(env.enterprise.listUsers(), nick(env.user.getName() + "FAIL"));
assertEquals(size(users), 0);
}
-
- public void testListUserWithOptions() {
- Iterable<User> users = env.enterprise.listUsers(UserOptions.builder()
- .limit(1).startWith(0).build());
- assertEquals(size(users), 1);
-
- users = env.enterprise.listUsers(UserOptions.builder()
- .limit(1).page(2).build());
- assertEquals(size(users), 1);
- }
public void testGetCurrentUser() {
User user = env.context.getAdministrationService().getCurrentUser();
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/java/org/jclouds/abiquo/domain/infrastructure/DatacenterLiveApiTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/domain/infrastructure/DatacenterLiveApiTest.java b/abiquo/src/test/java/org/jclouds/abiquo/domain/infrastructure/DatacenterLiveApiTest.java
index 5d34eb5..ad17ab4 100644
--- a/abiquo/src/test/java/org/jclouds/abiquo/domain/infrastructure/DatacenterLiveApiTest.java
+++ b/abiquo/src/test/java/org/jclouds/abiquo/domain/infrastructure/DatacenterLiveApiTest.java
@@ -16,14 +16,13 @@
*/
package org.jclouds.abiquo.domain.infrastructure;
+import static com.google.common.collect.Iterables.size;
import static org.jclouds.abiquo.util.Assert.assertHasError;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertTrue;
import static org.testng.Assert.fail;
-import java.util.List;
-
import javax.ws.rs.core.Response.Status;
import org.jclouds.abiquo.domain.enterprise.Limits;
@@ -71,9 +70,9 @@ public class DatacenterLiveApiTest extends BaseAbiquoApiLiveApiTest {
}
public void testListLimits() {
- List<Limits> limits = env.datacenter.listLimits();
+ Iterable<Limits> limits = env.datacenter.listLimits();
assertNotNull(limits);
- assertTrue(limits.size() > 0);
+ assertTrue(size(limits) > 0);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/java/org/jclouds/abiquo/domain/infrastructure/MachineLiveApiTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/domain/infrastructure/MachineLiveApiTest.java b/abiquo/src/test/java/org/jclouds/abiquo/domain/infrastructure/MachineLiveApiTest.java
index e4eafd7..31cc7ef 100644
--- a/abiquo/src/test/java/org/jclouds/abiquo/domain/infrastructure/MachineLiveApiTest.java
+++ b/abiquo/src/test/java/org/jclouds/abiquo/domain/infrastructure/MachineLiveApiTest.java
@@ -25,7 +25,6 @@ import static org.testng.Assert.assertNull;
import static org.testng.Assert.assertTrue;
import java.net.URI;
-import java.util.List;
import javax.ws.rs.core.Response.Status;
@@ -115,9 +114,8 @@ public class MachineLiveApiTest extends BaseAbiquoApiLiveApiTest {
}
public void testListVirtualMachines() {
- List<VirtualMachine> machines = env.machine.listRemoteVirtualMachines();
+ Iterable<VirtualMachine> machines = env.machine.listRemoteVirtualMachines();
assertNotNull(machines);
- assertTrue(machines.size() >= 0);
}
public void testReserveMachine() {
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/java/org/jclouds/abiquo/domain/infrastructure/RemoteServiceLiveApiTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/domain/infrastructure/RemoteServiceLiveApiTest.java b/abiquo/src/test/java/org/jclouds/abiquo/domain/infrastructure/RemoteServiceLiveApiTest.java
index 4c75f62..8abcde9 100644
--- a/abiquo/src/test/java/org/jclouds/abiquo/domain/infrastructure/RemoteServiceLiveApiTest.java
+++ b/abiquo/src/test/java/org/jclouds/abiquo/domain/infrastructure/RemoteServiceLiveApiTest.java
@@ -18,6 +18,7 @@ package org.jclouds.abiquo.domain.infrastructure;
import static com.google.common.collect.Iterables.filter;
import static com.google.common.collect.Iterables.find;
+import static com.google.common.collect.Iterables.get;
import static com.google.common.collect.Iterables.size;
import static org.jclouds.abiquo.util.Assert.assertHasError;
import static org.testng.Assert.assertEquals;
@@ -87,7 +88,7 @@ public class RemoteServiceLiveApiTest extends BaseAbiquoApiLiveApiTest {
}
public void testCreateRepeated() {
- RemoteService repeated = Builder.fromRemoteService(env.remoteServices.get(1)).build();
+ RemoteService repeated = Builder.fromRemoteService(get(env.remoteServices, 1)).build();
try {
repeated.save();
@@ -99,7 +100,7 @@ public class RemoteServiceLiveApiTest extends BaseAbiquoApiLiveApiTest {
public void testListRemoteServices() {
Iterable<RemoteService> remoteServices = env.datacenter.listRemoteServices();
- assertEquals(size(remoteServices), env.remoteServices.size());
+ assertEquals(size(remoteServices), size(env.remoteServices));
remoteServices = filter(env.datacenter.listRemoteServices(), type(RemoteServiceType.NODE_COLLECTOR));
assertEquals(size(remoteServices), 1);
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/java/org/jclouds/abiquo/domain/infrastructure/TierLiveApiTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/domain/infrastructure/TierLiveApiTest.java b/abiquo/src/test/java/org/jclouds/abiquo/domain/infrastructure/TierLiveApiTest.java
index c04b3b6..76cbbd8 100644
--- a/abiquo/src/test/java/org/jclouds/abiquo/domain/infrastructure/TierLiveApiTest.java
+++ b/abiquo/src/test/java/org/jclouds/abiquo/domain/infrastructure/TierLiveApiTest.java
@@ -18,9 +18,9 @@ package org.jclouds.abiquo.domain.infrastructure;
import static com.google.common.collect.Iterables.filter;
import static com.google.common.collect.Iterables.find;
+import static com.google.common.collect.Iterables.getLast;
import static com.google.common.collect.Iterables.size;
import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotNull;
import org.jclouds.abiquo.internal.BaseAbiquoApiLiveApiTest;
import org.testng.annotations.Test;
@@ -37,8 +37,7 @@ import com.google.common.base.Predicate;
public class TierLiveApiTest extends BaseAbiquoApiLiveApiTest {
public void testUpdate() {
- Tier tier = env.datacenter.listTiers().get(0);
- assertNotNull(tier);
+ Tier tier = getLast(env.datacenter.listTiers());
String previousName = tier.getName();
tier.setName("Updated tier");
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/java/org/jclouds/abiquo/domain/network/ExternalNetworkLiveApiTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/domain/network/ExternalNetworkLiveApiTest.java b/abiquo/src/test/java/org/jclouds/abiquo/domain/network/ExternalNetworkLiveApiTest.java
index e0056dc..0224ff6 100644
--- a/abiquo/src/test/java/org/jclouds/abiquo/domain/network/ExternalNetworkLiveApiTest.java
+++ b/abiquo/src/test/java/org/jclouds/abiquo/domain/network/ExternalNetworkLiveApiTest.java
@@ -17,16 +17,16 @@
package org.jclouds.abiquo.domain.network;
import static com.google.common.collect.Iterables.find;
+import static com.google.common.collect.Iterables.size;
import static org.jclouds.abiquo.reference.AbiquoTestConstants.PREFIX;
import static org.jclouds.abiquo.util.Assert.assertHasError;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.fail;
-import java.util.List;
-
import javax.ws.rs.core.Response.Status;
+import org.jclouds.abiquo.domain.PaginatedCollection;
import org.jclouds.abiquo.domain.exception.AbiquoException;
import org.jclouds.abiquo.domain.network.options.IpOptions;
import org.jclouds.abiquo.internal.BaseAbiquoApiLiveApiTest;
@@ -35,6 +35,7 @@ import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
+import com.abiquo.server.core.infrastructure.network.ExternalIpDto;
import com.abiquo.server.core.infrastructure.network.ExternalIpsDto;
import com.google.common.base.Predicate;
@@ -58,27 +59,26 @@ public class ExternalNetworkLiveApiTest extends BaseAbiquoApiLiveApiTest {
}
public void testListIps() {
- ExternalIpsDto ipsDto = env.context.getApiContext().getApi().getInfrastructureApi()
- .listExternalIps(externalNetwork.unwrap(), IpOptions.builder().limit(1).build());
+ PaginatedCollection<ExternalIpDto, ExternalIpsDto> ipsDto = env.context.getApiContext().getApi()
+ .getInfrastructureApi().listExternalIps(externalNetwork.unwrap(), IpOptions.builder().limit(1).build());
int totalIps = ipsDto.getTotalSize();
- List<ExternalIp> ips = externalNetwork.listIps();
-
- assertEquals(ips.size(), totalIps);
+ Iterable<ExternalIp> ips = externalNetwork.listIps();
+ assertEquals(size(ips), totalIps);
}
public void testListIpsWithOptions() {
- List<ExternalIp> ips = externalNetwork.listIps(IpOptions.builder().limit(5).build());
- assertEquals(ips.size(), 5);
+ Iterable<ExternalIp> ips = externalNetwork.listIps(IpOptions.builder().limit(5).build());
+ assertEquals(size(ips), 5);
}
public void testListUnusedIps() {
- ExternalIpsDto ipsDto = env.context.getApiContext().getApi().getInfrastructureApi()
- .listExternalIps(externalNetwork.unwrap(), IpOptions.builder().limit(1).build());
+ PaginatedCollection<ExternalIpDto, ExternalIpsDto> ipsDto = env.context.getApiContext().getApi()
+ .getInfrastructureApi().listExternalIps(externalNetwork.unwrap(), IpOptions.builder().limit(1).build());
int totalIps = ipsDto.getTotalSize();
- List<ExternalIp> ips = externalNetwork.listUnusedIps();
- assertEquals(ips.size(), totalIps);
+ Iterable<ExternalIp> ips = externalNetwork.listUnusedIps();
+ assertEquals(size(ips), totalIps);
}
public void testUpdateBasicInfo() {
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/java/org/jclouds/abiquo/domain/network/GenericNetworkLiveApiTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/domain/network/GenericNetworkLiveApiTest.java b/abiquo/src/test/java/org/jclouds/abiquo/domain/network/GenericNetworkLiveApiTest.java
index 52d0cde..b464f1a 100644
--- a/abiquo/src/test/java/org/jclouds/abiquo/domain/network/GenericNetworkLiveApiTest.java
+++ b/abiquo/src/test/java/org/jclouds/abiquo/domain/network/GenericNetworkLiveApiTest.java
@@ -16,12 +16,12 @@
*/
package org.jclouds.abiquo.domain.network;
+import static com.google.common.collect.Iterables.get;
+import static com.google.common.collect.Iterables.size;
import static org.jclouds.abiquo.util.Assert.assertHasError;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
-import java.util.List;
-
import javax.ws.rs.core.Response.Status;
import org.jclouds.abiquo.domain.exception.AbiquoException;
@@ -39,36 +39,36 @@ import com.abiquo.model.enumerator.NetworkType;
public class GenericNetworkLiveApiTest extends BaseAbiquoApiLiveApiTest {
public void testListDatacenterNetworks() {
// Make sure all network types are listed
- List<Network<?>> networks = env.datacenter.listNetworks();
+ Iterable<Network<?>> networks = env.datacenter.listNetworks();
assertNotNull(networks);
- assertEquals(networks.size(), 3);
+ assertEquals(size(networks), 3);
}
public void testListPublicNetworks() {
- List<Network<?>> networks = env.datacenter.listNetworks(NetworkType.PUBLIC);
+ Iterable<Network<?>> networks = env.datacenter.listNetworks(NetworkType.PUBLIC);
assertNotNull(networks);
- assertEquals(networks.size(), 1);
+ assertEquals(size(networks), 1);
// Make sure it can be converted
- networks.get(0).toPublicNetwork();
+ get(networks, 0).toPublicNetwork();
}
public void testListExternaletworks() {
- List<Network<?>> networks = env.datacenter.listNetworks(NetworkType.EXTERNAL);
+ Iterable<Network<?>> networks = env.datacenter.listNetworks(NetworkType.EXTERNAL);
assertNotNull(networks);
- assertEquals(networks.size(), 1);
+ assertEquals(size(networks), 1);
// Make sure it can be converted
- networks.get(0).toExternalNetwork();
+ get(networks, 0).toExternalNetwork();
}
public void testListUnmanagedNetworks() {
- List<Network<?>> networks = env.datacenter.listNetworks(NetworkType.UNMANAGED);
+ Iterable<Network<?>> networks = env.datacenter.listNetworks(NetworkType.UNMANAGED);
assertNotNull(networks);
- assertEquals(networks.size(), 1);
+ assertEquals(size(networks), 1);
// Make sure it can be converted
- networks.get(0).toUnmanagedNetwork();
+ get(networks, 0).toUnmanagedNetwork();
}
public void testListPrivateNetworks() {
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/java/org/jclouds/abiquo/domain/network/PrivateNetworkLiveApiTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/domain/network/PrivateNetworkLiveApiTest.java b/abiquo/src/test/java/org/jclouds/abiquo/domain/network/PrivateNetworkLiveApiTest.java
index ac1fb2b..f54f50d 100644
--- a/abiquo/src/test/java/org/jclouds/abiquo/domain/network/PrivateNetworkLiveApiTest.java
+++ b/abiquo/src/test/java/org/jclouds/abiquo/domain/network/PrivateNetworkLiveApiTest.java
@@ -17,16 +17,16 @@
package org.jclouds.abiquo.domain.network;
import static com.google.common.collect.Iterables.find;
+import static com.google.common.collect.Iterables.size;
import static org.jclouds.abiquo.reference.AbiquoTestConstants.PREFIX;
import static org.jclouds.abiquo.util.Assert.assertHasError;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.fail;
-import java.util.List;
-
import javax.ws.rs.core.Response.Status;
+import org.jclouds.abiquo.domain.PaginatedCollection;
import org.jclouds.abiquo.domain.cloud.VirtualDatacenter;
import org.jclouds.abiquo.domain.exception.AbiquoException;
import org.jclouds.abiquo.domain.network.options.IpOptions;
@@ -36,6 +36,7 @@ import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
+import com.abiquo.server.core.infrastructure.network.PrivateIpDto;
import com.abiquo.server.core.infrastructure.network.PrivateIpsDto;
/**
@@ -58,27 +59,26 @@ public class PrivateNetworkLiveApiTest extends BaseAbiquoApiLiveApiTest {
}
public void testListIps() {
- PrivateIpsDto ipsDto = env.context.getApiContext().getApi().getCloudApi()
+ PaginatedCollection<PrivateIpDto, PrivateIpsDto> ipsDto = env.context.getApiContext().getApi().getCloudApi()
.listPrivateNetworkIps(privateNetwork.unwrap(), IpOptions.builder().limit(1).build());
int totalIps = ipsDto.getTotalSize();
- List<PrivateIp> ips = privateNetwork.listIps();
-
- assertEquals(ips.size(), totalIps);
+ Iterable<PrivateIp> ips = privateNetwork.listIps();
+ assertEquals(size(ips), totalIps);
}
public void testListIpsWithOptions() {
- List<PrivateIp> ips = privateNetwork.listIps(IpOptions.builder().limit(5).build());
- assertEquals(ips.size(), 5);
+ Iterable<PrivateIp> ips = privateNetwork.listIps(IpOptions.builder().limit(5).build());
+ assertEquals(size(ips), 5);
}
public void testListUnusedIps() {
- PrivateIpsDto ipsDto = env.context.getApiContext().getApi().getCloudApi()
+ PaginatedCollection<PrivateIpDto, PrivateIpsDto> ipsDto = env.context.getApiContext().getApi().getCloudApi()
.listPrivateNetworkIps(privateNetwork.unwrap(), IpOptions.builder().limit(1).build());
int totalIps = ipsDto.getTotalSize();
- List<PrivateIp> ips = privateNetwork.listUnusedIps();
- assertEquals(ips.size(), totalIps);
+ Iterable<PrivateIp> ips = privateNetwork.listUnusedIps();
+ assertEquals(size(ips), totalIps);
}
public void testUpdateBasicInfo() {
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/java/org/jclouds/abiquo/domain/network/PublicNetworkLiveApiTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/domain/network/PublicNetworkLiveApiTest.java b/abiquo/src/test/java/org/jclouds/abiquo/domain/network/PublicNetworkLiveApiTest.java
index 203aba6..95b56e3 100644
--- a/abiquo/src/test/java/org/jclouds/abiquo/domain/network/PublicNetworkLiveApiTest.java
+++ b/abiquo/src/test/java/org/jclouds/abiquo/domain/network/PublicNetworkLiveApiTest.java
@@ -17,16 +17,16 @@
package org.jclouds.abiquo.domain.network;
import static com.google.common.collect.Iterables.find;
+import static com.google.common.collect.Iterables.size;
import static org.jclouds.abiquo.reference.AbiquoTestConstants.PREFIX;
import static org.jclouds.abiquo.util.Assert.assertHasError;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.fail;
-import java.util.List;
-
import javax.ws.rs.core.Response.Status;
+import org.jclouds.abiquo.domain.PaginatedCollection;
import org.jclouds.abiquo.domain.exception.AbiquoException;
import org.jclouds.abiquo.domain.network.options.IpOptions;
import org.jclouds.abiquo.internal.BaseAbiquoApiLiveApiTest;
@@ -35,6 +35,7 @@ import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
+import com.abiquo.server.core.infrastructure.network.PublicIpDto;
import com.abiquo.server.core.infrastructure.network.PublicIpsDto;
/**
@@ -57,27 +58,26 @@ public class PublicNetworkLiveApiTest extends BaseAbiquoApiLiveApiTest {
}
public void testListIps() {
- PublicIpsDto ipsDto = env.context.getApiContext().getApi().getInfrastructureApi()
- .listPublicIps(publicNetwork.unwrap(), IpOptions.builder().limit(1).build());
+ PaginatedCollection<PublicIpDto, PublicIpsDto> ipsDto = env.context.getApiContext().getApi()
+ .getInfrastructureApi().listPublicIps(publicNetwork.unwrap(), IpOptions.builder().limit(1).build());
int totalIps = ipsDto.getTotalSize();
- List<PublicIp> ips = publicNetwork.listIps();
-
- assertEquals(ips.size(), totalIps);
+ Iterable<PublicIp> ips = publicNetwork.listIps();
+ assertEquals(size(ips), totalIps);
}
public void testListIpsWithOptions() {
- List<PublicIp> ips = publicNetwork.listIps(IpOptions.builder().limit(5).build());
- assertEquals(ips.size(), 5);
+ Iterable<PublicIp> ips = publicNetwork.listIps(IpOptions.builder().limit(5).build());
+ assertEquals(size(ips), 5);
}
public void testListUnusedIps() {
- PublicIpsDto ipsDto = env.context.getApiContext().getApi().getInfrastructureApi()
- .listPublicIps(publicNetwork.unwrap(), IpOptions.builder().limit(1).build());
+ PaginatedCollection<PublicIpDto, PublicIpsDto> ipsDto = env.context.getApiContext().getApi()
+ .getInfrastructureApi().listPublicIps(publicNetwork.unwrap(), IpOptions.builder().limit(1).build());
int totalIps = ipsDto.getTotalSize();
- List<PublicIp> ips = publicNetwork.listUnusedIps();
- assertEquals(ips.size(), totalIps);
+ Iterable<PublicIp> ips = publicNetwork.listUnusedIps();
+ assertEquals(size(ips), totalIps);
}
public void testUpdateBasicInfo() {
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/java/org/jclouds/abiquo/domain/network/UnmanagedNetworkLiveApiTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/domain/network/UnmanagedNetworkLiveApiTest.java b/abiquo/src/test/java/org/jclouds/abiquo/domain/network/UnmanagedNetworkLiveApiTest.java
index 96981b3..fb3184c 100644
--- a/abiquo/src/test/java/org/jclouds/abiquo/domain/network/UnmanagedNetworkLiveApiTest.java
+++ b/abiquo/src/test/java/org/jclouds/abiquo/domain/network/UnmanagedNetworkLiveApiTest.java
@@ -17,6 +17,7 @@
package org.jclouds.abiquo.domain.network;
import static com.google.common.collect.Iterables.find;
+import static com.google.common.collect.Iterables.size;
import static org.jclouds.abiquo.reference.AbiquoTestConstants.PREFIX;
import static org.jclouds.abiquo.util.Assert.assertHasError;
import static org.testng.Assert.assertEquals;
@@ -24,10 +25,9 @@ import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertNull;
import static org.testng.Assert.fail;
-import java.util.List;
-
import javax.ws.rs.core.Response.Status;
+import org.jclouds.abiquo.domain.PaginatedCollection;
import org.jclouds.abiquo.domain.exception.AbiquoException;
import org.jclouds.abiquo.domain.network.options.IpOptions;
import org.jclouds.abiquo.internal.BaseAbiquoApiLiveApiTest;
@@ -36,6 +36,7 @@ import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
+import com.abiquo.server.core.infrastructure.network.UnmanagedIpDto;
import com.abiquo.server.core.infrastructure.network.UnmanagedIpsDto;
import com.google.common.base.Predicate;
@@ -59,28 +60,27 @@ public class UnmanagedNetworkLiveApiTest extends BaseAbiquoApiLiveApiTest {
}
public void testListIps() {
- UnmanagedIpsDto ipsDto = env.context.getApiContext().getApi().getInfrastructureApi()
- .listUnmanagedIps(unmanagedNetwork.unwrap(), IpOptions.builder().limit(1).build());
+ PaginatedCollection<UnmanagedIpDto, UnmanagedIpsDto> ipsDto = env.context.getApiContext().getApi()
+ .getInfrastructureApi().listUnmanagedIps(unmanagedNetwork.unwrap(), IpOptions.builder().limit(1).build());
int totalIps = ipsDto.getTotalSize();
- List<UnmanagedIp> ips = unmanagedNetwork.listIps();
-
- assertEquals(ips.size(), totalIps);
+ Iterable<UnmanagedIp> ips = unmanagedNetwork.listIps();
+ assertEquals(size(ips), totalIps);
}
public void testListIpsWithOptions() {
- List<UnmanagedIp> ips = unmanagedNetwork.listIps(IpOptions.builder().limit(5).build());
+ Iterable<UnmanagedIp> ips = unmanagedNetwork.listIps(IpOptions.builder().limit(5).build());
// Unmanaged networks do not have IPs until attached to VMs
- assertEquals(ips.size(), 0);
+ assertEquals(size(ips), 0);
}
public void testListUnusedIps() {
- UnmanagedIpsDto ipsDto = env.context.getApiContext().getApi().getInfrastructureApi()
- .listUnmanagedIps(unmanagedNetwork.unwrap(), IpOptions.builder().limit(1).build());
+ PaginatedCollection<UnmanagedIpDto, UnmanagedIpsDto> ipsDto = env.context.getApiContext().getApi()
+ .getInfrastructureApi().listUnmanagedIps(unmanagedNetwork.unwrap(), IpOptions.builder().limit(1).build());
int totalIps = ipsDto.getTotalSize();
- List<UnmanagedIp> ips = unmanagedNetwork.listUnusedIps();
- assertEquals(ips.size(), totalIps);
+ Iterable<UnmanagedIp> ips = unmanagedNetwork.listUnusedIps();
+ assertEquals(size(ips), totalIps);
}
public void testUpdateBasicInfo() {
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/java/org/jclouds/abiquo/environment/CloudTestEnvironment.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/environment/CloudTestEnvironment.java b/abiquo/src/test/java/org/jclouds/abiquo/environment/CloudTestEnvironment.java
index 4a3579c..7873450 100644
--- a/abiquo/src/test/java/org/jclouds/abiquo/environment/CloudTestEnvironment.java
+++ b/abiquo/src/test/java/org/jclouds/abiquo/environment/CloudTestEnvironment.java
@@ -18,14 +18,12 @@ package org.jclouds.abiquo.environment;
import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.collect.Iterables.find;
+import static com.google.common.collect.Iterables.isEmpty;
import static org.jclouds.abiquo.reference.AbiquoTestConstants.PREFIX;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertNull;
-import java.util.Collections;
-import java.util.List;
-
import org.jclouds.ContextBuilder;
import org.jclouds.abiquo.AbiquoApiMetadata;
import org.jclouds.abiquo.AbiquoContext;
@@ -37,7 +35,6 @@ import org.jclouds.abiquo.domain.enterprise.Enterprise;
import org.jclouds.abiquo.domain.network.PrivateNetwork;
import org.jclouds.abiquo.features.CloudApi;
import org.jclouds.abiquo.features.services.EventService;
-import org.testng.collections.Lists;
import com.google.common.base.Predicate;
import com.google.common.collect.Ordering;
@@ -163,20 +160,10 @@ public class CloudTestEnvironment extends InfrastructureTestEnvironment {
}
protected void createVirtualMachine() {
- List<VirtualMachineTemplate> templates = virtualDatacenter.listAvailableTemplates();
- assertFalse(templates.isEmpty());
-
- List<VirtualMachineTemplate> sorted = Lists.newArrayList(templates);
+ Iterable<VirtualMachineTemplate> templates = virtualDatacenter.listAvailableTemplates();
+ assertFalse(isEmpty(templates));
- // Sort by size to use the smallest one
- Collections.sort(sorted, new Ordering<VirtualMachineTemplate>() {
- @Override
- public int compare(final VirtualMachineTemplate left, final VirtualMachineTemplate right) {
- return Longs.compare(left.getDiskFileSize(), right.getDiskFileSize());
- }
- });
-
- template = sorted.get(0);
+ template = templateBySize().min(templates);
virtualMachine = VirtualMachine.builder(context.getApiContext(), virtualAppliance, template).cpu(2)
.nameLabel(PREFIX + "VM Aloha").ram(128).build();
@@ -222,7 +209,15 @@ public class CloudTestEnvironment extends InfrastructureTestEnvironment {
virtualMachine.delete();
assertNull(cloudApi.getVirtualMachine(virtualAppliance.unwrap(), idVirtualMachine));
}
+ }
+ public static Ordering<VirtualMachineTemplate> templateBySize() {
+ return new Ordering<VirtualMachineTemplate>() {
+ @Override
+ public int compare(final VirtualMachineTemplate left, final VirtualMachineTemplate right) {
+ return Longs.compare(left.getDiskFileSize(), right.getDiskFileSize());
+ }
+ };
}
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/java/org/jclouds/abiquo/environment/InfrastructureTestEnvironment.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/environment/InfrastructureTestEnvironment.java b/abiquo/src/test/java/org/jclouds/abiquo/environment/InfrastructureTestEnvironment.java
index 0c2add5..4f2ce71 100644
--- a/abiquo/src/test/java/org/jclouds/abiquo/environment/InfrastructureTestEnvironment.java
+++ b/abiquo/src/test/java/org/jclouds/abiquo/environment/InfrastructureTestEnvironment.java
@@ -17,6 +17,7 @@
package org.jclouds.abiquo.environment;
import static com.google.common.collect.Iterables.find;
+import static com.google.common.collect.Iterables.size;
import static org.jclouds.abiquo.reference.AbiquoTestConstants.PREFIX;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
@@ -26,7 +27,6 @@ import java.io.IOException;
import java.net.URI;
import java.net.URL;
import java.nio.charset.Charset;
-import java.util.List;
import java.util.UUID;
import org.jclouds.abiquo.AbiquoContext;
@@ -94,7 +94,7 @@ public class InfrastructureTestEnvironment implements TestEnvironment {
public UnmanagedNetwork unmanagedNetwork;
- public List<RemoteService> remoteServices;
+ public Iterable<RemoteService> remoteServices;
public Rack rack;
@@ -190,7 +190,7 @@ public class InfrastructureTestEnvironment implements TestEnvironment {
assertNotNull(datacenter.getId());
remoteServices = datacenter.listRemoteServices();
- assertEquals(remoteServices.size(), 7);
+ assertEquals(size(remoteServices), 7);
}
protected void createMachine() {
@@ -237,7 +237,7 @@ public class InfrastructureTestEnvironment implements TestEnvironment {
String user = Config.get("abiquo.storage.user");
String pass = Config.get("abiquo.storage.pass");
- List<StorageDeviceMetadata> devices = datacenter.listSupportedStorageDevices();
+ Iterable<StorageDeviceMetadata> devices = datacenter.listSupportedStorageDevices();
StorageDeviceMetadata metadata = find(devices, new Predicate<StorageDeviceMetadata>() {
@Override
public boolean apply(StorageDeviceMetadata input) {
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/test/java/org/jclouds/abiquo/features/CloudApiExpectTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/features/CloudApiExpectTest.java b/abiquo/src/test/java/org/jclouds/abiquo/features/CloudApiExpectTest.java
index 27df7cf..760d245 100644
--- a/abiquo/src/test/java/org/jclouds/abiquo/features/CloudApiExpectTest.java
+++ b/abiquo/src/test/java/org/jclouds/abiquo/features/CloudApiExpectTest.java
@@ -22,17 +22,36 @@ import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
import java.net.URI;
+import java.util.List;
import org.jclouds.abiquo.AbiquoApi;
+import org.jclouds.abiquo.domain.PaginatedCollection;
+import org.jclouds.abiquo.domain.cloud.options.VirtualMachineOptions;
+import org.jclouds.abiquo.domain.cloud.options.VirtualMachineTemplateOptions;
+import org.jclouds.abiquo.domain.cloud.options.VolumeOptions;
+import org.jclouds.abiquo.domain.network.options.IpOptions;
+import org.jclouds.collect.PagedIterable;
import org.jclouds.http.HttpRequest;
import org.jclouds.http.HttpResponse;
import org.testng.annotations.Test;
import com.abiquo.model.rest.RESTLink;
import com.abiquo.model.transport.AcceptedRequestDto;
+import com.abiquo.server.core.appslibrary.VirtualMachineTemplateDto;
+import com.abiquo.server.core.appslibrary.VirtualMachineTemplatesDto;
+import com.abiquo.server.core.cloud.VirtualApplianceDto;
+import com.abiquo.server.core.cloud.VirtualDatacenterDto;
import com.abiquo.server.core.cloud.VirtualMachineDto;
import com.abiquo.server.core.cloud.VirtualMachineInstanceDto;
+import com.abiquo.server.core.cloud.VirtualMachineWithNodeExtendedDto;
import com.abiquo.server.core.cloud.VirtualMachinesWithNodeExtendedDto;
+import com.abiquo.server.core.infrastructure.network.PrivateIpDto;
+import com.abiquo.server.core.infrastructure.network.PrivateIpsDto;
+import com.abiquo.server.core.infrastructure.network.PublicIpDto;
+import com.abiquo.server.core.infrastructure.network.PublicIpsDto;
+import com.abiquo.server.core.infrastructure.network.VLANNetworkDto;
+import com.abiquo.server.core.infrastructure.storage.VolumeManagementDto;
+import com.abiquo.server.core.infrastructure.storage.VolumesManagementDto;
/**
* Expect tests for the {@link CloudApi} class.
@@ -43,7 +62,7 @@ import com.abiquo.server.core.cloud.VirtualMachinesWithNodeExtendedDto;
public class CloudApiExpectTest extends BaseAbiquoApiExpectTest<CloudApi> {
public void testListAllVirtualMachinesWhenResponseIs2xx() {
- CloudApi api = requestSendsResponse(
+ CloudApi api = requestsSendResponses(
HttpRequest.builder() //
.method("GET") //
.endpoint(URI.create("http://localhost/api/cloud/virtualmachines")) //
@@ -56,13 +75,132 @@ public class CloudApiExpectTest extends BaseAbiquoApiExpectTest<CloudApi> {
.payload(
payloadFromResourceWithContentType("/payloads/all-vms.xml",
normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE))) //
+ .build(),
+ HttpRequest.builder() //
+ .method("GET") //
+ .endpoint(URI.create("http://localhost/api/cloud/virtualmachines")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE)) //
+ .addQueryParam("startwith", "2").build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/all-vms-lastpage.xml",
+ normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE))) //
+ .build());
+
+ PagedIterable<VirtualMachineWithNodeExtendedDto> result = api.listAllVirtualMachines();
+ List<VirtualMachineWithNodeExtendedDto> vms = result.concat().toList();
+
+ assertEquals(vms.size(), 2);
+ assertEquals(vms.get(0).getId(), Integer.valueOf(1));
+ assertEquals(vms.get(1).getId(), Integer.valueOf(2));
+ assertEquals(vms.get(0).getName(), "VM");
+ assertNotNull(vms.get(0).getEditLink());
+ }
+
+ public void testListAllVirtualMachinesWithPagination() {
+ CloudApi api = requestSendsResponse(
+ HttpRequest.builder() //
+ .method("GET") //
+ .endpoint(URI.create("http://localhost/api/cloud/virtualmachines")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE)) //
+ .addQueryParam("startwith", "2").build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/all-vms-lastpage.xml",
+ normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE))) //
+ .build());
+
+ VirtualMachineOptions options = VirtualMachineOptions.builder().startWith(2).build();
+ PaginatedCollection<VirtualMachineWithNodeExtendedDto, VirtualMachinesWithNodeExtendedDto> vms = api
+ .listAllVirtualMachines(options);
+
+ assertEquals(vms.size(), 1);
+ assertEquals(vms.getTotalSize().intValue(), 2);
+ assertEquals(vms.get(0).getId().intValue(), 2);
+ }
+
+ public void testListVirtualMachinesWhenResponseIs2xx() {
+ CloudApi api = requestsSendResponses(
+ HttpRequest.builder() //
+ .method("GET")
+ //
+ .endpoint(
+ URI.create("http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE)) //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/vms-page.xml",
+ normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE))) //
+ .build(),
+ HttpRequest.builder() //
+ .method("GET")
+ //
+ .endpoint(
+ URI.create("http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE)) //
+ .addQueryParam("startwith", "2").build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/vms-lastpage.xml",
+ normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE))) //
.build());
- VirtualMachinesWithNodeExtendedDto vms = api.listAllVirtualMachines();
- assertEquals(vms.getCollection().size(), 1);
- assertEquals(vms.getCollection().get(0).getId(), Integer.valueOf(1));
- assertEquals(vms.getCollection().get(0).getName(), "VM");
- assertNotNull(vms.getCollection().get(0).getEditLink());
+ VirtualApplianceDto vapp = new VirtualApplianceDto();
+ vapp.addLink(new RESTLink("virtualmachines",
+ "http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines"));
+
+ PagedIterable<VirtualMachineWithNodeExtendedDto> result = api.listVirtualMachines(vapp);
+ List<VirtualMachineWithNodeExtendedDto> vms = result.concat().toList();
+
+ assertEquals(vms.size(), 2);
+ assertEquals(vms.get(0).getId(), Integer.valueOf(1));
+ assertEquals(vms.get(1).getId(), Integer.valueOf(2));
+ assertEquals(vms.get(0).getName(), "VM");
+ assertNotNull(vms.get(0).getEditLink());
+ }
+
+ public void testLisVirtualMachinesWithPagination() {
+ CloudApi api = requestSendsResponse(
+ HttpRequest.builder() //
+ .method("GET")
+ //
+ .endpoint(
+ URI.create("http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE)) //
+ .addQueryParam("startwith", "2").build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/vms-lastpage.xml",
+ normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE))) //
+ .build());
+
+ VirtualApplianceDto vapp = new VirtualApplianceDto();
+ vapp.addLink(new RESTLink("virtualmachines",
+ "http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines"));
+
+ VirtualMachineOptions options = VirtualMachineOptions.builder().startWith(2).build();
+ PaginatedCollection<VirtualMachineWithNodeExtendedDto, VirtualMachinesWithNodeExtendedDto> vms = api
+ .listVirtualMachines(vapp, options);
+
+ assertEquals(vms.size(), 1);
+ assertEquals(vms.getTotalSize().intValue(), 2);
+ assertEquals(vms.get(0).getId().intValue(), 2);
}
public void testSnapshotVirtualMachineReturns2xx() {
@@ -95,6 +233,358 @@ public class CloudApiExpectTest extends BaseAbiquoApiExpectTest<CloudApi> {
assertNotNull(taskRef);
}
+ public void testListAvailablePublicIps() {
+ CloudApi api = requestsSendResponses(
+ HttpRequest.builder() //
+ .method("GET") //
+ .endpoint(URI.create("http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(PublicIpsDto.MEDIA_TYPE)) //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/publicips-available-page.xml",
+ normalize(PublicIpsDto.MEDIA_TYPE))) //
+ .build(),
+ HttpRequest.builder() //
+ .method("GET") //
+ .endpoint(URI.create("http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(PublicIpsDto.MEDIA_TYPE)) //
+ .addQueryParam("startwith", "3") //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/publicips-available-lastpage.xml",
+ normalize(PublicIpsDto.MEDIA_TYPE))) //
+ .build());
+
+ VirtualDatacenterDto vdc = new VirtualDatacenterDto();
+ vdc.addLink(new RESTLink("topurchase", "http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase"));
+
+ PagedIterable<PublicIpDto> publicIps = api.listAvailablePublicIps(vdc);
+ List<PublicIpDto> ips = publicIps.concat().toList();
+
+ assertEquals(ips.size(), 4);
+ assertEquals(ips.get(0).getId().intValue(), 1);
+ assertEquals(ips.get(1).getId().intValue(), 2);
+ assertEquals(ips.get(2).getId().intValue(), 3);
+ assertEquals(ips.get(3).getId().intValue(), 4);
+ }
+
+ public void testListAvailablePublicIpsWithPagination() {
+ CloudApi api = requestSendsResponse(
+ HttpRequest.builder() //
+ .method("GET") //
+ .endpoint(URI.create("http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(PublicIpsDto.MEDIA_TYPE)) //
+ .addQueryParam("startwith", "3") //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/publicips-available-lastpage.xml",
+ normalize(PublicIpsDto.MEDIA_TYPE))) //
+ .build());
+
+ VirtualDatacenterDto vdc = new VirtualDatacenterDto();
+ vdc.addLink(new RESTLink("topurchase", "http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase"));
+
+ IpOptions options = IpOptions.builder().startWith(3).build();
+ PaginatedCollection<PublicIpDto, PublicIpsDto> ips = api.listAvailablePublicIps(vdc, options);
+
+ assertEquals(ips.size(), 2);
+ assertEquals(ips.getTotalSize().intValue(), 4);
+ assertEquals(ips.get(0).getId().intValue(), 3);
+ assertEquals(ips.get(1).getId().intValue(), 4);
+ }
+
+ public void testListPurchasedPublicIps() {
+ CloudApi api = requestsSendResponses(
+ HttpRequest.builder() //
+ .method("GET") //
+ .endpoint(URI.create("http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(PublicIpsDto.MEDIA_TYPE)) //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/publicips-purchased-page.xml",
+ normalize(PublicIpsDto.MEDIA_TYPE))) //
+ .build(),
+ HttpRequest.builder() //
+ .method("GET") //
+ .endpoint(URI.create("http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(PublicIpsDto.MEDIA_TYPE)) //
+ .addQueryParam("startwith", "3") //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/publicips-purchased-lastpage.xml",
+ normalize(PublicIpsDto.MEDIA_TYPE))) //
+ .build());
+
+ VirtualDatacenterDto vdc = new VirtualDatacenterDto();
+ vdc.addLink(new RESTLink("purchased", "http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased"));
+
+ PagedIterable<PublicIpDto> publicIps = api.listPurchasedPublicIps(vdc);
+ List<PublicIpDto> ips = publicIps.concat().toList();
+
+ assertEquals(ips.size(), 4);
+ assertEquals(ips.get(0).getId().intValue(), 1);
+ assertEquals(ips.get(1).getId().intValue(), 2);
+ assertEquals(ips.get(2).getId().intValue(), 3);
+ assertEquals(ips.get(3).getId().intValue(), 4);
+ }
+
+ public void testListPurchasedPublicIpsWithPagination() {
+ CloudApi api = requestSendsResponse(
+ HttpRequest.builder() //
+ .method("GET") //
+ .endpoint(URI.create("http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(PublicIpsDto.MEDIA_TYPE)) //
+ .addQueryParam("startwith", "3") //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/publicips-purchased-lastpage.xml",
+ normalize(PublicIpsDto.MEDIA_TYPE))) //
+ .build());
+
+ VirtualDatacenterDto vdc = new VirtualDatacenterDto();
+ vdc.addLink(new RESTLink("purchased", "http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased"));
+
+ IpOptions options = IpOptions.builder().startWith(3).build();
+ PaginatedCollection<PublicIpDto, PublicIpsDto> ips = api.listPurchasedPublicIps(vdc, options);
+
+ assertEquals(ips.size(), 2);
+ assertEquals(ips.getTotalSize().intValue(), 4);
+ assertEquals(ips.get(0).getId().intValue(), 3);
+ assertEquals(ips.get(1).getId().intValue(), 4);
+ }
+
+ public void testListPrivteIps() {
+ CloudApi api = requestsSendResponses(
+ HttpRequest.builder() //
+ .method("GET") //
+ .endpoint(URI.create("http://localhost/api/cloud/virtualdatacenters/1/privatenetworks/1/ips")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(PrivateIpsDto.MEDIA_TYPE)) //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/privateips-page.xml",
+ normalize(PublicIpsDto.MEDIA_TYPE))) //
+ .build(),
+ HttpRequest.builder() //
+ .method("GET") //
+ .endpoint(URI.create("http://localhost/api/cloud/virtualdatacenters/1/privatenetworks/1/ips")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(PrivateIpsDto.MEDIA_TYPE)) //
+ .addQueryParam("startwith", "1") //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/privateips-lastpage.xml",
+ normalize(PrivateIpsDto.MEDIA_TYPE))) //
+ .build());
+
+ VLANNetworkDto vlan = new VLANNetworkDto();
+ vlan.addLink(new RESTLink("ips", "http://localhost/api/cloud/virtualdatacenters/1/privatenetworks/1/ips"));
+
+ PagedIterable<PrivateIpDto> privateIps = api.listPrivateNetworkIps(vlan);
+ List<PrivateIpDto> ips = privateIps.concat().toList();
+
+ assertEquals(ips.size(), 2);
+ assertEquals(ips.get(0).getId().intValue(), 1);
+ assertEquals(ips.get(1).getId().intValue(), 2);
+ }
+
+ public void testListPrivateIpsWithPagination() {
+ CloudApi api = requestSendsResponse(
+ HttpRequest.builder() //
+ .method("GET") //
+ .endpoint(URI.create("http://localhost/api/cloud/virtualdatacenters/1/privatenetworks/1/ips")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(PrivateIpsDto.MEDIA_TYPE)) //
+ .addQueryParam("startwith", "1") //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/privateips-lastpage.xml",
+ normalize(PrivateIpsDto.MEDIA_TYPE))) //
+ .build());
+
+ VLANNetworkDto vlan = new VLANNetworkDto();
+ vlan.addLink(new RESTLink("ips", "http://localhost/api/cloud/virtualdatacenters/1/privatenetworks/1/ips"));
+
+ IpOptions options = IpOptions.builder().startWith(1).build();
+ PaginatedCollection<PrivateIpDto, PrivateIpsDto> ips = api.listPrivateNetworkIps(vlan, options);
+
+ assertEquals(ips.size(), 1);
+ assertEquals(ips.getTotalSize().intValue(), 2);
+ assertEquals(ips.get(0).getId().intValue(), 2);
+ }
+
+ public void testListAvailableTemplates() {
+ CloudApi api = requestsSendResponses(
+ HttpRequest.builder() //
+ .method("GET") //
+ .endpoint(URI.create("http://example.com/api/cloud/virtualdatacenters/1/action/templates")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(VirtualMachineTemplatesDto.MEDIA_TYPE)) //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/available-templates-page.xml",
+ normalize(VirtualMachineTemplatesDto.MEDIA_TYPE))) //
+ .build(),
+ HttpRequest.builder() //
+ .method("GET") //
+ .endpoint(URI.create("http://example.com/api/cloud/virtualdatacenters/1/action/templates")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(VirtualMachineTemplatesDto.MEDIA_TYPE)) //
+ .addQueryParam("startwith", "1") //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/available-templates-lastpage.xml",
+ normalize(VirtualMachineTemplatesDto.MEDIA_TYPE))) //
+ .build());
+
+ VirtualDatacenterDto vdc = new VirtualDatacenterDto();
+ vdc.addLink(new RESTLink("templates", "http://example.com/api/cloud/virtualdatacenters/1/action/templates"));
+
+ PagedIterable<VirtualMachineTemplateDto> templates = api.listAvailableTemplates(vdc);
+ List<VirtualMachineTemplateDto> all = templates.concat().toList();
+
+ assertEquals(all.size(), 2);
+ assertEquals(all.get(0).getId().intValue(), 15);
+ assertEquals(all.get(1).getId().intValue(), 16);
+ }
+
+ public void testListAvailableTemplatesWithPagination() {
+ CloudApi api = requestSendsResponse(
+ HttpRequest.builder() //
+ .method("GET") //
+ .endpoint(URI.create("http://example.com/api/cloud/virtualdatacenters/1/action/templates")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(VirtualMachineTemplatesDto.MEDIA_TYPE)) //
+ .addQueryParam("startwith", "1") //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/available-templates-lastpage.xml",
+ normalize(VirtualMachineTemplatesDto.MEDIA_TYPE))) //
+ .build());
+
+ VirtualDatacenterDto vdc = new VirtualDatacenterDto();
+ vdc.addLink(new RESTLink("templates", "http://example.com/api/cloud/virtualdatacenters/1/action/templates"));
+
+ VirtualMachineTemplateOptions options = VirtualMachineTemplateOptions.builder().startWith(1).build();
+ PaginatedCollection<VirtualMachineTemplateDto, VirtualMachineTemplatesDto> templates = api
+ .listAvailableTemplates(vdc, options);
+
+ assertEquals(templates.size(), 1);
+ assertEquals(templates.getTotalSize().intValue(), 2);
+ assertEquals(templates.get(0).getId().intValue(), 16);
+ }
+
+ public void testListVolumes() {
+ CloudApi api = requestsSendResponses(
+ HttpRequest.builder() //
+ .method("GET") //
+ .endpoint(URI.create("http://example.com/api/cloud/virtualdatacenters/1/volumes")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(VolumesManagementDto.MEDIA_TYPE)) //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/volumes-page.xml",
+ normalize(VolumesManagementDto.MEDIA_TYPE))) //
+ .build(),
+ HttpRequest.builder() //
+ .method("GET") //
+ .endpoint(URI.create("http://example.com/api/cloud/virtualdatacenters/1/volumes")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(VolumesManagementDto.MEDIA_TYPE)) //
+ .addQueryParam("startwith", "1") //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/volumes-lastpage.xml",
+ normalize(VolumesManagementDto.MEDIA_TYPE))) //
+ .build());
+
+ VirtualDatacenterDto vdc = new VirtualDatacenterDto();
+ vdc.addLink(new RESTLink("volumes", "http://example.com/api/cloud/virtualdatacenters/1/volumes"));
+
+ PagedIterable<VolumeManagementDto> volumes = api.listVolumes(vdc);
+ List<VolumeManagementDto> all = volumes.concat().toList();
+
+ assertEquals(all.size(), 2);
+ assertEquals(all.get(0).getId().intValue(), 1530);
+ assertEquals(all.get(1).getId().intValue(), 1531);
+ }
+
+ public void testListVolumesWithPagination() {
+ CloudApi api = requestSendsResponse(
+ HttpRequest.builder() //
+ .method("GET") //
+ .endpoint(URI.create("http://example.com/api/cloud/virtualdatacenters/1/volumes")) //
+ .addHeader("Cookie", tokenAuth) //
+ .addHeader("Accept", normalize(VolumesManagementDto.MEDIA_TYPE)) //
+ .addQueryParam("startwith", "1") //
+ .build(),
+ HttpResponse
+ .builder()
+ .statusCode(200)
+ .payload(
+ payloadFromResourceWithContentType("/payloads/volumes-lastpage.xml",
+ normalize(VolumesManagementDto.MEDIA_TYPE))) //
+ .build());
+
+ VirtualDatacenterDto vdc = new VirtualDatacenterDto();
+ vdc.addLink(new RESTLink("volumes", "http://example.com/api/cloud/virtualdatacenters/1/volumes"));
+
+ VolumeOptions options = VolumeOptions.builder().startWith(1).build();
+ PaginatedCollection<VolumeManagementDto, VolumesManagementDto> templates = api.listVolumes(vdc, options);
+
+ assertEquals(templates.size(), 1);
+ assertEquals(templates.getTotalSize().intValue(), 2);
+ assertEquals(templates.get(0).getId().intValue(), 1531);
+ }
+
@Override
protected CloudApi clientFrom(AbiquoApi api) {
return api.getCloudApi();