Valence

Valence Overview
Valence is a service for lifecycle management of pooled bare-metal hardware infrastructure. The concept of pooled storage (SSDs or nvmE) disaggregated from compute nodes and network disaggregated from compute and storage provides the flexibility to compose and uses as and when the cloud requires more server resources. Valence provides the capability "compose" hardware nodes and release resources as needed by the overcloud.

Valence supports Redfish as default management protocol to communicate to hardware. It supports Rack Scale Design (RSD), Open architecture for management of disaggregated server hardware resources, which is standardized in Redfish. Valence also provides capability to manage other vendors disaggregated hardware using their respective drivers other than Redfish.

Rack Scale Design: Composable Hardware
Rack Scale Design allows considering compute, storage, and networking as disaggregated resources that can be composed on the fly to meet various needs in a data center/cloud. Disaggregation, in addition to allowing hardware refresh at different rates for each of storage, compute, and networking, supports more efficient resource utilization. Imagine a cloud that grew and shrank to meet usage by virtue of being connected to a rack that allowed such dynamic composition and release, where you might compose a node with copious storage or another that provides pure compute horsepower. Intel[5], Dell, Lenovo, HPE [7] among others are interested in composable infrastructure.

To bring such a vision to light, the compute industry collaborated to standardize and define the RESTful Redfish API[1]. Intel PodManager implements the Redfish API. The API, in addition to supporting composition and release of nodes, supports managing them (power-on/off), discovering hardware capabilities, and even collecting advanced telemetry.

Using software that implements the Redfish API, one could construct nodes to deploy an OpenStack Cloud and with drivers for Nova and Ironic grow and shrink the cloud to meet utilization needs. Hardware flavors for the undercloud could be defined no different from VM flavors. This will take us closer to true Software Defined Infrastructure (SDI).



DMTF Redfish
The Distributed Management Task Force, Inc (DMTF) [2] creates open manageability standards spanning diverse emerging and traditional IT infrastructures including cloud, virtualization, network, servers and storage. DMTF Redfish™ is an open industry standard specification and schema that specifies a RESTful interface and utilizes JSON and OData to help customers integrate and manage today's scale out hardware solutions, which are very different from the enterprise hardware of the past. Its sponsors are Broadcom, Dell, Emerson, HPE, INspur, Lenovo, MIcrosoft, SuperMicro, VMWare, and Intel among others. For more details refer to [3] and [4].

Valence - Functionality Overview
Valence is a collection of all things Rack Scale Control, from an user interface to help compose and view nodes, to supporting launch of an OpenStack cloud using your favorite deployment tool, a place to register blueprints, a banner under which to assemble a growing community interested in this functionality, a place to hold Nova and Ironic drivers and Horizon plugins to support growing/shrinking clouds dynamically, viewing Rack Scale flavors, and more.

Multi-PodManager Support
Valence provides the capability to manage multiple podmanagers. Each podmanager can be configured to use different driver. By default, ``redfishv1`` driver is used.

Currently supported drivers in Valence are: 1. redfishv1 2. expether

Future work include redfish v2 driver support. Other vendors also could implement their own driver to manage their hardware. Valence provides uniform interface to manage all the disaggregated hardware in datacentre supporting different protocols.

Device Orchestration Framework
Valence provides support for the dynamic management of pooled resources like storage, network and other pci devices which can be connected on demand to a composed node, giving user the ability to attach or detach the devices dynamically based on workload.

Ironic Provision Driver
Valence supports ``ironic`` provision driver to be able to register the valence composed node to ironic. Once the node is registered further operations of provisioning/managing could be directly performed using Ironic.

Architecture
The figure below describes how Valence will interact with implementations of RedFish and OpenStack to set up clouds.

We envisage setting up the under cloud and dynamically growing/shrinking the cloud as complementary to OpenStack today. Given that, Valence seeks to become an OpenStack Big Tent project. Registration efforts are underway, ably being managed by Lin (lin dot a dot yang at intel dot com) [6]

Use Cases
A datacenter has multiple racks of machines with a RedFish implementation to control the same. From creating multiple clouds from a datacenter, to a cloud spanning multiple datacenters, and even a cloud dynamically expanding/shrinking based on need, there are several possible use cases. We pull the use cases into a separate document and attach to launchpad to elicit community input. valence use cases

Below figure shows general workflow of valence project.

Valence Web Pages
Here are some pages capturing functionality at 30,000 feet!

OpenStack Horizon Integration
Using a deployment tool of your choice (our team has explored with TripleO and Fuel) can be used to install OpenStack on RSC composed node(s). This could be at the very beginning to create a cloud, or anytime after a cloud has been floated to expand it. Such nodes would become visible through the OpenStack Horizon UI and via OpenStack CI through calls such as Nova list. Shown below is Horizon UI listing all hypervisors, aka compute nodes, assuming on Node-1, using a deployment tool, we have launched Nova-compute.



RSD Client and RSD Lib
Related projects have also been started for enabling communication directly to RSD enabled hardware, the python-rsdclient and rsd-lib. The rsd-lib will house extensions to the Sushy project, enabling it to discover and compose nodes using RSD systems, storage, and networking, while the client will utilize those extensions for a simple CLI for making RSD calls for discovery and composition. The RSD client is also planned to be a plugin for the larger OpenStack Client.

RSD Client RSD Lib

Source Code

 * Official repository openstack/valence.
 * Github: https://github.com/openstack/valence
 * Valence blueprints launchpad

Threat Model
Valence Threat Model

Look Who is Interested!

 * 1) Peter Jung (Dell EMC)
 * 2) shuquan
 * 3) octopuszhang
 * 4) kevinshu96
 * 5) malinib
 * 6) mritikka
 * 7) Ananth Narayan
 * 8) Lin Yang
 * 9) Nate Potter
 * 10) Deepti Ramakrishna
 * 11) Ruijing
 * 12) Chester
 * 13) jfding
 * 14) shuquan
 * 15) snivas
 * 16) yufei
 * 17) chakri
 * 18) Mandy_ (Lenovo)
 * 19) HuBian  (Lenovo)
 * 20) Andy_Yan (Lenovo)
 * 21) Maohaijun (Lenovo)
 * 22) yangxing4 (Lenovo)
 * 23) wangzhandong (Lenovo)
 * 24) ramineni  (NEC)
 * 25) zhenguo
 * 26) yuntongjin
 * 27) bryang  (Suse)
 * 28) Jinxing Fang

Meetings
Meetings will occur weekly, 60 minutes long on
 * Channel: freenode #openstack-valence
 * Wednesdays, 14:30 HRS UTC ( For geos with daylight savings time, note that the meeting will shift to maintain UTC time)

Provide your input to the meeting agenda at Valence-Agenda

Logs of meetings past Valence-Meetings

Pike Planning
Lenovo (Hubian) interested in:


 * 1) Valence basic foundation for multi-PodManager  (horizontal scalability)
 * 2) Valence Web UI
 * 3) OpenStack plugins for Valence (Ironic)
 * 4) Valence simulator
 * 5) Network/Storage part of Valence

Intel :
 * 1) Registering Rack scale bare metal flavors in OpenStack (could be accomplished by using an admin privileged Valence user in OpenStack to make OpenStack flavor creation API calls)
 * 2) Attaching metadata bare metal composed nodes registered in Ironic that reflect any desired Rack scale features, at the minimum that it is an Rack Scale node
 * 3) Deploying an OpenStack Nova compute image on a Rack scale composed node
 * 4) Deploying a telemetry collection agent on the bare metal node ?? that is not normal in traditional OpenStack Ironic.
 * 5) ?? Might we want to as part of OpenStack rack awareness, on any new node creation define OpenStack host aggregates and include composed node there in, where host aggregates for Pod_ID, Pod--rack  be defined?
 * 6) ?? any interest in node decomposition
 * 7) ?? should we create an OpenStack API to "release" a bare metal node? "release" a compute host. Possibly even a Horizon UI page restricted to admins for the same. Workloads would need to be live migrated, host put into maintainance mode and valence/Redfish API calls to decompose then carried out.

NEC(ramineni):
 * 1) valence ironic integration
 * 2) how valence can manage other pooled resources hardware (apart from RSD)
 * 3) provision in valence to accommodate vendor specific drivers to manage other pooled resources (apart from RSD)
 * 4) . Features for Pike

Happenings!

 * Yufei (99Cloud) has an ironic driver, not perfect, but works. Will be demoed at Beijing ODCC meeting on 09/27. Welcome!
 * Mrittika (Intel), Malini (Intel), & Alaa (Dell) have an OpenStack Brownbag tech talk at OpenStack Barcelona. http://vbrownbag.com/2016/09/vbrownbag-techtalks-at-openstack-barcelona/
 * OpenStack Barcelona demo booth, First Face-to- Face  Monday, 24 Oct 2016, 2 pm Barcelona local time,  congregate by 1:50 pm near registration area.
 * Valence_Barcelona_Co-ordination

Licensing
Apache License v2

FAQs

 * 1) Do I need a Rack to develop and test Rack Scale Controller features? No, you could get by using a simulator. Please contact us. But to deploy your cloud you will need real hardware.
 * 2) Where can I learn more? Come join our meeting. Check out the references below. Join us on IRC.