Приложение-функция Azure для запуска виртуальных машин Azure по требованиюPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Приложение-функция Azure для запуска виртуальных машин Azure по требованию

Сообщение Anonymous »

Я пытаюсь реализовать приложение-функцию Azure, в котором перечислены все виртуальные машины Azure в конкретной подписке и есть возможность включать их из меню панели мониторинга. ..Я бы хотел, чтобы виртуальная машина автоматически отключалась через 8 часов с момента ее запуска.
Следующее решение на Github - почти то, что я ищу, однако оно работает. расписания, а не включения виртуальной машины по требованию. https://github.com/sg3-141-592/AzStartStop Я разветвил это и пытаюсь отредактировать код Python, но получаю ошибки из-за того, что интерфейс не соответствует коду.
Я не уверен, как лучше всего создать интерфейс, соответствующий внесенным мной изменениям в коде Python. Я знаю, что исходное решение было создано с использованием Vue, однако я надеюсь на что-то более простое. Есть хорошие идеи для внешнего интерфейса?
import azure.functions as func
from azure.mgmt.compute import ComputeManagementClient
from azure.identity import DefaultAzureCredential
import logging
import utilities

startstop_bp = func.Blueprint()

@startstop_bp.function_name(name="StartStop")
@startstop_bp.route(route="startstop", methods=["POST"])
def start_stop_vms(req: func.HttpRequest) -> func.HttpResponse:
vm_name = req.params.get('vm_name')
if not vm_name:
try:
req_body = req.get_json()
except ValueError:
pass
else:
vm_name = req_body.get('vm_name')

if not vm_name:
return func.HttpResponse(
"Please pass the VM name in the request body",
status_code=400
)

# Get the set timezone
current_timezone = utilities.get_setting("Timezone")
if not current_timezone:
# Default to UTC if the user hasn't set a timezone
current_timezone = "UTC"
current_time = datetime.datetime.now(pytz.timezone(current_timezone))
logging.info(f"Evaluating start/stop at {current_time}")

for subscription in utilities.get_subscriptions():
logging.info(f"Processing subscription: {subscription['id']}")
compute_client = ComputeManagementClient(
credential=DefaultAzureCredential(exclude_environment_credential=True),
subscription_id=subscription["id"]
)

for vm in compute_client.virtual_machines.list_all():
if vm.name == vm_name:
logging.info(f"Found VM: {vm.id}")
vm_state = utilities.extract_vm_state(vm, compute_client)
logging.info(f"[{vm.name}]: {vm_state}")

if vm_state != "running":
utilities.log_vm_event(vm, "starting")
utilities.set_vm_state('started', vm, compute_client)
logging.info(f"[{vm.name}]: starting...")
return func.HttpResponse(f"VM {vm_name} is starting.", status_code=200)
else:
return func.HttpResponse(f"VM {vm_name} is already running.", status_code=200)

return func.HttpResponse(f"VM {vm_name} not found.", status_code=404)



Подробнее здесь: https://stackoverflow.com/questions/793 ... -on-demand
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Приложение-функция Azure для запуска виртуальных машин Azure по требованию
    Anonymous » » в форуме CSS
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Ошибка Azure Async Python SDK при переборе списка виртуальных машин
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Ubuntu OpenVPN исключает хост и передает трафик только с виртуальных машин [закрыто]
    Anonymous » » в форуме Linux
    0 Ответы
    34 Просмотры
    Последнее сообщение Anonymous
  • Варианты виртуальных машин для современных JVM и JDK
    Anonymous » » в форуме JAVA
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Варианты виртуальных машин для современных JVM и JDK
    Anonymous » » в форуме JAVA
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»