Jason Liao has uploaded a new change for review.

Change subject: restapi: NUMA feature restful API support
......................................................................

restapi: NUMA feature restful API support

This the the draft version of restful API support
Let the owner review the interfaces and models

The restful API define is on ovirt wiki page
http://www.ovirt.org/Features/Detailed_NUMA_and_Virtual_NUMA

Change-Id: I72ed4b16c220decbf640f74c4aadffe423afc290
Signed-off-by: Jason Liao <[email protected]>
Bug-Url: https://bugzilla.redhat.com/1069303
Signed-off-by: Jason Liao <[email protected]>
---
A 
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/HostNumaNodeResource.java
A 
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/HostNumaNodesResource.java
M 
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/HostResource.java
A 
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/VmNumaNodeResource.java
A 
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/VmNumaNodesResource.java
M 
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/VmResource.java
M 
backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
M 
backend/manager/modules/restapi/interface/definition/src/main/resources/jyaml.yml
M 
backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostResource.java
A 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendNumaNodeResource.java
A 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendNumaNodesResource.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmResource.java
13 files changed, 389 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/43/26943/1

diff --git 
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/HostNumaNodeResource.java
 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/HostNumaNodeResource.java
new file mode 100644
index 0000000..2cef853
--- /dev/null
+++ 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/HostNumaNodeResource.java
@@ -0,0 +1,16 @@
+package org.ovirt.engine.api.resource;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Produces;
+
+import org.jboss.resteasy.annotations.providers.jaxb.Formatted;
+import org.ovirt.engine.api.model.NumaNode;
+
+@Produces({ApiMediaType.APPLICATION_XML, ApiMediaType.APPLICATION_JSON, 
ApiMediaType.APPLICATION_X_YAML})
+public interface HostNumaNodeResource extends ReadOnlyResource<NumaNode>, 
MeasurableResource {
+
+    @GET
+    @Formatted
+    public NumaNode get();
+
+}
diff --git 
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/HostNumaNodesResource.java
 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/HostNumaNodesResource.java
new file mode 100644
index 0000000..6d04da7
--- /dev/null
+++ 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/HostNumaNodesResource.java
@@ -0,0 +1,21 @@
+package org.ovirt.engine.api.resource;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+
+import org.jboss.resteasy.annotations.providers.jaxb.Formatted;
+import org.ovirt.engine.api.model.NumaNodes;
+
+@Produces({ApiMediaType.APPLICATION_XML, ApiMediaType.APPLICATION_JSON, 
ApiMediaType.APPLICATION_X_YAML})
+public interface HostNumaNodesResource {
+
+    @GET
+    @Formatted
+    public NumaNodes list();
+
+    @Path("{id}")
+    public HostNumaNodeResource getHostNumaNodeSubResource(@PathParam("id") 
String id);
+
+}
diff --git 
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/HostResource.java
 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/HostResource.java
index 9d36e8f..741bb49 100644
--- 
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/HostResource.java
+++ 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/HostResource.java
@@ -88,6 +88,9 @@
     @Path("forceselectspm")
     public Response forceSelectSPM(Action action);
 
+    @Path("numanodes")
+    public HostNumaNodesResource getHostNumaNodesResource();
+
     @Path("nics")
     public HostNicsResource getHostNicsResource();
 
diff --git 
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/VmNumaNodeResource.java
 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/VmNumaNodeResource.java
new file mode 100644
index 0000000..7f60374
--- /dev/null
+++ 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/VmNumaNodeResource.java
@@ -0,0 +1,22 @@
+package org.ovirt.engine.api.resource;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.PUT;
+
+import org.jboss.resteasy.annotations.providers.jaxb.Formatted;
+import org.ovirt.engine.api.model.VirtualNumaNode;
+
+public interface VmNumaNodeResource extends DeviceResource<VirtualNumaNode> {
+
+    @PUT
+    @Formatted
+    @Override
+    @Consumes({ApiMediaType.APPLICATION_XML, ApiMediaType.APPLICATION_JSON, 
ApiMediaType.APPLICATION_X_YAML})
+    public VirtualNumaNode update(VirtualNumaNode device);
+
+    @GET
+    @Formatted
+    @Override
+    public VirtualNumaNode get();
+}
diff --git 
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/VmNumaNodesResource.java
 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/VmNumaNodesResource.java
new file mode 100644
index 0000000..9df8aa3
--- /dev/null
+++ 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/VmNumaNodesResource.java
@@ -0,0 +1,14 @@
+package org.ovirt.engine.api.resource;
+
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+
+import org.ovirt.engine.api.model.VirtualNumaNode;
+import org.ovirt.engine.api.model.VirtualNumaNodes;
+
+public interface VmNumaNodesResource extends DevicesResource<VirtualNumaNode, 
VirtualNumaNodes> {
+
+    @Path("{iden}")
+    @Override
+    public VmNumaNodeResource getDeviceSubResource(@PathParam("iden") String 
id);
+}
diff --git 
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/VmResource.java
 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/VmResource.java
index 659f84d..df3c023 100644
--- 
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/VmResource.java
+++ 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/VmResource.java
@@ -162,6 +162,9 @@
     @Path("disks")
     public VmDisksResource getDisksResource();
 
+    @Path("numanodes")
+    public VmNumaNodesResource getVmNumaNodesResource();
+
     @Path("nics")
     public VmNicsResource getNicsResource();
 
diff --git 
a/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
 
b/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
index 039a381..6823681 100644
--- 
a/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
+++ 
b/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
@@ -4097,4 +4097,75 @@
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
+
+  <!-- NumaNodes -->
+  
+  <xs:element name="host_numanode" type="NumaNode"/>
+  
+  <xs:element name="host_numanodes" type="NumaNodes"/>
+  
+  <xs:element name="vm_numanode" type="VirtualNumaNode"/>
+  
+  <xs:element name="vm_numanodes" type="VirtualNumaNodes"/>
+  
+  <xs:complexType name="NumaNode">
+    <xs:complexContent>
+      <xs:extension base="BaseResource">
+        <xs:sequence>
+          <xs:element ref="host" minOccurs="0" maxOccurs="1"/>
+          <xs:element name="index" type="xs:int" minOccurs="0"/>
+          <xs:element name="memory" type="xs:long" minOccurs="0" 
maxOccurs="1"/>
+          <xs:element name="cpu_list" type="xs:string" minOccurs="0" 
maxOccurs="1"/>
+          <xs:element name="statistics" type="Statistics" minOccurs="0" 
maxOccurs="1"/>
+          <xs:element name="node_distance" type="xs:string" minOccurs="0" 
maxOccurs="1"/>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="NumaNodes">
+    <xs:complexContent>
+      <xs:extension base="BaseResources">
+        <xs:sequence>
+          <xs:element ref="host_numanode" minOccurs="0" maxOccurs="unbounded">
+            <xs:annotation>
+              <xs:appinfo>
+                <jaxb:property name="NumaNodes"/>
+              </xs:appinfo>
+            </xs:annotation>
+          </xs:element>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <xs:complexType name="VirtualNumaNode">
+    <xs:complexContent>
+      <xs:extension base="BaseDevice">
+        <xs:sequence>
+          <xs:element ref="host" minOccurs="0" maxOccurs="1"/>
+          <xs:element name="index" type="xs:int" minOccurs="0"/>
+          <xs:element name="memory" type="xs:long" minOccurs="0" 
maxOccurs="1"/>
+          <xs:element name="cpu_list" type="xs:string" minOccurs="0" 
maxOccurs="1"/>
+          <xs:element name="pinhost_numanode_list" type="xs:string" 
minOccurs="0" maxOccurs="1"/>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="VirtualNumaNodes">
+    <xs:complexContent>
+      <xs:extension base="BaseDevices">
+        <xs:sequence>
+          <xs:element ref="vm_numanode" minOccurs="0" maxOccurs="unbounded">
+            <xs:annotation>
+              <xs:appinfo>
+                <jaxb:property name="VirtualNumaNodes"/>
+              </xs:appinfo>
+            </xs:annotation>
+          </xs:element>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
 </xs:schema>
diff --git 
a/backend/manager/modules/restapi/interface/definition/src/main/resources/jyaml.yml
 
b/backend/manager/modules/restapi/interface/definition/src/main/resources/jyaml.yml
index e97869c..4ed9055 100644
--- 
a/backend/manager/modules/restapi/interface/definition/src/main/resources/jyaml.yml
+++ 
b/backend/manager/modules/restapi/interface/definition/src/main/resources/jyaml.yml
@@ -90,6 +90,10 @@
   vmpools: org.ovirt.engine.api.model.VmPools
   vms: org.ovirt.engine.api.model.VMs
   volume_group: org.ovirt.engine.api.model.VolumeGroup
+  numanode: org.ovirt.engine.api.model.NumaNode
+  numanodes: org.ovirt.engine.api.model.NumaNodes
+  virtual_numanode: org.ovirt.engine.api.model.VirtualNumaNode
+  virtual_numanodes: org.ovirt.engine.api.model.VirtualNumaNodes
 
 handlers:
   org.ovirt.engine.api.model.Action: 
org.ovirt.engine.api.resteasy.yaml.CustomBeanWrapper
diff --git 
a/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
 
b/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
index f7edabf..5ceeb3c 100644
--- 
a/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
+++ 
b/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
@@ -4897,4 +4897,98 @@
     headers:
       Content-Type: {value: application/xml|json, required: true}
       Expect: {value: 201-created, required: false}
+- name: /hosts/{host:id}/numanodes|rel=get
+  description: get the list of NUMA nodes for the host
+  request:
+    body:
+      parameterType: null
+      signatures: []
+    urlparams:
+      max: {context: matrix, type: 'xs:int', value: 'max results', required: 
false}
+    headers: {}
+- name: /hosts/{host:id}/numanodes/{numanode:id}|rel=get
+  description: get the details of the specified NUMA node for the host
+  request:
+    body:
+      parameterType: null
+      signatures: []
+    urlparams: {}
+    headers: {}
+- name: /hosts/{host:id}/numanodes/{numanode:id}/statistics|rel=get
+  description: get the statistics for the specified NUMA node of the host
+  request:
+    body:
+      parameterType: null
+      signatures: []
+    urlparams:
+      max: {context: matrix, type: 'xs:int', value: 'max results', required: 
false}
+    headers: {}
+- name: 
/hosts/{host:id}/numanodes/{numanode:id}/statistics/{statistic:id}|rel=get
+  description: get the details of the specified statistics for the specified 
NUMA node of the host
+  request:
+    body:
+      parameterType: null
+      signatures: []
+    urlparams: {}
+    headers: {}
+- name: /vms/{vm:id}/numanodes|rel=get
+  description: get the list of virtual NUMA nodes for the vm
+  request:
+    body:
+      parameterType: null
+      signatures: []
+    urlparams:
+      max: {context: matrix, type: 'xs:int', value: 'max results', required: 
false}
+    headers: {}
+- name: /vms/{vm:id}/numanodes/{numanode:id}|rel=get
+  description: get the details of the specified virtual NUMA node for the vm
+  request:
+    body:
+      parameterType: null
+      signatures: []
+    urlparams: {}
+    headers: {}
+- name: /vms/{vm:id}/numanodes/{numanode:id}|rel=delete
+  description: delete the specified virtual NUMA node for the vm
+  request:
+    body:
+      parameterType: null
+      signatures: []
+    urlparams:
+      async: {context: matrix, type: 'xs:boolean', value: true|false, 
required: false}
+    headers:
+      Correlation-Id: {value: 'any string', required: false}
+- name: /vms/{vm:id}/numanodes/{numanode:id}|rel=update
+  description: update the specified virtual NUMA node for the vm
+  request:
+    body:
+      parameterType: VirtualNumaNode
+      signatures:
+      - mandatoryArguments: {}
+        optionalArguments:
+          vm_numanode.index: xs:int
+          vm_numanode.memory: xs:string
+          vm_numanode.cpu_list: xs:string
+          vm_numanode.pinhost_numanode_list: xs:string
+        description: update the specified virtual NUMA node for the vm
+    urlparams:
+      async: {context: matrix, type: 'xs:boolean', value: true|false, 
required: false}
+    headers:
+      Content-Type: {value: application/xml|json, required: true}
+      Correlation-Id: {value: 'any string', required: false}
+- name: /vms/{vm:id}/numanodes|rel=add
+  description: add a new virtual NUMA node for the vm
+  request:
+    body:
+      parameterType: VirtualNumaNode
+      signatures:
+      - mandatoryArguments: {vm_numanode.index: 'xs:int', vm_numanode.memory: 
'xs:string', vm_numanode.cpu_list: 'xs:string'}
+        optionalArguments:
+          vm_numanode.pinhost_numanode_list: xs:string
+        description: add a new virtual NUMA node for the vm
+    urlparams: {}
+    headers:
+      Content-Type: {value: application/xml|json, required: true}
+      Expect: {value: 201-created, required: false}
+      Correlation-Id: {value: 'any string', required: false}
 
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostResource.java
index 1f981d4..592abd1 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostResource.java
@@ -22,6 +22,7 @@
 import org.ovirt.engine.api.resource.AssignedPermissionsResource;
 import org.ovirt.engine.api.resource.AssignedTagsResource;
 import org.ovirt.engine.api.resource.HostNicsResource;
+import org.ovirt.engine.api.resource.HostNumaNodesResource;
 import org.ovirt.engine.api.resource.HostResource;
 import org.ovirt.engine.api.resource.HostStorageResource;
 import org.ovirt.engine.api.resource.StatisticsResource;
@@ -308,6 +309,12 @@
     }
 
     @Override
+    @Path("numanodes")
+    public HostNumaNodesResource getHostNumaNodesResource() {
+        return inject(new BackendNumaNodesResource(id));
+    }
+
+    @Override
     public HostNicsResource getHostNicsResource() {
         return inject(new BackendHostNicsResource(id));
     }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendNumaNodeResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendNumaNodeResource.java
new file mode 100644
index 0000000..ecf254f
--- /dev/null
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendNumaNodeResource.java
@@ -0,0 +1,41 @@
+package org.ovirt.engine.api.restapi.resource;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+
+import org.jboss.resteasy.annotations.providers.jaxb.Formatted;
+import org.ovirt.engine.api.model.NumaNode;
+import org.ovirt.engine.api.resource.HostNumaNodeResource;
+import org.ovirt.engine.api.resource.StatisticsResource;
+import org.ovirt.engine.core.common.businessentities.VdsNumaNode;
+
+import static 
org.ovirt.engine.api.restapi.resource.BackendNumaNodesResource.SUB_COLLECTIONS;
+
+public class BackendNumaNodeResource extends 
AbstractBackendSubResource<NumaNode, VdsNumaNode> implements 
HostNumaNodeResource {
+
+    private BackendNumaNodesResource parent;
+
+    public BackendNumaNodeResource(String id, BackendNumaNodesResource parent) 
{
+        super(id, NumaNode.class, VdsNumaNode.class, SUB_COLLECTIONS);
+        this.parent = parent;
+    }
+
+    @Override
+    protected NumaNode doPopulate(NumaNode model, VdsNumaNode entity) {
+        return model;
+    }
+
+    @Override
+    @Path("statistics")
+    public StatisticsResource getStatisticsResource() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    @GET
+    @Formatted
+    public NumaNode get() {
+        return parent.lookupNumaNode(id, false);
+    }
+}
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendNumaNodesResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendNumaNodesResource.java
new file mode 100644
index 0000000..08247ae
--- /dev/null
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendNumaNodesResource.java
@@ -0,0 +1,84 @@
+package org.ovirt.engine.api.restapi.resource;
+
+import java.util.List;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.core.Response;
+
+import org.jboss.resteasy.annotations.providers.jaxb.Formatted;
+import org.ovirt.engine.api.model.NumaNode;
+import org.ovirt.engine.api.model.NumaNodes;
+import org.ovirt.engine.api.resource.HostNumaNodeResource;
+import org.ovirt.engine.api.resource.HostNumaNodesResource;
+import org.ovirt.engine.core.common.businessentities.VdsNumaNode;
+import org.ovirt.engine.core.common.queries.IdQueryParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
+
+public class BackendNumaNodesResource extends 
AbstractBackendCollectionResource<NumaNode, VdsNumaNode> implements 
HostNumaNodesResource {
+
+    static final String[] SUB_COLLECTIONS = { "statistics" };
+
+    private String hostId;
+
+    public BackendNumaNodesResource(String hostId) {
+        super(NumaNode.class, VdsNumaNode.class, SUB_COLLECTIONS);
+        this.hostId = hostId;
+    }
+
+    public String getHostId() {
+        return hostId;
+    }
+
+    @Override
+    @GET
+    @Formatted
+    public NumaNodes list() {
+        NumaNodes ret = new NumaNodes();
+        List<VdsNumaNode> nodes = getCollection();
+        for (VdsNumaNode node : nodes) {
+            NumaNode numanode = populate(map(node, null), node);
+            ret.getNumaNodes().add(addLinks(numanode));
+        }
+        return ret;
+    }
+
+    @Override
+    @Path("{id}")
+    public HostNumaNodeResource getHostNumaNodeSubResource(@PathParam("id") 
String id) {
+        return inject(new BackendNumaNodeResource(id, this));
+    }
+
+    @Override
+    protected NumaNode doPopulate(NumaNode model, VdsNumaNode entity) {
+        return model;
+    }
+
+    @Override
+    protected Response performRemove(String id) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    protected List<VdsNumaNode> getCollection() {
+        return getBackendCollection(VdcQueryType.GetVdsNumaNodeByVdsId, new 
IdQueryParameters(asGuid(hostId)));
+    }
+
+    public NumaNode lookupNumaNode(String id, boolean forcePopulate) {
+        List<VdsNumaNode> nodes = getCollection();
+        for (VdsNumaNode node : nodes) {
+            if (node.getId().toString().equals(id)) {
+                NumaNode numanode = map(node, null);
+                if (forcePopulate) {
+                    doPopulate(numanode, node);
+                } else {
+                    populate(numanode, node);
+                }
+                return addLinks(numanode);
+            }
+        }
+        return notFound();
+    }
+
+}
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmResource.java
index 1f4880d..8fb309d 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmResource.java
@@ -6,6 +6,7 @@
 import java.util.List;
 import java.util.Set;
 
+import javax.ws.rs.Path;
 import javax.ws.rs.WebApplicationException;
 import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.Response;
@@ -35,6 +36,7 @@
 import org.ovirt.engine.api.resource.VmApplicationsResource;
 import org.ovirt.engine.api.resource.VmDisksResource;
 import org.ovirt.engine.api.resource.VmNicsResource;
+import org.ovirt.engine.api.resource.VmNumaNodesResource;
 import org.ovirt.engine.api.resource.VmReportedDevicesResource;
 import org.ovirt.engine.api.resource.VmResource;
 import org.ovirt.engine.api.resource.VmSessionsResource;
@@ -562,4 +564,11 @@
                                 HaMaintenanceMode.GLOBAL, 
action.isMaintenanceEnabled()),
                         action);
     }
+
+    @Override
+    @Path("numanodes")
+    public VmNumaNodesResource getVmNumaNodesResource() {
+        // TODO Auto-generated method stub
+        return null;
+    }
 }


-- 
To view, visit http://gerrit.ovirt.org/26943
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I72ed4b16c220decbf640f74c4aadffe423afc290
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Jason Liao <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to