-
Notifications
You must be signed in to change notification settings - Fork 14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
InstanceService update #15
Comments
Правильно брать названия полей из gRPC.
Не все параметры могут быть изменены вместе. Пришлите, пожалуйста, всё тело запроса, чтобы понять что именно идет не так. Как вариант можно открыть кейс в техническую поддержку и они передадут информацию команде сервиса Compute Cloud |
Ниже код упрощен, суть - сначала получаем instance, потом изменяем его(опущены все условности, типа проверки состояния и т.п.) const {Session} = require('yandex-cloud');
let _session = new Session({oauthToken: "TOKEN"})
const {InstanceService} = require('yandex-cloud/api/compute/v1')
let instanceService = new InstanceService(_session)
let _instanceId = "ID"
let self = this;
instanceService.get({instanceId: _instanceId, view: "FULL"}).then((instance) => {
console.log(instance);
self.instanceService.update({
'update_mask': 'resources_spec',
instanceId: instance.id,
platformId: instance.platformId,
name: instance.name,
serviceAccountId: instance.serviceAccountId,
//resourcesSpec:{core_fraction:100},
resourcesSpec:{memory: 4*1024*1024*1024, cores: 4, core_fraction: 100},
}).then((r) => {
console.log(r);
})
}) Если попробовать менять только один параметр за раз, например 'core_fraction', то в ошибке потребует указать обязательное значение "cores" |
С помощью метода update(InstanceService) пытаюсь изменить resources_spec.
В доках: "Поля, которые требуется изменить, указываются в запросе в поле update_mask".
В заголовках sdk прописан в camelCase как updateMask. Но если заполнять его как updateMask, то при выполнении пишет ошибку:
UnhandledPromiseRejectionWarning: Error: 3 INVALID_ARGUMENT: Validation failed: - update_mask: Field mask cannot be empty
Если поменять на 'update_mask', то начинает работать.А далее основная проблема, в 'update_mask' надо указать поля, которые будут заменены. Главный вопрос, из каких доков по API яндекса брать названия, из REST(там поле называется "resourcesSpec") или из gRPC(там "resources_spec"), или так, как указано в ответе Operation(get/list, "resources")?
Задача, изменить resourcesSpec на что-то подобное:
Это не срабатывает, опять же, не понятно, в каком именно формате указывать поля и значения. В ответ ошибка:
(node:2587) UnhandledPromiseRejectionWarning: Error: 3 INVALID_ARGUMENT: Request validation error: Unable to update selected parameters at once.
Можно посмотреть работающий пример метода update в рамках данного SDK?
The text was updated successfully, but these errors were encountered: