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
