Пакет SDK для Azure Java - где получить значения для serviceName и deploymentName на новом портале

Я пытаюсь использовать пакет SDK для Azure Java для автоматизации задач для моих виртуальных машин Azure, таких как их запуск и остановка на разных этапах дня.

Я просматривал документацию по Azure для запуска виртуальной машины здесь

Сигнатура рассматриваемого метода выглядит следующим образом

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

Мне было интересно - где я могу получить значения для serviceName и deploymentName на консоли Azure для моей виртуальной машины?

Я пробовал искать на старом портале и на новом портале, но до сих пор мне не удалось найти эти значения.

Этот вопрос выглядит как дубликат вопроса по указанному ниже URL-адресу, но это не имя развертывания для поиска Azure

Действительно, если вы посмотрите на старый портал (https://manage.windowsazure.com), приведенная выше ссылка дает правильный ответ для получения имени развертывания

Однако, если вы создаете виртуальную машину на старом портале и просматриваете ее на новом портале (https://portal.azure.com) - он отображается под опцией Virtual Machine Classic. С помощью приведенной выше ссылки я смог выполнять операции на классических виртуальных машинах с помощью Java SDK.

Если я создаю виртуальную машину на новом портале в параметре «Виртуальная машина» (не «Виртуальная машина» (классический)), я не могу найти имя развертывания или имя службы.

Итак, чтобы обновить вопрос - как найти имя развертывания и имя службы для виртуальной машины на новом портале

Кроме того - еще одна вещь, которую я заметил с SDK - если вы ввели неправильное имя службы - он регистрирует неправильное имя развертывания - это заставило меня некоторое время на классических виртуальных машинах

Просто чтобы закрыть этот вопрос Чтобы иметь возможность выполнять операции на неклассических виртуальных машинах - используйте эту зависимость maven

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

Для операций на неклассических виртуальных машинах - вам необходимо использовать Active Directory Security - см. Эту ссылку - 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>

Для работы на классических виртуальных машинах - нужно использовать сертификаты


person Damien    schedule 09.01.2016    source источник


Ответы (2)


Я не работал с Java SDK (так что, возможно, здесь я совершенно не в курсе), но я не думаю, что вы можете использовать эту библиотеку для выполнения операций на non-classic виртуальных машинах. Эти виртуальные машины развертываются с помощью Azure Resource Manager, и у них есть совершенно другой механизм управления ресурсами.

Посмотрите на исходный код здесь: https://github.com/azure/azure-sdk-for-java, я считаю, что именно здесь вы найдете методы управления виртуальными машинами: https://github.com/Azure/azure-sdk-for-java/tree/master/управлениересурсами/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/).

person Gaurav Mantri    schedule 09.01.2016
comment
Привет, Гуарав - это те же документы и классы более-менее. Единственное отличие - это название пакета. Ваша ссылка /com/microsoft/azure/management/compute/VirtualMachineOperations.html, а моя - com / microsoft / windowsazure / management / compute / VirtualMachineOperations.html - person Damien; 09.01.2016
comment
Если вы видите подпись метода, они разные. В новом мире вам просто нужно указать имя группы ресурсов и имя виртуальной машины, чтобы запустить ее при использовании метода beginStarting. - person Gaurav Mantri; 09.01.2016
comment
Извинения - теперь я это вижу. Итак, 1 набор методов для классических и 1 набор методов для новых виртуальных машин. Спасибо, что заметили это. Тогда мне нужно импортировать обе банки, если это так. Не знаю, как вы, но документация сбивает с толку. Вы знаете, есть ли у них ссылка на последнюю версию их API? - person Damien; 09.01.2016
comment
Не стоит беспокоиться! Рад, что мы очистили этот вопрос. Когда вы говорите API, вы имеете в виду REST API? - person Gaurav Mantri; 09.01.2016
comment
Да, их api-документы - будь то остальные api или Java SDK. Как для Java SDK - если вы посмотрите здесь документацию по API, azure. github.io/azure-sdk-for-java/index.html - перечислены 2 версии класса VirtualMachineOperations. Я думаю, это то, что привело меня в замешательство, извините. Я знаю, что для других apis / sdk, таких как spring, документы имеют версии, и есть ссылка, которая всегда приведет вас к последней версии - person Damien; 09.01.2016

Недавно компания azure выпустила Java SDK 1.0.0 как версию LTS. Используйте этот SDk.

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

Чтобы запустить и остановить виртуальную машину

    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();
        
        

Но это блокирующие звонки. Вы можете использовать метод startAsync (), чтобы запустить его асинхронно.

person Rishi Anand    schedule 30.05.2017