Я пытаюсь добавить Traffic Manager Profile
с Traffic Manager Endpoint
, включенным через azure-sdk-for-ruby
.
Однако тело, созданное SDK для профиля TM, не содержит пары атрибутов (имя, тип), которые необходимы для создания конечной точки TM. Без этих атрибутов SDK завершается ошибкой со следующей ошибкой
"body": "{\"code\":\"BadRequest\",\"message\":\"Endpoint name '' is invalid.
Endpoint names cannot be empty or all whitespace, and must be up to 260 alphanumeric characters long.
The type '<null>' specified for endpoint '<null>' is invalid. Valid endpoint types are:
'Microsoft.Network\\/trafficManagerProfiles\\/azureEndpoints',
'Microsoft.Network\\/trafficManagerProfiles\\/externalEndpoints',
'Microsoft.Network\\/trafficManagerProfiles\\/nestedEndpoints'.\"}"
Если вы создаете конечную точку TM отдельно и профиль TM отдельно (без конечной точки TM), оба случая проходят успешно. Но создание или обновление профиля TM с помощью конечной точки TM всегда приводит к вышеупомянутой ошибке.
Это тело запроса, которое я отправляю в SDK
<Azure::TrafficManager::Mgmt::V2018_04_01::Models::Profile:0x0055c26806f678
@traffic_routing_method="Performance", @location="global", @profile_status="Enabled", @dns_config=#<Azure::TrafficManager::Mgmt::V2018_04_01::Models::DnsConfig:0x0055c26806f650
@relative_name="testapplication", @ttl="30">, @monitor_config=#<Azure::TrafficManager::Mgmt::V2018_04_01::Models::MonitorConfig:0x0055c26806f628
@path="/monitorpage.aspx", @protocol="http", @port="80">, @endpoints=[#<Azure::TrafficManager::Mgmt::V2018_04_01::Models::Endpoint:0x0055c26806f538
@min_child_endpoints=nil, @target_resource_id=nil, @endpoint_location="eastus", @priority=5,
@target="test-app.com", @weight=10, @name="endpoint1",
@type="Microsoft.Network/trafficManagerProfiles/externalEndpoints">], @tags={:key1=>"value1", :key2=>"value2"}>
Как видите,Я включаю атрибуты name
и type
для конечной точки TM.
Это тело, которое SDK отправляет вперед
"body": "{\"tags\":{\"key1\":\"value1\",\"key2\":\"value2\"},\"location\":\"global\",\"properties\":
{\"profileStatus\":\"Enabled\",\"trafficRoutingMethod\":\"Performance\",\"dnsConfig\":
{\"relativeName\":\"testapplication\",\"ttl\":\"30\"},\"monitorConfig\":
{\"protocol\":\"http\",\"port\":\"80\",\"path\":\"/monitorpage.aspx\"},\"endpoints\":[{\"properties\":
{\"target\":\"test-app.com\",\"weight\":10,\"priority\":5,\"endpointLocation\":\"eastus\"}}]}}"
В теле, отправленном SDK, исключаются оба name
и атрибут type
.
Следует отметить, что атрибуты name
и type
были установлены на read_only
в модели Endpoint
, что, вероятно, означает, что пользователь не можетустановить их сам. Но в этом случае я не могу понять, как установить одни и те же атрибуты при создании конечной точки отдельно, а не при ее создании с помощью профиля.
Пожалуйста, дайте мне знать, что мне не хватает. Пример создания конечной точки TM с профилем TM будет наиболее полезным!
Версия Azure SDK: 0.17.2