openstack Java批量创建实例 http调用

先调用获取 X-Subject-Token 接口,再批量创建实例

 // 参数
 // os password
 String password = "123456";
 // os user
 String user = "root";
 // os 的项目id
 String projectId = "aaaaa";
 // os url
 String url = "192.168.119.1xx";
 // os imageId
 String imageId = "aaa";
 // os flavorId
 String flavorId = "aaa";
 // 批量创建数量
 int num = 3;
 
 try {
            String body = "{\"auth\":{\"identity\":{\"methods\":[\"password\"],\"password\":{\"user\":{\"name\":\"" + user  + "\",\"domain\":{\"name\":\"default\"},\"password\":\"" + password  + "\"}}},\"scope\":{\"project\":{\"id\":\"" + projectId + "\"}}}}";
            JSONObject objectbody = JSON.parseObject(body);
            body = objectbody.toJSONString();
            log.info("获取X-Subject-Token");
            request.setAttribute("URL", url + ":5000/auth/tokens");
            // 自定义 post 发送 http, 获取http header中的 X-Subject-Token
            HashMap post = osClientService.post(request, body);
            Headers headers = (Headers) post.get("headers");
            String token = headers.get("X-Subject-Token");
           
          	// 自定义 批量创建 参数
            // 定义账号密码  批量创建所有实例密码一致
            instancePassword = "123456";
            String pass = "#cloud-config\nchpasswd:\n   list: |\n       root:" + instancePassword + "\n   expire: false\nssh_pwauth: true";
            String userData = new sun.misc.BASE64Encoder().encode(pass.getBytes()).replace("\r\n", "");
            // 定义实例名称 创建单个实例名称不变 多个实例名称后面跟实例序号
            String instanceName = "instance-Test";
            
            body = "{\"server\":{\"name\":\"" + instanceName + "\",\"imageRef\":\"" + imageId + "\",\"flavorRef\":\"" + flavorId + "\",\"metadata\":{\"My Server Name\":\"Apache1\"},\"user_data\":\"" + userData + "\",\"max_count\":\"" + num + "\"}}";
            JSONObject object = JSON.parseObject(body);
            body = object.toJSONString();
            request.setAttribute("URL", url + ":8774/v2/servers");
            request.setAttribute("X-Auth-Token", token);
            // 自定义 post 发送 http  获取http responseBody
            HashMap creatVMPost = osClientService.post(request, body);
            Object responseBody = creatVMPost.get("responseBody");
            ArrayList<String> instanceNames = new ArrayList<>();
           
        } catch (Exception e) {
            log.error("创建vm失败:" + e);
            result.setErrorMsg("创建vm失败" + e);
            result.setErrorCode("-1");
        }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值