package eu.betaas.taas.taasvmmanager.openstack;
import static org.junit.Assert.*;
import java.util.List;
import org.junit.Test;
import eu.betaas.taas.taasvmmanager.api.datamodel.InstanceType;
import eu.betaas.taas.taasvmmanager.occi.OCCIException;
import eu.betaas.taas.taasvmmanager.occi.datamodel.Compute;
import eu.betaas.taas.taasvmmanager.occi.datamodel.ComputeCollection;
import eu.betaas.taas.taasvmmanager.occi.datamodel.ComputeState;
import eu.betaas.taas.taasvmmanager.occi.datamodel.InstanceTypeCollection;
import eu.betaas.taas.taasvmmanager.occi.datamodel.Network;
import eu.betaas.taas.taasvmmanager.occi.datamodel.NetworkCollection;
import eu.betaas.taas.taasvmmanager.occi.datamodel.Storage;
import eu.betaas.taas.taasvmmanager.occi.datamodel.StorageCollection;
import eu.betaas.taas.taasvmmanager.occi.datamodel.StorageType;
import eu.betaas.taas.taasvmmanager.occi.datamodel.User.Quota;
import eu.betaas.taas.taasvmmanager.openstack.parser.OpenStackXMLParser;
public class OpenStackXMLParserTest {
/******* Test XML responses *******/
private static String AUTHORIZATIONRESPONSE =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ "<access xmlns=\"http://docs.openstack.org/identity/api/v2.0\">"
+ " <token issued_at=\"2014-01-30T15:49:11.054709\""
+ " expires=\"2014-01-31T15:49:11Z\""
+ " id=\"aaaaa-bbbbb-ccccc-dddd\">"
+ " <tenant enabled=\"true\" name=\"demo\""
+ " id=\"fc394f2ab2df4114bde39905f800dc57\"/>"
+ " </token>"
+ " <serviceCatalog>"
+ " <service type=\"compute\" name=\"nova\">"
+ " <endpoints_links/>"
+ " <endpoint"
+ " adminURL=\"http://23.253.72.207:8774/v2/fc394f2ab2df4114bde39905f800dc57\""
+ " region=\"RegionOne\""
+ " publicURL=\"http://23.253.72.207:8774/v2/fc394f2ab2df4114bde39905f800dc57\""
+ " internalURL=\"http://23.253.72.207:8774/v2/fc394f2ab2df4114bde39905f800dc57\""
+ " id=\"2dad48f09e2a447a9bf852bcd93548ef\""
+ " />"
+ " </service>"
+ " <service type=\"network\" name=\"neutron\">"
+ " <endpoints_links/>"
+ " <endpoint"
+ " adminURL=\"http://23.253.72.207:9696/\""
+ " region=\"RegionOne\""
+ " publicURL=\"http://23.253.72.207:9696/\""
+ " internalURL=\"http://23.253.72.207:9696/\""
+ " id=\"97c526db8d7a4c88bbb8d68db1bdcdb8\""
+ " />"
+ " </service>"
+ " <service type=\"volumev2\" name=\"cinder\">"
+ " <endpoints_links/>"
+ " <endpoint"
+ " adminURL=\"http://23.253.72.207:8776/v2/fc394f2ab2df4114bde39905f800dc57\""
+ " region=\"RegionOne\""
+ " publicURL=\"http://23.253.72.207:8776/v2/fc394f2ab2df4114bde39905f800dc57\""
+ " internalURL=\"http://23.253.72.207:8776/v2/fc394f2ab2df4114bde39905f800dc57\""
+ " id=\"93f86dfcbba143a39a33d0c2cd424870\""
+ " />"
+ " </service>"
+ " <service type=\"computev3\" name=\"nova\">"
+ " <endpoints_links/>"
+ " <endpoint"
+ " adminURL=\"http://23.253.72.207:8774/v3\""
+ " region=\"RegionOne\""
+ " publicURL=\"http://23.253.72.207:8774/v3\""
+ " internalURL=\"http://23.253.72.207:8774/v3\""
+ " id=\"3eb274b12b1d47b2abc536038d87339e\""
+ " />"
+ " </service>"
+ " <service type=\"s3\" name=\"s3\">"
+ " <endpoints_links/>"
+ " <endpoint adminURL=\"http://23.253.72.207:3333\""
+ " region=\"RegionOne\""
+ " publicURL=\"http://23.253.72.207:3333\""
+ " internalURL=\"http://23.253.72.207:3333\""
+ " id=\"957f1e54afc64d33a62099faa5e980a2\""
+ " />"
+ " </service>"
+ " <service type=\"image\" name=\"glance\">"
+ " <endpoints_links/>"
+ " <endpoint adminURL=\"http://23.253.72.207:9292\""
+ " region=\"RegionOne\""
+ " publicURL=\"http://23.253.72.207:9292\""
+ " internalURL=\"http://23.253.72.207:9292\""
+ " id=\"27d5749f36864c7d96bebf84a5ec9767\""
+ " />"
+ " </service>"
+ " <service type=\"volume\" name=\"cinder\">"
+ " <endpoints_links/>"
+ " <endpoint"
+ " adminURL=\"http://23.253.72.207:8776/v1/fc394f2ab2df4114bde39905f800dc57\""
+ " region=\"RegionOne\""
+ " publicURL=\"http://23.253.72.207:8776/v1/fc394f2ab2df4114bde39905f800dc57\""
+ " internalURL=\"http://23.253.72.207:8776/v1/fc394f2ab2df4114bde39905f800dc57\""
+ " id=\"37c83a2157f944f1972e74658aa0b139\""
+ " />"
+ " </service>"
+ " <service type=\"ec2\" name=\"ec2\">"
+ " <endpoints_links/>"
+ " <endpoint"
+ " adminURL=\"http://23.253.72.207:8773/services/Admin\""
+ " region=\"RegionOne\""
+ " publicURL=\"http://23.253.72.207:8773/services/Cloud\""
+ " internalURL=\"http://23.253.72.207:8773/services/Cloud\""
+ " id=\"289b59289d6048e2912b327e5d3240ca\""
+ " />"
+ " </service>"
+ " <service type=\"object-store\" name=\"swift\">"
+ " <endpoints_links/>"
+ " <endpoint adminURL=\"http://23.253.72.207:8080\""
+ " region=\"RegionOne\""
+ " publicURL=\"http://23.253.72.207:8080/v1/AUTH_fc394f2ab2df4114bde39905f800dc57\""
+ " internalURL=\"http://23.253.72.207:8080/v1/AUTH_fc394f2ab2df4114bde39905f800dc57\""
+ " id=\"16b76b5e5b7d48039a6e4cc3129545f3\""
+ " />"
+ " </service>"
+ " <service type=\"identity\" name=\"keystone\">"
+ " <endpoints_links/>"
+ " <endpoint"
+ " adminURL=\"http://23.253.72.207:35357/v2.0\""
+ " region=\"RegionOne\""
+ " publicURL=\"http://23.253.72.207:5000/v2.0\""
+ " internalURL=\"http://23.253.72.207:5000/v2.0\""
+ " id=\"26af053673df4ef3a2340c4239e21ea2\""
+ " />"
+ " </service>"
+ " </serviceCatalog>"
+ " <user username=\"demo\" id=\"9a6590b2ab024747bc2167c4e064d00d\""
+ " name=\"demo\">"
+ " <roles_links/>"
+ " <role name=\"Member\"/>"
+ " <role name=\"anotherrole\"/>"
+ " </user>"
+ " <metadata is_admin=\"0\">"
+ " <roles>"
+ " <role>7598ac3c634d4c3da4b9126a5f67ca2b</role>"
+ " <role>f95c0ab82d6045d9805033ee1fbc80d4</role>"
+ " </roles>"
+ " </metadata>"
+ "</access>";
private static String NETWORKCOLLECTIONRESPONSE =
"<?xml version='1.0' encoding='UTF-8'?>"
+ "<networks xmlns=\"http://openstack.org/quantum/api/v2.0\""
+ " xmlns:provider=\"http://docs.openstack.org/ext/provider/api/v1.0\""
+ " xmlns:quantum=\"http://openstack.org/quantum/api/v2.0\""
+ " xmlns:router=\"http://docs.openstack.org/ext/neutron/router/api/v1.0\""
+ " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">"
+ " <network>"
+ " <status>ACTIVE</status>"
+ " <subnets>"
+ " <subnet>54d6f61d-db07-451c-9ab3-b9609b6b6f0b</subnet>"
+ " </subnets>"
+ " <name>private-network</name>"
+ " <provider:physical_network xsi:nil=\"true\"/>"
+ " <admin_state_up quantum:type=\"bool\">True</admin_state_up>"
+ " <tenant_id>4fd44f30292945e481c7b8a0c8908869</tenant_id>"
+ " <provider:network_type>local</provider:network_type>"
+ " <router:external quantum:type=\"bool\">True</router:external>"
+ " <shared quantum:type=\"bool\">True</shared>"
+ " <id>d32019d3-bc6e-4319-9c1d-6722fc136a22</id>"
+ " <provider:segmentation_id xsi:nil=\"true\"/>"
+ " </network>"
+ " <network>"
+ " <status>ACTIVE</status>"
+ " <subnets>"
+ " <subnet>08eae331-0402-425a-923c-34f7cfe39c1b</subnet>"
+ " <subnet>08eae331-0402-425a-923c-34f7cfe39c1c</subnet>"
+ " </subnets>"
+ " <name>private</name>"
+ " <provider:physical_network xsi:nil=\"true\"/>"
+ " <admin_state_up quantum:type=\"bool\">True</admin_state_up>"
+ " <tenant_id>26a7980765d0414dbc1fc1f88cdb7e6e</tenant_id>"
+ " <provider:network_type>local</provider:network_type>"
+ " <router:external quantum:type=\"bool\">True</router:external>"
+ " <shared quantum:type=\"bool\">True</shared>"
+ " <id>db193ab3-96e3-4cb3-8fc5-05f4296d0324</id>"
+ " <provider:segmentation_id xsi:nil=\"true\"/>"
+ " </network>"
+ "</networks>";
private static String NETWORKCOLLECTIONMALFORMEDRESPONSE =
"<?xml version='1.0' encoding='UTF-8'?>"
+ "<networks xmlns=\"http://openstack.org/quantum/api/v2.0\""
+ " xmlns:provider=\"http://docs.openstack.org/ext/provider/api/v1.0\""
+ " xmlns:quantum=\"http://openstack.org/quantum/api/v2.0\""
+ " xmlns:router=\"http://docs.openstack.org/ext/neutron/router/api/v1.0\""
+ " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">"
+ " <network>"
+ " <status>ACTIVE</status>"
+ " <subnets>"
+ " <subnet>54d6f61d-db07-451c-9ab3-b9609b6b6f0b</subnet>"
+ " </subnets>"
+ " <name>private-network</name>"
+ " <provider:physical_network xsi:nil=\"true\"/>"
+ " <admin_state_up quantum:type=\"bool\">True</admin_state_up>"
+ " <tenant_id>4fd44f30292945e481c7b8a0c8908869</tenant_id>"
+ " <provider:network_type>local</provider:network_type>"
+ " <router:external quantum:type=\"bool\">True</router:external>"
+ " <shared quantum:type=\"bool\">True</shared>"
+ " <id>d32019d3-bc6e-4319-9c1d-6722fc136a22</id>"
+ " <provider:segmentation_id xsi:nil=\"true\"/>"
+ " </network>"
+ " <network>"
+ " <status>ACTIVE</status>"
+ " <subnets>"
+ " <subnet>08eae331-0402-425a-923c-34f7cfe39c1b</subnet>"
+ " </subnets>"
+ " <name>private</name>"
+ " <provider:physical_network xsi:nil=\"true\"/>"
+ " <admin_state_up quantum:type=\"bool\">True</admin_state_up>"
+ " <tenant_id>26a7980765d0414dbc1fc1f88cdb7e6e</tenant_id>"
+ " <provider:network_type>local</provider:network_type>"
+ " <router:external quantum:type=\"bool\">True</router:external>"
+ " <shared quantum:type=\"bool\">True</shared>"
+ " <provider:segmentation_id xsi:nil=\"true\"/>"
+ " </network>"
+ "</networks>";
private static String NETWORKRESPONSE =
"<?xml version='1.0' encoding='UTF-8'?>"
+ "<network xmlns=\"http://openstack.org/quantum/api/v2.0\""
+ " xmlns:provider=\"http://docs.openstack.org/ext/provider/api/v1.0\""
+ " xmlns:quantum=\"http://openstack.org/quantum/api/v2.0\""
+ " xmlns:router=\"http://docs.openstack.org/ext/neutron/router/api/v1.0\""
+ " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">"
+ " <status>ACTIVE</status>"
+ " <subnets>"
+ " <subnet>54d6f61d-db07-451c-9ab3-b9609b6b6f0b</subnet>"
+ " <subnet>54d6f61d-db07-451c-9ab3-b9609b6b6f0c</subnet>"
+ " <subnet>54d6f61d-db07-451c-9ab3-b9609b6b6f0d</subnet>"
+ " </subnets>"
+ " <name>private-network</name>"
+ " <provider:physical_network xsi:nil=\"true\"/>"
+ " <admin_state_up quantum:type=\"bool\">True</admin_state_up>"
+ " <tenant_id>4fd44f30292945e481c7b8a0c8908869</tenant_id>"
+ " <provider:network_type>local</provider:network_type>"
+ " <router:external quantum:type=\"bool\">True</router:external>"
+ " <shared quantum:type=\"bool\">True</shared>"
+ " <id>d32019d3-bc6e-4319-9c1d-6722fc136a22</id>"
+ " <provider:segmentation_id xsi:nil=\"true\"/>"
+ "</network>";
private static String NETWORKMALFORMEDRESPONSE =
"<?xml version='1.0' encoding='UTF-8'?>"
+ "<network xmlns=\"http://openstack.org/quantum/api/v2.0\""
+ " xmlns:provider=\"http://docs.openstack.org/ext/provider/api/v1.0\""
+ " xmlns:quantum=\"http://openstack.org/quantum/api/v2.0\""
+ " xmlns:router=\"http://docs.openstack.org/ext/neutron/router/api/v1.0\""
+ " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">"
+ " <status>ACTIVE</status>"
+ " <subnets>"
+ " <subnet>54d6f61d-db07-451c-9ab3-b9609b6b6f0b</subnet>"
+ " </subnets>"
+ " <provider:physical_network xsi:nil=\"true\"/>"
+ " <admin_state_up quantum:type=\"bool\">True</admin_state_up>"
+ " <tenant_id>4fd44f30292945e481c7b8a0c8908869</tenant_id>"
+ " <provider:network_type>local</provider:network_type>"
+ " <router:external quantum:type=\"bool\">True</router:external>"
+ " <shared quantum:type=\"bool\">True</shared>"
+ " <provider:segmentation_id xsi:nil=\"true\"/>"
+ "</network>";
private static String SUBNETCOLLECTIONRESPONSE =
"<?xml version='1.0' encoding='UTF-8'?>"
+ "<subnets xmlns=\"http://openstack.org/quantum/api/v2.0\""
+ " xmlns:quantum=\"http://openstack.org/quantum/api/v2.0\""
+ " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">"
+ " <subnet>"
+ " <name>private-subnet</name>"
+ " <enable_dhcp quantum:type=\"bool\">True</enable_dhcp>"
+ " <network_id>db193ab3-96e3-4cb3-8fc5-05f4296d0324</network_id>"
+ " <tenant_id>26a7980765d0414dbc1fc1f88cdb7e6e</tenant_id>"
+ " <dns_nameservers quantum:type=\"list\"/>"
+ " <allocation_pools>"
+ " <allocation_pool>"
+ " <start>10.0.0.2</start>"
+ " <end>10.0.0.254</end>"
+ " </allocation_pool>"
+ " </allocation_pools>"
+ " <host_routes quantum:type=\"list\"/>"
+ " <ip_version quantum:type=\"long\">4</ip_version>"
+ " <gateway_ip>10.0.0.1</gateway_ip>"
+ " <cidr>10.0.0.0/24</cidr>"
+ " <id>08eae331-0402-425a-923c-34f7cfe39c1b</id>"
+ " </subnet>"
+ " <subnet>"
+ " <name>my_subnet</name>"
+ " <enable_dhcp quantum:type=\"bool\">True</enable_dhcp>"
+ " <network_id>d32019d3-bc6e-4319-9c1d-6722fc136a22</network_id>"
+ " <tenant_id>4fd44f30292945e481c7b8a0c8908869</tenant_id>"
+ " <dns_nameservers quantum:type=\"list\"/>"
+ " <allocation_pools>"
+ " <allocation_pool>"
+ " <start>192.0.0.2</start>"
+ " <end>192.255.255.254</end>"
+ " </allocation_pool>"
+ " </allocation_pools>"
+ " <host_routes quantum:type=\"list\"/>"
+ " <ip_version quantum:type=\"long\">4</ip_version>"
+ " <gateway_ip>192.0.0.1</gateway_ip>"
+ " <cidr>192.0.0.0/8</cidr>"
+ " <id>54d6f61d-db07-451c-9ab3-b9609b6b6f0b</id>"
+ " </subnet>"
+ "</subnets>";
private static String SUBNETCOLLECTIONMALFORMEDRESPONSE =
"<?xml version='1.0' encoding='UTF-8'?>"
+ "<subnets xmlns=\"http://openstack.org/quantum/api/v2.0\""
+ " xmlns:quantum=\"http://openstack.org/quantum/api/v2.0\""
+ " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">"
+ " <subnet>"
+ " <name>private-subnet</name>"
+ " <enable_dhcp quantum:type=\"bool\">True</enable_dhcp>"
+ " <network_id>db193ab3-96e3-4cb3-8fc5-05f4296d0324</network_id>"
+ " <tenant_id>26a7980765d0414dbc1fc1f88cdb7e6e</tenant_id>"
+ " <dns_nameservers quantum:type=\"list\"/>"
+ " <allocation_pools>"
+ " <allocation_pool>"
+ " <start>10.0.0.2</start>"
+ " <end>10.0.0.254</end>"
+ " </allocation_pool>"
+ " </allocation_pools>"
+ " <host_routes quantum:type=\"list\"/>"
+ " <ip_version quantum:type=\"long\">4</ip_version>"
+ " <gateway_ip>10.0.0.1</gateway_ip>"
+ " <cidr>10.0.0.0/24</cidr>"
+ " <id>08eae331-0402-425a-923c-34f7cfe39c1b</id>"
+ " </subnet>"
+ " <subnet>"
+ " <enable_dhcp quantum:type=\"bool\">True</enable_dhcp>"
+ " <network_id>d32019d3-bc6e-4319-9c1d-6722fc136a22</network_id>"
+ " <tenant_id>4fd44f30292945e481c7b8a0c8908869</tenant_id>"
+ " <dns_nameservers quantum:type=\"list\"/>"
+ " <allocation_pools>"
+ " <allocation_pool>"
+ " <start>192.0.0.2</start>"
+ " <end>192.255.255.254</end>"
+ " </allocation_pool>"
+ " </allocation_pools>"
+ " <host_routes quantum:type=\"list\"/>"
+ " <ip_version quantum:type=\"long\">4</ip_version>"
+ " <gateway_ip>192.0.0.1</gateway_ip>"
+ " <cidr>192.0.0.0/8</cidr>"
+ " <id>54d6f61d-db07-451c-9ab3-b9609b6b6f0b</id>"
+ " </subnet>"
+ "</subnets>";
private static String SUBNETRESPONSE =
"<?xml version='1.0' encoding='UTF-8'?>"
+ "<subnet xmlns=\"http://openstack.org/quantum/api/v2.0\""
+ " xmlns:quantum=\"http://openstack.org/quantum/api/v2.0\""
+ " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">"
+ " <name>test_subnet_1</name>"
+ " <enable_dhcp quantum:type=\"bool\">True</enable_dhcp>"
+ " <network_id>d32019d3-bc6e-4319-9c1d-6722fc136a22</network_id>"
+ " <tenant_id>4fd44f30292945e481c7b8a0c8908869</tenant_id>"
+ " <dns_nameservers quantum:type=\"list\"/>"
+ " <allocation_pools>"
+ " <allocation_pool>"
+ " <start>192.0.0.2</start>"
+ " <end>192.255.255.254</end>"
+ " </allocation_pool>"
+ " </allocation_pools>"
+ " <host_routes quantum:type=\"list\"/>"
+ " <ip_version quantum:type=\"long\">4</ip_version>"
+ " <gateway_ip>192.0.0.1</gateway_ip>"
+ " <cidr>192.0.0.0/8</cidr>"
+ " <id>54d6f61d-db07-451c-9ab3-b9609b6b6f0b</id>"
+ "</subnet>";
private static String SUBNETMALFORMEDRESPONSE =
"<?xml version='1.0' encoding='UTF-8'?>"
+ "<subnet xmlns=\"http://openstack.org/quantum/api/v2.0\""
+ " xmlns:quantum=\"http://openstack.org/quantum/api/v2.0\""
+ " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">"
+ " <name>test_subnet_1</name>"
+ " <enable_dhcp quantum:type=\"bool\">True</enable_dhcp>"
+ " <tenant_id>4fd44f30292945e481c7b8a0c8908869</tenant_id>"
+ " <network_id>d32019d3-bc6e-4319-9c1d-6722fc136a22</network_id>"
+ " <dns_nameservers quantum:type=\"list\"/>"
+ " <allocation_pools>"
+ " <allocation_pool>"
+ " <start>192.0.0.2</start>"
+ " <end>192.255.255.254</end>"
+ " </allocation_pool>"
+ " </allocation_pools>"
+ " <host_routes quantum:type=\"list\"/>"
+ " <ip_version quantum:type=\"long\">4</ip_version>"
+ " <gateway_ip>192.0.0.1</gateway_ip>"
+ " <cidr>459.0.0.0/8</cidr>"
+ " <id>54d6f61d-db07-451c-9ab3-b9609b6b6f0b</id>"
+ "</subnet>";
private static String STORAGECOLLECTIONRESPONSE =
"<?xml version='1.0' encoding='UTF-8'?>"
+ "<volumes xmlns:atom=\"http://www.w3.org/2005/Atom\""
+ " xmlns=\"http://docs.openstack.org/api/openstack-block-storage/2.0/content\">"
+ " <volume name=\"vol-004\" id=\"45baf976-c20a-4894-a7c3-c94b7376bf55\">"
+ " <attachments/>"
+ " <metadata/>"
+ " </volume>"
+ " <volume name=\"vol-003\" id=\"5aa119a8-d25b-45a7-8d1b-88e127885635\">"
+ " <attachments/>"
+ " <metadata/>"
+ " </volume>"
+ "</volumes>";
private static String STORAGECOLLECTIONMALFORMEDRESPONSE =
"<?xml version='1.0' encoding='UTF-8'?>"
+ "<volumes xmlns:atom=\"http://www.w3.org/2005/Atom\""
+ " xmlns=\"http://docs.openstack.org/api/openstack-block-storage/2.0/content\">"
+ " <volume name=\"vol-004\" id=\"45baf976-c20a-4894-a7c3-c94b7376bf55\">"
+ " <attachments/>"
+ " <metadata/>"
+ " </volume>"
+ " <volume name=\"vol-003\" id=\"5aa119a8-d25b-45a7-8d1b-88e127885635\">"
+ " <attachments/>"
+ " <metadata/>"
+ " </volume>"
+ "</volumes>";
private static String STORAGERESPONSE =
"<?xml version='1.0' encoding='UTF-8'?>"
+ "<volume"
+ " xmlns:os-vol-image-meta=\"http://docs.openstack.org/openstack-block-storage/2.0/content/Volume_Image_Metadata.html\""
+ " xmlns:os-vol-tenant-attr=\"http://docs.openstack.org/openstack-block-storage/2.0/content/Volume_Tenant_Attribute.html\""
+ " xmlns:os-vol-host-attr=\"http://docs.openstack.org/openstack-block-storage/2.0/content/Volume_Host_Attribute.html\""
+ " xmlns:atom=\"http://www.w3.org/2005/Atom\""
+ " xmlns=\"http://docs.openstack.org/api/openstack-block-storage/2.0/content\""
+ " status=\"available\" name=\"vol-003\" availability_zone=\"nova\""
+ " bootable=\"false\" created_at=\"2013-02-25 02:40:21\""
+ " description=\"This is yet, another volume.\" volume_type=\"None\""
+ " source_volid=\"None\" snapshot_id=\"None\""
+ " id=\"5aa119a8-d25b-45a7-8d1b-88e127885635\" size=\"1\""
+ " os-vol-tenant-attr:tenant_id=\"0c2eba2c5af04d3f9e9d0d410b371fde\""
+ " os-vol-host-attr:host=\"ip-10-168-107-25\">"
+ " <attachments/>"
+ " <metadata>"
+ " <meta key=\"contents\">not junk</meta>"
+ " </metadata>"
+ "</volume>";
private static String IMAGECOLLECTIONRESPONSE =
"{"
+ " \"images\": ["
+ " {"
+ " \"status\": \"active\","
+ " \"name\": \"cirros-0.3.2-x86_64-disk\","
+ " \"tags\": [],"
+ " \"container_format\": \"bare\","
+ " \"created_at\": \"2014-11-07T17:07:06Z\","
+ " \"disk_format\": \"qcow2\","
+ " \"updated_at\": \"2014-11-07T17:19:09Z\","
+ " \"visibility\": \"public\","
+ " \"self\": \"/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27\","
+ " \"min_disk\": 0,"
+ " \"protected\": false,"
+ " \"id\": \"1bea47ed-f6a9-463b-b423-14b9cca9ad27\","
+ " \"file\": \"/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27/file\","
+ " \"checksum\": \"64d7c1cd2b6f60c92c14662941cb7913\","
+ " \"owner\": \"5ef70662f8b34079a6eddb8da9d75fe8\","
+ " \"size\": 13167616,"
+ " \"min_ram\": 0,"
+ " \"schema\": \"/v2/schemas/image\""
+ " },"
+ " {"
+ " \"status\": \"active\","
+ " \"name\": \"F17-x86_64-cfntools\","
+ " \"tags\": [],"
+ " \"container_format\": \"bare\","
+ " \"created_at\": \"2014-10-30T08:23:39Z\","
+ " \"disk_format\": \"qcow2\","
+ " \"updated_at\": \"2014-11-03T16:40:10Z\","
+ " \"visibility\": \"public\","
+ " \"self\": \"/v2/images/781b3762-9469-4cec-b58d-3349e5de4e9c\","
+ " \"min_disk\": 0,"
+ " \"protected\": false,"
+ " \"id\": \"781b3762-9469-4cec-b58d-3349e5de4e9c\","
+ " \"file\": \"/v2/images/781b3762-9469-4cec-b58d-3349e5de4e9c/file\","
+ " \"checksum\": \"afab0f79bac770d61d24b4d0560b5f70\","
+ " \"owner\": \"5ef70662f8b34079a6eddb8da9d75fe8\","
+ " \"size\": 476704768,"
+ " \"min_ram\": 0,"
+ " \"schema\": \"/v2/schemas/image\""
+ " }"
+ " ],"
+ " \"schema\": \"/v2/schemas/images\","
+ " \"first\": \"/v2/images\""
+ "}";
private static String IMAGECOLLECTIONMALFORMEDRESPONSE =
"{"
+ " \"images\": ["
+ " {"
+ " \"status\": \"active\","
+ " \"name\": \"cirros-0.3.2-x86_64-disk\","
+ " \"tags\": [],"
+ " \"container_format\": \"bare\","
+ " \"created_at\": \"2014-11-07T17:07:06Z\","
+ " \"disk_format\": \"qcow2\","
+ " \"updated_at\": \"2014-11-07T17:19:09Z\","
+ " \"visibility\": \"public\","
+ " \"self\": \"/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27\","
+ " \"min_disk\": 0,"
+ " \"protected\": false,"
+ " \"id\": \"1bea47ed-f6a9-463b-b423-14b9cca9ad27\","
+ " \"file\": \"/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27/file\","
+ " \"checksum\": \"64d7c1cd2b6f60c92c14662941cb7913\","
+ " \"owner\": \"5ef70662f8b34079a6eddb8da9d75fe8\","
+ " \"min_ram\": 0,"
+ " \"schema\": \"/v2/schemas/image\""
+ " },"
+ " {"
+ " \"status\": \"active\","
+ " \"tags\": [],"
+ " \"container_format\": \"bare\","
+ " \"created_at\": \"2014-10-30T08:23:39Z\","
+ " \"disk_format\": \"qcow2\","
+ " \"updated_at\": \"2014-11-03T16:40:10Z\","
+ " \"visibility\": \"public\","
+ " \"self\": \"/v2/images/781b3762-9469-4cec-b58d-3349e5de4e9c\","
+ " \"min_disk\": 0,"
+ " \"protected\": false,"
+ " \"id\": \"781b3762-9469-4cec-b58d-3349e5de4e9c\","
+ " \"file\": \"/v2/images/781b3762-9469-4cec-b58d-3349e5de4e9c/file\","
+ " \"checksum\": \"afab0f79bac770d61d24b4d0560b5f70\","
+ " \"owner\": \"5ef70662f8b34079a6eddb8da9d75fe8\","
+ " \"size\": 476704768,"
+ " \"min_ram\": 0,"
+ " \"schema\": \"/v2/schemas/image\""
+ " }"
+ " ],"
+ " \"schema\": \"/v2/schemas/images\","
+ " \"first\": \"/v2/images\""
+ "}";
private static String IMAGERESPONSE =
"{"
+ " \"status\": \"active\","
+ " \"name\": \"cirros-0.3.2-x86_64-disk\","
+ " \"tags\": [],"
+ " \"container_format\": \"bare\","
+ " \"created_at\": \"2014-05-05T17:15:10Z\","
+ " \"disk_format\": \"qcow2\","
+ " \"updated_at\": \"2014-05-05T17:15:11Z\","
+ " \"visibility\": \"public\","
+ " \"self\": \"/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27\","
+ " \"min_disk\": 0,"
+ " \"protected\": false,"
+ " \"id\": \"1bea47ed-f6a9-463b-b423-14b9cca9ad27\","
+ " \"file\": \"/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27/file\","
+ " \"checksum\": \"64d7c1cd2b6f60c92c14662941cb7913\","
+ " \"owner\": \"5ef70662f8b34079a6eddb8da9d75fe8\","
+ " \"size\": 13167616,"
+ " \"min_ram\": 0,"
+ " \"schema\": \"/v2/schemas/image\""
+ "}";
private static String IMAGEMALFORMEDRESPONSE =
"{"
+ " \"status\": \"active\","
+ " \"name\": \"cirros-0.3.2-x86_64-disk\","
+ " \"tags\": [],"
+ " \"container_format\": \"bare\","
+ " \"created_at\": \"2014-05-05T17:15:10Z\","
+ " \"disk_format\": \"qcow2\","
+ " \"updated_at\": \"2014-05-05T17:15:11Z\","
+ " \"visibility\": \"public\","
+ " \"self\": \"/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27\","
+ " \"min_disk\": 0,"
+ " \"protected\": false,"
+ " \"file\": \"/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27/file\","
+ " \"checksum\": \"64d7c1cd2b6f60c92c14662941cb7913\","
+ " \"owner\": \"5ef70662f8b34079a6eddb8da9d75fe8\","
+ " \"size\": 13167616,"
+ " \"min_ram\": 0,"
+ " \"schema\": \"/v2/schemas/image\""
+ "}";
private static String STORAGEMALFORMEDRESPONSE =
"<?xml version='1.0' encoding='UTF-8'?>"
+ "<volume"
+ " xmlns:os-vol-image-meta=\"http://docs.openstack.org/openstack-block-storage/2.0/content/Volume_Image_Metadata.html\""
+ " xmlns:os-vol-tenant-attr=\"http://docs.openstack.org/openstack-block-storage/2.0/content/Volume_Tenant_Attribute.html\""
+ " xmlns:os-vol-host-attr=\"http://docs.openstack.org/openstack-block-storage/2.0/content/Volume_Host_Attribute.html\""
+ " xmlns:atom=\"http://www.w3.org/2005/Atom\""
+ " xmlns=\"http://docs.openstack.org/api/openstack-block-storage/2.0/content\""
+ " status=\"available\" name=\"vol-003\" availability_zone=\"nova\""
+ " bootable=\"false\" created_at=\"2013-02-25 02:40:21\""
+ " description=\"This is yet, another volume.\" volume_type=\"None\""
+ " source_volid=\"None\" snapshot_id=\"None\""
+ " id=\"5aa119a8-d25b-45a7-8d1b-88e127885635\""
+ " os-vol-tenant-attr:tenant_id=\"0c2eba2c5af04d3f9e9d0d410b371fde\""
+ " os-vol-host-attr:host=\"ip-10-168-107-25\">"
+ " <attachments/>"
+ " <metadata>"
+ " <meta key=\"contents\">not junk</meta>"
+ " </metadata>"
+ "</volume>";
private static String COMPUTECOLLECTIONRESPONSE =
"<?xml version='1.0' encoding='UTF-8'?>"
+ "<servers xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns=\"http://docs.openstack.org/compute/api/v1.1\">"
+ " <server name=\"new-server-test\" id=\"b626796d-d585-4874-b178-78c65289bba4\">"
+ " <atom:link href=\"http://openstack.example.com/v2/openstack/servers/b626796d-d585-4874-b178-78c65289bba4\" rel=\"self\"/>"
+ " <atom:link href=\"http://openstack.example.com/openstack/servers/b626796d-d585-4874-b178-78c65289bba4\" rel=\"bookmark\"/>"
+ " </server>"
+ "</servers>";
private static String COMPUTECOLLECTIONMALFORMEDRESPONSE =
"<?xml version='1.0' encoding='UTF-8'?>"
+ "<servers xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns=\"http://docs.openstack.org/compute/api/v1.1\">"
+ " <server id=\"b626796d-d585-4874-b178-78c65289bba4\">"
+ " <atom:link href=\"http://openstack.example.com/v2/openstack/servers/b626796d-d585-4874-b178-78c65289bba4\" rel=\"self\"/>"
+ " <atom:link href=\"http://openstack.example.com/openstack/servers/b626796d-d585-4874-b178-78c65289bba4\" rel=\"bookmark\"/>"
+ " </server>"
+ "</servers>";
private static String COMPUTERESPONSE =
"<?xml version='1.0' encoding='UTF-8'?>"
+ "<server xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns=\"http://docs.openstack.org/compute/api/v1.1\" status=\"ACTIVE\" updated=\"2012-08-20T21:11:10Z\" hostId=\"1746536de20daadad89a6fab8d6968b1214b0ba9fb37b29e7098e0b9\" name=\"new-server-test\" created=\"2012-08-20T21:11:10Z\" userId=\"fake\" tenantId=\"openstack\" accessIPv4=\"\" accessIPv6=\"\" progress=\"0\" id=\"3f9f7d18-aaf3-4703-b368-ea9b4d609c95\">"
+ " <image id=\"70a599e0-31e7-49b7-b260-868f441e862b\">"
+ " <atom:link href=\"http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b\" rel=\"bookmark\"/>"
+ " </image>"
+ " <flavor id=\"1\">"
+ " <atom:link href=\"http://openstack.example.com/openstack/flavors/1\" rel=\"bookmark\"/>"
+ " </flavor>"
+ " <metadata>"
+ " <meta key=\"My Server Name\">Apache1</meta>"
+ " </metadata>"
+ " <addresses>"
+ " <network id=\"private\">"
+ " <ip version=\"4\" addr=\"192.168.0.3\"/>"
+ " </network>"
+ " </addresses>"
+ " <atom:link href=\"http://openstack.example.com/v2/openstack/servers/3f9f7d18-aaf3-4703-b368-ea9b4d609c95\" rel=\"self\"/>"
+ " <atom:link href=\"http://openstack.example.com/openstack/servers/3f9f7d18-aaf3-4703-b368-ea9b4d609c95\" rel=\"bookmark\"/>"
+ "</server>";
private static String COMPUTEMALFORMEDRESPONSE =
"<?xml version='1.0' encoding='UTF-8'?>"
+ "<server xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns=\"http://docs.openstack.org/compute/api/v1.1\" status=\"BOOH\" updated=\"2012-08-20T21:11:10Z\" hostId=\"1746536de20daadad89a6fab8d6968b1214b0ba9fb37b29e7098e0b9\" name=\"new-server-test\" created=\"2012-08-20T21:11:10Z\" userId=\"fake\" tenantId=\"openstack\" accessIPv4=\"\" accessIPv6=\"\" progress=\"0\" id=\"3f9f7d18-aaf3-4703-b368-ea9b4d609c95\">"
+ " <image id=\"70a599e0-31e7-49b7-b260-868f441e862b\">"
+ " <atom:link href=\"http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b\" rel=\"bookmark\"/>"
+ " </image>"
+ " <flavor id=\"1\">"
+ " <atom:link href=\"http://openstack.example.com/openstack/flavors/1\" rel=\"bookmark\"/>"
+ " </flavor>"
+ " <metadata>"
+ " <meta key=\"My Server Name\">Apache1</meta>"
+ " </metadata>"
+ " <addresses>"
+ " <network id=\"private\">"
+ " <ip version=\"4\" addr=\"192.168.0.3\"/>"
+ " </network>"
+ " </addresses>"
+ " <atom:link href=\"http://openstack.example.com/v2/openstack/servers/3f9f7d18-aaf3-4703-b368-ea9b4d609c95\" rel=\"self\"/>"
+ " <atom:link href=\"http://openstack.example.com/openstack/servers/3f9f7d18-aaf3-4703-b368-ea9b4d609c95\" rel=\"bookmark\"/>"
+ "</server>";
private static String VOLUMEATTACHMENTRESPONSE =
"<?xml version='1.0' encoding='UTF-8'?>"
+ "<volumeAttachments>"
+ " <volumeAttachment device=\"/dev/sdd\" serverId=\"4335bab6-6086-4247-8274-8b8b048edaaa\" id=\"a26887c6-c47b-4654-abb5-dfadf7d3f803\" volumeId=\"a26887c6-c47b-4654-abb5-dfadf7d3f803\"/>"
+ " <volumeAttachment device=\"/dev/sdc\" serverId=\"4335bab6-6086-4247-8274-8b8b048edaaa\" id=\"a26887c6-c47b-4654-abb5-dfadf7d3f804\" volumeId=\"a26887c6-c47b-4654-abb5-dfadf7d3f804\"/>"
+ "</volumeAttachments>";
private static String VOLUMEATTACHMENTMALFORMEDRESPONSE =
"<?xml version='1.0' encoding='UTF-8'?>"
+ "<volumeAttachments>"
+ " <volumeAttachment device=\"/dev/sdd\" serverId=\"4335bab6-6086-4247-8274-8b8b048edaaa\" id=\"a26887c6-c47b-4654-abb5-dfadf7d3f803\" volumeId=\"a26887c6-c47b-4654-abb5-dfadf7d3f803\"/>"
+ " <volumeAttachment serverId=\"4335bab6-6086-4247-8274-8b8b048edaaa\" id=\"a26887c6-c47b-4654-abb5-dfadf7d3f804\" volumeId=\"a26887c6-c47b-4654-abb5-dfadf7d3f804\"/>"
+ "</volumeAttachments>";
private static String VIRTUALINTERFACESRESPONSE =
"<?xml version='1.0' encoding='UTF-8'?>"
+ "<virtual_interfaces"
+ " xmlns:OS-EXT-VIF-NET=\"http://docs.openstack.org/compute/ext/extended-virtual-interfaces-net/api/v1.1\""
+ " xmlns=\"http://docs.openstack.org/compute/api/v1.1\">"
+ " <virtual_interface id=\"94edf7aa-565a-469a-8f45-656b4acf8229\""
+ " mac_address=\"fa:16:3e:7d:31:9a\""
+ " OS-EXT-VIF-NET:net_id=\"94edf7aa-565a-469a-8f45-656b4acf8230\"/>"
+ "</virtual_interfaces>";
private static String VIRTUALINTERFACESMALFORMEDRESPONSE =
"<?xml version='1.0' encoding='UTF-8'?>"
+ "<virtual_interfaces"
+ " xmlns:OS-EXT-VIF-NET=\"http://docs.openstack.org/compute/ext/extended-virtual-interfaces-net/api/v1.1\""
+ " xmlns=\"http://docs.openstack.org/compute/api/v1.1\">"
+ " <virtual_interface id=\"94edf7aa-565a-469a-8f45-656b4acf8229\""
+ " OS-EXT-VIF-NET:net_id=\"94edf7aa-565a-469a-8f45-656b4acf8230\"/>"
+ "</virtual_interfaces>";
private static String INSTANCETYPECOLLECTIONRESPONSE =
"<?xml version='1.0' encoding='UTF-8'?>"
+ "<flavors xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns=\"http://docs.openstack.org/compute/api/v1.1\">"
+ " <flavor name=\"m1.tiny\" id=\"1\">"
+ " <atom:link href=\"http://openstack.example.com/v2/openstack/flavors/1\" rel=\"self\"/>"
+ " <atom:link href=\"http://openstack.example.com/openstack/flavors/1\" rel=\"bookmark\"/>"
+ " </flavor>"
+ " <flavor name=\"m1.small\" id=\"2\">"
+ " <atom:link href=\"http://openstack.example.com/v2/openstack/flavors/2\" rel=\"self\"/>"
+ " <atom:link href=\"http://openstack.example.com/openstack/flavors/2\" rel=\"bookmark\"/>"
+ " </flavor>"
+ " <flavor name=\"m1.medium\" id=\"3\">"
+ " <atom:link href=\"http://openstack.example.com/v2/openstack/flavors/3\" rel=\"self\"/>"
+ " <atom:link href=\"http://openstack.example.com/openstack/flavors/3\" rel=\"bookmark\"/>"
+ " </flavor>"
+ " <flavor name=\"m1.large\" id=\"4\">"
+ " <atom:link href=\"http://openstack.example.com/v2/openstack/flavors/4\" rel=\"self\"/>"
+ " <atom:link href=\"http://openstack.example.com/openstack/flavors/4\" rel=\"bookmark\"/>"
+ " </flavor>"
+ " <flavor name=\"m1.xlarge\" id=\"5\">"
+ " <atom:link href=\"http://openstack.example.com/v2/openstack/flavors/5\" rel=\"self\"/>"
+ " <atom:link href=\"http://openstack.example.com/openstack/flavors/5\" rel=\"bookmark\"/>"
+ " </flavor>"
+ "</flavors>";
private static String INSTANCETYPECOLLECTIONMALFORMEDRESPONSE =
"<?xml version='1.0' encoding='UTF-8'?>"
+ "<flavors xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns=\"http://docs.openstack.org/compute/api/v1.1\">"
+ " <flavor name=\"m1.tiny\">"
+ " <atom:link href=\"http://openstack.example.com/v2/openstack/flavors/1\" rel=\"self\"/>"
+ " <atom:link href=\"http://openstack.example.com/openstack/flavors/1\" rel=\"bookmark\"/>"
+ " </flavor>"
+ " <flavor name=\"m1.small\" id=\"2\">"
+ " <atom:link href=\"http://openstack.example.com/v2/openstack/flavors/2\" rel=\"self\"/>"
+ " <atom:link href=\"http://openstack.example.com/openstack/flavors/2\" rel=\"bookmark\"/>"
+ " </flavor>"
+ " <flavor name=\"m1.medium\" id=\"3\">"
+ " <atom:link href=\"http://openstack.example.com/v2/openstack/flavors/3\" rel=\"self\"/>"
+ " <atom:link href=\"http://openstack.example.com/openstack/flavors/3\" rel=\"bookmark\"/>"
+ " </flavor>"
+ " <flavor name=\"m1.large\" id=\"4\">"
+ " <atom:link href=\"http://openstack.example.com/v2/openstack/flavors/4\" rel=\"self\"/>"
+ " <atom:link href=\"http://openstack.example.com/openstack/flavors/4\" rel=\"bookmark\"/>"
+ " </flavor>"
+ " <flavor name=\"m1.xlarge\" id=\"5\">"
+ " <atom:link href=\"http://openstack.example.com/v2/openstack/flavors/5\" rel=\"self\"/>"
+ " <atom:link href=\"http://openstack.example.com/openstack/flavors/5\" rel=\"bookmark\"/>"
+ " </flavor>"
+ "</flavors>";
private static String INSTANCETYPERESPONSE =
"<?xml version='1.0' encoding='UTF-8'?>"
+ "<flavor xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns=\"http://docs.openstack.org/compute/api/v1.1\" disk=\"1\" vcpus=\"1\" ram=\"512\" name=\"m1.tiny\" id=\"1\">"
+ " <atom:link href=\"http://openstack.example.com/v2/openstack/flavors/1\" rel=\"self\"/>"
+ " <atom:link href=\"http://openstack.example.com/openstack/flavors/1\" rel=\"bookmark\"/>"
+ "</flavor>";
private static String INSTANCETYPEMALFORMEDRESPONSE =
"<?xml version='1.0' encoding='UTF-8'?>"
+ "<flavor xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns=\"http://docs.openstack.org/compute/api/v1.1\" vcpus=\"1\" ram=\"512\" name=\"m1.tiny\" id=\"1\">"
+ " <atom:link href=\"http://openstack.example.com/v2/openstack/flavors/1\" rel=\"self\"/>"
+ " <atom:link href=\"http://openstack.example.com/openstack/flavors/1\" rel=\"bookmark\"/>"
+ "</flavor>";
private static String COMPUTEQUOTARESPONSE =
"<?xml version='1.0' encoding='UTF-8'?>"
+ "<quota_set id=\"fake_tenant\">"
+ " <cores>20</cores>"
+ " <fixed_ips>-1</fixed_ips>"
+ " <floating_ips>10</floating_ips>"
+ " <injected_file_content_bytes>10240</injected_file_content_bytes>"
+ " <injected_file_path_bytes>255</injected_file_path_bytes>"
+ " <injected_files>5</injected_files>"
+ " <instances>10</instances>"
+ " <key_pairs>100</key_pairs>"
+ " <metadata_items>128</metadata_items>"
+ " <ram>51200</ram>"
+ " <security_group_rules>20</security_group_rules>"
+ " <security_groups>10</security_groups>"
+ " <server_groups>10</server_groups>"
+ " <server_group_members>10</server_group_members>"
+ "</quota_set>";
private static String COMPUTEQUOTAMALFORMEDRESPONSE =
"<?xml version='1.0' encoding='UTF-8'?>"
+ "<quota_set id=\"fake_tenant\">"
+ " <cores>20</cores>"
+ " <fixed_ips>-1</fixed_ips>"
+ " <floating_ips>10</floating_ips>"
+ " <injected_file_content_bytes>10240</injected_file_content_bytes>"
+ " <injected_file_path_bytes>255</injected_file_path_bytes>"
+ " <injected_files>5</injected_files>"
+ " <instances>10</instances>"
+ " <key_pairs>100</key_pairs>"
+ " <metadata_items>128</metadata_items>"
+ " <security_group_rules>20</security_group_rules>"
+ " <security_groups>10</security_groups>"
+ " <server_groups>10</server_groups>"
+ " <server_group_members>10</server_group_members>"
+ "</quota_set>";
private static String STORAGEQUOTARESPONSE =
"<?xml version='1.0' encoding='UTF-8'?>"
+ "<limits xmlns:atom=\"http://www.w3.org/2005/Atom\""
+ " xmlns=\"http://docs.openstack.org/common/api/v1.0\">"
+ " <rates/>"
+ " <absolute>"
+ " <limit name=\"totalSnapshotsUsed\" value=\"0\"/>"
+ " <limit name=\"maxTotalVolumeGigabytes\" value=\"1000\"/>"
+ " <limit name=\"totalGigabytesUsed\" value=\"0\"/>"
+ " <limit name=\"maxTotalSnapshots\" value=\"10\"/>"
+ " <limit name=\"totalVolumesUsed\" value=\"0\"/>"
+ " <limit name=\"maxTotalVolumes\" value=\"10\"/>"
+ " </absolute>"
+ "</limits>";
private static String STORAGEQUOTAMALFORMEDRESPONSE =
"<?xml version='1.0' encoding='UTF-8'?>"
+ "<limits xmlns:atom=\"http://www.w3.org/2005/Atom\""
+ " xmlns=\"http://docs.openstack.org/common/api/v1.0\">"
+ " <rates/>"
+ " <absolute>"
+ " <limit name=\"totalSnapshotsUsed\" value=\"0\"/>"
+ " <limit name=\"maxTotalVolumeGigabytes\" value=\"1000\"/>"
+ " <limit name=\"totalGigabytesUsed\" value=\"0\"/>"
+ " <limit name=\"maxTotalSnapshots\" value=\"10\"/>"
+ " <limit name=\"totalVolumesUsed\" value=\"0\"/>"
+ " <limit name=\"maxTotalVolumes\" value=\"10\"/>"
+ " </absolute>"
+ "</limits>";
@Test
public void testParseAuthorizationResponse() {
String[] results;
OpenStackXMLParser parser = new OpenStackXMLParser();
try {
results = parser.parseAuthorizationResponse(AUTHORIZATIONRESPONSE);
assertEquals(6, results.length);
assertEquals("aaaaa-bbbbb-ccccc-dddd", results[0]);
assertEquals("demo", results[1]);
assertEquals("9a6590b2ab024747bc2167c4e064d00d", results[2]);
assertEquals(
"http://23.253.72.207:8774/v2/fc394f2ab2df4114bde39905f800dc57",
results[3]);
assertEquals(
"http://23.253.72.207:8776/v2/fc394f2ab2df4114bde39905f800dc57",
results[4]);
assertEquals("http://23.253.72.207:9696/", results[5]);
} catch (OCCIException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Test
public void testParseNetworkCollectionResponse() {
String[][] results;
OpenStackXMLParser parser = new OpenStackXMLParser();
try {
results =
parser.parseNetworkCollectionResponse(NETWORKCOLLECTIONRESPONSE);
assertEquals(2, results.length);
assertEquals(3, results[0].length);
assertEquals(4, results[1].length);
assertEquals("d32019d3-bc6e-4319-9c1d-6722fc136a22", results[0][0]);
assertEquals("private-network", results[0][1]);
assertEquals("54d6f61d-db07-451c-9ab3-b9609b6b6f0b", results[0][2]);
assertEquals("db193ab3-96e3-4cb3-8fc5-05f4296d0324", results[1][0]);
assertEquals("private", results[1][1]);
assertEquals("08eae331-0402-425a-923c-34f7cfe39c1b", results[1][2]);
assertEquals("08eae331-0402-425a-923c-34f7cfe39c1c", results[1][3]);
results =
parser.parseNetworkCollectionResponse(
NETWORKCOLLECTIONMALFORMEDRESPONSE);
fail();
} catch (OCCIException e) {
assertTrue(true);
}
}
@Test
public void testParseCreatedNetworkResponse() {
String[] results;
OpenStackXMLParser parser = new OpenStackXMLParser();
try {
results =
parser.parseCreatedNetworkResponse(NETWORKRESPONSE);
assertEquals(2, results.length);
assertEquals("d32019d3-bc6e-4319-9c1d-6722fc136a22", results[0]);
assertEquals("ACTIVE", results[1]);
results =
parser.parseCreatedNetworkResponse(
NETWORKMALFORMEDRESPONSE);
fail();
} catch (OCCIException e) {
assertTrue(true);
}
}
@Test
public void testParseSubnetCollectionResponse() {
NetworkCollection results;
OpenStackXMLParser parser = new OpenStackXMLParser();
try {
results =
parser.parseSubnetCollectionResponse(SUBNETCOLLECTIONRESPONSE);
assertEquals(2, results.getNetwork().size());
assertEquals("08eae331-0402-425a-923c-34f7cfe39c1b",
results.getNetwork().get(0).getHref());
assertEquals("54d6f61d-db07-451c-9ab3-b9609b6b6f0b",
results.getNetwork().get(1).getHref());
assertEquals("private-subnet",
results.getNetwork().get(0).getName());
assertEquals("my_subnet",
results.getNetwork().get(1).getName());
results =
parser.parseSubnetCollectionResponse(
SUBNETCOLLECTIONMALFORMEDRESPONSE);
fail();
} catch (OCCIException e) {
assertTrue(true);
}
}
@Test
public void testParseSubnetResponse() {
Network results;
OpenStackXMLParser parser = new OpenStackXMLParser();
try {
results =
parser.parseSubnetResponse(SUBNETRESPONSE);
assertEquals("192.0.0.0/8", results.getAddress());
assertEquals("54d6f61d-db07-451c-9ab3-b9609b6b6f0b",
results.getHref());
assertEquals("test_subnet_1", results.getName());
assertEquals("C", results.getSize());
results =
parser.parseSubnetResponse(
SUBNETMALFORMEDRESPONSE);
fail();
} catch (OCCIException e) {
assertTrue(true);
}
}
@Test
public void testParseStorageCollectionResponse() {
StorageCollection results;
OpenStackXMLParser parser = new OpenStackXMLParser();
try {
results =
parser.parseStorageCollectionResponse(STORAGECOLLECTIONRESPONSE);
assertEquals(2, results.getStorage().size());
assertEquals("45baf976-c20a-4894-a7c3-c94b7376bf55",
results.getStorage().get(0).getHref());
assertEquals("5aa119a8-d25b-45a7-8d1b-88e127885635",
results.getStorage().get(1).getHref());
assertEquals("vol-004",
results.getStorage().get(0).getName());
assertEquals("vol-003",
results.getStorage().get(1).getName());
results =
parser.parseStorageCollectionResponse(
STORAGECOLLECTIONMALFORMEDRESPONSE);
fail();
} catch (OCCIException e) {
assertTrue(true);
}
}
@Test
public void testParseStorageResponse() {
Storage results;
OpenStackXMLParser parser = new OpenStackXMLParser();
try {
results =
parser.parseStorageResponse(STORAGERESPONSE);
assertEquals("This is yet, another volume.",
results.getDescription());
assertEquals("5aa119a8-d25b-45a7-8d1b-88e127885635",
results.getHref());
assertEquals("vol-003", results.getName());
assertEquals("1", results.getSize());
assertEquals(StorageType.DATABLOCK, results.getType());
results =
parser.parseStorageResponse(
STORAGEMALFORMEDRESPONSE);
fail();
} catch (OCCIException e) {
assertTrue(true);
}
}
@Test
public void testParseImageCollectionResponse() {
StorageCollection results;
OpenStackXMLParser parser = new OpenStackXMLParser();
try {
results =
parser.parseImageCollectionResponse(IMAGECOLLECTIONRESPONSE);
assertEquals(2, results.getStorage().size());
assertEquals("1bea47ed-f6a9-463b-b423-14b9cca9ad27",
results.getStorage().get(0).getHref());
assertEquals("781b3762-9469-4cec-b58d-3349e5de4e9c",
results.getStorage().get(1).getHref());
assertEquals("cirros-0.3.2-x86_64-disk",
results.getStorage().get(0).getName());
assertEquals("F17-x86_64-cfntools",
results.getStorage().get(1).getName());
results =
parser.parseImageCollectionResponse(
IMAGECOLLECTIONMALFORMEDRESPONSE);
fail();
} catch (OCCIException e) {
assertTrue(true);
}
}
@Test
public void testParseImageResponse() {
Storage results;
OpenStackXMLParser parser = new OpenStackXMLParser();
try {
results =
parser.parseImageResponse(IMAGERESPONSE);
assertEquals("1bea47ed-f6a9-463b-b423-14b9cca9ad27",
results.getHref());
assertEquals("cirros-0.3.2-x86_64-disk", results.getName());
assertEquals("13167616", results.getSize());
assertEquals(StorageType.OS, results.getType());
results =
parser.parseImageResponse(IMAGEMALFORMEDRESPONSE);
fail();
} catch (OCCIException e) {
assertTrue(true);
}
}
@Test
public void testParseComputeCollectionResponse() {
ComputeCollection results;
OpenStackXMLParser parser = new OpenStackXMLParser();
try {
results =
parser.parseComputeCollectionResponse(COMPUTECOLLECTIONRESPONSE);
assertEquals(1, results.getCompute().size());
assertEquals("b626796d-d585-4874-b178-78c65289bba4",
results.getCompute().get(0).getHref());
assertEquals("new-server-test",
results.getCompute().get(0).getName());
results =
parser.parseComputeCollectionResponse(
COMPUTECOLLECTIONMALFORMEDRESPONSE);
fail();
} catch (OCCIException e) {
assertTrue(true);
}
}
@Test
public void testParseComputeResponse() {
Compute results;
OpenStackXMLParser parser = new OpenStackXMLParser();
try {
results =
parser.parseComputeResponse(COMPUTERESPONSE);
assertEquals("3f9f7d18-aaf3-4703-b368-ea9b4d609c95",
results.getHref());
assertEquals("new-server-test", results.getName());
assertEquals(ComputeState.ACTIVE, results.getState());
assertEquals("1", results.getInstanceType());
results =
parser.parseComputeResponse(
COMPUTEMALFORMEDRESPONSE);
fail();
} catch (OCCIException e) {
assertTrue(true);
}
}
@Test
public void testParseAttachedStoragesResponse() {
List<Compute.Disk> results;
OpenStackXMLParser parser = new OpenStackXMLParser();
try {
results =
parser.parseAttachedStoragesResponse(VOLUMEATTACHMENTRESPONSE);
assertEquals(2, results.size());
assertEquals("a26887c6-c47b-4654-abb5-dfadf7d3f803",
results.get(0).getStorage().getHref());
assertEquals("a26887c6-c47b-4654-abb5-dfadf7d3f804",
results.get(1).getStorage().getHref());
assertEquals("/dev/sdd", results.get(0).getTarget());
assertEquals("/dev/sdc", results.get(1).getTarget());
results =
parser.parseAttachedStoragesResponse(
VOLUMEATTACHMENTMALFORMEDRESPONSE);
fail();
} catch (OCCIException e) {
assertTrue(true);
}
}
@Test
public void testParseVirtualInterfacesResponse() {
List<Compute.Nic> results;
OpenStackXMLParser parser = new OpenStackXMLParser();
try {
results =
parser.parseVirtualInterfacesResponse(VIRTUALINTERFACESRESPONSE);
assertEquals(1, results.size());
assertEquals("a26887c6-c47b-4654-abb5-dfadf7d3f803",
results.get(0).getNetwork().getHref());
assertEquals("fa:16:3e:7d:31:9a", results.get(0).getMac());
results =
parser.parseVirtualInterfacesResponse(
VIRTUALINTERFACESMALFORMEDRESPONSE);
fail();
} catch (OCCIException e) {
assertTrue(true);
}
}
@Test
public void testParseInstanceTypeCollectionResponse() {
InstanceTypeCollection results;
OpenStackXMLParser parser = new OpenStackXMLParser();
try {
results =
parser.parseInstanceTypeCollectionResponse(
INSTANCETYPECOLLECTIONRESPONSE);
assertEquals(5, results.getInstanceType().size());
assertEquals("1", results.getInstanceType().get(0).getHref());
assertEquals("m1.tiny", results.getInstanceType().get(0).getName());
assertEquals("2", results.getInstanceType().get(1).getHref());
assertEquals(
"m1.small", results.getInstanceType().get(1).getName());
assertEquals("3", results.getInstanceType().get(2).getHref());
assertEquals(
"m1.medium", results.getInstanceType().get(2).getName());
assertEquals("4", results.getInstanceType().get(3).getHref());
assertEquals(
"m1.large", results.getInstanceType().get(3).getName());
assertEquals("5", results.getInstanceType().get(4).getHref());
assertEquals(
"m1.xlarge", results.getInstanceType().get(4).getName());
results =
parser.parseInstanceTypeCollectionResponse(
INSTANCETYPECOLLECTIONMALFORMEDRESPONSE);
fail();
} catch (OCCIException e) {
assertTrue(true);
}
}
@Test
public void testParseInstanceTypeResponse() {
InstanceType results;
OpenStackXMLParser parser = new OpenStackXMLParser();
try {
results = parser.parseInstanceTypeResponse(INSTANCETYPERESPONSE);
assertEquals(1, results.getCpu());
assertEquals("1", results.getHref());
assertEquals(512, results.getMemory());
assertEquals("m1.tiny", results.getName());
results =
parser.parseInstanceTypeResponse(INSTANCETYPEMALFORMEDRESPONSE);
fail();
} catch (OCCIException e) {
assertTrue(true);
}
}
@Test
public void testParseComputeQuotaResponse() {
Quota results;
OpenStackXMLParser parser = new OpenStackXMLParser();
try {
results = parser.parseComputeQuotaResponse(COMPUTEQUOTARESPONSE);
assertEquals(20, results.getCpu());
assertEquals(51200, results.getMemory());
assertEquals(10, results.getNumVms());
results =
parser.parseComputeQuotaResponse(COMPUTEQUOTAMALFORMEDRESPONSE);
fail();
} catch (OCCIException e) {
assertTrue(true);
}
}
@Test
public void testParseStorageQuotaResponse() {
int results;
OpenStackXMLParser parser = new OpenStackXMLParser();
try {
results = parser.parseStorageQuotaResponse(STORAGEQUOTARESPONSE);
assertEquals(10000, results);
results =
parser.parseStorageQuotaResponse(STORAGEQUOTAMALFORMEDRESPONSE);
fail();
} catch (OCCIException e) {
assertTrue(true);
}
}
@Test
public void testFromOpenStackComputeState() {
OpenStackXMLParser parser = new OpenStackXMLParser();
try {
assertEquals(ComputeState.ACTIVE,
parser.fromOpenStackComputeState("ACTIVE"));
assertEquals(ComputeState.PENDING,
parser.fromOpenStackComputeState("BUILDING"));
assertEquals(ComputeState.DONE,
parser.fromOpenStackComputeState("DELETED"));
assertEquals(ComputeState.FAILED,
parser.fromOpenStackComputeState("ERROR"));
assertEquals(ComputeState.RESET,
parser.fromOpenStackComputeState("HARD_REBOOT"));
assertEquals(ComputeState.RESET,
parser.fromOpenStackComputeState("PASSWORD"));
assertEquals(ComputeState.SUSPENDED,
parser.fromOpenStackComputeState("PAUSED"));
assertEquals(ComputeState.REBOOT,
parser.fromOpenStackComputeState("REBOOT"));
assertEquals(ComputeState.PENDING,
parser.fromOpenStackComputeState("REBUILD"));
assertEquals(ComputeState.RESET,
parser.fromOpenStackComputeState("RESCUED"));
assertEquals(ComputeState.RESET,
parser.fromOpenStackComputeState("RESIZED"));
assertEquals(ComputeState.RESET,
parser.fromOpenStackComputeState("REVERT_RESIZE"));
assertEquals(ComputeState.SHUTDOWN,
parser.fromOpenStackComputeState("SHUTOFF"));
assertEquals(ComputeState.DONE,
parser.fromOpenStackComputeState("SOFT_DELETED"));
assertEquals(ComputeState.STOPPED,
parser.fromOpenStackComputeState("STOPPED"));
assertEquals(ComputeState.SUSPENDED,
parser.fromOpenStackComputeState("SUSPENDED"));
assertEquals(ComputeState.FAILED,
parser.fromOpenStackComputeState("UNKNOWN"));
assertEquals(ComputeState.RESET,
parser.fromOpenStackComputeState("VERIFY_RESIZE"));
parser.fromOpenStackComputeState("NOT EXISTING ONE");
fail();
} catch (OCCIException e) {
assertTrue(true);
}
}
@Test
public void testToOpenStackComputeState() {
OpenStackXMLParser parser = new OpenStackXMLParser();
try {
assertEquals("ACTIVE",
parser.toOpenStackComputeState(ComputeState.ACTIVE));
assertEquals("DELETED",
parser.toOpenStackComputeState(ComputeState.CANCEL));
assertEquals("DELETED",
parser.toOpenStackComputeState(ComputeState.DONE));
assertEquals("ERROR",
parser.toOpenStackComputeState(ComputeState.FAILED));
assertEquals("PAUSED",
parser.toOpenStackComputeState(ComputeState.HOLD));
assertEquals("BUILDING",
parser.toOpenStackComputeState(ComputeState.INIT));
assertEquals("BUILDING",
parser.toOpenStackComputeState(ComputeState.PENDING));
assertEquals("REBOOT",
parser.toOpenStackComputeState(ComputeState.REBOOT));
assertEquals("REBUILD",
parser.toOpenStackComputeState(ComputeState.RESET));
assertEquals("ACTIVE",
parser.toOpenStackComputeState(ComputeState.RESUME));
assertEquals("SHUTOFF",
parser.toOpenStackComputeState(ComputeState.SHUTDOWN));
assertEquals("STOPPED",
parser.toOpenStackComputeState(ComputeState.STOPPED));
assertEquals("SUSPENDED",
parser.toOpenStackComputeState(ComputeState.SUSPENDED));
} catch (OCCIException e) {
fail();
}
}
}