openstack4j a java sample demo

This is  A sample Demo

package edu.hnu.lost.openstack.test;

import java.util.List;

import javax.ws.rs.client.Entity;

import org.openstack.common.client.AbstractOpenStackClient;
import org.openstack.keystone.KeystoneClient;
import org.openstack.keystone.api.Authenticate;
import org.openstack.keystone.api.ListTenants;
import org.openstack.keystone.model.Access;
import org.openstack.keystone.model.Authentication;
import org.openstack.keystone.model.Authentication.Token;
import org.openstack.keystone.model.Tenants;
import org.openstack.keystone.utils.KeystoneUtils;
import org.openstack.nova.NovaClient;
import org.openstack.nova.api.FlavorsCore;
import org.openstack.nova.api.ImagesCore;
import org.openstack.nova.api.ServersCore;
import org.openstack.nova.api.extensions.FloatingIpDnsExtension;
import org.openstack.nova.api.extensions.FloatingIpsExtension;
import org.openstack.nova.api.extensions.KeyPairsExtension;
import org.openstack.nova.api.extensions.NetworksExtension;
import org.openstack.nova.api.extensions.SecurityGroupsExtension;
import org.openstack.nova.model.Flavor;
import org.openstack.nova.model.Flavors;
import org.openstack.nova.model.FloatingIp;
import org.openstack.nova.model.FloatingIps;
import org.openstack.nova.model.Image;
import org.openstack.nova.model.Images;
import org.openstack.nova.model.KeyPair;
import org.openstack.nova.model.KeyPairs;
import org.openstack.nova.model.Network;
import org.openstack.nova.model.Networks;
import org.openstack.nova.model.SecurityGroup;
import org.openstack.nova.model.SecurityGroups;
import org.openstack.nova.model.Server;
import org.openstack.nova.model.ServerForCreate;
import org.openstack.nova.model.Servers;

public class TestOpenstack {

private static final String KEYSTONE_AUTH_URL = "http://192.168.1.2:35357/v2.0";

private static final String KEYSTONE_USERNAME = "admin";

private static final String KEYSTONE_PASSWORD = "admin";

private static final String KEYSTONE_TOKEN = "4c57a86f453d4045a90e1b14ddfb8b81";

private  static Authentication authentication ;
private static KeystoneClient keystone;
private static Access access;
private static NovaClient novaClient;
private static Tenants tenants ;
private static String tokenTemp;

public static void Init() {
keystone = new KeystoneClient(KEYSTONE_AUTH_URL);
AbstractOpenStackClient client = new AbstractOpenStackClient(
KEYSTONE_AUTH_URL);
access = client
.request("/tokens")
.execute(
"POST",
Entity.json("{\"auth\":{\"passwordCredentials\":{\"username\":\""
+ KEYSTONE_USERNAME
+ "\",\"password\":\""
+ KEYSTONE_PASSWORD
+ "\"},\"tenantId\":\""
+ KEYSTONE_TOKEN + "\"}}"), Access.class);
tokenTemp = access.getToken().getId();
if (tokenTemp != null) {
keystone.setToken(tokenTemp); // 获取access中 id [token=Token
}
tenants = keystone.execute(new ListTenants());// 这个是获取keystoen数据库表中tenant表数据
if (tenants.getList().size() > 0) {
authentication = new Authentication();
Token token = new Token();
token.setId(tokenTemp);
authentication.setToken(token); // 就是上面获取的id:95d304ab72a14933be27ec2601355146
//authentication.setTenantId(tenants.getList().get(0).getId());
    authentication.setTenantId(KEYSTONE_TOKEN);
access = keystone.execute(new Authenticate(authentication));
novaClient = new NovaClient(KeystoneUtils.findEndpointURL(
access.getServiceCatalog(), "compute", null, "public"),
tokenTemp);
}else {
System.out.println("No tenants found!");
}
}

public static void main(String[] args) {
Init();
// ListService();//
// ListImage();
// ListSecurityGroup();
ListFlavor();
GetFlavorModel();
ListServerDetail();
ShowService();
ListKeyPairs();
GetKeyPariModel();
ListImage();
GetImageModel();
ListFloatingIp();//由于系统中还没有创建floatingip 所以目前出错
GetFloatIpModel();
//CreateServer();// 可以创建 实例,不过在这里绑定floating ip 没有起作用
}

public static void printObject(Object obj){
System.out.println(obj.getClass()+"   "+obj);
}

//------------查看平台-------
   //查看平台中正在运行的server
public static void ListService(){
Servers servers = novaClient.execute(ServersCore.listServers());
for (Server server : servers) {
System.out.println(server);
}
}
public static void ListServerDetail(){
Servers servers = novaClient.execute(ServersCore.listServers(true));
for(Server server:servers){
printObject(server);
}
}
public static void ShowService(){
Server server = novaClient.execute(ServersCore.showServer("1f70831c-503d-4375-8b31-f9042929969b"));
        printObject(server);
}

public static void ListImage(){
//通过novaclient查看平台中的image
          Images images = novaClient.execute(ImagesCore.listImages());
          for(Image image :images){
           System.out.println(image);
          }
}
public static void ListKeyPairs(){
 //查看keypair
          KeyPairs keypairs = novaClient.execute(KeyPairsExtension.listKeyPairs());
          for(KeyPair keypair:keypairs){
            System.out.println(keypair);
          }
}
public static void ListSecurityGroup(){
//查看SecurityGroup
          SecurityGroups securityGroups = novaClient.execute(SecurityGroupsExtension.listSecurityGroups());
          for(SecurityGroup sg :securityGroups){
           System.out.println(sg);
          }
}

public static void ListFlavor(){
Flavors flavors = novaClient.execute(FlavorsCore.listFlavors());
for(Flavor flavor :flavors){
    System.out.println(flavor.getId());
}
}
public static void ListFloatingIp(){
  
FloatingIps floatingIps =   novaClient.execute(FloatingIpsExtension.listFloatingIps());
for(FloatingIp floatingIp :floatingIps){
printObject(floatingIp);
}
}
public static void ListFixIp(){
}
//------获得信息------
//获得SecuritGroup model
public static SecurityGroup GetSecurityGroup(int index){
SecurityGroup sg = null ;
SecurityGroups sgs = novaClient.execute(SecurityGroupsExtension.listSecurityGroups());
    List<SecurityGroup> alist =  sgs.getList();
if(alist.size() >index-1){
 sg = (SecurityGroup)alist.get(index);
}
return sg;
}
//获得Flavor model
public static Flavor GetFlavorModel(){
Flavor flavor  = null;
Flavors flavors = novaClient.execute(FlavorsCore.listFlavors());
List<Flavor> flavorList = flavors.getList();
if(flavorList.size()>0){
flavor = (Flavor)flavorList.get(0);
}
printObject(flavor);
return flavor;
}
//获得key model
public static KeyPair GetKeyPariModel(){
KeyPair keypair = null;
KeyPairs keypairs = novaClient.execute(KeyPairsExtension.listKeyPairs());
List<KeyPair> keypairList = keypairs.getList();
if(keypairList.size()>0){
keypair = keypairList.get(0);
}
printObject(keypair);
return keypair;
}
//获得 image model
public static Image GetImageModel(){
Image image =null;
Images images = novaClient.execute(ImagesCore.listImages());
List<Image> imageList = images.getList();
if(imageList.size() >0){
image = imageList.get(0);
}
           printObject(image);
return image;
}
//获得floatp model
public  static FloatingIp GetFloatIpModel(){
FloatingIp floatingIp = null;
FloatingIps floatingIps = novaClient.execute(FloatingIpsExtension.listFloatingIps());
List<FloatingIp> floatingIpList = floatingIps.getList();
if(floatingIpList.size() >0 ){
floatingIp = floatingIpList.get(0);
}
printObject(floatingIp);
return floatingIp;
}
// ---------------------创建--------------
// create security group
public static void CreateSecurityGroup (){
SecurityGroup securityGroup = novaClient.execute(SecurityGroupsExtension.createSecurityGroup("GroupSecrityForLostTest", "This securityGroup is Create for lost ,just for test"));
novaClient.execute(SecurityGroupsExtension.createSecurityGroupRule(securityGroup.getId(), "UDP", 9090, 9092, "0.0.0.0/0"));
novaClient.execute(SecurityGroupsExtension.createSecurityGroupRule(securityGroup.getId(), "TCP", 8080, 8080, "0.0.0.0/0"));
        System.out.println(securityGroup);
}

//create keypair 
public static void CreateKeyPair(){ //   创建一个keypair
        KeyPair keyPair = novaClient.execute(KeyPairsExtension.createKeyPair("mykeypair"));//keypair name 所必须唯一的
 System.out.println(keyPair.getPrivateKey());
}
//创建 flavor?? 貌似不可以通过api 创建

// 创建一个server
public static void CreateServer(){

ServerForCreate serverForCreate = new ServerForCreate();
serverForCreate.setName("CreateByLost");
serverForCreate.setFlavorRef(GetFlavorModel().getId());
serverForCreate.setImageRef(GetImageModel().getId());
serverForCreate.setKeyName(GetKeyPariModel().getName());
serverForCreate.setAccessIPv4(GetFloatIpModel().getIp());
serverForCreate.getSecurityGroups().add(new ServerForCreate.SecurityGroup("default"));
serverForCreate.getSecurityGroups().add(new ServerForCreate.SecurityGroup(GetSecurityGroup(0).getName()));
Server server = novaClient.execute(ServersCore.createServer(serverForCreate));
System.out.println(server);
}

}

时间: 2024-08-06 16:45:09

openstack4j a java sample demo的相关文章

hbase java sample

通过HBaseAdmin维护表(创建,删除表) import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HColumnDescriptor; import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.

Android L / 5.0 帮助文档 API21文档 sample demo源码 下载

如无法登陆google,浏览android官网也是问题,这里提供android L的官方文档资料下载.API版本21 参考文档较大,解压后最好使用IE浏览器打开,并工具选项卡中设置为脱机工作模式, 如是,则打开文档速度会加快许多.否则发送js请求等待google响应,会出现加载十分缓慢的现象. 也可修改网页源码,使之不发送访问google的请求,请自行百度,etc 如果想用google搜索,又无法打开google网站,可以试用下谷粉搜索 http://www.gfsoso.com/ Androi

java迭代器demo

package cn.aust.zyw.demo; import java.util.Iterator; /** * Created by zyw on 2016/2/16. * Iterator模式是用于遍历集合类的标准访问方法. * 它可以把访问逻辑从不同类型的集合类中抽象出来,从而避免向客户端暴露集合的内部结构. * Store类继承Iterable接口,利用自定义的hasNext(),next() * 输出数组a的元素. */ public class TestIterable { pu

JAVA EE Demo[购物商城 Strust2]

为了搞定作业,我开始了J2EE的Strust2框架实现一个简单的商城Demo 先创建Java Web Service项目.添加JDBC驱动,导入Strust2框架得到这个: 啧啧.既然是购物商城我们继续沿用上篇文章的结构,欢迎页+商城物品列表+购物车+登录 ,则很明显我们需要一个导航栏 创建一个导航栏:head.html 这样我们以后就可以利用JSP标签将这个导航栏嵌入到任何需要的界面了 而导航栏的内容包括欢迎页 商城物品列表 购物车 登录 登出 这些选项 这个时候弄完这个先得到以下: 然后我们

solr环境搭建及java小demo

一配置solr环境 1.下载solr 2.配置solr(最好单独分离出一个tomcat,一台机器启动多个tomcat参见:http://www.cnblogs.com/lxlwellaccessful/p/6746341.html) a.在下载的solr文件夹下的\example\solr\下将文件全部考到一个文件夹中(本人是放在E:\MySoft\solr\home中的) b.初始化solr实例 在solr解压路径的\example\webapps\路径下有一个solr.war,将其复制到to

转: java web demo的示例

http://quqtalk.iteye.com/blog/360699 从事Java开发已经两年了,但是由于工作的关系,对Java Web还是个freshman.今天做了一个Java Web的简单Demo,对这个Demo的总结如下. 环境: JDK:1.5.0_12-b04 Tomcat:apache-tomcat-6.0.18 MySQL:mysql-5.1.32-win32 这些软件可以从各自的官方网站上下载得到. Demo制作过程: (1)在Tomcat中配置MySQL数据源. 修改$C

Java Design Demo -简单的队列-异步多任务队列(java android)

简单的单线程队列 -- 工作的时候遇到劣质打印机.给打印机发消息,打印机就会打印,如果在打印机还在打印的时候,就 再发消息打印,就会出现消息丢失.所以需要给上一个任务一些处理的间隔时间. 单线程的消息队列示例 [java] view plaincopyprint? package demo1; import java.util.LinkedList; public class Main { /** * @param args */ private static Thread thread; pr

微博开发平台java SDK demo学习之friendships

本文解释了在java SDK的demo中与feiendships有关的功能 截图如下: 关注一个用户(需要知道该用户uid) 取消关注一个用户(用户uid) 获取用户粉丝列表(授权用户的screen__ame),最多返回粉丝的30%,上限为500 获取用户粉丝列表(授权用户的uid),最多返回粉丝的30%,上限为500 获取用户粉丝uid列表(授权用户的uid),最多返回粉丝的30%,上限为500 获取用户活跃粉丝列表(授权用户的uid),最多返回粉丝的30%,上限为500 获取用户双向关注的用

FastDFS单机搭建以及java客户端Demo

http://blog.csdn.net/u012453843/article/details/69951920 http://blog.csdn.net/xyang81/article/details/52847311 http://blog.csdn.net/kingboyworld/article/details/52299602 参考了这几个搭建了FastDFS文件系统 主要是fastDFS,nginx,以及在nginx中加入fastDFS模块:这里只有一台服务器,所以搭建的是单机版的.