Step pour reproduire:
exporter les logical servers part le point import, puis changer l'icone sur ine icon bien présente ( ajoutée par modification d'un asset par l'UI
Faire un réimport du fichier modifié.
Le même phénomène peut être reproduit en utilisant l'api
par un code similaire
---snip
def get_logical_server(headers, server_id):
"""Get full logical-server object by id (needed for safe updates)."""
url = f"{API_URL}/logical-servers/{server_id}"
response = requests.get(
url,
headers=headers,
proxies={"http": None, "https": None},
verify=False,
timeout=30,
)
print(f"GET /logical-servers/{server_id}:", response.status_code)
response.raise_for_status()
data = response.json()
return data.get("data", data)
def update_virtual_server_icon(headers, server_id, new_icon_id):
"""Update icon_id for a specific virtual server."""
obj = get_logical_server(headers, server_id)
obj["icon_id"] = new_icon_id
print(f"replace IconID {new_icon_id}:", obj["icon_id"])
url = f"{API_URL}/logical-servers/{server_id}"
put_headers = dict(headers)
put_headers["Content-Type"] = "application/json"
response = requests.put(url, json=obj, headers=headers,proxies={"http": None, "https": None}, verify=False)
print(f"PUT /logical-servers/{server_id}:", response.status_code)
if response.status_code == 422:
# Show validation error details from Mercator
try:
print("Validation error:", response.json())
except ValueError:
print("Validation error (raw):", response.text)
response.raise_for_status()
return response.json()
---snip
Le code retour de l'appel Api est 200, mais l'icon_id n'est pas changé ( vérifié par export )
Step pour reproduire:
exporter les logical servers part le point import, puis changer l'icone sur ine icon bien présente ( ajoutée par modification d'un asset par l'UI
Faire un réimport du fichier modifié.
Le même phénomène peut être reproduit en utilisant l'api
par un code similaire
---snip
def get_logical_server(headers, server_id):
"""Get full logical-server object by id (needed for safe updates)."""
url = f"{API_URL}/logical-servers/{server_id}"
response = requests.get(
url,
headers=headers,
proxies={"http": None, "https": None},
verify=False,
timeout=30,
)
print(f"GET /logical-servers/{server_id}:", response.status_code)
response.raise_for_status()
def update_virtual_server_icon(headers, server_id, new_icon_id):
"""Update icon_id for a specific virtual server."""
---snip
Le code retour de l'appel Api est 200, mais l'icon_id n'est pas changé ( vérifié par export )