DPDK patches and discussions
 help / color / mirror / Atom feed
From: Muhammad Ahmad <muhammad.ahmad@emumba.com>
To: dev@dpdk.org
Cc: Stephen Hemminger <stephen@networkplumber.org>,
	bruce.richardson@intel.com
Subject: Re: [dpdk-dev] [RFC] A REST API based daemon of dpdk-devbind.py
Date: Thu, 12 Mar 2020 14:03:26 +0500
Message-ID: <CAC9Mqu8f1wOGdAEeOsCC3RGpNL2bGmyZBi0SodqdnfFWwXzobg@mail.gmail.com> (raw)
In-Reply-To: <20200304080906.57f36c5a@hermes.lan>

Thanks for your comments.

"Better" may be subjective as the tool we are working on and using
within out infrastructure provides a RESTful API interface whereas
"driverctl" as you said seems more generic.

"driverctl" is an external tool and isn't part of DPDK toolset, what
we are providing here is more suitable for DPDK specific automated
testing, this is more of an argument of suitability of CLI interface
tools vs REST API tools which is what the industry preferred interface
"is/maybe".

We believed this is more suitable for "Automated Testing and
Integration" use-cases, and integrating various scripts in one main as
modules made more sense to us. I understand the tools functionality
does not directly affect DPDK as they aren't a part of core codebase,
but they certainly impact how DPDK is used.

Please let me know if this isn't something to be accepted in DPDK
upstream, we can then perhaps push it to upstream pip repo as a python
module or a CLI tool as a third-party DPDK tool.

Thanks
-Ahmad


On Wed, Mar 4, 2020 at 9:09 PM Stephen Hemminger
<stephen@networkplumber.org> wrote:
>
> On Wed, 4 Mar 2020 12:11:05 +0500
> Muhammad Ahmad <muhammad.ahmad@emumba.com> wrote:
>
> > Hi,
> > I have observed that the dpdk-devbind.py is an interactive tool and
> > not quite useful for automated testing in CI/CD. We are planning to
> > create “dpdk-usertools-server” for making it streamlined.
> > The idea is to create a separate application, which provides REST interface to:
> >     - Query the current status of devices and drivers
> >     - Bind and unbind devices to different drivers
> >
> > Future extensions will be to make dpdk-pmdinfo.py, cpu_layout.py and
> > dpdk-setup.sh more automation friendly.
> > =================Details of API====================
> > -Query Status of devices:
> >     Fetch the status of all devices or of a given group, supported
> > groups are: network, crypto, event and mempool devices.
> >         URL: /devices
> >         Method:GET
> >         URL Params: type=[all|net|baseband|crypto|event|mempool|compress]
> >         Sample call: curl http://127.0.0.1:5000/devices?type=crypto&type=net
> >         Success Response:
> >             HTTP response code: 200
> >             Content:
> >             [
> >              {
> >              "pci":"0000:b7:00.3",
> >              "type":"net",
> >              "infoString":"Ethernet Connection X722 for 10GbE SFP+ 37d0",
> >              "interface":"eno8",
> >              "driver":"i40e",
> >              "unusedDriver":"igb_uio",
> >              "active":false
> >              }
> >            ]
> >        Error response:
> >            HTTP Code: 400 BAD REQUEST
> >            Content:
> >            {
> >             "code": 1,
> >             "message": "invalid type"
> >            }
> >
> >
> > -Bind/Unbind device with a driver:
> >     Bind the PCI devices to the given driver or “none” to unbind
> >         URL:/devices/<pci>
> >         Method: PUT
> >         URL Prams: PCI=[PCI address]
> >         Sample call: curl http://127.0.0.1:5000/devices/0000:b7:00.3
> > --header "Content-Type: application/json" --request PUT --data
> > '{driver:"igb_uio", force: false}'
> >         Success Response:
> >             HTTP response code: 200
> >             Content:
> >             {
> >              "pci":"0000:b7:00.3",
> >              "type":"net",
> >              "infoString":"Ethernet Connection X722 for 10GbE SFP+ 37d0",
> >              "interface":"",
> >              "driver":"igb_uio",
> >              "unusedDriver":"i40e",
> >              "active":false
> >              }
> >        Error response:
> >            Code: 400 BAD REQUEST
> >            Content:
> >           {
> >            "code": 1,
> >            "message": "invalid id"
> >           }
> >
> >                  OR
> >           Code: 400 BAD REQUEST
> >           Content:
> >           {
> >           "code": 2,
> >           "message": "invalid driver"
> >          }
> >
> >                  OR
> >          Code: 405 METHOD NOT ALLOWED
> >          Content:
> >          {
> >           "code": 3,
> >            "message": "PCI Device active run with force=TRUE"
> >           }
> >
> > =================++++++++====================
> >
> > Signed-off-by: Muhammad Ahmad <muhammad.ahmad@emumba.com>
>
> There already is a better generic tool driverctl https://gitlab.com/driverctl/driverctl
> It is already in many distributions
>
> I would recommend using that instead of extending the limited DPDK tool.

      reply	other threads:[~2020-03-12  9:04 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-04  7:11 Muhammad Ahmad
2020-03-04 13:59 ` Bruce Richardson
2020-03-04 16:09 ` Stephen Hemminger
2020-03-12  9:03   ` Muhammad Ahmad [this message]

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=CAC9Mqu8f1wOGdAEeOsCC3RGpNL2bGmyZBi0SodqdnfFWwXzobg@mail.gmail.com \
    --to=muhammad.ahmad@emumba.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=stephen@networkplumber.org \
    /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

DPDK patches and discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://inbox.dpdk.org/dev/0 dev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dev dev/ https://inbox.dpdk.org/dev \
		dev@dpdk.org
	public-inbox-index dev

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.dev


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git