sushy-tools/doc/source/user/index.rst
Aija Jaunteva 44c4ad3787 Cleanup usage of 'simulator' and 'cloud-backed' in docs
Followup patch to rephrase 'cloud-backed' to indicate that
sushy-emulator is backed by libvirt or OpenStack cloud.

Change to use 'emulator' instead of 'simulator' across the docs.
As these emulators are used to substitute real Redfish BMC and
work to have same input/output as Redfish BMC, 'emulator' is the
term to use.

Change-Id: Ic2ca3f4d6b485085d1fc0300f5e697ac0473982f
2018-07-11 13:41:33 +03:00

6.8 KiB

Using Redfish emulators

The sushy-tools package includes two emulators - static Redfish responder and virtual Redfish BMC that is backed by libvirt or OpenStack cloud.

Static Redfish BMC

The static Redfish responder is a simple REST API server which serves static contents down to the Redfish client. The tool emulates the simple read-only BMC.

The user is expected to supply the Redfish-compliant contents perhaps downloaded from the DMTF web site. For example, this .zip archive includes Redfish content mocks for Redfish 1.0.0.

curl -o DSP2043_1.0.0.zip \
     https://www.dmtf.org/sites/default/files/standards/documents/DSP2043_1.0.0.zip
unzip -d mockups DSP2043_1.0.0.zip
sushy-static -m mockups/public-rackmount

Once you have the static emulator running, you can use it as it was a read-only bare-metal controller listening at localhost:8000 (by default):

curl http://localhost:8000/redfish/v1/Systems/
{
    "@odata.type": "#ComputerSystemCollection.ComputerSystemCollection",
    "Name": "Computer System Collection",
    "Members@odata.count": 1,
    "Members": [
        {
            "@odata.id": "/redfish/v1/Systems/437XR1138R2"
        }
    ],
    "@odata.context": "/redfish/v1/$metadata#Systems",
    "@odata.id": "/redfish/v1/Systems",
    "@Redfish.Copyright": "Copyright 2014-2016 Distributed Management Task Force, Inc. (DMTF). For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright."
}

You can mock different Redfish versions as well as different bare-metal machines by providing appropriate Redfish contents.

Virtual Redfish BMC

The virtual Redfish BMC is functionally similar to the Virtual BMC tool except that the frontend protocol is Redfish rather than IPMI. The Redfish commands coming from the client get executed against the virtualization backend. That lets you control virtual machine instances over Redfish.

The libvirt backend

First thing you need is to set up some libvirt-managed virtual machines (AKA domains) to manipulate.

virt-install \
   --name vbm-node \
   --ram 1024 \
   --disk path=/var/kvm/images/fedora26.img,size=30 \
   --vcpus 2 \
   --os-type linux \
   --os-variant fedora25 \
   --graphics none \
   --location 'https://dl.fedoraproject.org/pub/fedora/linux/releases/26/Server/x86_64/os/'

Next you can fire up the Redfish virtual BMC which will listen at localhost:8000 (by default):

sushy-emulator
 * Running on http://localhost:8000/ (Press CTRL+C to quit)

Now you should be able to see your libvirt domain among the Redfish Systems:

curl http://localhost:8000/redfish/v1/Systems/
{
    "@odata.type": "#ComputerSystemCollection.ComputerSystemCollection",
    "Name": "Computer System Collection",
    "Members@odata.count": 1,
    "Members": [

            {
                "@odata.id": "/redfish/v1/Systems/vbmc-node"
            }

    ],
    "@odata.context": "/redfish/v1/$metadata#ComputerSystemCollection.ComputerSystemCollection",
    "@odata.id": "/redfish/v1/Systems",
    "@Redfish.Copyright": "Copyright 2014-2016 Distributed Management Task Force, Inc. (DMTF). For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright."
}

You should be able to flip its power state via the Redfish call:

curl -d '{"ResetType":"On"}' \
    -H "Content-Type: application/json" -X POST \
     http://localhost:8000/redfish/v1/Systems/vbmc-node/Actions/ComputerSystem.Reset

curl -d '{"ResetType":"ForceOff"}' \
    -H "Content-Type: application/json" -X POST \
     http://localhost:8000/redfish/v1/Systems/vbmc-node/Actions/ComputerSystem.Reset

You can have as many domains as you need. The domains can be concurrently managed over Redfish and some other tool like Virtual BMC.

The OpenStack backend

You can use an OpenStack cloud instances to simulate Redfish-managed baremetal machines. This setup is known under the name of OpenStack Virtual Baremetal. We will largely re-use its OpenStack infrastructure and configuration instructions. After all, what we are trying to do here is to set up the Redfish emulator alongside the openstackvbmc tool which is used for exactly the same purpose at OVB with the only difference that it works over the IPMI protocol as opposed to Redfish.

The easiest way is probably to set up your OpenStack Virtual Baremetal cloud by following its instructions.

Once your OVB cloud operational, you log into the BMC instance and set up sushy-tools <installation> there.

Next you can invoke the Redfish virtual BMC pointing it to your OVB cloud:

sushy-emulator --os-cloud rdo-cloud
 * Running on http://localhost:8000/ (Press CTRL+C to quit)

By this point you should be able to see your OpenStack instances among the Redfish Systems:

curl http://localhost:8000/redfish/v1/Systems/
{
    "@odata.type": "#ComputerSystemCollection.ComputerSystemCollection",
    "Name": "Computer System Collection",
    "Members@odata.count": 1,
    "Members": [

            {
                "@odata.id": "/redfish/v1/Systems/vbmc-node"
            }

    ],
    "@odata.context": "/redfish/v1/$metadata#ComputerSystemCollection.ComputerSystemCollection",
    "@odata.id": "/redfish/v1/Systems",
    "@Redfish.Copyright": "Copyright 2014-2016 Distributed Management Task Force, Inc. (DMTF). For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright."
}

And flip its power state via the Redfish call:

curl -d '{"ResetType":"On"}' \
    -H "Content-Type: application/json" -X POST \
     http://localhost:8000/redfish/v1/Systems/vbmc-node/Actions/ComputerSystem.Reset

curl -d '{"ResetType":"ForceOff"}' \
    -H "Content-Type: application/json" -X POST \
     http://localhost:8000/redfish/v1/Systems/vbmc-node/Actions/ComputerSystem.Reset

You can have as many OpenStack instances as you need. The instances can be concurrently managed over Redfish and functionally similar tools like Virtual BMC.