Openstack4J API初体验之Authentication

6 篇文章 3 订阅
4 篇文章 0 订阅

刚开始接触用java调用Openstack提供的API来操作底层的云平台。
这篇说一下Openstack中的授权。
在用户操作dashboard的时候,首先需要登录。
这里写图片描述
当点击Connect的时候,实际上是发生了这样的事情:
这里写图片描述
之后我们要访问的一切服务都需要拿着所谓的“token”去访问,例如:
这里写图片描述
请注意,顶部显示 admin 可访问的 Project 为 “admin” 和 “demo”。
其实在此之前发生了一些事情:
这里写图片描述
也就是登录之后拿着token我们就可以去访问或者使用我们可以使用的服务。
以上部分来至于cloudman这位大神的博客,有兴趣的可以看看,博文地址:http://cloudman.blog.51cto.com/10425448/1762483

java通过Openstack4J来获得token,代码片如下

OSClientV3 os = OSFactory.builderV3()
                    .endpoint("http://127.0.0.1:5000/v3")
                    .credentials("admin", "secret", Identifier.byName("example-domain"))
                    .scopeToProject(Identifier.byId(projectIdentifier))
                    .authenticate();

endpoint()中填写的是你的controller中的ip:5000/v3。
credentials中的参数分别是 用户名,密码,还是域(如果你按照官网文档安装了Openstack没有更改域的话那么域默认就是“default”)。
在scopeToProject(Identifier.byId(projectIdentifier))中的projectIdentifier是用户所属项目的项目id,就是很长一串字符串,在dashboard好好看看就能找到。
授权之后拿到的os我的理解是:os就是cloudman博客中讲的token,因为后期的一切操作都是基于os的,有了os这个实例你才可以对Openstack进行一系列的操作。

例如,现在我要想查看Openstack中有哪些flavor:

List<? extends Flavor> flavors = os.compute().flavors().list();
        for(Flavor flavor :flavors){
            System.out.println(flavor);
        }

输入结果:

NovaFlavor{id=1, name=m1.tiny, vcpus=1, ram=512, disk=1, ephemeral=0, swap=0, rxtx_factor=1.0, disabled=false, is_public=true, links=[GenericLink{href=http://controller:8774/v2.1/8b21d3e746af43a9af7152d72ad54d02/flavors/1, rel=self}, GenericLink{href=http://controller:8774/8b21d3e746af43a9af7152d72ad54d02/flavors/1, rel=bookmark}], 
}
NovaFlavor{id=2, name=m1.small, vcpus=1, ram=2048, disk=20, ephemeral=0, swap=0, rxtx_factor=1.0, disabled=false, is_public=true, links=[GenericLink{href=http://controller:8774/v2.1/8b21d3e746af43a9af7152d72ad54d02/flavors/2, rel=self}, GenericLink{href=http://controller:8774/8b21d3e746af43a9af7152d72ad54d02/flavors/2, rel=bookmark}], 
}
NovaFlavor{id=3, name=m1.medium, vcpus=2, ram=4096, disk=40, ephemeral=0, swap=0, rxtx_factor=1.0, disabled=false, is_public=true, links=[GenericLink{href=http://controller:8774/v2.1/8b21d3e746af43a9af7152d72ad54d02/flavors/3, rel=self}, GenericLink{href=http://controller:8774/8b21d3e746af43a9af7152d72ad54d02/flavors/3, rel=bookmark}], 
}
NovaFlavor{id=4, name=m1.large, vcpus=4, ram=8192, disk=80, ephemeral=0, swap=0, rxtx_factor=1.0, disabled=false, is_public=true, links=[GenericLink{href=http://controller:8774/v2.1/8b21d3e746af43a9af7152d72ad54d02/flavors/4, rel=self}, GenericLink{href=http://controller:8774/8b21d3e746af43a9af7152d72ad54d02/flavors/4, rel=bookmark}], 
}
NovaFlavor{id=5, name=m1.xlarge, vcpus=8, ram=16384, disk=160, ephemeral=0, swap=0, rxtx_factor=1.0, disabled=false, is_public=true, links=[GenericLink{href=http://controller:8774/v2.1/8b21d3e746af43a9af7152d72ad54d02/flavors/5, rel=self}, GenericLink{href=http://controller:8774/8b21d3e746af43a9af7152d72ad54d02/flavors/5, rel=bookmark}], 
}

又例如我想查看所有的镜像:

List<? extends Image> images = os.images().list();
        for(Image image:images){
            System.out.println(image);
        }

输出:

GlanceImage{id=08b5ba17-89c0-47e4-ab6f-7b7f0dfb31d8, name=dockerinvm, status=ACTIVE, diskFormat=QCOW2, containerFormat=BARE, size=4295814144, owner=7fbd6b38b12d4a0da7ec8214ddaa3b63, minRam=0, minDisk=0, created=Wed Jun 07 15:09:55 CST 2017, updated=Wed Jun 07 15:12:39 CST 2017, isPublic=true, isProtected=false, isDeleted=false, propterties={description=null},
}
GlanceImage{id=7536ac4f-694f-4035-a95d-cfb8c2d5aea9, name=armv7l-with-kernel1, status=ACTIVE, diskFormat=QCOW2, containerFormat=BARE, size=795934720, owner=7fbd6b38b12d4a0da7ec8214ddaa3b63, minRam=0, minDisk=0, created=Thu May 04 16:09:38 CST 2017, updated=Thu May 04 16:10:19 CST 2017, isPublic=true, isProtected=false, isDeleted=false, propterties={kernel_id=3c5e2a01-6e30-45d8-8e50-f236ae6fa4f9, ramdisk_id=8fbe93a7-25cf-4ee2-8596-0948a7c5b13e, architecture=armv7l, description=null},
}
GlanceImage{id=40418f1e-61e4-4e6c-b14e-5e1ca6124468, name=armv7l-with-kernel, status=ACTIVE, diskFormat=QCOW2, containerFormat=BARE, size=795934720, owner=7fbd6b38b12d4a0da7ec8214ddaa3b63, minRam=0, minDisk=0, created=Thu May 04 15:55:02 CST 2017, updated=Thu May 04 16:19:01 CST 2017, isPublic=true, isProtected=false, isDeleted=false, propterties={kernel_id=3c5e2a01-6e30-45d8-8e50-f236ae6fa4f9, ramdisk_id=8fbe93a7-25cf-4ee2-8596-0948a7c5b13e, architecture=armv7l, description=null},
}
GlanceImage{id=8fbe93a7-25cf-4ee2-8596-0948a7c5b13e, name=armv7l-initrd, status=ACTIVE, diskFormat=ARI, containerFormat=ARI, size=32368146, owner=7fbd6b38b12d4a0da7ec8214ddaa3b63, minRam=0, minDisk=0, created=Thu May 04 15:53:32 CST 2017, updated=Thu May 04 15:53:32 CST 2017, isPublic=true, isProtected=false, isDeleted=false, propterties={description=null},
}
GlanceImage{id=3c5e2a01-6e30-45d8-8e50-f236ae6fa4f9, name=armv7l-kernel, status=ACTIVE, diskFormat=AKI, containerFormat=AKI, size=7053904, owner=7fbd6b38b12d4a0da7ec8214ddaa3b63, minRam=0, minDisk=0, created=Thu May 04 15:52:35 CST 2017, updated=Thu May 04 15:52:35 CST 2017, isPublic=true, isProtected=false, isDeleted=false, propterties={description=null},
}
GlanceImage{id=1ce5d0ca-11c7-450e-a612-ae41d0ac9c3b, name=armv7l, status=ACTIVE, diskFormat=QCOW2, containerFormat=BARE, size=795934720, owner=7fbd6b38b12d4a0da7ec8214ddaa3b63, minRam=0, minDisk=0, created=Thu May 04 15:51:13 CST 2017, updated=Thu May 04 15:51:17 CST 2017, isPublic=true, isProtected=false, isDeleted=false, propterties={architecture=ARMV7L, description=null},
}
GlanceImage{id=f953a662-aa94-40a6-8761-bcb49c1497e0, name=zph/new:14.11, status=ACTIVE, diskFormat=RAW, containerFormat=DOCKER, size=539524608, owner=7fbd6b38b12d4a0da7ec8214ddaa3b63, minRam=0, minDisk=0, created=Thu Apr 13 09:08:53 CST 2017, updated=Thu Apr 13 09:09:41 CST 2017, isPublic=true, isProtected=false, isDeleted=false, propterties={},
}
GlanceImage{id=cbeb615d-fae5-4df7-9fb6-5913fa4c63e9, name=router1.6, status=ACTIVE, diskFormat=QCOW2, containerFormat=BARE, size=3032350720, owner=7fbd6b38b12d4a0da7ec8214ddaa3b63, minRam=0, minDisk=0, created=Wed Apr 12 15:07:52 CST 2017, updated=Wed Apr 12 15:08:36 CST 2017, isPublic=true, isProtected=false, isDeleted=false, propterties={description=null},
}
GlanceImage{id=a8a475cc-d599-4d46-a4cb-1914eadb48ce, name=cirros, status=ACTIVE, diskFormat=QCOW2, containerFormat=BARE, size=13287936, owner=7fbd6b38b12d4a0da7ec8214ddaa3b63, minRam=0, minDisk=0, created=Mon Apr 10 10:35:17 CST 2017, updated=Mon Apr 10 10:35:18 CST 2017, isPublic=true, isProtected=false, isDeleted=false, propterties={},
}

前面两段代码片,查看flavor和查看镜像都是用到了os,这里的os就是之前授权返回的os实例。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值