<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Hi Appu,</p>
    <p>Thanks for responding.</p>
    <p>As the Impact would be on all the openbmc repo where we need to
      add the event log for any properties change or interface added.</p>
    <p>I feel it is kind of overhead and not realistic as each and every
      repo need to know about redfish terminology eg : Redfish Path,
      Redfish property, Redfish Registry Prefix etc. <br>
    </p>
    <p>I feel it is a big work.</p>
    <p>Ratan</p>
    <div class="moz-cite-prefix">On 5/29/20 9:15 PM, Puli, Apparao
      wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:d1421df4-2b3f-a006-b9d7-b0e1158d5f08@linux.intel.com">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <p>[Subject changed to reflect actual context]<br>
      </p>
      <p>Hi Ratan,</p>
      <p>  With current OpenBMC, I don't any event log getting added for
        new local user creation. To implement that below are two place
        we need to add support:</p>
      <p>1) Define an new message retry ID for user addition(say
        UserAdded) in bmcweb.</p>
      <p><a
href="https://github.com/openbmc/bmcweb/blob/master/redfish-core/include/registries/openbmc_message_registry.hpp"
          moz-do-not-send="true">https://github.com/openbmc/bmcweb/blob/master/redfish-core/include/registries/openbmc_message_registry.hpp</a></p>
      <p>2) Add a event log during new user addition inside
        phospor-user-manager(createUser function).</p>
      <p><a
href="https://github.com/openbmc/phosphor-user-manager/blob/master/user_mgr.cpp#L336"
          moz-do-not-send="true">https://github.com/openbmc/phosphor-user-manager/blob/master/user_mgr.cpp#L336</a></p>
      <p><br>
      </p>
      <p>While you are adding event log for new local user creation,
        Please consider other case too( Like Delete, Update, Rename
        etc..)</p>
      <p>Thanks,</p>
      <p>-Appu<br>
      </p>
      <p><br>
      </p>
      <div class="moz-cite-prefix">On 5/28/2020 6:56 PM, Ratan Gupta
        wrote:<br>
      </div>
      <blockquote type="cite"
        cite="mid:d63dbba6-b168-05e7-f48e-a36185ffb7fc@linux.vnet.ibm.com">
        <meta http-equiv="Content-Type" content="text/html;
          charset=UTF-8">
        <p>Hi Appu,</p>
        <p>Can you get me an example say if I want an redfish event to
          be generated once any local user gets added on the BMC.</p>
        <p>What would be the steps to be done with the current design
          and where(which repo)?</p>
        <p><br>
        </p>
        <div class="moz-cite-prefix">On 5/28/20 12:28 AM, Puli, Apparao
          wrote:<br>
        </div>
        <blockquote type="cite"
          cite="mid:fc0c20a9-f132-4dc6-d27a-d6b09b4900d7@linux.intel.com">
          <meta http-equiv="Content-Type" content="text/html;
            charset=UTF-8">
          <p>Rajes,</p>
          <p>   The dictionary to map Redfish resourceType and D-Bus
            object path( I believe URI intern) is good. It will be great
            if you share design document, if its done. <br>
          </p>
          <p>At the moment, redfish event logs file(/var/log/redfish)
            doesn't have ResourceTypes and OriginResource fields. The
            Existing redfish event log implementation(log service) also
            doesn't have support for that. You can propose design change
            for same along with how it is used in event log service.
            Same thing, can be adopted to EventService, once its agreed
            by OEM's( I am thinking, it should go under new OEM specific
            compiler flag. But that we can ratify later).</p>
          <p>Thanks,</p>
          <p>-Appu<br>
          </p>
          <div class="moz-cite-prefix">On 5/27/2020 5:20 PM, RAJESWARAN
            THILLAIGOVINDAN wrote:<br>
          </div>
          <blockquote type="cite"
            cite="mid:deed2104-2703-4dd8-8180-f9c4f8fffaee@gmail.com">
            <meta http-equiv="Content-Type" content="text/html;
              charset=UTF-8">
            <p>Apparao,</p>
            <p>Thanks a lot for your suggestions. We lean towards using
              a dictionary to map Redfish ResourceType to D-Bus objects
              path and vice versa and then using D-Bus match to generate
              life cycle events. This way, the changes are limited to
              bmcweb. The resource type and the origin resource URI will
              be included in the event log. This requires change in the
              format of event log file /var/log/redfish. I have
              commented the same in the server sent event patch that you
              have uploaded. Kindly see if you can leave the parsing of
              file to the OEMs. That way, the existing infrastructure
              can be used by the OEMs to support other filtering
              mechanisms as defined in the specification.</p>
            Thanks,<br>
            Rajes<br>
            <p> <br>
            </p>
            <div class="moz-cite-prefix">On 27-05-2020 09:18, Puli,
              Apparao wrote:<br>
            </div>
            <blockquote type="cite"
              cite="mid:ea71f5a6-1e63-9e04-f0ab-edbbce1ec162@linux.intel.com">
              <meta http-equiv="Content-Type" content="text/html;
                charset=UTF-8">
              <p>Hi Rajeswaran,</p>
              <p>  Thanks for your mail. At the moment, I don't have
                plans to support the "ResourceTypes", "OriginResources"
                based filtering.  Basically Intel uses file systems
                based redfish event logs( journalctl -> rsync->
                filesystem) and doesn't use D-Bus mechanism like IBM
                uses. So I am not much familiar with D-Bus logging but
                some of the suggestions:</p>
              <p> 1) While logging redfish events over D-Bus itself,  it
                can provide details on ResourceTypes and OriginResource
                URI/Path. <br>
              </p>
              <p>     This is ideal and most efficient way. Since  we
                walked a walked long distance from start, Its hard to
                modify all the services to uses these 2 new input
                parameters while logging events( Requires change in
                almost all repo's)<br>
              </p>
              <p>2) For resourcesTypes: Can have mapping dictionary
                against all MessageId's. For OriginResources: I believe,
                event log over D-Bus is already holding the Path. If so,
                last 3/4 nodes of uri can be taken and mapped against
                the resources and that can be used in Event filtering.
                We did used same mechanism in case of telemetry  while
                mapping MetricReportDefinitions to URI.</p>
              <p>Hope this helps.</p>
              <p>Thanks,</p>
              <p>-Appu  <br>
              </p>
              <p><br>
              </p>
              <div class="moz-cite-prefix">On 5/26/2020 5:50 PM,
                RAJESWARAN THILLAIGOVINDAN wrote:<br>
              </div>
              <blockquote type="cite"
                cite="mid:23e93766-980b-2bd1-fc8c-bb5c18b962eb@gmail.com">
                <meta http-equiv="Content-Type" content="text/html;
                  charset=UTF-8">
                <p>Apparao, <br>
                </p>
                <p>I see that you have uploaded a patch(<a
                    class="moz-txt-link-freetext"
                    href="https://gerrit.openbmc-project.xyz/c/openbmc/bmcweb/+/32441"
                    moz-do-not-send="true">https://gerrit.openbmc-project.xyz/c/openbmc/bmcweb/+/32441</a>)
                  for supporting server sent events. This patch supports
                  event filtering based on registry prefix  and/or
                  messageId.  <br>
                </p>
                <p>I would like to know if you have any plan to support
                  event filtering based on resource type. If so, I would
                  like to work together for a better solution. Earlier,
                  I have proposed a solution based on D-Bus match using
                  a dictionary. With that approach, the major challenge
                  is to map Redfish resource and properties to D-Bus
                  object and properties respectively.   If D-Bus
                  applications are modified to include resource type and
                  origin of condition in the event, then there is no
                  need for a map. But,that brings Redfish terminology to
                  the application. Also, this will become an overhead if
                  an OEM is not interested in Redfish event service. <br>
                </p>
                Thanks,<br>
                Rajes<br>
                <div class="moz-cite-prefix">On 25-02-2020 19:36, Puli,
                  Apparao wrote:<br>
                </div>
                <blockquote type="cite"
                  cite="mid:d27f94a5-7195-422a-9442-9e5e3e0aaae7@linux.intel.com">
                  <meta http-equiv="Content-Type" content="text/html;
                    charset=UTF-8">
                  <p>Hi Ratan,</p>
                  <p>   Comments in-line<br>
                  </p>
                  <div class="moz-cite-prefix">On 2/24/2020 12:07 PM,
                    Ratan Gupta wrote:<br>
                  </div>
                  <blockquote type="cite"
                    cite="mid:813853bb-b3a3-79a7-94c5-bbe487c2902b@linux.vnet.ibm.com">
                    <meta http-equiv="Content-Type" content="text/html;
                      charset=UTF-8">
                    <p>Hi Apparao,</p>
                    <div class="moz-cite-prefix">On 2/20/20 12:49 AM,
                      Puli, Apparao wrote:<br>
                    </div>
                    <blockquote type="cite"
                      cite="mid:1a22b091-675c-3e1d-b57a-d44b3ba5d4e0@linux.intel.com">Hi,
                      <br>
                      <br>
                        I am sorry for late response as this mail is
                      buried under and got struck back of my mind. <br>
                      <br>
                      As i did mentioned in EventService design
                      document, EventLog Monitor service is not common
                      across the organizations( Example: Intel uses the
                      redfish event logs file and inotify mechanism for
                      monitoring the event logs. Where as IBM uses d-bus
                      event log mechanism and they can relay on match
                      rules). That said challenges with ResourceType
                      mapping will be different in both monitoring
                      mechanisms. This is good point. Initially when i
                      started EventService design, i thought we can have
                      mapping in bmcweb for ResourceTypes with set of
                      MessageID's for Logged events ( As per Intel
                      design) but not sure that may become difficult
                      when we expand supported ResourceTypes. <br>
                    </blockquote>
                    <p><tt>If I am getting correctly, Here is the flow
                        which Intel uses.</tt></p>
                    <ol>
                      <li><tt>Individual repo have to push the logs
                          using sd_journal_send which will write to the
                          file(/var/log/redfish) by using rsyslog daemon</tt></li>
                    </ol>
                    <pre><span class="pl-en">          sd_journal_send</span>(<span class="pl-s"><span class="pl-pds">"</span>MESSAGE=%s<span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">"</span>journal text<span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">"</span>PRIORITY=%i<span class="pl-pds">"</span></span>, <LOG_LEVEL>,
                <span class="pl-s"><span class="pl-pds">"</span>REDFISH_MESSAGE_ID=%s<span class="pl-pds">"</span></span>,
                <span class="pl-s"><span class="pl-pds">"</span>ResourceEvent.1.0.ResourceCreated<span class="pl-pds">"</span></span>, <span class="pl-c1">NULL</span>);

</pre>
                    <blockquote>
                      <ul>
                        <li> <tt>How you would populate the "</tt><tt><span
                              class="treeLabel objectLabel"
                              aria-labelledby="default" data-level="3">OriginOfCondition</span></tt><tt>"
                            during sending of event? (<a
                              class="moz-txt-link-freetext"
                              href="https://redfish.dmtf.org/schemas/v1/Event.v1_4_1.json"
                              moz-do-not-send="true">https://redfish.dmtf.org/schemas/v1/Event.v1_4_1.json</a>)</tt></li>
                      </ul>
                    </blockquote>
                  </blockquote>
                  <p><tt>Currently in logServices( logEntry),  we are
                      not reporting the "OriginOfCondition" property as
                      per schema. I will check with Jason( Who wrote the
                      logService) and get back on this.</tt></p>
                  <p><tt>BTW can you give me how this information is
                      fetched in IBM way of LogService implementation(
                      D-Bus)? If you already ratified any such, i think
                      we can leverage.  If not, We work together for
                      solution. <br>
                    </tt></p>
                  <blockquote type="cite"
                    cite="mid:813853bb-b3a3-79a7-94c5-bbe487c2902b@linux.vnet.ibm.com">
                    <blockquote>
                      <ul>
                      </ul>
                    </blockquote>
                    <blockquote>
                      <ul>
                        <li><tt> Any plan to add resource path in this
                            journal message which tells that this is the
                            path for which resource created event
                            generated.</tt></li>
                      </ul>
                    </blockquote>
                  </blockquote>
                  <tt>Same as above.</tt><br>
                  <blockquote type="cite"
                    cite="mid:813853bb-b3a3-79a7-94c5-bbe487c2902b@linux.vnet.ibm.com">
                    <blockquote>
                      <ul>
                      </ul>
                    </blockquote>
                    <blockquote>
                      <ul>
                        <li><tt> Would the path be "Redfish Path/ D-bus
                            Path"?</tt></li>
                      </ul>
                    </blockquote>
                  </blockquote>
                  As per Redfish specification, This should be
                  "@odata.id" which means it should be of resource uri
                  and so we can't use d-bus path here for
                  OriginOfConditions.<br>
                  <blockquote type="cite"
                    cite="mid:813853bb-b3a3-79a7-94c5-bbe487c2902b@linux.vnet.ibm.com">
                    <blockquote>
                      <ul>
                        <li><tt>Where the mapping would be done between
                            D-busPath/Redfish Resource path?</tt></li>
                      </ul>
                    </blockquote>
                    <pre>    
         Cons: Every application have to make the change(use sd_journal_send).
         My thought is backend application should not be aware of the redfish terminlogy.</pre>
                  </blockquote>
                  <p>Having separate process only for this mapping may
                    not be good( No different from maintaining that map
                    inside bmcweb as there won't be any other
                    consumers). Ideal way is, that should be mapped
                    while logging logEntry's itself. But we are not
                    doing it currently which need to be re-looked. Give
                    me some time, I will think and check with other
                    folks and get back.<br>
                  </p>
                  <blockquote type="cite"
                    cite="mid:813853bb-b3a3-79a7-94c5-bbe487c2902b@linux.vnet.ibm.com">
                    <p><tt>  <b> 2.</b> Some application(bmcweb) would
                        do the Inotify on the path(/var/log/redfish) and
                        send the event once there is any activity on
                        this file.</tt></p>
                    <pre>> I thought we can have mapping in bmcweb for ResourceTypes with set of MessageID's for Logged events ( As 
per Intel design)

    Can you explain more here. What is your plan? How you would do the Resource Type based event filtering? <span class="pl-s">REDFISH_MESSAGE_ID is different than the resource type.</span></pre>
                  </blockquote>
                  Initially i thought "ResourceType" based event
                  filtering can be done using minimal mapping( Using
                  MessageID and args). But that will work for minimal
                  set. If the supported ResourceTypes grows, we will
                  have bigger challenges which i can sense it now. 
                  Anyway, Supported Resources are completely
                  implementation specific. If this value is empty means,
                  by default all event logs will be sent to subscribers.
                  This is what we can start with before supported 
                  ResourceTypes list grows.<br>
                  <blockquote type="cite"
                    cite="mid:813853bb-b3a3-79a7-94c5-bbe487c2902b@linux.vnet.ibm.com">
                    <pre><span class="pl-s"><span class="pl-pds"></span></span><span class="pl-s"></span></pre>
                    <blockquote type="cite"
                      cite="mid:1a22b091-675c-3e1d-b57a-d44b3ba5d4e0@linux.intel.com">
                      <br>
                      As per my reading from below query, You are
                      looking at d-bus match rules and ResourceTypes
                      mapping which is more specific to d-bus event
                      logging(IBM way of implementing event logging).
                      reading it from journal logs will give more
                      information but that will impact the performance
                      to large extent. This might be one of the reason
                      why we (Intel) uses Redfish message ID while
                      logging redfish events logs to journal(You can
                      refer design document for same at <a
                        class="moz-txt-link-freetext"
href="https://github.com/openbmc/docs/blob/master/architecture/redfish-logging-in-bmcweb.md"
                        moz-do-not-send="true">https://github.com/openbmc/docs/blob/master/architecture/redfish-logging-in-bmcweb.md</a>).
                      In opinion, in your d-bus if you are using some
                      kind of filter(Example REDFISH_MESSAGE_ID) while
                      logging in journal logs for all events and figure
                      out the way to monitor the journal logs without
                      impacting the performance, that should be ok as
                      long as match filters are satisfied for Redfish
                      EventService subscriptions and supported
                      Types(Again differs with implementation). <br>
                      <br>
                      Thanks, <br>
                      <br>
                      -Appu <br>
                      <br>
                      On 2/10/2020 1:52 AM, RAJESWARAN THILLAIGOVINDAN
                      wrote: <br>
                      <blockquote type="cite">ApparaRao. <br>
                        <br>
                        As you have shown interest in this feature and
                        submitted the design document, do you have any
                        opinion on this? Do you see any merit in using
                        D-Bus match in bmcweb to create event logs for
                        life cycle events?  Please feel free to weigh
                        in. <br>
                        <br>
                        Thanks, <br>
                        Rajes <br>
                        <br>
                        On 01-02-2020 02:23, RAJESWARAN THILLAIGOVINDAN
                        wrote: <br>
                        <blockquote type="cite">Hi, <br>
                          <br>
                          I am going through the bmcweb code for
                          implementing Redfish EventService based on the
                          design document <a
                            class="moz-txt-link-freetext"
                            href="https://gerrit.openbmc-project.xyz/c/openbmc/docs/+/24749"
                            moz-do-not-send="true">https://gerrit.openbmc-project.xyz/c/openbmc/docs/+/24749</a>.
                          This design is hooked to the journal based
                          Redfish Event Logging. For life cycle
                          events(ResourceAdded, ResourceRemoved,
                          ResourceUpdated),  using D-Bus match, bmcweb
                          can create an event log. This requires a JSON
                          dictionary, comprising an array of Redfish
                          Resource Name and the D-Bus path. This
                          approach works only in case of one to one
                          mapping of Redfish Resource Name and the D-Bus
                          path. For propertiesChanged events, if the
                          Redfish Resource property is not on the same
                          D-Bus path or the Redfish Resource property
                          name is different from the D-Bus property
                          name, then an additional JSON dictionary to
                          maintain this information is required. With
                          D-Bus match alone in the bmcweb, Redfish
                          EventService can't be fully supported. For the
                          Message Registers and the Resource Types that
                          are supported, the relevant OpenBMC
                          application must create an event log in the
                          journal using either the
                          phosphor::logging::entry or sd_journal_send()
                          command. <br>
                          <br>
                          After realizing that with D-Bus match in the
                          bmcweb alone can't help to fully implement
                          EventService, I prefer to avoid using D-Bus
                          match in bmcweb. Instead, I prefer to modify
                          the OpenBMC application that generated the
                          event to create an event log in the journal.
                          Do you see any advantage of using combination
                          of D-Bus match in the bmcweb wherever it is
                          possible and changes to OpenBMC application in
                          other cases to create an event log ? <br>
                          <br>
                          Your views are highly appreciated. <br>
                          <br>
                          Thanks, <br>
                          Rajes <br>
                        </blockquote>
                        <br>
                      </blockquote>
                    </blockquote>
                    Thanks<br>
                    Ratan<br>
                    <p><br>
                    </p>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
        </blockquote>
        Ratan<br>
      </blockquote>
    </blockquote>
  </body>
</html>