Eli Mesika has uploaded a new change for review.

Change subject: [WIP]core : API changes Multi-Tier fencing
......................................................................

[WIP]core : API changes Multi-Tier fencing

Change-Id: Iad50a36b240043fc88a7f4f60ecfaee29c1e147f
Signed-off-by: Eli Mesika <[email protected]>
---
M 
backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
M 
backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata_v-3.1.yaml
M 
backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/HostMapper.java
3 files changed, 107 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/62/10262/1

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 967e7b6..03c748b 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
@@ -1054,6 +1054,32 @@
   </xs:complexType>
 
   <!-- Hosts -->
+  <xs:complexType name="Agent">
+    <xs:sequence>
+      <xs:element name="address" type="xs:string" minOccurs="0" maxOccurs="1"/>
+      <xs:element name="username" type="xs:string" minOccurs="0" 
maxOccurs="1"/>
+      <xs:element name="password" type="xs:string" minOccurs="0" 
maxOccurs="1"/>
+      <xs:element name="options" type="Options" minOccurs="0"/>
+    </xs:sequence>  
+    <xs:attribute name="type" type="xs:string"/>
+    <xs:attribute name="order" type="xs:int"/>
+    <xs:attribute name="concurrent" type="xs:boolean"/>
+  </xs:complexType>
+
+  <xs:element name="agents" type="Agents"/>
+ 
+  <xs:complexType name="Agents">
+    <xs:sequence>
+      <xs:element name="agent" type="Agent" minOccurs="0" 
maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:appinfo>
+            <jaxb:property name="Agents"/>
+          </xs:appinfo>
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+  
   <xs:element name="power_management" type="PowerManagement"/>
 
   <xs:complexType name="PowerManagement">
@@ -1064,6 +1090,7 @@
       <xs:element name="password" type="xs:string" minOccurs="0" 
maxOccurs="1"/>
       <xs:element name="options" type="Options" minOccurs="0"/>
       <xs:element ref="status" minOccurs="0" maxOccurs="1"/>
+      <xs:element ref="agents" minOccurs="0"/>
     </xs:sequence>
     <xs:attribute name="type" type="xs:string"/>
   </xs:complexType>
diff --git 
a/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata_v-3.1.yaml
 
b/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata_v-3.1.yaml
index cd79e5c..33e2d77 100644
--- 
a/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata_v-3.1.yaml
+++ 
b/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata_v-3.1.yaml
@@ -1468,7 +1468,7 @@
         optionalArguments: {host.name: 'xs:string', host.address: 'xs:string', 
host.root_password: 'xs:string', host.cluster.id: 'xs:string',
           host.port: 'xs:int', host.storage_manager.priority: 'xs:int', 
host.power_management.type: 'xs:string',
           host.power_management.enabled: 'xs:boolean', 
host.power_management.address: 'xs:string', host.power_management.user_name: 
'xs:string',
-          host.power_management.password: 'xs:string', 
host.power_management.options.option--COLLECTION: {option.name: 'xs:string', 
option.value: 'xs:string'}}
+          host.power_management.password: 'xs:string', 
host.power_management.options.option--COLLECTION: {option.name: 'xs:string', 
option.value: 'xs:string'},  host.power_management.agent.type: 'xs:string', 
host.power_management.agent.address: 'xs:string', 
host.power_management.agent.user_name: 'xs:string', 
host.power_management.agent.password: 'xs:string', 
host.power_management.agent.options.option--COLLECTION: {option.name: 
'xs:string', option.value: 'xs:string'}}
     urlparams:
       async: {context: matrix, type: 'xs:boolean', value: true|false, 
required: false}
     headers:
@@ -1482,8 +1482,7 @@
       - mandatoryArguments: {host.name: 'xs:string', host.address: 
'xs:string', host.root_password: 'xs:string', host.cluster.id: 'xs:string'}
         optionalArguments: {host.port: 'xs:int', 
host.storage_manager.priority: 'xs:int', host.power_management.type: 
'xs:string',
           host.power_management.enabled: 'xs:boolean', 
host.power_management.address: 'xs:string', host.power_management.user_name: 
'xs:string',
-          host.power_management.password: 'xs:string', 
host.power_management.options.option--COLLECTION: {option.name: 'xs:string', 
option.value: 'xs:string'},
-          host.reboot_after_installation: 'xs:boolean'}
+          host.power_management.password: 'xs:string', 
host.power_management.options.option--COLLECTION: {option.name: 'xs:string', 
option.value: 'xs:string'},host.power_management.agent.type: 'xs:string', 
host.power_management.agent.address: 'xs:string', 
host.power_management.agent.user_name: 'xs:string', 
host.power_management.agent.password: 'xs:string', 
host.power_management.agent.options.option--COLLECTION: {option.name: 
'xs:string', option.value: 'xs:string'}, host.reboot_after_installation: 
'xs:boolean'}
     urlparams: {}
     headers:
       Content-Type: {value: application/xml|json, required: true}
diff --git 
a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/HostMapper.java
 
b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/HostMapper.java
index c853238..b5825bd 100644
--- 
a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/HostMapper.java
+++ 
b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/HostMapper.java
@@ -3,6 +3,9 @@
 import java.math.BigDecimal;
 
 import org.ovirt.engine.api.common.util.StatusUtils;
+import org.ovirt.engine.api.common.util.StringUtils;
+import org.ovirt.engine.api.model.Agent;
+import org.ovirt.engine.api.model.Agents;
 import org.ovirt.engine.api.model.CPU;
 import org.ovirt.engine.api.model.Cluster;
 import org.ovirt.engine.api.model.CpuTopology;
@@ -89,6 +92,52 @@
         }
         if (model.isSetOptions()) {
             entity.setpm_options(map(model.getOptions(), null));
+        }
+        if (model.isSetAgents()) {
+            // Currently only Primary/Secondary agents are supported
+            for (Agent agent : model.getAgents().getAgents()) {
+                int order = 1;
+                if (agent.isSetOrder()) {
+                    order = agent.getOrder();
+                }
+                if (order == 1) { // Primary
+                    if (agent.isSetType()) {
+                        entity.setpm_type(agent.getType());
+                    }
+                    if (agent.isSetAddress()) {
+                        entity.setManagmentIp(agent.getAddress());
+                    }
+                    if (agent.isSetUsername()) {
+                        entity.setpm_user(agent.getUsername());
+                    }
+                    if (agent.isSetPassword()) {
+                        entity.setpm_password(agent.getPassword());
+                    }
+                    if (agent.isSetOptions()) {
+                        entity.setpm_options(map(agent.getOptions(), null));
+                    }
+                }
+                else if (order == 2) { // Secondary
+                    if (agent.isSetType()) {
+                        entity.setPmSecondaryType(model.getType());
+                    }
+                    if (agent.isSetAddress()) {
+                        entity.setPmSecondaryIp(agent.getAddress());
+                    }
+                    if (agent.isSetUsername()) {
+                        entity.setPmSecondaryUser(agent.getUsername());
+                    }
+                    if (agent.isSetPassword()) {
+                        entity.setPmSecondaryPassword(agent.getPassword());
+                    }
+                    if (agent.isSetOptions()) {
+                        entity.setPmSecondaryOptions(map(agent.getOptions(), 
null));
+                    }
+                    if (agent.isSetConcurrent()) {
+                        entity.setPmSecondaryConcurrent(agent.isConcurrent());
+                    }
+                }
+            }
         }
         return entity;
     }
@@ -236,6 +285,35 @@
         if (entity.getPmOptionsMap() != null) {
             model.setOptions(map(entity.getPmOptionsMap(), null));
         }
+        if (entity.getpm_enabled()) {
+            // Set Primary Agent
+            Agent agent = new Agent();
+            if (!StringUtils.isNullOrEmpty(entity.getManagmentIp())) {
+                agent.setType(entity.getpm_type());
+                agent.setAddress(entity.getManagmentIp());
+                agent.setUsername(entity.getpm_user());
+                if (entity.getPmOptionsMap() != null) {
+                    agent.setOptions(map(entity.getPmOptionsMap(), null));
+                }
+                agent.setOrder(1);
+                model.setAgents(new Agents());
+                model.getAgents().getAgents().add(agent);
+
+            }
+            // Set Secondary Agent
+            if (!StringUtils.isNullOrEmpty(entity.getPmSecondaryIp())) {
+                agent = new Agent();
+                agent.setType(entity.getPmSecondaryType());
+                agent.setAddress(entity.getPmSecondaryIp());
+                agent.setUsername(entity.getPmSecondaryuser());
+                if (entity.getPmOptionsMap() != null) {
+                    agent.setOptions(map(entity.getPmSecondaryOptionsMap(), 
null));
+                }
+                agent.setOrder(2);
+                agent.setConcurrent(entity.isPmSecondaryConcurrent());
+                model.getAgents().getAgents().add(agent);
+            }
+        }
         return model;
     }
 


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

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

Reply via email to