diff --git a/nova-client/src/main/java/com/woorea/openstack/nova/Nova.java b/nova-client/src/main/java/com/woorea/openstack/nova/Nova.java index f81de7d44..beefcdb09 100644 --- a/nova-client/src/main/java/com/woorea/openstack/nova/Nova.java +++ b/nova-client/src/main/java/com/woorea/openstack/nova/Nova.java @@ -11,6 +11,7 @@ import com.woorea.openstack.nova.api.extensions.AggregatesExtension; import com.woorea.openstack.nova.api.extensions.FloatingIpsExtension; import com.woorea.openstack.nova.api.extensions.KeyPairsExtension; +import com.woorea.openstack.nova.api.extensions.NetworksExtension; import com.woorea.openstack.nova.api.extensions.SecurityGroupsExtension; import com.woorea.openstack.nova.api.extensions.SnapshotsExtension; import com.woorea.openstack.nova.api.extensions.VolumesExtension; @@ -41,6 +42,8 @@ public class Nova extends OpenStackClient { private final QuotaSetsResource QUOTA_SETS; private final HostsExtension HOSTS; + + private final NetworksExtension NETWORKS; public Nova(String endpoint, OpenStackClientConnector connector) { super(endpoint, connector); @@ -56,6 +59,7 @@ public Nova(String endpoint, OpenStackClientConnector connector) { AGGREGATES = new AggregatesExtension(this); QUOTA_SETS = new QuotaSetsResource(this); HOSTS = new HostsExtension(this); + NETWORKS = new NetworksExtension(this); } public Nova(String endpoint) { @@ -109,5 +113,9 @@ public QuotaSetsResource quotaSets() { public HostsExtension hosts() { return HOSTS; } - + + public NetworksExtension networks() { + return NETWORKS; + } + } diff --git a/openstack-examples/src/main/java/com/woorea/openstack/examples/ExamplesConfiguration.java b/openstack-examples/src/main/java/com/woorea/openstack/examples/ExamplesConfiguration.java index 056eae52b..b9fa799a1 100644 --- a/openstack-examples/src/main/java/com/woorea/openstack/examples/ExamplesConfiguration.java +++ b/openstack-examples/src/main/java/com/woorea/openstack/examples/ExamplesConfiguration.java @@ -7,17 +7,17 @@ public class ExamplesConfiguration { - public static final String KEYSTONE_AUTH_URL = "https://region-a.geo-1.identity.hpcloudsvc.com:35357/v3"; + public static final String KEYSTONE_AUTH_URL = "http://192.168.119.84:5000/v2.0"; - public static final String KEYSTONE_USERNAME = ""; + public static final String KEYSTONE_USERNAME = "admin"; - public static final String KEYSTONE_PASSWORD = ""; + public static final String KEYSTONE_PASSWORD = "sklois123"; public static final String KEYSTONE_ENDPOINT = "https://region-a.geo-1.identity.hpcloudsvc.com:35357/v3"; public static final String TENANT_NAME = "admin"; - public static final String NOVA_ENDPOINT = "http://compute/v2"; + public static final String NOVA_ENDPOINT = "http://192.168.119.84:8774/v2/"; public static final String CEILOMETER_ENDPOINT = ""; diff --git a/openstack-examples/src/main/java/com/woorea/openstack/examples/compute/NovaCreateServer.java b/openstack-examples/src/main/java/com/woorea/openstack/examples/compute/NovaCreateServer.java index 643f14b9e..7f6845bf9 100644 --- a/openstack-examples/src/main/java/com/woorea/openstack/examples/compute/NovaCreateServer.java +++ b/openstack-examples/src/main/java/com/woorea/openstack/examples/compute/NovaCreateServer.java @@ -1,6 +1,9 @@ package com.woorea.openstack.examples.compute; +import java.util.ArrayList; +import java.util.List; + import com.woorea.openstack.base.client.OpenStackSimpleTokenProvider; import com.woorea.openstack.examples.ExamplesConfiguration; import com.woorea.openstack.keystone.Keystone; @@ -10,6 +13,8 @@ import com.woorea.openstack.nova.model.Flavors; import com.woorea.openstack.nova.model.Images; import com.woorea.openstack.nova.model.KeyPairs; +import com.woorea.openstack.nova.model.NetworkForCreate; +import com.woorea.openstack.nova.model.Networks; import com.woorea.openstack.nova.model.Server; import com.woorea.openstack.nova.model.ServerForCreate; @@ -62,17 +67,24 @@ public static void main(String[] args) { // novaClient.execute(SecurityGroupsExtension.createSecurityGroupRule(securityGroup.getId(), // "TCP", 8080, 8080, "0.0.0.0/0")); - KeyPairs keysPairs = nova.keyPairs().list().execute(); + //KeyPairs keysPairs = nova.keyPairs().list().execute(); Images images = nova.images().list(true).execute(); Flavors flavors = nova.flavors().list(true).execute(); + + Networks networks = nova.networks().list().execute(); + List nfcList = new ArrayList(); + NetworkForCreate nfc = new NetworkForCreate(); + nfc.setId(networks.getList().get(2).getId()); + nfcList.add(nfc); ServerForCreate serverForCreate = new ServerForCreate(); - serverForCreate.setName("woorea"); + serverForCreate.setName("justforfun"); serverForCreate.setFlavorRef(flavors.getList().get(0).getId()); serverForCreate.setImageRef(images.getList().get(1).getId()); - serverForCreate.setKeyName(keysPairs.getList().get(0).getName()); + serverForCreate.setNetworks(nfcList); + //serverForCreate.setKeyName(keysPairs.getList().get(0).getName()); serverForCreate.getSecurityGroups() .add(new ServerForCreate.SecurityGroup("default")); // serverForCreate.getSecurityGroups().add(new diff --git a/openstack-examples/src/main/java/com/woorea/openstack/examples/compute/NovaDeleteServer.java b/openstack-examples/src/main/java/com/woorea/openstack/examples/compute/NovaDeleteServer.java new file mode 100644 index 000000000..d068a6597 --- /dev/null +++ b/openstack-examples/src/main/java/com/woorea/openstack/examples/compute/NovaDeleteServer.java @@ -0,0 +1,31 @@ +package com.woorea.openstack.examples.compute; + +import com.woorea.openstack.examples.ExamplesConfiguration; +import com.woorea.openstack.keystone.Keystone; +import com.woorea.openstack.keystone.model.Access; +import com.woorea.openstack.keystone.model.authentication.UsernamePassword; +import com.woorea.openstack.nova.Nova; +import com.woorea.openstack.nova.api.ServersResource; +import com.woorea.openstack.nova.model.Servers; + +public class NovaDeleteServer { + public static void main(String[] args) throws InterruptedException { + Keystone keystone = new Keystone(ExamplesConfiguration.KEYSTONE_AUTH_URL); + Access access = keystone.tokens().authenticate(new UsernamePassword(ExamplesConfiguration.KEYSTONE_USERNAME, ExamplesConfiguration.KEYSTONE_PASSWORD)) + .withTenantName(ExamplesConfiguration.TENANT_NAME) + .execute(); + + //use the token in the following requests + keystone.token(access.getToken().getId()); + + Nova novaClient = new Nova(ExamplesConfiguration.NOVA_ENDPOINT.concat("/").concat(access.getToken().getTenant().getId())); + novaClient.token(access.getToken().getId()); + + Servers servers = novaClient.servers().list(true).execute(); + if(servers.getList().size() > 0) { + ServersResource.Delete deleteServer = novaClient.servers().delete(servers.getList().get(0).getId()); + deleteServer.endpoint(ExamplesConfiguration.NOVA_ENDPOINT); + deleteServer.execute(); + } + } +} diff --git a/openstack-examples/src/main/java/com/woorea/openstack/examples/compute/NovaListServers.java b/openstack-examples/src/main/java/com/woorea/openstack/examples/compute/NovaListServers.java index cab24e1ca..a9648b75a 100644 --- a/openstack-examples/src/main/java/com/woorea/openstack/examples/compute/NovaListServers.java +++ b/openstack-examples/src/main/java/com/woorea/openstack/examples/compute/NovaListServers.java @@ -17,7 +17,7 @@ public class NovaListServers { public static void main(String[] args) { Keystone keystone = new Keystone(ExamplesConfiguration.KEYSTONE_AUTH_URL); Access access = keystone.tokens().authenticate(new UsernamePassword(ExamplesConfiguration.KEYSTONE_USERNAME, ExamplesConfiguration.KEYSTONE_PASSWORD)) - .withTenantName("demo") + .withTenantName(ExamplesConfiguration.TENANT_NAME) .execute(); //use the token in the following requests diff --git a/openstack-examples/src/main/java/com/woorea/openstack/examples/compute/NovaRebootServer.java b/openstack-examples/src/main/java/com/woorea/openstack/examples/compute/NovaRebootServer.java new file mode 100644 index 000000000..527f19c41 --- /dev/null +++ b/openstack-examples/src/main/java/com/woorea/openstack/examples/compute/NovaRebootServer.java @@ -0,0 +1,31 @@ +package com.woorea.openstack.examples.compute; + +import com.woorea.openstack.examples.ExamplesConfiguration; +import com.woorea.openstack.keystone.Keystone; +import com.woorea.openstack.keystone.model.Access; +import com.woorea.openstack.keystone.model.authentication.UsernamePassword; +import com.woorea.openstack.nova.Nova; +import com.woorea.openstack.nova.api.ServersResource; +import com.woorea.openstack.nova.model.Servers; + +public class NovaRebootServer { + public static void main(String[] args) throws InterruptedException { + Keystone keystone = new Keystone(ExamplesConfiguration.KEYSTONE_AUTH_URL); + Access access = keystone.tokens().authenticate(new UsernamePassword(ExamplesConfiguration.KEYSTONE_USERNAME, ExamplesConfiguration.KEYSTONE_PASSWORD)) + .withTenantName(ExamplesConfiguration.TENANT_NAME) + .execute(); + + //use the token in the following requests + keystone.token(access.getToken().getId()); + + Nova novaClient = new Nova(ExamplesConfiguration.NOVA_ENDPOINT.concat("/").concat(access.getToken().getTenant().getId())); + novaClient.token(access.getToken().getId()); + + Servers servers = novaClient.servers().list(true).execute(); + if(servers.getList().size() > 0) { + ServersResource.RebootAction rebootServer = novaClient.servers().reboot(servers.getList().get(0).getId(),"HARD"); + rebootServer.endpoint(ExamplesConfiguration.NOVA_ENDPOINT); + rebootServer.execute(); + } + } +}