Я пытаюсь реализовать приложение-функцию 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
Приложение-функция Azure для запуска виртуальных машин Azure по требованию ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Приложение-функция Azure для запуска виртуальных машин Azure по требованию
Anonymous » » в форуме CSS - 0 Ответы
- 13 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Ubuntu OpenVPN исключает хост и передает трафик только с виртуальных машин [закрыто]
Anonymous » » в форуме Linux - 0 Ответы
- 34 Просмотры
-
Последнее сообщение Anonymous
-