Michael Pasternak has posted comments on this change.
Change subject: API: Adding support for external events
......................................................................
Patch Set 2: I would prefer that you didn't submit this
(11 inline comments)
....................................................
File
backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
Line 1458: <xs:element ref="template" minOccurs="0" />
Line 1459: <xs:element ref="cluster" minOccurs="0" />
Line 1460: <xs:element ref="data_center" minOccurs="0" />
Line 1461: <xs:element name="origin" type="xs:string" minOccurs="0"
maxOccurs="1" />
Line 1462: <xs:element name="custom_event_id" type="xs:int"
minOccurs="0" maxOccurs="1" />
i'd go with 'custom_id'
Line 1463: <xs:element name="event_flood_in_sec" type="xs:int"
minOccurs="0" maxOccurs="1" />
Line 1464: <xs:element name="custom_data" type="xs:string"
minOccurs="0" maxOccurs="1" />
Line 1465: </xs:sequence>
Line 1466: </xs:extension>
Line 1459: <xs:element ref="cluster" minOccurs="0" />
Line 1460: <xs:element ref="data_center" minOccurs="0" />
Line 1461: <xs:element name="origin" type="xs:string" minOccurs="0"
maxOccurs="1" />
Line 1462: <xs:element name="custom_event_id" type="xs:int"
minOccurs="0" maxOccurs="1" />
Line 1463: <xs:element name="event_flood_in_sec" type="xs:int"
minOccurs="0" maxOccurs="1" />
i'd go 'flood' or 'flood_rate' or similar (we try to have only two period based
element names in api, unless it's exceptional case)
Line 1464: <xs:element name="custom_data" type="xs:string"
minOccurs="0" maxOccurs="1" />
Line 1465: </xs:sequence>
Line 1466: </xs:extension>
Line 1467: </xs:complexContent>
Line 1460: <xs:element ref="data_center" minOccurs="0" />
Line 1461: <xs:element name="origin" type="xs:string" minOccurs="0"
maxOccurs="1" />
Line 1462: <xs:element name="custom_event_id" type="xs:int"
minOccurs="0" maxOccurs="1" />
Line 1463: <xs:element name="event_flood_in_sec" type="xs:int"
minOccurs="0" maxOccurs="1" />
Line 1464: <xs:element name="custom_data" type="xs:string"
minOccurs="0" maxOccurs="1" />
whitespace
Line 1465: </xs:sequence>
Line 1466: </xs:extension>
Line 1467: </xs:complexContent>
Line 1468: </xs:complexType>
....................................................
File
backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata_v-3.1.yaml
Line 1252: parameterType: null
Line 1253: signatures: []
Line 1254: urlparams: {}
Line 1255: headers: {}
Line 1256:
please remove this ^ new-line
Line 1257: - name: /api/events|rel=add
Line 1258: request:
Line 1259: body:
Line 1260: parameterType: Event
Line 1258: request:
Line 1259: body:
Line 1260: parameterType: Event
Line 1261: signatures:
Line 1262: - mandatoryArguments: {event.description: 'xs:string',
event.severity: 'xs:string', event.origin: 'xs:string', event.customEventId:
'xs:int'}
please see my comment on mandatory fields in add() method
Line 1263: optionalArguments:{event.host.id: 'xs:string',event.user.id:
'xs:string',event.vm.id: 'xs:string',event.storageDomain.id:
'xs:string',event.template.id: 'xs:string',event.cluster.id:
'xs:string',event.dataCenter.id: 'xs:string',}
Line 1264: urlparams: {}
Line 1265: headers:
Line 1266: Content-Type: {value: application/xml|json, required: true}
Line 1259: body:
Line 1260: parameterType: Event
Line 1261: signatures:
Line 1262: - mandatoryArguments: {event.description: 'xs:string',
event.severity: 'xs:string', event.origin: 'xs:string', event.customEventId:
'xs:int'}
Line 1263: optionalArguments:{event.host.id: 'xs:string',event.user.id:
'xs:string',event.vm.id: 'xs:string',event.storageDomain.id:
'xs:string',event.template.id: 'xs:string',event.cluster.id:
'xs:string',event.dataCenter.id: 'xs:string',}
are you using all these optional fields in your add command in the backend?
Line 1264: urlparams: {}
Line 1265: headers:
Line 1266: Content-Type: {value: application/xml|json, required: true}
Line 1267: Expect: {value: 201-created, required: false}
....................................................
File
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendEventsResource.java
Line 60: }
Line 61:
Line 62: @Override
Line 63: public Response add(Event event) {
Line 64: validateParameters(event, "origin", "severity",
"eventFloodInSec", "description");
- no need to force user pass "origin" (unless i'm missing something), we can
define it here as only custom events are being added.
- really? 'description' is mandatory?
Line 65: AuditLog entity = map(event);
Line 66: return performCreation(VdcActionType.AddExternalEvent,
Line 67: new AddExternalEventParameters(entity),
Line 68: new
QueryIdResolver<Long>(VdcQueryType.GetAuditLogById,
GetAuditLogByIdParameters.class));
Line 61:
Line 62: @Override
Line 63: public Response add(Event event) {
Line 64: validateParameters(event, "origin", "severity",
"eventFloodInSec", "description");
Line 65: AuditLog entity = map(event);
i'd prefer you not creating variable here, but pass map(event) as param to
parameters ctr.
Line 66: return performCreation(VdcActionType.AddExternalEvent,
Line 67: new AddExternalEventParameters(entity),
Line 68: new
QueryIdResolver<Long>(VdcQueryType.GetAuditLogById,
GetAuditLogByIdParameters.class));
Line 69: }
Line 69: }
Line 70:
Line 71: @Override
Line 72: protected Response performRemove(String id) {
Line 73: return performAction(VdcActionType.RemoveExternalEvent, new
RemoveExternalEventParameters(Long.valueOf(id)));
please implement asLong() method instead of Long.valueOf(id), see asGuid(id)
for details.
Line 74: }
....................................................
File
backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/EventMapper.java
Line 85: return model;
Line 86: }
Line 87:
Line 88: @Mapping(from = Event.class, to = AuditLog.class)
Line 89: public static AuditLog map(Event event, AuditLog entity) {
- please use isSetX() instead of event.getX != null
Line 90: AuditLog auditLog = (entity != null) ? entity : new AuditLog();
Line 91: auditLog.setseverity(map(event.getSeverity(), null));
Line 92: auditLog.setlog_time(event.getTime() == null ? new
Date((Calendar.getInstance().getTimeInMillis()))
Line 93: : event.getTime().toGregorianCalendar().getTime());
Line 122: }
Line 123: if (StringUtils.isNotEmpty(event.getCorrelationId())) {
Line 124: auditLog.setCorrelationId(event.getCorrelationId());
Line 125: }
Line 126: if (StringUtils.isNotEmpty(event.getCorrelationId())) {
you already have this setter
Line 127: auditLog.setCorrelationId(event.getCorrelationId());
Line 128: }
Line 129: if (StringUtils.isNotEmpty(event.getOrigin())) {
Line 130: auditLog.setOrigin(event.getOrigin());
--
To view, visit http://gerrit.ovirt.org/10097
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: Ibdaf39df28c5f87db4c1bf9b5807c45a0a8ea9a8
Gerrit-PatchSet: 2
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Eli Mesika <[email protected]>
Gerrit-Reviewer: Eli Mesika <[email protected]>
Gerrit-Reviewer: Michael Pasternak <[email protected]>
Gerrit-Reviewer: Ori Liel <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches