Implement sequencing for faults only 95/51095/1
authorGokul Singaraju <gs244f@att.com>
Sun, 10 Jun 2018 17:46:56 +0000 (13:46 -0400)
committerGokul Singaraju <gs244f@att.com>
Sun, 10 Jun 2018 17:49:32 +0000 (13:49 -0400)
Issue-ID: CERT-14
Change-Id: I3f78eb87cc4c6fba3e4fb8d2fe91d31187b4f7f7
Signed-off-by: Gokul Singaraju <gs244f@att.com>
vnfs/VES5.0/evel/evel-library/code/evel_library/evel.h
vnfs/VES5.0/evel/evel-library/code/evel_library/evel_event.c
vnfs/VES5.0/evel/evel-library/code/evel_library/evel_fault.c
vnfs/VES5.0/evel/evel-library/code/evel_library/evel_json_buffer.c
vnfs/VES5.0/evel/evel-library/code/evel_library/evel_jsonobject.c
vnfs/VES5.0/evel/evel-library/code/evel_library/evel_other.c
vnfs/VES5.0/evel/evel-library/code/evel_library/evel_scaling_measurement.c

index b483b1f..8f49798 100644 (file)
@@ -495,7 +495,7 @@ void evel_free_batch(EVENT_HEADER * event);
 /* Supported Fault version.                                                  */
 /*****************************************************************************/
 #define EVEL_FAULT_MAJOR_VERSION 2
-#define EVEL_FAULT_MINOR_VERSION 1
+#define EVEL_FAULT_MINOR_VERSION 0
 
 /**************************************************************************//**
  * Fault.
@@ -581,7 +581,7 @@ typedef struct json_object_instance
 {
 
   char *jsonstring;
-  unsigned long long objinst_epoch_microsec;
+  EVEL_OPTION_ULL objinst_epoch_microsec;
   DLIST object_keys; /*EVEL_INTERNAL_KEY list */
 
 } EVEL_JSON_OBJECT_INSTANCE;
@@ -649,7 +649,7 @@ void evel_free_jsonobject(EVEL_JSON_OBJECT * jsobj);
 /* Supported Measurement version.                                            */
 /*****************************************************************************/
 #define EVEL_MEASUREMENT_MAJOR_VERSION 2
-#define EVEL_MEASUREMENT_MINOR_VERSION 1
+#define EVEL_MEASUREMENT_MINOR_VERSION 0
 
 /**************************************************************************//**
  * Errors.
@@ -1073,7 +1073,7 @@ typedef struct custom_measurement {
 /* Supported Report version.                                                 */
 /*****************************************************************************/
 #define EVEL_REPORT_MAJOR_VERSION 1
-#define EVEL_REPORT_MINOR_VERSION 1
+#define EVEL_REPORT_MINOR_VERSION 0
 
 /**************************************************************************//**
  * Report.
@@ -1226,7 +1226,7 @@ typedef struct event_mobile_flow {
 /* Supported Other field version.                                            */
 /*****************************************************************************/
 #define EVEL_OTHER_EVENT_MAJOR_VERSION 1
-#define EVEL_OTHER_EVENT_MINOR_VERSION 1
+#define EVEL_OTHER_EVENT_MINOR_VERSION 0
 
 /**************************************************************************//**
  * Other.
@@ -1256,7 +1256,7 @@ typedef struct other_field {
 /* Supported Service Events version.                                         */
 /*****************************************************************************/
 #define EVEL_HEARTBEAT_FIELD_MAJOR_VERSION 1
-#define EVEL_HEARTBEAT_FIELD_MINOR_VERSION 1
+#define EVEL_HEARTBEAT_FIELD_MINOR_VERSION 0
 
 
 /*****************************************************************************/
@@ -1318,8 +1318,8 @@ typedef struct signaling_additional_field {
 /*****************************************************************************/
 /* Supported State Change version.                                           */
 /*****************************************************************************/
-#define EVEL_STATE_CHANGE_MAJOR_VERSION 1
-#define EVEL_STATE_CHANGE_MINOR_VERSION 2
+#define EVEL_STATE_CHANGE_MAJOR_VERSION 2
+#define EVEL_STATE_CHANGE_MINOR_VERSION 0
 
 /**************************************************************************//**
  * State Change.
@@ -1642,6 +1642,24 @@ void evel_init_header(EVENT_HEADER * const header,const char *const eventname);
 void evel_header_type_set(EVENT_HEADER * const header,
                           const char * const type);
 
+/**************************************************************************//**
+ * Set the next event_sequence to use.
+ *
+ * @param sequence      The next sequence number to use.
+ *****************************************************************************/
+void evel_set_global_event_sequence(const int sequence);
+
+/**************************************************************************//**
+ * Set the Event Sequence property of the event header.
+ *
+ * @note This is mainly for tracking fault event sequence numbers
+ *
+ * @param header        Pointer to the ::EVENT_HEADER.
+ * @param sequence_number
+ * 
+ *****************************************************************************/
+void evel_event_sequence_set(EVENT_HEADER * const header,const int sequence_number);
+
 /**************************************************************************//**
  * Set the Start Epoch property of the event header.
  *
@@ -4068,7 +4086,7 @@ int evel_get_measurement_interval();
 /* Supported Report version.                                                 */
 /*****************************************************************************/
 #define EVEL_VOICEQ_MAJOR_VERSION 1
-#define EVEL_VOICEQ_MINOR_VERSION 1
+#define EVEL_VOICEQ_MINOR_VERSION 0
 
 /**************************************************************************//**
  * End of Call Voice Quality Metrices
index 5babb67..1656fa7 100644 (file)
@@ -43,7 +43,7 @@ static int event_sequence = 1;
  *
  * @param sequence      The next sequence number to use.
  *****************************************************************************/
-void evel_set_next_event_sequence(const int sequence)
+void evel_set_global_event_sequence(const int sequence)
 {
   EVEL_ENTER();
 
@@ -168,7 +168,7 @@ void evel_init_header(EVENT_HEADER * const header,const char *const eventname)
   header->priority = EVEL_PRIORITY_NORMAL;
   header->reporting_entity_name = strdup(openstack_vm_name());
   header->source_name = strdup(openstack_vm_name());
-  header->sequence = event_sequence;
+  header->sequence = 0;
   header->start_epoch_microsec = header->last_epoch_microsec;
   header->major_version = EVEL_HEADER_MAJOR_VERSION;
   header->minor_version = EVEL_HEADER_MINOR_VERSION;
@@ -180,8 +180,8 @@ void evel_init_header(EVENT_HEADER * const header,const char *const eventname)
   evel_init_option_string(&header->event_type);
   evel_init_option_string(&header->nfcnaming_code);
   evel_init_option_string(&header->nfnaming_code);
-  evel_force_option_string(&header->reporting_entity_id, openstack_vm_uuid());
-  evel_force_option_string(&header->source_id, openstack_vm_uuid());
+  evel_init_option_string(&header->reporting_entity_id);
+  evel_init_option_string(&header->source_id);
   evel_init_option_intheader(&header->internal_field);
   dlist_initialize(&header->batch_events);
 
@@ -210,7 +210,7 @@ void evel_init_header_nameid(EVENT_HEADER * const header,const char *const event
   gettimeofday(&tv, NULL);
 
   /***************************************************************************/
-  /* Initialize the header.  Get a new event sequence number.  Note that if  */
+  /* Initialize the header.  Reset event sequence number.  Note that if      */
   /* any memory allocation fails in here we will fail gracefully because     */
   /* everything downstream can cope with NULLs.                              */
   /***************************************************************************/
@@ -221,11 +221,10 @@ void evel_init_header_nameid(EVENT_HEADER * const header,const char *const event
   header->priority = EVEL_PRIORITY_NORMAL;
   header->reporting_entity_name = strdup(openstack_vm_name());
   header->source_name = strdup(openstack_vm_name());
-  header->sequence = event_sequence;
+  header->sequence = 0;
   header->start_epoch_microsec = header->last_epoch_microsec;
   header->major_version = EVEL_HEADER_MAJOR_VERSION;
   header->minor_version = EVEL_HEADER_MINOR_VERSION;
-  event_sequence++;
 
   /***************************************************************************/
   /* Optional parameters.                                                    */
@@ -233,8 +232,8 @@ void evel_init_header_nameid(EVENT_HEADER * const header,const char *const event
   evel_init_option_string(&header->event_type);
   evel_init_option_string(&header->nfcnaming_code);
   evel_init_option_string(&header->nfnaming_code);
-  evel_force_option_string(&header->reporting_entity_id, openstack_vm_uuid());
-  evel_force_option_string(&header->source_id, openstack_vm_uuid());
+  evel_init_option_string(&header->reporting_entity_id);
+  evel_init_option_string(&header->source_id);
   evel_init_option_intheader(&header->internal_field);
   dlist_initialize(&header->batch_events);
 
@@ -269,6 +268,29 @@ void evel_header_type_set(EVENT_HEADER * const header,
   EVEL_EXIT();
 }
 
+/**************************************************************************//**
+ * Set the Event Sequence property of the event header.
+ *
+ * @note The Start Epoch defaults to the time of event creation.
+ *
+ * @param header        Pointer to the ::EVENT_HEADER.
+ * @param start_epoch_microsec
+ *                      The start epoch to set, in microseconds.
+ *****************************************************************************/
+void evel_event_sequence_set(EVENT_HEADER * const header,const int sequence_number)
+{
+  EVEL_ENTER();
+
+  /***************************************************************************/
+  /* Check preconditions and assign the new value.                           */
+  /***************************************************************************/
+  assert(header != NULL);
+  header->sequence = sequence_number;
+
+  EVEL_EXIT();
+}
+
+
 /**************************************************************************//**
  * Set the Start Epoch property of the event header.
  *
index 38b07a7..401e4ad 100644 (file)
@@ -92,6 +92,10 @@ EVENT_FAULT * evel_new_fault(const char * ev_name,
   fault->major_version = EVEL_FAULT_MAJOR_VERSION;
   fault->minor_version = EVEL_FAULT_MINOR_VERSION;
   fault->event_severity = severity;
+  if( severity == EVEL_SEVERITY_NORMAL )
+     evel_event_sequence_set(&fault->header,0);
+  else
+     evel_event_sequence_set(&fault->header,1);
   fault->event_source_type = ev_source_type;
   fault->vf_status = status;
   fault->alarm_condition = strdup(condition);
index cae5ab1..cf1323d 100644 (file)
@@ -521,6 +521,7 @@ void evel_enc_version(EVEL_JSON_BUFFER * jbuf,
                       const int major_version,
                       const int minor_version)
 {
+  float ver;
   EVEL_ENTER();
 
   /***************************************************************************/
@@ -529,14 +530,14 @@ void evel_enc_version(EVEL_JSON_BUFFER * jbuf,
   assert(jbuf != NULL);
   assert(key != NULL);
 
-  evel_enc_kv_int(jbuf, key, major_version);
-  if (minor_version != 0)
-  {
+  ver = (float)major_version + (float)minor_version/10.0;
+
     jbuf->offset += snprintf(jbuf->json + jbuf->offset,
-                             jbuf->max_size - jbuf->offset,
-                             ".%d",
-                             minor_version);
-  }
+                           jbuf->max_size - jbuf->offset,
+                           "%s\"%s\": %.1f",
+                           evel_json_kv_comma(jbuf),
+                           key,
+                           ver);
 
   EVEL_EXIT();
 }
index 8bf2b70..df0b03c 100644 (file)
@@ -298,7 +298,7 @@ void evel_jsonobject_nfsubscriptionid_set(EVEL_JSON_OBJECT * pinst, const char *
 void evel_epoch_microsec_set(EVEL_JSON_OBJECT_INSTANCE * pinst, const unsigned long long epmicrosec)
 {
   assert(epmicrosec != 0 );
-  pinst->objinst_epoch_microsec = epmicrosec;
+  evel_set_option_ull(&pinst->objinst_epoch_microsec , epmicrosec, "Json object instance microsec set");
 }
 
 /**************************************************************************//**
index 360f5b9..5f59c1d 100644 (file)
@@ -359,7 +359,7 @@ void evel_json_encode_other(EVEL_JSON_BUFFER * jbuf,
           {
               evel_json_open_object(jbuf);
               evel_enc_kv_object(jbuf, "objectInstance", jsonobjinst->jsonstring);
-              evel_enc_kv_ull(jbuf, "objectInstanceEpochMicrosec", jsonobjinst->objinst_epoch_microsec);
+              evel_enc_kv_opt_ull(jbuf, "objectInstanceEpochMicrosec", &jsonobjinst->objinst_epoch_microsec);
   //evel_json_checkpoint(jbuf);
   if (evel_json_open_opt_named_list(jbuf, "objectKeys"))
   {
index 84d2564..677cb8e 100644 (file)
@@ -3138,7 +3138,7 @@ void evel_json_encode_measurement(EVEL_JSON_BUFFER * jbuf,
            {
               evel_json_open_object(jbuf);
               evel_enc_kv_object(jbuf, "objectInstance", jsonobjinst->jsonstring);
-              evel_enc_kv_ull(jbuf, "objectInstanceEpochMicrosec", jsonobjinst->objinst_epoch_microsec);
+              evel_enc_kv_opt_ull(jbuf, "objectInstanceEpochMicrosec", &jsonobjinst->objinst_epoch_microsec);
   //evel_json_checkpoint(jbuf);
   if (evel_json_open_opt_named_list(jbuf, "objectKeys"))
   {