2.2. 유형
2.2.1. 유형 인스턴스 생성 및 수정
아래에 설명된 대로 유형의 인스턴스를 생성하거나 수정해도 변경 사항이 서버에 명시적으로 전송되지 않는 한 서버 측에 영향을 미치지 않습니다. 서버 측의 변경 사항은 이미 메모리에 존재하는 인스턴스에 자동으로 반영되지 않습니다.
이러한 클래스의 생성자에는 형식의 각 특성에 하나씩 여러 선택적 인수가 있습니다. 이렇게 하면 여러 생성자에 중첩된 호출을 사용하여 개체 생성이 간소화됩니다.
다음 예에서는 가상 머신 인스턴스가 생성되고 해당 속성(클러스터, 템플릿 및 메모리)이 설정됩니다.
특성을 사용하여 가상 머신 인스턴스 생성
vm = OvirtSDK4::Vm.new( name: 'myvm', cluster: OvirtSDK4::Cluster.new( name: 'mycluster' ), template: OvirtSDK4::Template.new( name: 'mytemplate' ), memory: 1073741824 )
이러한 생성자에 전달되는 해시(예: cluster: OvirtSDK4::Cluster.new
)는 재귀적으로 처리됩니다.
다음 예제에서는 Cluster 및 Template 클래스의 생성자를 명시적으로 호출하는 대신 일반 해시가 사용됩니다. SDK는 내부적으로 해시를 필요한 클래스로 변환합니다.
Plain Hashes로 Express된 특성을 사용하여 가상 머신 인스턴스 생성
vm = OvirtSDK4::Vm.new( name: 'myvm', cluster: { name: 'mycluster' }, template: { name: 'mytemplate' }, memory: 1073741824 )
이러한 방식으로 생성자를 사용하는 것이 권장되지만 필수는 아닙니다.
다음 예제에서는 생성자 호출에서 인수 없이 가상 머신 인스턴스를 생성합니다. setECDHE을 사용하거나 setECDHE 및 constructors의 조합을 사용하여 가상 머신 인스턴스의 속성을 하나씩 추가할 수 있습니다.
가상 머신 인스턴스 생성 및 개별적으로 속성 추가
vm = OvirtSDK4::Vm.new vm.name = 'myvm' vm.cluster = OvirtSDK4::Cluster.new(name: 'mycluster') vm.template = OvirtSDK4::Template.new(name: 'mytemplate') vm.memory = 1073741824
API 사양에서 오브젝트 목록으로 정의된 특성은 Ruby 배열로 구현됩니다. 예를 들어 Vm
유형의 custom_properties
속성은 CustomProperty
유형의 오브젝트 목록으로 정의됩니다.
속성 목록을 배열로 추가
vm = OvirtSDK4::Vm.new( name: 'myvm', custom_properties: [ OvirtSDK4::CustomProperty.new(...), OvirtSDK4::CustomProperty.new(...), ... ] )
API에서 열거된 값으로 정의된 속성은 열거된 형식과 동일한 이름을 가진 모듈의 상수로 구현됩니다.
다음 예제에서는 VmStatus
enumerated 값을 사용하여 Vm
type의 status 특성을 정의하는 방법을 보여줍니다.
case vm.status when OvirtSDK4::VmStatus::DOWN ... when OvirtSDK4::VmStatus::IMAGE_LOCKED ... end
API 사양에서 XML 및 JSON에 대한 규칙이므로ECDHE 유형의 값이 소문자입니다. 그러나 Ruby에서 규칙은 이러한 상수에 대문자 를 사용하는 것입니다.