Azure Java SDK - 在新Portal

时间:2016-01-09 13:09:28

标签: java azure azure-management-api azure-java-sdk

我正在尝试使用Azure Java SDK自动执行我的Azure虚拟机的任务,例如在一天的各个阶段启动和停止它们

我正在查看启动虚拟机的azure文档 here

有问题的方法签名如下

OperationResponse beginStarting(java.lang.String serviceName,
                            java.lang.String deploymentName,
                            java.lang.String virtualMachineName)
                     throws java.io.IOException,
                            ServiceException

我想知道 - 在哪里可以获取我的虚拟机的azure控制台上的serviceName和deploymentName的值?

我尝试查看旧门户网站和新门户网站,但到目前为止我一直无法找到这些值

这个问题在下面的网址中看起来与问题重复,但事实并非如此 Azure find deployment name

确实当你查看旧门户网站(https://manage.windowsazure.com)时,上面的链接给出了获取部署名称的正确答案

但是,如果您在旧门户中创建VirtualMachine并在新门户(https://portal.azure.com)中查看它 - 它将显示在Virtual Machine Classic选项下。借助上述链接,我能够使用Java SDK在经典虚拟机上执行操作

如果我在虚拟机选项(不是虚拟机(经典))下的新门户中创建虚拟机,我无法找到deploymentName或serviceName

所以更新问题 - 如何在门户中找到虚拟机的deploymentName和serviceName

另外 - 我注意到SDK的另一件事 - 如果您输入了错误的serviceName - 它会记录部署名称错误 - 这让我在经典虚拟机上停留了一段时间

刚刚结束这个问题 为了能够在非经典虚拟机上执行操作 - 使用此maven依赖

<dependency>
    <groupId>com.microsoft.azure</groupId>
    <artifactId>azure-mgmt-compute</artifactId>
    <version>0.9.0</version>
</dependency>

对于非经典虚拟机上的操作 - 您需要使用Active Directory安全 - 请参阅此链接 - https://azure.microsoft.com/en-us/documentation/articles/resource-group-create-service-principal-portal/ 要在经典虚拟机上执行操作 - 请使用此maven依赖性

<dependency>
    <groupId>com.microsoft.azure</groupId>
    <artifactId>azure-svc-mgmt-compute</artifactId>
    <version>0.9.0</version>
</dependency>

对于经典虚拟机上的操作 - 您需要使用证书

2 个答案:

答案 0 :(得分:1)

我还没有使用过Java SDK(所以我可能完全不在这里),但我不认为你可以使用这个库在non-classic虚拟机上执行操作。这些VM是通过Azure Resource Manager部署的,它们具有完全不同的机制来管理资源。

在这里查看源代码:https://github.com/azure/azure-sdk-for-java,我相信您可以在这里找到管理虚拟机的方法:https://github.com/Azure/azure-sdk-for-java/tree/master/resource-management/azure-mgmt-compute/src/main/java/com/microsoft/azure/management/compute

有关您的具体查询,请参阅此处的文档:http://azure.github.io/azure-sdk-for-java/com/microsoft/azure/management/compute/VirtualMachineOperations.html#beginStarting-java.lang.String-java.lang.String-(这是您可以找到完整文档的地方 - http://azure.github.io/azure-sdk-for-java/)。

答案 1 :(得分:0)

最近,azure发布了Java SDK 1.0.0作为LTS版本。使用那个SDk。

<dependency>
    <groupId>com.microsoft.azure</groupId>
    <artifactId>azure</artifactId>
    <version>1.0.0</version>
</dependency>

启动和停止虚拟机

&#13;
&#13;
    ApplicationTokenCredentials credentials = new ApplicationTokenCredentials(clientId, tenantId, clientKey, AzureEnvironment.AZURE);
    Azure azure =  Azure.authenticate(credentials).withSubscription(subscriptionId);

azure.virtualMachines().start("resourceGroupName", "vmName");
azure.virtualMachines().powerOff("resourceGroupName", "vmName");

    azure.virtualMachines().getByResourceGroup("resourceGroupName", "vmName").start();
    azure.virtualMachines().getByResourceGroup("resourceGroupName", "vmName").powerOff();
        
        
&#13;
&#13;
&#13;

但这些是阻止通话。您可以使用startAsync()方法以异步方式启动它。