2.3.5. add
메서드를 추가하려면 컬렉션에 새 요소를 추가합니다. 추가할 오브젝트를 설명하는 관련 유형의 인스턴스를 수신하며, 추가할 요청을 보낸 다음 추가된 오브젝트를 설명하는 유형의 인스턴스를 반환합니다.
새 가상 머신 추가
# Add the virtual machine: vm = vms_service.add( OvirtSDK4::Vm.new( name: 'myvm', cluster: { name: 'mycluster' }, template: { name: 'mytemplate' } ) )
add
메서드에서 반환한 Ruby 오브젝트는 관련 유형의 인스턴스입니다. 이는 서비스가 아니라 데이터 컨테이너일 뿐입니다. 위의 예에서 반환된 오브젝트는 Vm 클래스의 인스턴스입니다.
방금 추가한 가상 머신에서 작업을 수행해야 하는 경우 이를 관리하는 서비스를 찾아서 서비스 로케이터를 호출해야 합니다.
새 가상 머신 시작
# Add the virtual machine: vm = vms_service.add( ... ) # Find the service that manages the virtual machine: vm_service = vms_service.vm_service(vm.id) # Start the virtual machine: vm_service.start
대부분의 오브젝트 생성은 비동기 작업입니다. 예를 들어, 새 가상 머신을 생성하는 경우 가상 머신을 완전히 생성하고 사용할 준비가 되기 전에 add
메서드에서 가상 머신을 반환합니다. 완전히 생성될 때까지 오브젝트의 상태를 폴링해야 합니다. 가상 머신의 경우 상태가 DOWN
이 될 때까지 확인합니다.
권장되는 접근 방식은 가상 머신을 생성하고, 새 가상 머신을 관리하는 서비스를 찾고, 모든 디스크가 생성되었음을 나타내는 가상 머신 상태가 DOWN
이 될 때까지 상태를 반복적으로 검색하는 것입니다.
가상 머신 추가, Locating its Service, Retrieving Its Status
# Add the virtual machine: vm = vms_service.add( ... ) # Find the service that manages the virtual machine: vm_service = vms_service.vm_service(vm.id) # Wait until the virtual machine is DOWN, indicating that all the # disks have been created: loop do sleep(5) vm = vm_service.get break if vm.status == OvirtSDK4::VmStatus::DOWN end
개체를 만들 수 없는 경우 SDK는 오류에 대한 세부 정보가 포함된 Error 예외가 발생합니다. nil
을 반환하지 않습니다.