• 关于统一身份认证,获取认证,是否有python的sdk
    我用api调用aksk进行认证的话有python相关的sdk吗?
  • [互动交流] OBS 的 SDK链接跑哪去了??
    在产品主页、帮助文档中找了一圈,都没有sdk链接,请问藏到哪里去了? ......
  • 华为云对象存储服务(OBS)SDK工具包下载地址
    对象存储服务软件开发工具包(OBS SDK,Object Storage Service Software Development Kit)是对OBS服务提供的REST API进行的封装,以简化用户的开发工作。用户直接调用OBS SDK提供的接口函数即可实现使用OBS服务业务能力的目的。Java、Python、.NET、Android、iOS、C、Node.js、BrowserJS、PHP、Go十种语种的SDK的下载地址为:https://developer.huaweicloud.com/sdk?OBS 
  • 很多产品没有Python SDK
    很多AI、EI产品没有提供Python SDK,很不方便。
  • [介绍/入门] CSE java-chassis SDK开放性设计
    详细内容参考: https://bbs.huaweicloud.com/blogs/1fc9427c088611e89fc57ca23e93a89f
  • OBS_JAVA_SDK 示例工程无法添加
    帮助中心 > OBS_JAVA_SDK > 开发指南 > 相关资源 > 示例工程 huawei-obs-java-sdk-demo.zip 无法添加的啊?
  • 华为云API介绍(五)华为云Java SDK -VPC操作示例
    本帖最后由 Mercy 于 2018-3-27 10:33 编辑[code]import java.util.List; import java.util.stream.Collectors; import sun.misc.BASE64Encoder; import sun.misc.BASE64Decoder; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; import com.huawei.openstack4j.api.Builders; import com.huawei.openstack4j.api.OSClient.OSClientV3; import com.huawei.openstack4j.api.types.ServiceType; import com.huawei.openstack4j.core.transport.Config; import com.huawei.openstack4j.model.common.ActionResponse; import com.huawei.openstack4j.model.common.Identifier; import com.huawei.openstack4j.openstack.OSFactory; import com.huawei.openstack4j.openstack.identity.internal.OverridableEndpointURLResolver; import com.huawei.openstack4j.model.compute.Action; import com.huawei.openstack4j.model.compute.RebootType; import com.huawei.openstack4j.model.compute.Server; import com.huawei.openstack4j.model.compute.Server.Status; import com.huawei.openstack4j.model.compute.ServerCreate; import com.huawei.openstack4j.model.network.AttachInte**ceType; import com.huawei.openstack4j.model.network.Network; import com.huawei.openstack4j.model.network.Subnet; import com.huawei.openstack4j.model.network.Router; import com.huawei.openstack4j.model.network.RouterInte**ce; public class Demo_for_VPC { private static final String LANGUAGE = "zh-cn"; public static void main(String[] args) { // 第一步:填入华为云区域的endpoint,如下,对接华北区1就需要填入华北区服务的endpoint OverridableEndpointURLResolver endpointResolver = new OverridableEndpointURLResolver(); endpointResolver.addOverrideEndpoint(ServiceType.VOLUME_BACKUP, "https://vbs.cn-north-1.myhuaweicloud.com/v2/%(project_id)s"); endpointResolver.addOverrideEndpoint(ServiceType.DNS, "https://dns.myhuaweicloud.com/v2"); endpointResolver.addOverrideEndpoint(ServiceType.AUTO_SCALING, "https://as.cn-north-1.myhuaweicloud.com/autoscaling-api/v1/%(project_id)s"); endpointResolver.addOverrideEndpoint(ServiceType.CLOUD_EYE, "https://ces.cn-north-1.myhuaweicloud.com/V1.0/%(project_id)s"); endpointResolver.addOverrideEndpoint(ServiceType.LOAD_BALANCER, "https://elb.cn-north-1.myhuaweicloud.com/v1.0/%(project_id)s"); endpointResolver.addOverrideEndpoint(ServiceType.MAP_REDUCE, "https://mrs.cn-north-1.myhuaweicloud.com/v1.1/%(project_id)s"); endpointResolver.addOverrideEndpoint(ServiceType.KEY_MANAGEMENT, "https://kms.cn-north-1.myhuaweicloud.com/v1.0/%(project_id)s"); endpointResolver.addOverrideEndpoint(ServiceType.CLOUD_TRACE, "https://cts.cn-north-1.myhuaweicloud.com/v1.0/%(project_id)s"); endpointResolver.addOverrideEndpoint(ServiceType.ANTI_DDOS, "https://antiddos.cn-north-1.myhuaweicloud.com/v1/%(project_id)s"); endpointResolver.addOverrideEndpoint(ServiceType.Notification, "https://smn.cn-north-1.myhuaweicloud.com/v2/%(project_id)s"); endpointResolver.addOverrideEndpoint(ServiceType.MessageQueue, "https://dms.cn-north-1.myhuaweicloud.com/v1.0/%(project_id)s"); endpointResolver.addOverrideEndpoint(ServiceType.MAAS, "https://maas.cn-north-1.myhuaweicloud.com/v1/%(project_id)s/objectstorage"); endpointResolver.addOverrideEndpoint(ServiceType.DATABASE, "https://rds.cn-north-1.myhuaweicloud.com"); /* 第二步: 配置鉴权信息(以对接华北区为例) * user为用户名 * projectId为华为云控制台-账户中心-基本信息-管理我的凭证-项目列表中华北区的项目ID * userDomainId为华为云控制台-账户中心-基本信息-管理我的凭证的账户ID * authURL为IAM服务华北区的域名 */ String user = "wanglianmin-guest"; String password = "XXXXXX"; String projectId = "74610f3a5ad941998e91f076297ecf27"; String userDomainId = "2aa29cbca17a4822abd096610e378ffa"; String authUrl = "https://iam.cn-north-1.myhuaweicloud.com/v3"; // 第三步: 初始化一个连接 OSFactory.enableHttpLoggingFilter(true); //调试用,可以显示request body和response body Config config = Config.newConfig().withEndpointURLResolver(endpointResolver).withLanguage(LANGUAGE) .withSSLVerificationDisabled(); OSClientV3 osclient = OSFactory.builderV3().withConfig(config).endpoint(authUrl) .credentials(user, password, Identifier.byId(userDomainId)).scopeToDomain(Identifier.byId(userDomainId)) .scopeToProject(Identifier.byId(projectId)).authenticate(); //创建router Router router = osclient.networking().router().create(Builders.router() .name("javaSDK-router-test") .build()); // 创建network,DNSNameServer参数请在官网页面创建subnet后获取默认值,各个region(比如华北区、华东区)不一样 Network network = osclient.networking().network() .create(Builders.network().name("javaSDK-net-test") .adminStateUp(true).build()) ; Subnet subnet = osclient.networking().subnet() .create(Builders.subnet().name("javaSDK-subnet-test") .networkId(network.getId()).cidr("192.168.45.0/24") .gateway("192.168.45.1").addDNSNameServer("100.125.1.250") .addDNSNameServer("114.114.114.114").enableDHCP(true).build()) ; System.out.println(subnet); // 将子网添加到router上 RouterInte**ce routerinf = osclient.networking().router() .attachInte**ce(router.getId(), AttachInte**ceType.SUBNET, subnet.getId()); // 删除上面所有资源 osclient.networking().router().detachInte**ce(router.getId(), subnet.getId(),routerinf.getPortId()); osclient.networking().subnet().delete(subnet.getId()); osclient.networking().network().delete(network.getId()); osclient.networking().router().delete(router.getId()); } } [/code]
  • 华为云API介绍(四)华为云Java SDK -云服务器ECS批量操作示例
    本帖最后由 Mercy 于 2018-3-27 10:29 编辑下面是Java SDK中批量操作云服务器的示例 [code]import java.util.List; import java.util.stream.Collectors; import sun.misc.BASE64Encoder; import sun.misc.BASE64Decoder; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; import com.huawei.openstack4j.api.Builders; import com.huawei.openstack4j.api.OSClient.OSClientV3; import com.huawei.openstack4j.api.types.ServiceType; import com.huawei.openstack4j.core.transport.Config; import com.huawei.openstack4j.model.common.ActionResponse; import com.huawei.openstack4j.model.common.Identifier; import com.huawei.openstack4j.openstack.OSFactory; import com.huawei.openstack4j.openstack.identity.internal.OverridableEndpointURLResolver; import com.huawei.openstack4j.model.compute.Action; import com.huawei.openstack4j.model.compute.RebootType; import com.huawei.openstack4j.model.compute.Server; import com.huawei.openstack4j.model.compute.Server.Status; import com.huawei.openstack4j.model.compute.ServerCreate; import com.huawei.openstack4j.model.compute.StopType; import com.huawei.openstack4j.openstack.loadbalance.domain.AsyncJob; public class Demo_for_ECS_batch { private static final String LANGUAGE = "zh-cn"; // 封装查询Job函数,返回失败子任务的ECS列表 public static ArrayList waitforJob(OSClientV3 osclient, String jobId, int TIMES, int interval) throws InterruptedException { for(int i=1;i=TIMES;i++) { Thread.sleep(interval*1000); AsyncJob Job = osclient.loadBalancer().jobs().get(jobId); if(Job.getStatus() == AsyncJob.Status.SUCCESS) { System.out.println("job success after " + i + " tries"); break; }else if(Job.getStatus() == AsyncJob.Status.FAIL){ System.out.println("job failed after " + i + " tries"); break; }else { continue; } } // 获取失败子任务列表 AsyncJob Job = osclient.loadBalancer().jobs().get(jobId); // 获取Job Object sub_jobs_obj = Job.getEntities().get("sub_jobs"); // 获取Job中的子任务列表 @SuppressWarnings("unchecked") List> sub_jobs_list = (List>)sub_jobs_obj; // 将子任务列表从Object转换为List ArrayList failed_serverIds = new ArrayList(); // 初始化失败子任务的server列表 for(Map sub_job : sub_jobs_list ) { Object entities = sub_job.get("entities"); // 获取子任务的entities,里面包含子任务对象 @SuppressWarnings("unchecked") Map entities_map = (Map)entities; if(!"SUCCESS".equals(sub_job.get("status"))) { System.out.println("status of sub job is " + sub_job.get("status")); failed_serverIds.add(entities_map.get("server_id")); // 获取成功失败子任务的虚拟机uuid } } return failed_serverIds; } public static void main(String[] args) throws InterruptedException { // 第一步:填入华为云区域的endpoint,如下,对接华北区1就需要填入华北区服务的endpoint OverridableEndpointURLResolver endpointResolver = new OverridableEndpointURLResolver(); endpointResolver.addOverrideEndpoint(ServiceType.VOLUME_BACKUP, "https://vbs.cn-north-1.myhuaweicloud.com/v2/%(project_id)s"); endpointResolver.addOverrideEndpoint(ServiceType.DNS, "https://dns.myhuaweicloud.com/v2"); endpointResolver.addOverrideEndpoint(ServiceType.AUTO_SCALING, "https://as.cn-north-1.myhuaweicloud.com/autoscaling-api/v1/%(project_id)s"); endpointResolver.addOverrideEndpoint(ServiceType.CLOUD_EYE, "https://ces.cn-north-1.myhuaweicloud.com/V1.0/%(project_id)s"); endpointResolver.addOverrideEndpoint(ServiceType.LOAD_BALANCER, "https://elb.cn-north-1.myhuaweicloud.com/v1.0/%(project_id)s"); endpointResolver.addOverrideEndpoint(ServiceType.MAP_REDUCE, "https://mrs.cn-north-1.myhuaweicloud.com/v1.1/%(project_id)s"); endpointResolver.addOverrideEndpoint(ServiceType.KEY_MANAGEMENT, "https://kms.cn-north-1.myhuaweicloud.com/v1.0/%(project_id)s"); endpointResolver.addOverrideEndpoint(ServiceType.CLOUD_TRACE, "https://cts.cn-north-1.myhuaweicloud.com/v1.0/%(project_id)s"); endpointResolver.addOverrideEndpoint(ServiceType.ANTI_DDOS, "https://antiddos.cn-north-1.myhuaweicloud.com/v1/%(project_id)s"); endpointResolver.addOverrideEndpoint(ServiceType.Notification, "https://smn.cn-north-1.myhuaweicloud.com/v2/%(project_id)s"); endpointResolver.addOverrideEndpoint(ServiceType.MessageQueue, "https://dms.cn-north-1.myhuaweicloud.com/v1.0/%(project_id)s"); endpointResolver.addOverrideEndpoint(ServiceType.MAAS, "https://maas.cn-north-1.myhuaweicloud.com/v1/%(project_id)s/objectstorage"); endpointResolver.addOverrideEndpoint(ServiceType.DATABASE, "https://rds.cn-north-1.myhuaweicloud.com"); /* 第二步: 配置鉴权信息(以对接华北区为例) * user为用户名 * projectId为华为云控制台-账户中心-基本信息-管理我的凭证-项目列表中华北区的项目ID * userDomainId为华为云控制台-账户中心-基本信息-管理我的凭证的账户ID * authURL为IAM服务华北区的域名 */ String user = "wanglianmin-guest"; String password = "XXXXXX"; String projectId = "74610f3a5ad941998e91f076297ecf27"; String userDomainId = "2aa29cbca17a4822abd096610e378ffa"; String authUrl = "https://iam.cn-north-1.myhuaweicloud.com/v3"; // 第三步: 初始化一个连接 OSFactory.enableHttpLoggingFilter(true); //调试用,可以显示request body和response body,正式使用时请注释掉此行 Config config = Config.newConfig().withEndpointURLResolver(endpointResolver).withLanguage(LANGUAGE) .withSSLVerificationDisabled(); OSClientV3 osclient = OSFactory.builderV3().withConfig(config).endpoint(authUrl) .credentials(user, password, Identifier.byId(userDomainId)).scopeToDomain(Identifier.byId(userDomainId)) .scopeToProject(Identifier.byId(projectId)).authenticate(); // 批量创建虚拟机,填入所需参数;停止、启动、重启、删除虚拟机 String imageId = "e377c242-d74b-4e06-a0a4-2e25b8e7eef0"; String flavorId = "s2.small.1"; String networkId = "ef039b60-6a14-42d1-963b-687b627fea08"; // 创建Linux密码虚拟机,目前密码使用user-data参数传入,将来会统一使用adminPass参数 String userData_org = "#!/bin/bash \r\n echo ´root:P@ssWr0d123´ | chpasswd ;"; byte[] userData_byte = userData_org.getBytes(); String userData = new BASE64Encoder().encode(userData_byte); // generate networkList ArrayList networkList = new ArrayList(); networkList.add(networkId); // generate server body ServerCreate sc_Linux = Builders.server() .name("zt-Linux-test-sdk").flavor(flavorId) .min(50).max(50).image(imageId) .availabilityZone("cn-north-1b") .userData(userData) .networks(networkList).build(); System.out.println("New Server body " + sc_Linux); Server newServer = osclient.compute().servers().boot(sc_Linux); osclient.compute().servers().waitForServerStatus(newServer.getId(), Status.ACTIVE, 10, TimeUnit.MINUTES); // 过滤查询弹性云服务器列表,等待所有ECS状态为ACTIVE Map filter_name = new HashMap(); filter_name.put("name", "zt-Linux-test-sdk"); List? extends Server> servers = osclient.compute().servers().list(filter_name); ArrayList serverIds = new ArrayList(); for (Server server : servers) { osclient.compute().servers().waitForServerStatus(server.getId(), Status.ACTIVE, 3, TimeUnit.MINUTES); serverIds.add(server.getId()); } // 批量重启虚拟机,等待Job执行成功,请根据业务需要调整TIMES、interval参数 String rebootJobId = osclient.compute().serversV1().reboot(serverIds, RebootType.SOFT); ArrayList reboot_failed_serverIds = waitforJob(osclient, rebootJobId, 18, 10); System.out.println("List of reboot failed servers " + reboot_failed_serverIds); // 批量停止虚拟机,等待Job执行成功,请根据业务需要调整TIMES、interval参数 String stopJobId = osclient.compute().serversV1().stop(serverIds, StopType.SOFT); ArrayList stop_failed_serverIds = waitforJob(osclient, stopJobId, 18, 10); System.out.println("List of stop failed servers " + stop_failed_serverIds); if(stop_failed_serverIds.isEmpty()) { System.out.println("batch stop server success, jobId = " + stopJobId); }else { String stopJobId_sec = osclient.compute().serversV1().stop(stop_failed_serverIds, StopType.SOFT); ArrayList stop_failed_serverIds_sec = waitforJob(osclient, stopJobId_sec, 18, 10); System.out.println("Second List of stop failed servers " + stop_failed_serverIds_sec); } // 批量启动虚拟机,等待Job执行成功,请根据业务需要调整TIMES、interval参数 String startJobId = osclient.compute().serversV1().start(serverIds); ArrayList start_failed_serverIds = waitforJob(osclient, startJobId, 18, 10); System.out.println("List of start failed servers " + start_failed_serverIds); // 批量删除虚拟机,等待Job执行成功,请根据业务需要调整TIMES、interval参数 String deleteJobId = osclient.compute().serversV1().delete(serverIds, false, false); ArrayList delete_failed_serverIds = waitforJob(osclient, deleteJobId, 18, 10); System.out.println("List of delete failed servers " + delete_failed_serverIds); } } [/code]
  • 解决pycharm 引用sdk报Unresolved Reference问题
    解决办法:在Project->Project Structure,添加sdk 库即可解决,以pycharm-professional-2017.3.3 为例, 安装python smn 的sdk库在C:\Python27\Lib\site-packages\smn_sdk_python-1.0.0-py2.7.egg 13086
  • [介绍/入门] 分布式消息服务之TCP API获取SDK!
    如果您还没有下载SDK,请访问http://developer.huaweicloud.com/sdk/java/dms-tcp.html下载SDK压缩包。下载dms.sdk.zip压缩包,即为DMS TCP SDK开发包,包含如下文件:[*]dms.sdk-1.0.0.jar:DMS TCP SDK包 [*]dms.protocol-1.0.0.jar: DMS TCP SDK包 [*]dms.client.properties:配置文件 [*]README.txt:发布说明文件 [*]third_lib.zip:DMS TCP SDK依赖的第三方jar包 [*]dms.sdk.api.chm:API接口参考
  • [介绍/入门] 分布式消息服务接口——DMS TCP SDK介绍
    本帖最后由 云彩飞扬 于 2018-3-15 18:07 编辑DMS TCP SDK提供基于TCP的接口,第三方应用程序直接使用DMS TCP SDK即可实现消息的生产、消费和确认。DMS提供如表1所示的接口供第三方应用调用,具体的接口请参见对应的接口参考。表1 DMS TCP SDK接口接口名称描述接口类型生产消息发送消息到DMS。同步、异步、oneway消费消息从DMS中读取消息。同步、异步确认消息确认读取消息成功。同步、异步说明:[*]异步接口和oneway接口,如果调用完接口,进程立即退出,有可能会导致消息数据发送不完全。 [*]使用oneway接口时,客户端不接受服务端的响应,包括错误信息。 [*]DMS不保证只投递一次的生产模型,如果提示执行失败,极小的概率下实际上是生产成功的。DMS提供“至少一次”的消息交付功能,因此,消费端需要保证消息消费的幂等性。功能介绍消息重投:DMS TCP SDK支持消息重投,当消费消息异常时,确认消费设置为“重投”,服务端会将消息标记为已消费,并且转存到重投Topic中,用户可以继续往后消费。重投消息延迟至少30秒后才能再次被消费出来,再次消费确认时,依然可以设置为“成功”、“失败”或“重投”。 广播消息:同一个消费组的所有消费者都可以消费相同的消息。 可以设置是否自动确认,设置为true时,不需要手动提交确认消费。 在消费消息时,可以设置如下消费模式: [*]组播:消费成功后,该消费组的其他消费者无法再消费。 [*]广播,从最早一条开始:从队列中第一条消息开始,该消费组的每个消费者都可以消费队列中的所有消息。 [*]广播,从已消费的位置开始:当设置固定Consumer id时,可以从当前的消费位置开始,该消费组的每个消费者都可以消费队列中所有未消费的消息。 [*]广播,从最新一条开始:从队列中最新的一条消息开始,该消费组的每个消费者都可以消费之后生产的消息。 [*]DMS TCP SDK一般可达到几千TPS(即每秒可处理的消息数),如果需要上万甚至10万TPS,请单独提交工单或联系客服进行特殊处理。开发流程本示例以Java语言进行DMS TCP SDK的二次集成开发。Hello DMS 实现流程如下:
  • [热门活动] 华为云SDK咨询与求助专帖
    同学们,请注意后续有SDK相关求助请来这里提问▶:https://bbs.huaweicloud.com/ask此帖将不再继续解答,谢谢!感谢您对华为云的支持~
  • 【活动已结束】 体验华为云API SDK,输出体验报告有机会赢mate10!
    活动时间: 输出体验报告:2018年3月5日—5月14日 体验报告评审:2018年5月15-17日 活动结果公布:2018年5月18日(所有体验报告正在公平公正地评选中,待评选完成后将公布结果) 华为云API SDK介绍: 您可以基于华为云SDK通过编写代码的方式调用华为云API,或通过发起HTTP/HTTPS请求调用华为云API的方式来使用云产品,实现对应用、资源和数据更灵活的部署、更快速的操作、更精准的使用、更及时的监控。 活动参与方式: 1、注册登录并实名认证; 2、调用已购买产品或免费试用产品的API/SDK; 3、在该贴下按模板输出体验报告(问题描述+使用界面截图); 4、体验报告评审:筛选有效体验报告后由产品专家对报告进行综合评分。 5、活动结果公布:公布活动最终结果,获奖用户奖品寄送(所有奖品均包邮)。 体验报告输出规则: 1、文字、图片必须本人原创;逻辑清晰、图文并茂容易获得专家加分; 2、内容包含但不限于产品使用感受(如使用中存在bug,接口定义不够准确、规范不够清晰、文档不够细化、很难读懂、交互性和体验性不够好,以及使用华为云API/SDK存在的问题,有哪些需要重点提升的方面等各种建议。) [color=rgb(54,56,60)]3、报告格式: a.注明购买的产品和调用的API或使用的SDK; b.反馈跟API/SDK相关的使用问题(问题描述+截图)或改进建议; c.如有重复反馈,以最先回帖的用户为准。 [color=rgb(54,56,60)]体验报告参考模板(两种方式可任选): 1、#API SDK体验报告#使用的产品名称+是否好用+有没有需要优化的地方 如:XX产品可调用的SDK支持语言太少,建议增加XX语言。 2、#API SDK体验报告# 产品名称+ 使用环节 + 问题描述 + 优化建议 + 界面截图 如:在调用XX产品API时,在XX环节发现XX问题,建议做XX优化。 [color=rgb(54,56,60)]奖项评选方式: 1、产品团队从问题或BUG的级别、用户建议的价值等方面进行综合评分。最具价值体验官须反馈提议3条以上有效体验报告; 2、各类奖项不能叠加,每个用户只能获得一个奖项,如遇同一用户获得两个奖项,则以所获最高奖项为准,其奖品顺延至下一用户; 3、如体验报告总数未达到30份,则奖项及奖品酌情处理;4、活动参与需遵守《华为云社区常规活动规则》,戳>>>这里 活动奖品展示: [color=rgb(54,56,60)]最具价值体验官(1名):华为mate 10(4GB+64GB) [color=rgb(54,56,60)]优质建议奖(3名):华为VR [color=rgb(54,56,60)]特别参与奖(15名):荣耀引擎耳机二代 华为云开发者中心:http://developer.huaweicloud.com/ 更多开发者活动请戳:礼献开发者 爱在华为云
  • [行业前沿] Go SDK和CSE Mesher有什么关系?
    CSE Go SDK和CSE Mesher有什么关系?
  • [分享交流] 【干货分享】华为云API介绍(三)华为云Java SDK 使用指导
    前提条件1.        已经获取相关API文档。       登录华为云官网 http://support.huaweicloud.com  查看各个云服务的接口参考文档。       通过这些文档,可以学习云平台所支持的API参数。2.        获取Java SDK(jar包)及其介绍文档       登录以下网站获取Python OpenStack SDK 的官方文档:       http://developer.huaweicloud.com/dev/sdk?all3.        获取华为云IAM鉴权信息和endpoint信息。          projectId/userDomainId参数获取方法见: http://forum.huaweicloud.com/forum.php?mod=viewthread&tid=1813        endpoint/AZ信息见: http://developer.huaweicloud.com/endpoint.html4.        开发环境已经安装好JDK 1.85.        欲了解Java SDK项目的源代码,请访问如下地址。       https://github.com/huawei/openstack4jJava代码示例DNS服务的简单Demo:创建zone、查询zone、删除zonepackage openstack4jdemo;import java.util.List;import com.huawei.openstack4j.core.transport.ProxyHost;import com.huawei.openstack4j.api.OSClient.OSClientV3;import com.huawei.openstack4j.api.types.ServiceType;import com.huawei.openstack4j.core.transport.Config;import com.huawei.openstack4j.model.common.Identifier;import com.huawei.openstack4j.model.dns.v2.Zone;import com.huawei.openstack4j.openstack.OSFactory;import com.huawei.openstack4j.openstack.dns.v2.domain.DesignateZone;import com.huawei.openstack4j.openstack.identity.internal.OverridableEndpointURLResolver;public class dns_test {        private static final String LANGUAGE = "zh-cn";        public static void main(String[] args) {                // step 1: add cloud service override endpoint   注意:示例中endpoint都使用华北区的,如果需要在华南区操作资源,需要相应修改为华南区的endpoint                OverridableEndpointURLResolver endpointResolver = new OverridableEndpointURLResolver();                endpointResolver.addOverrideEndpoint(ServiceType.VOLUME_BACKUP,                                "https://vbs.cn-north-1.myhwclouds.com/v2/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.DNS,                                "https://dns.myhwclouds.com/v2");                endpointResolver.addOverrideEndpoint(ServiceType.AUTO_SCALING,                                "https://as.cn-north-1.myhwclouds.com/autoscaling-api/v1/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.CLOUD_EYE,                                "https://ces.cn-north-1.myhwclouds.com/V1.0/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.LOAD_BALANCER,                                "https://elb.cn-north-1.myhwclouds.com/v1.0/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.MAP_REDUCE,                                "https://mrs.cn-north-1.myhwclouds.com/v1.1/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.KEY_MANAGEMENT,                                "https://kms.cn-north-1.myhwclouds.com/v1.0/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.CLOUD_TRACE,                                "https://cts.cn-north-1.myhwclouds.com/v1.0/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.ANTI_DDOS,                                "https://antiddos.cn-north-1.myhwclouds.com/v1/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.Notification,                                "https://smn.cn-north-1.myhwclouds.com/v2/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.MessageQueue,                                "https://dms.cn-north-1.myhwclouds.com/v1.0/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.MAAS,                                "https://maas.cn-north-1.myhwclouds.com/v1/%(project_id)s/objectstorage");                endpointResolver.addOverrideEndpoint(ServiceType.DATABASE, "https://rds.cn-north-1.myhwclouds.com");                // step 2: setup the authentication credit                String user = "wanglianmin";                String password = "XXXX";                String projectId = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";         //  华为云-用户中心-账号管理-基本信息-安全凭证-管理我的凭证,项目ID,按照region区分,如果想在华北创建资源,就找cn-north-1对应的项目ID。                String userDomainId = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";     //  华为云-用户中心-账号管理-基本信息-安全凭证-管理我的凭证,账户ID,各个区域统一。                String authUrl = "https://iam.cn-north-1.myhwclouds.com/v3";                // step 3: initial OpenStack4j Client                OSFactory.enableHttpLoggingFilter(true);                // config of the client                // with language setting is required for RDS(trove&database) service                Config config = Config.newConfig().withEndpointURLResolver(endpointResolver).withLanguage(LANGUAGE)                                .withSSLVerificationDisabled();                // initial client                OSClientV3 osclient = OSFactory.builderV3().withConfig(config).endpoint(authUrl)                                .credentials(user, password, Identifier.byId(userDomainId)).scopeToDomain(Identifier.byId(userDomainId))                                .scopeToProject(Identifier.byId(projectId)).authenticate();                // // use client to visit DNS API                //                // create a public zone                Zone creation = DesignateZone.builder().name("sdk.tutorial.com.").description("tutorial").ttl(600)                                .email("admin@tutorial.com").build();                Zone zone = osclient.dns().zones().create(creation);                // get the created zone                Zone get = osclient.dns().zones().get(zone.getId());                // delete the created zone                //osclient.dns().zones().delete(get.getId());                List list = osclient.dns().zones().list();                System.out.println(list);                               // delete zone                osclient.dns().zones().delete(get.getId());        }}[/code]再来一个ECS弹性云服务器的示例,包括查询Server、创建Server、启动、停止、重启、删除Server[code]import java.util.List;import java.util.stream.Collectors;import sun.misc.BASE64Encoder;import sun.misc.BASE64Decoder;import java.util.ArrayList;import java.util.HashMap;import java.util.Map;import java.util.concurrent.TimeUnit;import com.huawei.openstack4j.api.Builders;import com.huawei.openstack4j.api.OSClient.OSClientV3;import com.huawei.openstack4j.api.types.ServiceType;import com.huawei.openstack4j.core.transport.Config;import com.huawei.openstack4j.model.common.ActionResponse;import com.huawei.openstack4j.model.common.Identifier;import com.huawei.openstack4j.openstack.OSFactory;import com.huawei.openstack4j.openstack.identity.internal.OverridableEndpointURLResolver;import com.huawei.openstack4j.model.compute.Action;import com.huawei.openstack4j.model.compute.RebootType;import com.huawei.openstack4j.model.compute.Server;import com.huawei.openstack4j.model.compute.Server.Status;import com.huawei.openstack4j.model.compute.ServerCreate;public class Demo_for_WebSite {        private static final String LANGUAGE = "zh-cn";        public static void main(String[] args) {                /* 第一步:填入华为云区域的endpoint                 * 如下,对接华北区1就需要填入华北区服务的endpoint,以下为全量服务,用户根据自己的需要进行覆写                 */                OverridableEndpointURLResolver endpointResolver = new OverridableEndpointURLResolver();                endpointResolver.addOverrideEndpoint(ServiceType.VOLUME_BACKUP,                                "https://vbs.cn-north-1.myhuaweicloud.com/v2/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.DNS,                                "https://dns.myhuaweicloud.com/v2");                endpointResolver.addOverrideEndpoint(ServiceType.AUTO_SCALING,                                "https://as.cn-north-1.myhuaweicloud.com/autoscaling-api/v1/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.CLOUD_EYE,                                "https://ces.cn-north-1.myhuaweicloud.com/V1.0/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.LOAD_BALANCER,                                "https://elb.cn-north-1.myhuaweicloud.com/v1.0/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.MAP_REDUCE,                                "https://mrs.cn-north-1.myhuaweicloud.com/v1.1/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.KEY_MANAGEMENT,                                "https://kms.cn-north-1.myhuaweicloud.com/v1.0/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.CLOUD_TRACE,                                "https://cts.cn-north-1.myhuaweicloud.com/v1.0/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.ANTI_DDOS,                                "https://antiddos.cn-north-1.myhuaweicloud.com/v1/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.Notification,                                "https://smn.cn-north-1.myhuaweicloud.com/v2/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.MessageQueue,                                "https://dms.cn-north-1.myhuaweicloud.com/v1.0/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.MAAS,                                "https://maas.cn-north-1.myhuaweicloud.com/v1/%(project_id)s/objectstorage");                endpointResolver.addOverrideEndpoint(ServiceType.DATABASE, "https://rds.cn-north-1.myhuaweicloud.com");                /* 第二步: 配置鉴权信息(以对接华北区为例)                 * user为用户名                 * projectId为华为云控制台-账户中心-基本信息-管理我的凭证-项目列表中华北区的项目ID                 * userDomainId为华为云控制台-账户中心-基本信息-管理我的凭证的账户ID                 * authURL为IAM服务华北区的域名                 */                String user = "wanglianmin";                String password = "XXXXXX";                String projectId = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";                String userDomainId = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";                String authUrl = "https://iam.cn-north-1.myhuaweicloud.com/v3";                // 第三步: 初始化一个连接                OSFactory.enableHttpLoggingFilter(true);   //调试用,可以显示request body和response body                Config config = Config.newConfig().withEndpointURLResolver(endpointResolver).withLanguage(LANGUAGE)                                .withSSLVerificationDisabled();                OSClientV3 osclient = OSFactory.builderV3().withConfig(config).endpoint(authUrl)                                .credentials(user, password, Identifier.byId(userDomainId)).scopeToDomain(Identifier.byId(userDomainId))                                .scopeToProject(Identifier.byId(projectId)).authenticate();                // 第四步: 过滤查询弹性云服务器列表                Map filter_name = new HashMap();                filter_name.put("name", "ecs");                filter_name.put("status", "ACTIVE");                List servers = osclient.compute().servers().list(filter_name);                System.out.println(servers);                               // 第五步:创建虚拟机,填入所需参数;停止、启动、重启、删除虚拟机                String imageId = "1189efbf-d48b-46ad-a823-94b942e2a000";                String flavorId = "s2.small.1";                String networkId = "ef039b60-6a14-42d1-963b-687b627fea08";                String imageId_Windows = "201150a6-479e-45f3-8a4c-fe91855758f0";                                              // 创建Linux密码虚拟机,目前密码使用user-data参数传入,将来会统一使用adminPass参数(注意echo后面的是单引号,单引号!!!)                String userData_org = "#!/bin/bash \r\n echo ´root:P@ssWr0d123´ | chpasswd ;";                byte[] userData_byte = userData_org.getBytes();                String userData = new BASE64Encoder().encode(userData_byte);                // generate networkList                ArrayList networkList = new ArrayList();                networkList.add(networkId);                // generate server body                ServerCreate sc_Linux = Builders.server().name("zt-Linux-test-sdk").flavor(flavorId).image(imageId).availabilityZone("cn-north-1b").userData(userData).networks(networkList).build();                System.out.println("New Server body " + sc_Linux);                Server newServer = osclient.compute().servers().boot(sc_Linux);                osclient.compute().servers().waitForServerStatus(newServer.getId(), Status.ACTIVE, 10, TimeUnit.MINUTES);                System.out.println("New Server " + newServer);                                                              // 创建Windows密码虚拟机,目前密码使用metadata参数传入,将来会统一使用adminPass参数                ServerCreate sc_Windows = Builders.server().name("zt-Windows-test-sdk").flavor(flavorId).image(imageId_Windows).availabilityZone("cn-north-1b").addMetadataItem("admin_pass", "P@ssWr0d123").networks(networkList).build();                System.out.println("New Server body " + sc_Windows);                Server newServer_Windows = osclient.compute().servers().boot(sc_Windows);                osclient.compute().servers().waitForServerStatus(newServer_Windows.getId(), Status.ACTIVE, 10, TimeUnit.MINUTES);                System.out.println("New Server " + newServer_Windows);                                     // 停止虚拟机                ActionResponse repStop = osclient.compute().servers().action(newServer.getId(), Action.STOP);        if(repStop.isSuccess()) {            System.out.println("Stop the server success, status = " + newServer.getId() + newServer.getVmState());        }else {            System.out.println("Stop the server failed " + newServer.getId());        }        osclient.compute().servers().waitForServerStatus(newServer.getId(), Status.SHUTOFF, 3, TimeUnit.MINUTES);                // 启动虚拟机        ActionResponse repStart = osclient.compute().servers().action(newServer.getId(), Action.START);        if(repStart.isSuccess()) {            System.out.println("Start the server success, status = " + newServer.getId() + newServer.getVmState());        }else {            System.out.println("Start the server failed " + newServer.getId());        }        osclient.compute().servers().waitForServerStatus(newServer.getId(), Status.ACTIVE, 3, TimeUnit.MINUTES);                // 重启虚拟机                ActionResponse repReboot = osclient.compute().servers().reboot(newServer.getId(), RebootType.SOFT);        if(repReboot.isSuccess()) {            System.out.println("Reboot the server success, status = " + newServer.getId() + newServer.getVmState());        }else {            System.out.println("Reboot the server failed " + newServer.getId());        }        osclient.compute().servers().waitForServerStatus(newServer.getId(), Status.ACTIVE, 3, TimeUnit.MINUTES);                // 删除虚拟机        ActionResponse repDelete = osclient.compute().servers().delete(newServer.getId());        if(repDelete.isSuccess()) {            System.out.println("Delete the server success, status = " + newServer.getId() + newServer.getVmState());        }else {            System.out.println("Delete the server failed " + newServer.getId());        }                ActionResponse repDelete_Windows = osclient.compute().servers().delete(newServer_Windows.getId());        if(repDelete_Windows.isSuccess()) {            System.out.println("Delete the server success, status = " + newServer_Windows.getId() + newServer.getVmState());        }else {            System.out.println("Delete the server failed " + newServer_Windows.getId());        }                }        
总条数:873 到第
上滑加载中