基于OpenStack4j进行OpenStack开发
博客专区 > xhHuang 的博客 > 博客详情
基于OpenStack4j进行OpenStack开发
xhHuang 发表于3个月前
基于OpenStack4j进行OpenStack开发
  • 发表于 3个月前
  • 阅读 162
  • 收藏 0
  • 点赞 2
  • 评论 2

腾讯云 学生专属云服务套餐 10元起购>>>   

一、说明

项目通过Maven(3.x)进行构建,然后使用的是openstack JAVA版的SDK工具openstack4j。

注意:开发前,必须在主机的hosts文件中添加openstack控制节点的主机信息,如下图所示是在windows系统下修改hosts文件(文件地址:C:\Windows\System32\drivers\etc\hosts)

二、pom.xml设置

pom文件中添加对slf4j-api、slf4j-log4j12和openstack4j的依赖,由于本人开发环境使用的jdk是1.7,所以使用的openstack4j版本为2.x,如果jdk是1.8的话,则可以使用3.x

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.7.21</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.7.21</version>
    </dependency>    
    
    <!-- OpenStack4j -->
    <dependency>
	  <groupId>org.pacesys</groupId>
	  <artifactId>openstack4j</artifactId>
	  <version>2.20</version>
	  <classifier>withdeps</classifier>
	</dependency>

三、测试代码

写的java的测试代码如下,实现以下功能:1)创建OSClient实例;2)获取Swfit中container信息;3)新建一个名为xhhuangContainer的container

package com.xhhuang.openstack;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.openstack4j.model.identity.User;
import org.openstack4j.model.storage.object.SwiftAccount;
import org.openstack4j.model.storage.object.SwiftContainer;
import org.openstack4j.model.storage.object.options.CreateUpdateContainerOptions;
import org.openstack4j.openstack.OSFactory;
import org.openstack4j.api.OSClient;

/**
 * Hello world!
 *
 */
public class App 
{
    public static void main( String[] args )
    {
    	// 开始认证
    	System.out.println("开始认证:");
        OSClient os = OSFactory.builder()
        						.endpoint("http://10.3.1.123:5000/v2.0")
        						.credentials("pipsCloud", "pipsCloudTeam")
        						.tenantName("pipsCloud")
        						.authenticate();
        System.out.println("完成认证:"+os.toString());
        
        System.out.println("获取Swift账户:");
        SwiftAccount swiftAccount = os.objectStorage().account().get();
        System.out.println(swiftAccount);
        
        System.out.println("获取对象存储元数据信息:");
        Map<String, String> metadata = new HashMap<String, String>();
        boolean result = os.objectStorage().account().updateMetadata(metadata);
        System.out.println(result);
        
        System.out.println("获取容器信息:");
        List<? extends SwiftContainer> containers = os.objectStorage().containers().list();
        int containerCount = (int) swiftAccount.getContainerCount();
        
        for(int i=0; i<containerCount; i++){
        	System.out.println(containers.get(i).getName()+containers.get(i).getTotalSize()+"\n");
        }
        
        System.out.println("新建容器:");
        os.objectStorage().containers().create("xhhuangContainer", CreateUpdateContainerOptions.create()
        																					.accessAnybodyRead()
        																					);
        
        
    }
}

测试结果如下:

  • (console端)

  • openstack container查看

 

共有 人打赏支持
粉丝 4
博文 28
码字总数 23592
评论 (2)
对象已抛出
我用fuel+virtualbox搭建的Openstack M版,现在想用openstack4j开发,eclipse是在本机还是在节点
xhHuang

引用来自“对象已抛出”的评论

我用fuel+virtualbox搭建的Openstack M版,现在想用openstack4j开发,eclipse是在本机还是在节点
eclipse在本机还是节点都可以 因为在代码的一开始就要连接上openstack。我开发的时候eclipse是在自己的电脑上,而openstack是在机房的
×
xhHuang
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: