Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Оплата
Новости
Доставка
Загрузки
Форум
Настройка
    info@proxmox.su
    +7 (495) 320-70-49
    Заказать звонок
    Аспро: ЛайтШоп
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Аспро: ЛайтШоп
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Аспро: ЛайтШоп
    Телефоны
    +7 (495) 320-70-49
    Заказать звонок
    0
    0
    0
    Аспро: ЛайтШоп
    • +7 (495) 320-70-49
      • Назад
      • Телефоны
      • +7 (495) 320-70-49
      • Заказать звонок
    • info@proxmox.su
    • Москва, Бакунинская улица, 69с1
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    Proxmox Виртуальная Среда
    небольшая ошибка в документации API Proxmox

    Форумы: Proxmox Виртуальная Среда, Proxmox Backup Server, Proxmox Mail Gateway, Proxmox Datacenter Manager
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    небольшая ошибка в документации API Proxmox, Proxmox Виртуальная Среда
     
    uriel
    Guest
    #1
    0
    02.08.2020 20:58:00
    Привет, когда я проверял текущий существующий клиент Proxmox API на JavaScript, я понял, что все текущие JavaScript API... ужасны. (все они зависят от curl). Я сейчас занимаюсь разработкой собственного API-клиента. Не мог бы ты исправить некоторые неверные типы в JSON API? Заменив: Code: "minimum" : "0", на: Code: "minimum" : 0, таких ошибок 23. Например: Code: "bwlimit" : { "default" : "лимит миграции из датацентра или конфигурации хранилища", "description" : "Переопределить лимит ввода-вывода (в KiB/s).", "minimum" : "0", "optional" : 1, "type" : "number", "typetext" : "<number> (0 - N)"}, также могли бы ты заменить: Code: "optional" : "1", на: Code: "optional" : 1, таких ошибок 4. И вопрос: в чем разница между типами integer и number? "type" : "number" используется 154 раза, "type" : "integer" используется 845 раз.
     
     
     
    fabian
    Guest
    #2
    0
    17.09.2020 07:32:00
    Да, значение по умолчанию равно 1, поэтому его часто опускают. Возможно, нам стоит добавить его в apidump во всех случаях, когда оно не задано явно.
     
     
     
    uriel
    Guest
    #3
    0
    16.09.2020 10:45:00
    Я начал реализацию, и она уже работает: github. Используя API, код выглядит так: JavaScript: import { proxyProxmox } from "./contructor"; import ProxmoxEngine from "./ProxmoxEngine"; async function test() { // авторизуем самоподписанный сертификат process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; // загружаем образцы информации для аутентификации const auth = await import('../../../auth'); const { host, password } = auth.default; // подключаемся к proxmox const promox = proxyProxmox(new ProxmoxEngine({host, password})); // перечисляем узлы const nodes = await promox.nodes.$get(); // перебираем узлы кластера for (const node of nodes) { const theNode = promox.nodes.$(node.node); // перечисляем Qemu VMs const qemus = await theNode.qemu.$get({full:true}); // перебираем Qemu VMs for (const qemu of qemus) { // делаем что-то. const config = await theNode.qemu.$(qemu.vmid).config.$get(); console.log(`vm: ${config.name}, memory: ${config.memory}`); // const vnc = await theNode.qemu.$(qemu.vmid).vncproxy.$post(); // console.log('vnc:', vnc); const spice = await theNode.qemu.$(qemu.vmid).spiceproxy.$post(); console.log('spice:', spice); } } } test().catch(console.error); И интеллектуальная поддержка в IDE работает на каждой части кода, нет необходимости проверять какие-либо внешние документы. Мне нужно провести еще несколько тестов перед публичным релизом.
     
     
     
    uriel
    Guest
    #4
    0
    16.09.2020 11:30:00
    Модель с: https://pve.proxmox.com/pve-docs/api-viewer/ не актуальна. Например, в https://pve.proxmox.com/pve-docs/api-viewer/#/nodes/{node}/qemu/{vmid}/status/current поле template отсутствует в ответе. Так как мой API-клиент основан на этом swagger, поля тоже отсутствуют. Может кто-нибудь обновить его с актуальной платформы?
     
     
     
    fabian
    Guest
    #5
    0
    16.09.2020 11:56:00
    Копия, представляющая вашу систему, отправляется как часть pve-docs, но как схемы возврата, так и схемы параметров могут иметь 'additionalproperties', установленные в true, в этом случае они допускают дополнительные ключи/значения.
     
     
     
    uriel
    Guest
    #6
    0
    16.09.2020 19:52:00
    Привет, я только что реализовал 'additionalProperties', чтобы принимать любые другие параметры, но это не помогло, и мне пришлось изменить исходную модель, чтобы она работала, добавив additionalProperties: 1. JSON: {
      "info" : {
         "GET" : {
            "allowtoken" : 1,
            "description" : "Получить статус виртуальной машины.",
            "method" : "GET",
            "name" : "vm_status",
            "parameters" : {
               "additionalProperties" : 0, // если установить в один, может принимать дополнительные параметры?
               "properties" : {
                  "node" : {
                     "description" : "Имя узла кластера.",
                     "format" : "pve-node",
                     "type" : "string",
                     "typetext" : "<строка>"
                  },
                  "vmid" : {
                     "description" : "Уникальный ID виртуальной машины.",
                     "format" : "pve-vmid",
                     "minimum" : 1,
                     "type" : "integer",
                     "typetext" : "<целое> (1 - N)"
                  }
               }
            },
            "permissions" : {
               "check" : [
                  "perm",
                  "/vms/{vmid}",
                  [
                     "VM.Audit"
                  ]
               ]
            },
            "protected" : 1,
            "proxyto" : "node",
            "returns" : {
              "additionalProperties" : 1, // нет в исходном json
               "properties" : {
                  "agent" : {
                     "description" : "Qemu GuestAgent включен в конфигурации.",
                     "optional" : 1,
                     "type" : "boolean"
                  },
               // убран json
                  "vmid" : {
                     "description" : "Уникальный ID виртуальной машины.",
                     "format" : "pve-vmid",
                     "minimum" : 1,
                     "type" : "integer"
                  }
               },
               "type" : "object"
            }
         }
      },
      "leaf" : 1,
      "path" : "/nodes/{node}/qemu/{vmid}/status/current",
      "text" : "текущий"
    } в swagger всего 7 "additionalProperties" : 1. Метод, который я пытаюсь вызвать, не имеет ни одного из них.
     
     
     
    uriel
    Guest
    #7
    0
    17.09.2020 17:06:00
    Реализовано по умолчанию как 1. Время выхода... опубликовано как: https://www.npmjs.com/package/proxmox-api
     
     
     
    r.jochum
    Guest
    #8
    0
    17.09.2020 21:25:00
    Очень здорово, спасибо!
     
     
     
    uriel
    Guest
    #9
    0
    18.09.2020 13:04:00
    Теперь, когда мое новое API работает, я хотел бы предложить некоторые улучшения для основного swagger. Какой репозиторий мне следует клонировать для предложения изменений? У вас их довольно много: https://git.proxmox.com/ Я могу внести изменения в свою копию, но это не самый лучший способ. ------ Я начал клонировать все репозитории, чтобы найти нужный, это займет немного времени.
     
     
     
    fabian
    Guest
    #10
    0
    18.09.2020 14:42:00
    Это было бы здорово! Ознакомьтесь с https://pve.proxmox.com/wiki/Developer_Documentation (общие рекомендации и рабочий процесс) https://git.proxmox.com/?p=pve-common.git;a=blob;f=src/PVE/JSONSchema.pm; (содержит большую часть основного механизма для нашей схемы API) https://git.proxmox.com/?p=pve-common.git;a=blob;f=src/PVE/RESTHandler.pm; (содержит код, который на самом деле генерирует дамп API) https://git.proxmox.com/?p=pve-docs.git;a=blob;f=extractapi.pl; (репозиторий + код, где дамп конвертируется в JS файл, который использует просмотрщик API)
     
     
     
    uriel
    Guest
    #11
    0
    18.09.2020 15:09:00
    Кстати, когда я впервые вызвал: `GET /nodes/{node}/qemu` с кодом: `qemus = await theNode.qemu.$get({full:true});`, я получил ошибку, сообщающую, что 'true' не является корректным булевым значением, и мне пришлось конвертировать все мои булевы значения в 0 или 1. Это не большая проблема, но странно. Один пользователь Proxmox по имени 'fabian' сказал мне, что для опциональных значений это действительно правильно, так как это булево значение, которое в нашем API является строкой, принимающей '0|1|on|off|yes|no|true|false', но передача целого числа 1/0 также работает, так как в нашем бэкенде это все равно конвертируется в строку.
     
     
     
    fabian
    Guest
    #12
    0
    21.09.2020 08:11:00
    Вы правы — проверка типов в API строже, чем в парсере позже. В конфигурационных файлах принимаются все эти значения, но в API проходят через проверку типов только 1/0.
     
     
     
    uriel
    Guest
    #13
    0
    23.09.2020 15:38:00
    Я использовал большинство данных swagger, на данный момент: - permissions не используется, это не очень важно для API, больше информация для системных администраторов. - Я не знаю, для чего поле protected. - Я не знаю, для чего поле leaf. На данный момент паттерн regex не может быть реализован в typescript; минимальная/максимальная длина может быть осуществлена только с помощью очень сложного синтаксиса typescript, я предпочитаю его не использовать. У меня нет возможности отличить integer от number. Поле requires можно задать, но это может привести к большому количеству новых условных типов, поэтому пока нет. Некоторые сложные форматы полей можно преобразовать для большей читаемости. Вот и все. Текущая версия теперь 0.0.4, а 0.0.5 уже в пути.
     
     
     
    fabian
    Guest
    #14
    0
    24.09.2020 08:34:00
    защищенное означает, что этот конечный пункт API проксируется к pvedaemon, работающему с правами root (например, потому что ему нужно выполнять операции со.storage, которые pveproxy/www-data не может сделать). leaf просто означает, что, рассматривая API как древовидную структуру, этот конечный пункт не имеет дочерних элементов.
     
     
     
    Страницы: 1
    Читают тему
    +7 (495) 320-70-49
    info@proxmox.su

    Конфиденциальность Оферта
    © 2026 Proxmox.su
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры