openbmc.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: Patrick Williams <patrick@stwcx.xyz>
To: "P. Priyatharshan" <PriyatharshanP@hcl.com>
Cc: Sundaramoorthy Thiyagarajan <sundaramoorthyt@hcl.com>,
	"Velumani T-ERS, HCLTech" <velumanit@hcl.com>,
	"openbmc@lists.ozlabs.org" <openbmc@lists.ozlabs.org>,
	"anoo@us.ibm.com" <anoo@us.ibm.com>,
	"ojayanth@in.ibm.com" <ojayanth@in.ibm.com>,
	"gmills@linux.vnet.ibm.com" <gmills@linux.vnet.ibm.com>,
	"ratagupt@linux.vnet.ibm.com" <ratagupt@linux.vnet.ibm.com>
Subject: Re: Multi host bios upgrade support in phosphor-bmc-code-mgmt:
Date: Mon, 21 Sep 2020 14:46:14 -0500	[thread overview]
Message-ID: <20200921194614.GL6152@heinlein> (raw)
In-Reply-To: <TY2PR04MB33112E61CA54FE1A17D30B70CA3A0@TY2PR04MB3311.apcprd04.prod.outlook.com>

[-- Attachment #1: Type: text/plain, Size: 3566 bytes --]

On Mon, Sep 21, 2020 at 05:49:14PM +0000, P. Priyatharshan wrote:
> 
> Hi ,
> 
> Phosphor-software-manager currently supports bios upgrade for a single host.I would like to propose a design to add multi host bios upgrade support in Phosphor-software-manager.
> 
> Kindly review the below proposal and share your valuable comments.
> 
> Design:
> 
> a) : Add Host Number
> 
> 1) MANIFEST file change:
> 
> Add  host number in MANIFEST file, purpose field like below.
> 
> Ex:
> For Host1,  purpose=xyz.openbmc_project.Software.Version.VersionPurpose.Host1
> For Host2,  purpose=xyz.openbmc_project.Software.Version.VersionPurpose.Host2 and So on.

These 'purpose' values align with the Purpose field in Software.Version
(and the VersionPurpose enumeration).  We really don't want to add Host
positions to this enumeration set.

Why would a MANIFEST file have a different value for a different host
position anyhow?  Isn't the appropriate firmware image for your host
card dependent on which host-card-hardware you have installed and not
which position the card is in?  The type of hardware should be handled
by ExtendedVersion.

I can't imagine that a 16-blade BladeCenter would want to have 16
different files for each slot in the BladeCenter.  That doesn't sound
like a great user experience.

> 2) For bios upgrade, handle the same to incorporate the host number and send host number to the systemd service obmc-flash-host-bios@service like below.
> 
>   if (host.empty())
>     {
>         auto biosServiceFile = "obmc-flash-host-bios@" + versionId + ".service";
>     }
>     else
>     {
>         auto biosServiceFile =
>             "obmc-flash-host-bios@" + versionId + "_" + host + ".service";
>     }

It doesn't seem like systemd had a clear mechanism to create a
'multi-parameter template' which seems to be what you're asking for.  We
should probably define a convention for openbmc.  I'm somewhat surprised
that versionId is part of the template parameters to begin with.

I think there is a question you've missed (assuming we're not using the
purpose field to identify which host): How do we handle activation for
firmware images which can apply to multiple entities?  Today, as best I
can tell, there is a 1:1 mapping between firmware images and inventory
items they apply on.  At least, this is the case in
phosphor-bmc-code-mgmt, which is where this code you linked to is.

Reading the section "ItemUpdater" at [1], it seems that we can have
multiple Activation interfaces for a single Software version and these
Activation interfaces are expected to be associated to the
Inventory.Item they manage.  This would mean that we should create <N>
activation objects, one for each host, and modifying
`RequestedActivation` will activate only for that host.

(Adriana can maybe weight in here?)

> 
> b) : Implement a generic IPMI based multi-host bios upgrade.
> 
> 1) This generic implementation expects a json config file with the details like IPMI net function , command id, and etc and process the bios upgrade via ipmi commands.

I'm not following how this is related unless this is the code inside
'obmc-flash-host-bios@'?  You're not expecting this IPMI function to
dynamically create your MANIFEST, are you?  MANIFEST files need to be
digitally signed when you're doing secure updates, so you cannot
dynamically manipulate them.


1. https://github.com/openbmc/phosphor-dbus-interfaces/tree/master/xyz/openbmc_project/Software#itemupdater

-- 
Patrick Williams

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: Patrick Williams <patrick@stwcx.xyz>
To: "P. Priyatharshan" <PriyatharshanP@hcl.com>
Cc: "openbmc@lists.ozlabs.org" <openbmc@lists.ozlabs.org>,
	"anoo@us.ibm.com" <anoo@us.ibm.com>,
	"gmills@linux.vnet.ibm.com" <gmills@linux.vnet.ibm.com>,
	"mine260309@gmail.com" <mine260309@gmail.com>,
	"ratagupt@linux.vnet.ibm.com" <ratagupt@linux.vnet.ibm.com>,
	"ojayanth@in.ibm.com" <ojayanth@in.ibm.com>,
	"Velumani T-ERS, HCLTech" <velumanit@hcl.com>,
	Sundaramoorthy Thiyagarajan <sundaramoorthyt@hcl.com>
Subject: Re: Multi host bios upgrade support in phosphor-bmc-code-mgmt:
Date: Mon, 21 Sep 2020 14:46:14 -0500	[thread overview]
Message-ID: <20200921194614.GL6152@heinlein> (raw)
Message-ID: <20200921194614.DUNwYrgHWsG2XZDQyOqHEgbpqJOh4I5zzi2KPPdjYwA@z> (raw)
In-Reply-To: <TY2PR04MB33112E61CA54FE1A17D30B70CA3A0@TY2PR04MB3311.apcprd04.prod.outlook.com>

[-- Attachment #1: Type: text/plain, Size: 3566 bytes --]

On Mon, Sep 21, 2020 at 05:49:14PM +0000, P. Priyatharshan wrote:
> 
> Hi ,
> 
> Phosphor-software-manager currently supports bios upgrade for a single host.I would like to propose a design to add multi host bios upgrade support in Phosphor-software-manager.
> 
> Kindly review the below proposal and share your valuable comments.
> 
> Design:
> 
> a) : Add Host Number
> 
> 1) MANIFEST file change:
> 
> Add  host number in MANIFEST file, purpose field like below.
> 
> Ex:
> For Host1,  purpose=xyz.openbmc_project.Software.Version.VersionPurpose.Host1
> For Host2,  purpose=xyz.openbmc_project.Software.Version.VersionPurpose.Host2 and So on.

These 'purpose' values align with the Purpose field in Software.Version
(and the VersionPurpose enumeration).  We really don't want to add Host
positions to this enumeration set.

Why would a MANIFEST file have a different value for a different host
position anyhow?  Isn't the appropriate firmware image for your host
card dependent on which host-card-hardware you have installed and not
which position the card is in?  The type of hardware should be handled
by ExtendedVersion.

I can't imagine that a 16-blade BladeCenter would want to have 16
different files for each slot in the BladeCenter.  That doesn't sound
like a great user experience.

> 2) For bios upgrade, handle the same to incorporate the host number and send host number to the systemd service obmc-flash-host-bios@service like below.
> 
>   if (host.empty())
>     {
>         auto biosServiceFile = "obmc-flash-host-bios@" + versionId + ".service";
>     }
>     else
>     {
>         auto biosServiceFile =
>             "obmc-flash-host-bios@" + versionId + "_" + host + ".service";
>     }

It doesn't seem like systemd had a clear mechanism to create a
'multi-parameter template' which seems to be what you're asking for.  We
should probably define a convention for openbmc.  I'm somewhat surprised
that versionId is part of the template parameters to begin with.

I think there is a question you've missed (assuming we're not using the
purpose field to identify which host): How do we handle activation for
firmware images which can apply to multiple entities?  Today, as best I
can tell, there is a 1:1 mapping between firmware images and inventory
items they apply on.  At least, this is the case in
phosphor-bmc-code-mgmt, which is where this code you linked to is.

Reading the section "ItemUpdater" at [1], it seems that we can have
multiple Activation interfaces for a single Software version and these
Activation interfaces are expected to be associated to the
Inventory.Item they manage.  This would mean that we should create <N>
activation objects, one for each host, and modifying
`RequestedActivation` will activate only for that host.

(Adriana can maybe weight in here?)

> 
> b) : Implement a generic IPMI based multi-host bios upgrade.
> 
> 1) This generic implementation expects a json config file with the details like IPMI net function , command id, and etc and process the bios upgrade via ipmi commands.

I'm not following how this is related unless this is the code inside
'obmc-flash-host-bios@'?  You're not expecting this IPMI function to
dynamically create your MANIFEST, are you?  MANIFEST files need to be
digitally signed when you're doing secure updates, so you cannot
dynamically manipulate them.


1. https://github.com/openbmc/phosphor-dbus-interfaces/tree/master/xyz/openbmc_project/Software#itemupdater

-- 
Patrick Williams

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  parent reply	other threads:[~2020-09-21 19:47 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-21 17:49 Multi host bios upgrade support in phosphor-bmc-code-mgmt: P. Priyatharshan
2020-09-21 17:49 ` P. Priyatharshan
2020-09-21 19:46 ` Patrick Williams [this message]
2020-09-21 19:46   ` Patrick Williams
2020-09-21 20:58   ` Adriana Kobylak
2020-09-21 20:58     ` Adriana Kobylak
2020-10-01 15:52     ` P. Priyatharshan
2020-10-05 17:29       ` P. Priyatharshan
2020-10-05 21:41         ` Adriana Kobylak
2020-10-15 17:16           ` P. Priyatharshan
2020-10-15 19:28             ` Vijay Khemka
2020-10-19 17:08               ` P. Priyatharshan
2020-10-19 19:25                 ` Adriana Kobylak
2020-10-21  0:10                   ` Vijay Khemka
2020-10-21  5:27                     ` P. Priyatharshan
2020-10-23 13:34                       ` P. Priyatharshan
2020-10-28 15:20                         ` P. Priyatharshan
2020-10-30 18:52                           ` Adriana Kobylak
2020-11-03 21:01                             ` Patrick Williams
2020-11-09 20:35                               ` Adriana Kobylak

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200921194614.GL6152@heinlein \
    --to=patrick@stwcx.xyz \
    --cc=PriyatharshanP@hcl.com \
    --cc=anoo@us.ibm.com \
    --cc=gmills@linux.vnet.ibm.com \
    --cc=ojayanth@in.ibm.com \
    --cc=openbmc@lists.ozlabs.org \
    --cc=ratagupt@linux.vnet.ibm.com \
    --cc=sundaramoorthyt@hcl.com \
    --cc=velumanit@hcl.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).