需为VMware API的-d参数部分编写Groovy映射代码
编写Groovy代码生成VMware CPU配置的请求体
针对你需要生成VMware API中CPU配置PATCH请求的请求体(对应curl命令里的-d参数),这里提供两种可参数化的Groovy实现方式,方便你传入CPU数量、每插槽核心数等参数:
方法一:使用Map+JsonOutput转换
这种方式直观易懂,通过普通Map构造数据结构,再转成JSON字符串:
// 定义可灵活修改的CPU参数 int cpuCount = 4 int coresPerSocket = 2 boolean hotAddEnabled = true boolean hotRemoveEnabled = false // 构建与API要求匹配的请求体结构 def cpuSpecMap = [ spec: [ cores_per_socket: coresPerSocket, count: cpuCount, hot_add_enabled: hotAddEnabled, hot_remove_enabled: hotRemoveEnabled ] ] // 导入Groovy内置的JSON工具类,转换为JSON字符串 import groovy.json.JsonOutput String requestBody = JsonOutput.toJson(cpuSpecMap) // 可选:格式化JSON方便调试查看 println JsonOutput.prettyPrint(requestBody)
方法二:使用JsonBuilder构建
如果后续需要扩展更复杂的请求结构,JsonBuilder会更灵活:
import groovy.json.JsonBuilder import groovy.json.JsonOutput // 把参数封装成Map,便于统一传入 def cpuParams = [ cpuCount: 4, coresPerSocket: 2, hotAddEnabled: true, hotRemoveEnabled: false ] // 用JsonBuilder构建符合API格式的JSON def jsonBuilder = new JsonBuilder() jsonBuilder { spec { cores_per_socket cpuParams.coresPerSocket count cpuParams.cpuCount hot_add_enabled cpuParams.hotAddEnabled hot_remove_enabled cpuParams.hotRemoveEnabled } } // 获取最终的请求体字符串 String requestBody = jsonBuilder.toString() // 可选:格式化输出 println JsonOutput.prettyPrint(requestBody)
两种方式生成的JSON字符串,完全对应curl命令中-d后的内容,你可以直接将requestBody作为请求体,配合已有的会话ID和URL发送PATCH请求即可。
内容的提问来源于stack exchange,提问作者Sumedh Mahajan
相关产品推荐
相关产品推荐

