Использование ClientAPI для услуги "Виртуальная инфраструктура IAZ" #183

Доступ к клиентскому API для услуги Виртуальная инфраструктура IAZ предоставляется по запросу на info@oblakoteka.ru

 

Доступ к ClientAPI:

https://clientapi2.oblakoteka.ru/

Идентификатор доступа: <переданы после предоставления доступа>

Секретный ключ: <переданы после предоставления доступа>

 

Для использования API необходимо сгенерировать токен доступа.

https://clientapi2.oblakoteka.ru/swagger/ui/index#!/Token/Token_Post

 

 

Пример использования API для создания виртуальной машины:

 

1) Получаем токен доступа к ClientAPI

 

-Запрос-

POST https://clientapi2.oblakoteka.ru/api/v1/token

 

Content-Type: application/json

Accept: application/json

vendor-api-tracking-id: 798008d8-007b-4e85-885b-738eba896325

 

{

  "ClientApiId": "c0bdc0c7-1a54-434f-9ebf-851d268ff538",

  "SecretKey": "YzBiZGMwYzctMWE1NC00MzRmLTllYmYtODUxZDI2OGZmNTM4OmU4Mjg3YjUxLWM5YzEtNDZkYS1iNDIxLTZmNmVjYzAzMWIwMQ==",

  "ExpiryDate": "2021-09-15T10:46:56.687Z"

}

 

-Ответ-

{

  "Token": "SharedAccessSignature uid=c0bdc0c7-1a54-434f-9ebf-851d268ff538&ex=2021-09-15T10:46:56.6870000Z&sn=eyRZwG/nBSfMlS86n2IntXrhw9TnDTcsN1L3lNXdiMTinXGeqgJ6KFVfCalh9P0QqDvFWxovh3S5RR7LUKDdwg==",

  "ExpiryDate": "2021-09-15T10:46:56.687Z"

}

 

где ExpiryDate - дата и время окончания действия токена,

    ClientApiId - идентификатор доступа к ClientAPI,

    SecretKey - секретный ключ для доступа к ClientAPI,   

    vendor-api-tracking-id - уникальный идентификатор пары «запрос-ответ» для обеспечения идемпотентности

 

2) Используя токен доступа получаем список групп конфигураций FixVm

Тело запроса оставляем пустым, чтобы получить весь список

 

-Запрос-

POST https://clientapi2.oblakoteka.ru/api/v1/classifier/fixvmconfigurationgroup/find

 

Authorization: SharedAccessSignature uid=c0bdc0c7-1a54-434f-9ebf-851d268ff538&ex=2021-09-15T10:46:56.6870000Z&sn=eyRZwG/nBSfMlS86n2IntXrhw9TnDTcsN1L3lNXdiMTinXGeqgJ6KFVfCalh9P0QqDvFWxovh3S5RR7LUKDdwg==

Content-Type: application/json

Accept: application/json

vendor-api-tracking-id: 798008d8-007b-4e85-885b-738eba896225

 

{}

 

где vendor-api-tracking-id - уникальный идентификатор пары «запрос-ответ» для обеспечения идемпотентности

 

-Ответ-

{

  "records": [

    {

      "Name": "Windows",

      "Note": "Виртуальные машины с OC Windows",

      "ID": "00000000-0000-0000-0000-000000000001",

      "Sec_Created": "2019-07-03T23:33:22"

    },

    {

      "Name": "Mikrotik",

      "Note": "Конфигурации ВМ MikroTik",

      "ID": "f1453fe5-b54d-4d1d-81bb-22a3ba54f6b7",

      "Sec_Created": "2019-08-08T09:20:50"

    },

    {

      "Name": "Linux",

      "Note": "Здесь виртуальные машины Linux для красноглазых",

      "ID": "f2e44a9f-fc80-429f-a1da-776e2302baa2",

      "Sec_Created": "2019-12-03T12:48:22"

    },

    {

      "Name": "Bitrix",

      "Note": null,

      "ID": "7fe86f53-801a-4ba6-88cb-85b40c1859b4",

      "Sec_Created": "2020-02-21T17:34:55"

    }

  ],

  "_metadata": {

    "PageNumber": 1,

    "RecordsPerPage": 2147483647,

    "PagesCount": 1,

    "RecordsCount": 4

  }

}

 

где Name - имя группы конфигураций FixVm,

    Note - описание группы конфигураций FixVm,

    ID - идентификатор группы конфигураций FixVm,

    Sec_Created - дата создания группы конфигураций FixVm

 

3) Используя токен доступа получаем список ЦОД

Тело запроса оставляем пустым, чтобы получить весь список

 

-Запрос-

 

POST https://clientapi2.oblakoteka.ru/api/v1/classifier/cod/find

 

Authorization: SharedAccessSignature uid=c0bdc0c7-1a54-434f-9ebf-851d268ff538&ex=2021-09-15T10:46:56.6870000Z&sn=eyRZwG/nBSfMlS86n2IntXrhw9TnDTcsN1L3lNXdiMTinXGeqgJ6KFVfCalh9P0QqDvFWxovh3S5RR7LUKDdwg==

Content-Type: application/json

Accept: application/json

vendor-api-tracking-id: 798008d8-007b-4e85-885b-738eba896225

 

{}

 

где vendor-api-tracking-id - уникальный идентификатор пары «запрос-ответ» для обеспечения идемпотентности

 

-Ответ-

{

  "records": [

    {

      "ID": 0,

      "Note": "ЦОД ОСТ",

      "RegionID": "52eab5bd-edb8-4761-9a64-e0c538135efb"

    },

    {

      "ID": 1,

      "Note": "ЦОД НОРД",

      "RegionID": "52eab5bd-edb8-4761-9a64-e0c538135efb"

    },

    {

      "ID": 2,

      "Note": "ЦОД ЭСТ",

      "RegionID": "90ff10be-e8b4-4260-98a1-89ef84e8d62d"

    },

    {

      "ID": 3,

      "Note": "ЦОД Тюмень",

      "RegionID": "eacd8aa4-e43d-46eb-8309-2f87568ecd8e"

    },

    {

      "ID": 4,

      "Note": "ЦОД ОСТ2",

      "RegionID": "b881c844-85dc-46a5-906d-d045580c047b"

    }

  ],

  "_metadata": {

    "PageNumber": 1,

    "RecordsPerPage": 2147483647,

    "PagesCount": 1,

    "RecordsCount": 5

  }

}

 

где ID - идентификатор ЦОД,

    Note - описание ЦОД,   

    RegionID - идентификатор региона ЦОД

 

4) Используя токен доступа получаем список линеек ВМ

Тело запроса оставляем пустым, чтобы получить весь список

 

-Запрос-

POST https://clientapi2.oblakoteka.ru/api/v1/classifier/line/find

 

Authorization: SharedAccessSignature uid=c0bdc0c7-1a54-434f-9ebf-851d268ff538&ex=2021-09-15T10:46:56.6870000Z&sn=eyRZwG/nBSfMlS86n2IntXrhw9TnDTcsN1L3lNXdiMTinXGeqgJ6KFVfCalh9P0QqDvFWxovh3S5RR7LUKDdwg==

Content-Type: application/json

Accept: application/json

vendor-api-tracking-id: 798008d8-007b-4e85-885b-738eba896225

 

{}

 

где vendor-api-tracking-id - уникальный идентификатор пары «запрос-ответ» для обеспечения идемпотентности

 

-Ответ-

{

  "records": [

    {

      "Name": "Универсальные",

      "Note": "Универсальные виртуальные машины, подходят для любых задач",

      "Default": true,

      "ID": "00000000-0000-0000-0000-000000000002",

      "Sec_Created": "2019-12-10T12:31:58"

    },

    {

      "Name": "Производительные",

      "Note": "Виртуальные машины с повышенной производительностью и вообще крутые",

      "Default": false,

      "ID": "00000000-0000-0000-0000-000000000003",

      "Sec_Created": "2019-12-10T12:31:58"

    },

    {

      "Name": "Стартовые",

      "Note": "Для нагрузок начального уровня",

      "Default": false,

      "ID": "591229bf-bb76-4b71-8752-0cdf1db4800d",

      "Sec_Created": "2019-12-12T12:19:14"

    }

  ],

  "_metadata": {

    "PageNumber": 1,

    "RecordsPerPage": 2147483647,

    "PagesCount": 1,

    "RecordsCount": 3

  }

}

 

где ID - идентификатор линейки ВМ,

    Name - имя линейки ВМ,   

    Note - описание линейки ВМ,   

    Default - признак предложения данной линейки по умолчанию,

    Sec_Created - дата создания линейки ВМ

 

5) Используя токен доступа на основе выбранной конфигурации FixVm, ЦОД и линейки ВМ получаем список конфигураций fixVm, доступных пользователю для создания ВМ.

 

-Запрос-

GET https://clientapi2.oblakoteka.ru/api/v1/vm/availablefixvmconfiguration/list?fixVmConfigurationGroupId=f2e44a9f-fc80-429f-a1da-776e2302baa2&codId=0&lineId=591229bf-bb76-4b71-8752-0cdf1db4800d

 

Authorization: SharedAccessSignature uid=c0bdc0c7-1a54-434f-9ebf-851d268ff538&ex=2021-09-15T10:46:56.6870000Z&sn=eyRZwG/nBSfMlS86n2IntXrhw9TnDTcsN1L3lNXdiMTinXGeqgJ6KFVfCalh9P0QqDvFWxovh3S5RR7LUKDdwg==

Content-Type: application/json

Accept: application/json

vendor-api-tracking-id: 798008d8-007b-4e85-885b-738eba896225

 

где fixVmConfigurationGroupId - идентификатор выбранной группы конфигураций FixVM,

    codId - идентификатор выбранного ЦОД,   

    lineId - идентификатор выбранной линейки ВМ,       

    Sec_Created - дата создания линейки ВМ,

    vendor-api-tracking-id - уникальный идентификатор пары «запрос-ответ» для обеспечения идемпотентности

 

-Ответ-

Получаем список доступных конфигураций FixVm

Выбираем среди них подходящий, например такой:

 

{

      "ID": "ff10ade9-5d88-493a-b51f-19ff14ba7772",

      "FixVmConfigurationGroupID": "f2e44a9f-fc80-429f-a1da-776e2302baa2",

      "Name": "AL1",

      "Note": "Стартовая ВМ Линукс",

      "TestPeriodDaysCount": 3,

      "CostPerMinute": 0,

      "FixPriceOptions": [

        {

          "ID": "e91ac2a9-c48d-4e96-a93e-cf169bcd867e",

          "PeriodInMonths": 1,

          "Cost": 300

        },

        {

          "ID": "5f285b31-a3e7-4475-9bf6-e8d8904dfd4d",

          "PeriodInMonths": 12,

          "Cost": 3204

        }

      ],

      "VmConfiguration": {

        "vCPU": 1,

        "vRAM": 1

      },

      "Disks": [

        {

          "Size": 40,

          "diskType": {

            "Name": "Стандарт К",

            "Note": null,

            "ID": "00000000-0000-0000-0000-000000000000",

            "Sec_Created": "0001-01-01T00:00:00"

          }

        }

      ],

      "VLANQuota": 1,

      "ExternalIpQuota": 1,

      "ProtectedIpQuota": 0,

      "ShopIpQuota": 0,

      "HnvExternalIpQuota": 1,

      "HnvProtectedIpQuota": 1,

      "IndependentIPQuota": 0

    }

 

где ID - идентификатор конфигурации FixVm,

    FixVmConfigurationGroupID - идентификатор группы конфигураций FixVm,   

    Name - имя конфигурации FixVm,   

    Note - описание конфигурации FixVm,   

    TestPeriodDaysCount - количество дней для тестового периода,

    CostPerMinute - стоимость в минуту,

    FixPriceOptions - опции FixPrice,

            ID - идентификатор опции FixPrice,

            PeriodInMonths - период FixPrice в месяцах,       

            Cost - стоимость за период,

    VmConfiguration - конфигурация ВМ

            vCPU - количество CPU,

            vRAM - количество RAM,

    Disks - диски, входящие в конфигурацию FixVm,

            Size - размер диска в Gb,

            diskType - тип диска,

                        Name - имя типа диска,

                        Note - описание типа диска,

                        ID - идентификатор типа диска,

                        Sec_Created - дата создания типа диска,

    VLANQuota - квота по VLAN,

    ExternalIpQuota - квота по ExternalIp,

    ProtectedIpQuota - квота по ProtectedIp,

    ShopIpQuota - квота по ShopIp,

    HnvExternalIpQuota - квота по HnvExternalIp,

    IndependentIPQuota - квота по IndependentIP

   

6) Используя токен доступа получаем информацию по выбранной конфигурации FixVm

 

-Запрос-

GEt https://clientapi2.oblakoteka.ru/api/v1/vm/availablefixvmconfiguration?codId=0&fixVmConfigurationId=ff10ade9-5d88-493a-b51f-19ff14ba7772

 

Authorization: SharedAccessSignature uid=c0bdc0c7-1a54-434f-9ebf-851d268ff538&ex=2021-09-15T10:46:56.6870000Z&sn=eyRZwG/nBSfMlS86n2IntXrhw9TnDTcsN1L3lNXdiMTinXGeqgJ6KFVfCalh9P0QqDvFWxovh3S5RR7LUKDdwg==

Content-Type: application/json

Accept: application/json

vendor-api-tracking-id: 798008d8-007b-4e85-885b-738eba896e25

 

где fixVmConfigurationGroupId - идентификатор выбранной группы конфигураций FixVM,

    codId - идентификатор выбранного ЦОД,       

    vendor-api-tracking-id - уникальный идентификатор пары «запрос-ответ» для обеспечения идемпотентности

 

-Ответ-

{

  "codNo": 0,

  "codBlockId": "b6436c7a-6ea1-4635-8131-54ac92216dd8",

  "virtualizationHostId": "67a47fc4-0890-4418-be1c-47b8d2213048",

  "scriptKind": "skLinux",

  "extIpVLanTypes": [

    9,

    10,

    13,

    14

  ],

  "newHnvNetworkNetworkDescription": "Сеть",

  "newHnvNetworkSubNetworkDescription": "Подсеть",

  "newHnvNetworkSubnetCIDR": "192.168.0.0/24",

  "newHnvNetworkDns1": "37.230.152.10",

  "newHnvNetworkDns2": "37.230.153.10",

  "availableNetworks": [

    {

      "NetworkType": 0,

      "NetworkKind": 0,

      "HNVNetworkVmmName": null,

      "HNVSubNetworkVmmName": null,

      "CodNo": 0,

      "VLanID": 3792,

      "VLanType": 9,

      "Alias": "External IP (External IP)",

      "Default": false

    },

    {

      "NetworkType": 1,

      "NetworkKind": 2,

      "HNVNetworkVmmName": null,

      "HNVSubNetworkVmmName": null,

      "CodNo": null,

      "VLanID": null,

      "VLanType": null,

      "Alias": "Защищённый IP адрес",

      "Default": false

    },

    {

      "NetworkType": 1,

      "NetworkKind": 1,

      "HNVNetworkVmmName": null,

      "HNVSubNetworkVmmName": null,

      "CodNo": null,

      "VLanID": null,

      "VLanType": null,

      "Alias": "Публичный IP адрес",

      "Default": true

    }

  ],

  "templates": [

    {

      "ID": "94c83685-978b-4f90-be93-d4cc654ffe50",

      "Generation": 2,

      "SiteID": "d6d8eede-300b-495d-8fc9-05f887915b97",

      "FriendlyName": "Ubuntu 20.04",

      "ScriptKind": 1,

      "OSLang": "Eng"

    },

    {

      "ID": "8594f2eb-e07c-4b35-b43e-6d5cf1dd9831",

      "Generation": 2,

      "SiteID": "d6d8eede-300b-495d-8fc9-05f887915b97",

      "FriendlyName": "opensuse leap 15 G2",

      "ScriptKind": 1,

      "OSLang": "Eng"

    },

    {

      "ID": "6e68eb9c-a0eb-421d-8d64-6a3f2c80cbf3",

      "Generation": 2,

      "SiteID": "d6d8eede-300b-495d-8fc9-05f887915b97",

      "FriendlyName": "Fedora 33 G2",

      "ScriptKind": 1,

      "OSLang": "Eng"

    },

    {

      "ID": "f9dc327d-1bb9-4061-94c1-b1a5c2d71a46",

      "Generation": 2,

      "SiteID": "d6d8eede-300b-495d-8fc9-05f887915b97",

      "FriendlyName": "Debian 10.8 G2",

      "ScriptKind": 1,

      "OSLang": "Eng"

    },

    {

      "ID": "30a447b9-e0a6-48a5-b7e4-fffa48c2fe8d",

      "Generation": 2,

      "SiteID": "d6d8eede-300b-495d-8fc9-05f887915b97",

      "FriendlyName": "CentOS 8.3",

      "ScriptKind": 1,

      "OSLang": "Eng"

    },

    {

      "ID": "ff564cbd-462f-4f92-aa17-0c881fcb20e0",

      "Generation": 2,

      "SiteID": "d6d8eede-300b-495d-8fc9-05f887915b97",

      "FriendlyName": "CentOS 7.7",

      "ScriptKind": 1,

      "OSLang": "Eng"

    },

    {

      "ID": "b92770cb-8dd3-4333-8f63-6cf91260dd02",

      "Generation": 1,

      "SiteID": "d6d8eede-300b-495d-8fc9-05f887915b97",

      "FriendlyName": "CentOS 7.7",

      "ScriptKind": 1,

      "OSLang": "Eng"

    },

    {

      "ID": "f62c80fe-961c-463c-899d-b9796e9f292e",

      "Generation": 2,

      "SiteID": "d6d8eede-300b-495d-8fc9-05f887915b97",

      "FriendlyName": "CentOS 6.10 G2",

      "ScriptKind": 1,

      "OSLang": "Eng"

    }

  ],

  "defaultGeneration": 1

}

 

где codNo - номер ЦОД,

    codBlockId - идентификатор блока ЦОД,       

    virtualizationHostId - идентификатор хоста виртуализации,

    scriptKind - тип генерации шаблона (если при создании ВМ использовать данную конфигурацию FixVm, то можно использовать только шаблоны ВМ именно с таким типом генерации),

    extIpVLanTypes - типы VLAN "ExtIp",

    newHnvNetworkNetworkDescription - умолчаемое значение описания сети при создании новой сети HNV при создании ВМ,

    newHnvNetworkSubNetworkDescription - умолчаемое значение описания подсети при создании новой сети HNV при создании ВМ,

    newHnvNetworkSubnetCIDR - умолчаемое значение маски сети при создании новой сети HNV при создании ВМ,

    newHnvNetworkDns1 - умолчаемое значение Dns1 при создании новой сети HNV при создании ВМ,

    newHnvNetworkDns2 - умолчаемое значение Dns2  при создании новой сети HNV при создании ВМ,

    availableNetworks - сети, допустимые для подключения создаваемой ВМ,

            NetworkType - тип сети,

            NetworkKind - род сети,

            HNVNetworkVmmName - краткое имя сети,

            HNVSubNetworkVmmName - краткое имя под сети,

            CodNo - номер ЦОД,

            VLanID - идентификатор VLAN,

            VLanType - идентификатор типа VLANТ,

            Alias - описание сети,

            Default - признак предложения подключения к данной сети умолчанию,

    templates - шаблоны ВМ,

            ID - идентификатор шаблона ВМ,

            Generation - поколение ВМ,

            SiteID - идентификатор сайта,

            FriendlyName - имя шаблона ВМ,

            ScriptKind - тип генерации шаблона ВМ,

            OSLang - язык системы,

    defaultGeneration - поколение Вм, предлагаемое по умолчанию

 

7) Используя токен доступа создаем ВМ VDS.

 

-Запрос-

POST https://clientapi2.oblakoteka.ru/api/v1/vm

 

Authorization: SharedAccessSignature uid=c0bdc0c7-1a54-434f-9ebf-851d268ff538&ex=2021-09-15T10:46:56.6870000Z&sn=eyRZwG/nBSfMlS86n2IntXrhw9TnDTcsN1L3lNXdiMTinXGeqgJ6KFVfCalh9P0QqDvFWxovh3S5RR7LUKDdwg==

Content-Type: application/json

Accept: application/json

vendor-api-tracking-id: 798008d8-007b-4e85-885b-738eba896425

 

{

  "SubscriptionID": null,

  "VmConfigurationID": "ff10ade9-5d88-493a-b51f-19ff14ba7772",

  "FixPriceOptionID": "e91ac2a9-c48d-4e96-a93e-cf169bcd867e",

  "CodID": 0, 

  "VirtualizationHostId": null,

  "InTest": false,

  "Name": "Тестовая ВМ",

  "Note": "Проба пера",

  "OSAdminLogin": null,

  "OSAdminPass": "111111@Q",

  "VmTemplateID": "b92770cb-8dd3-4333-8f63-6cf91260dd02",    

  "BackupConfigurationID": null

}

 

где VmConfigurationID - идентификатор выбранной конфигурации FixVm,

    FixPriceOptionID - идентификатор выбранной опции FixPrice выбранной конфигурации FixVm,

    CodID - идентификатор ЦОД,

    InTest - признак тестовой ВМ (если поддерживает выбранная конфигурация FixVm), 

    Name - пользовательское имя ВМ, 

    Name - описание ВМ,

    OSAdminPass - пароль администратора в системе (логин администратора пока не задается),

    OSAdminLogin - логин администратора ВМ (для ВМ на Windows и Linuх указывать не нужно)

    VmTemplateID - идентификатор выбранного шаблона ВМ,  

    vendor-api-tracking-id - уникальный идентификатор пары «запрос-ответ» для обеспечения идемпотентности

 

-Ответ-

{

   "SubscriptionID":"4c3e974a-cefd-4454-bc25-36dc7cb0f7ac",

   "CloudID":"79911b79-330c-427e-bceb-9431b12fe738",

   "GenerationID":1,

   "ADUserName":"dasolovkinne2",

   "ADUserPassword":"pdasolovkinne2!-9125",

   "ADUserRole":"dasolovkinne2SSUR",

   "CodBlockID":"b6436c7a-6ea1-4635-8131-54ac92216dd8",

   "Name":"Тестовая ВМ",

   "Note":"Проба пера",

   "OSAdminLogin":"root",

   "OSAdminPass":"111111@Q",

   "State":1,

   "Status":1,

   "VmState":"PowerOff",

   "VmStateLastUpdateDate":null,

   "FixVmConfiguration_InstanceID":"14bf7af7-5763-4548-9dbd-8cbd49b33a17",

   "VmConfigurationID":"dc6574f0-2526-4c55-b8f1-f906860d796e",

   "VmTemplateScriptKind":1,

   "VmTypeID":"3f87a64e-7097-4c8f-b87e-0a19a0c13958",

   "VmTypeName":"Стартовые Linux",

   "VmClass":null,

   "VmHardwareConfigurationCode":null,

   "vCPU":1,

   "vRAM":1,

   "ReservationPercent":100.0,

   "MaxPercent":100.0,

   "Clustered":false,

   "ActiveHostGroupID":"SB_Brv01_Std",

   "VirtualNetwork":"SETSwitch_Standalone_NC",

   "VMNetworkOptimization":false,

   "CostPerMinute":0.0053,

   "WLPartnerEndUserId":null,

   "BlockedDate":null,

   "ID":"b0a73f60-a3ba-4f4f-8417-3ea22f4b06a2",

   "Sec_Created":"2021-09-13T17:36:49.3855385+03:00"

}