2.6.4. 업데이트 방법 사용
이러한 서비스 방법은 기존 오브젝트를 업데이트합니다. 수행할 업데이트를 설명하고, 업데이트를 위해 요청을 보내고, 업데이트된 오브젝트를 설명하는 유형의 인스턴스를 반환합니다.
이 예에서는 vm1
에서 newvm
으로 가상 머신의 이름을 업데이트합니다.
from ovirtsdk4 import types # Find the virtual machine, and then the service that # manages it: vm = vms_service.list(search='name=vm1')[0] vm_service = vm_service.vm_service(vm.id) # Update the name: updated_vm = vm_service.update( vm=types.Vm( name='newvm' ) )
업데이트를 수행할 때 개체의 전체 표현은 보내지 않도록 합니다. 업데이트하려는 속성만 보냅니다. 이 작업을 수행하지 마십시오.
# Retrieve the complete representation: vm = vm_service.get() # Update the representation, in memory, without sending a request # to the server: vm.name = 'newvm' # Send the update. Do *not* do this. vms_service.update(vm)
완전한 표현을 전송하면 두 가지 문제가 발생합니다.
- 서버에 필요한 것보다 더 많은 정보를 보내고 있으므로 리소스를 낭비하고 있습니다.
- 서버는 변경하려는 경우에도 오브젝트의 모든 속성을 업데이트하려고 시도합니다. 이로 인해 서버 측에서 버그가 발생할 수 있습니다.
일부 서비스의 업데이트 방법은 업데이트
방법 또는 업데이트 방법을 제어하는 추가 매개 변수를 지원합니다. 예를 들어 다음에 가상 머신이 시작될 때 가상 머신의 현재 상태 또는 사용 상태를 업데이트할 수 있습니다. 가상 머신을 관리하는 서비스의 업데이트
방법은 next_run
부울 매개 변수를 지원합니다.
# Update the memory of the virtual machine to 1 GiB, # not during the current run, but after next boot: vm = vm_service.update( vm=types.Vm( memory=1073741824 ), next_run=True )
어떠한 이유로든 업데이트를 수행할 수 없는 경우 SDK는 오류에 대한 세부 정보가 포함된 ovirtsdk4.Error
예외를 발생시킵니다. 아무 것도
반환하지 않습니다.
이 업데이트 메서드에서 반환된 Python 오브젝트는 관련 유형의 인스턴스입니다. 이는 서비스가 아니라 데이터 컨테이너입니다. 이 특정 예제에서 반환된 오브젝트는 ovirtsdk4.types.Vm
클래스의 인스턴스입니다.