Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Neutron On-boarding Room
Miguel Lavalle, irc mlavalle
Boston, May 2017
Agenda
● Neutron project overview
● Neutron API
● Core resources, extensions, plugins and service plugins
● Reference back-end implementation
● ML2 plug-in
Get your devstack instances ready
We will use them for exercises!
Neutron Stadium
● Mission, as defined by the OpenStack governance document
“To implement services and associated libraries to provide
on-demand, scalable, and technology-agnostic network
abstraction.”
● This mission is big and ambitious. To properly tackle it, the Neutron Stadium is
defined as (https://docs.openstack.org/developer/neutron/stadium/index.html):
“… projects that the Neutron PTL and core team are directly
involved in, and manage on a day to day basis.”

Recommended for you

OpenStack Neutron Havana Overview - Oct 2013
OpenStack Neutron Havana Overview - Oct 2013OpenStack Neutron Havana Overview - Oct 2013
OpenStack Neutron Havana Overview - Oct 2013

Presentation about OpenStack Neutron Overview presented during three meet-ups in NYC, Connecticut and Philadelphia during October 2013 by Edgar Magana from PLUMgrid

maganahavanaedgar
Networking in OpenStack for non-networking people: Neutron, Open vSwitch and ...
Networking in OpenStack for non-networking people: Neutron, Open vSwitch and ...Networking in OpenStack for non-networking people: Neutron, Open vSwitch and ...
Networking in OpenStack for non-networking people: Neutron, Open vSwitch and ...

This document discusses networking in OpenStack and Neutron. It begins with an overview of the OSI model and networking in a virtual world using Open vSwitch. It then covers Neutron and how it provides high-level abstractions for networking while abstracting away the internals. The document demonstrates how to create subnets and attach instances using Neutron. It also discusses debugging networking issues through examining devices, tracking packets, and looking at DHCP and routing tables. Resources for further information are provided at the end.

networkingneutronrdo
Introduction to Software Defined Networking and OpenStack Neutron
Introduction to Software Defined Networking and OpenStack NeutronIntroduction to Software Defined Networking and OpenStack Neutron
Introduction to Software Defined Networking and OpenStack Neutron

Virtualization allows for more efficient use of server resources by running multiple virtual machines on a single physical server. This is done through the use of a hypervisor which creates isolated virtual machines, each with their own operating system and applications. Networking in virtualized environments is enabled through software-defined networking which decouples the network control and forwarding functions from the underlying hardware, allowing for centralized programmatic control of network resources. Neutron is OpenStack's networking component that provides software-defined networking capabilities like network provisioning and virtual port management.

openstackopenstack neutron
Neutron Stadium
neutron-fwaas
neutron
neutron-lib
ovsdbapp
networking-
ovn
neutron-
dynamic-
routing
networking-
sfc
networking-
bgpvpn
python-
neutronclient
networking-
odl
networking-
midonetneutron-specs
networking-
bagpipe
Neutron Stadium
● Projects have to demonstrate a track record meeting a well defined criteria to
be part of the Stadium
○ Exhaustive documentation
○ Exhaustive OpenStack CI coverage
○ Good release model adherence
○ Adherence to deprecation and stable backport policies
○ Demonstrated ability to do upgrades and rolling upgrades, where applicable
○ Client bindings and CLI developed according to the OpenStack Client plugin model
○ Integrate with Neutron via one of the supported, advertised and maintained public Python APIs
○ Above all: be open source from the ground up
● To be considered to join the Stadium, a project must prove compliance with
the above criteria for at least two OpenStack releases
Neutron team
● Current PTL: Kevin Benton (IRC: kevinbenton)
● Liaison with on-boarding process: Miguel Lavalle (IRC: mlavalle)
● IRC channel: #openstack-neutron in Freenode
● Weekly Neutron IRC meeting:
○ Convenes on alternating weeks on Mondays at 2100 UTC and on Tuesdays at 1400 UTC
● Subteams (L3, QoS, CI, etc) meet also regularly
○ See scheduled times and days here: http://eavesdrop.openstack.org/
● Neutron has a good developer reference documentation. Please use it!:
○ https://docs.openstack.org/developer/neutron/index.html
Project mascot: get your sticker with me!

Recommended for you

Openstack Neutron and SDN
Openstack Neutron and SDNOpenstack Neutron and SDN
Openstack Neutron and SDN

The document discusses OpenStack Neutron and Software Defined Networks (SDN). It begins with an agenda for a demonstration of Neutron including creating networks, spawning VMs, testing connectivity, and creating load balancers. It then provides an overview of Neutron components and architecture, including the modular layer 2 plugin. It demonstrates Neutron APIs and network namespaces. It introduces SDN concepts like the control plane and network virtualization. Finally, it discusses how Neutron enforces SDN through plugins like PLUMgrid that implement the functionality on software edges in compute nodes.

OpenStack networking (Neutron)
OpenStack networking (Neutron) OpenStack networking (Neutron)
OpenStack networking (Neutron)

These are the slides from the webinar "OpenStack networking (Neutron)", which covered the topics: - OpenStack Networking: the Neutron project (NaaS); - Main features of Neutron; - Advanced networking functionalities in OpenStack.

createnetnetworkingneutron
Neutron behind the scenes
Neutron   behind the scenesNeutron   behind the scenes
Neutron behind the scenes

This document provides an overview of OpenStack Neutron, the networking component of OpenStack. It describes Neutron's architecture and components, how it uses Linux networking and Open vSwitch, and how network packets flow through the Neutron distributed virtual router architecture. Key concepts covered include Neutron plugins, agents, GRE tunnels, Linux network namespaces, and east-west vs north-south traffic flows in a DVR configuration.

openstackopenvswitchneutron
Agenda
● Neutron project overview
● Neutron API
● Core resources, extensions, plugins and service plugins
● Reference back-end implementation
● ML2 plug-in
Neutron API
Neutron, like all the other OpenStack projects, exposes a ReST API where:
● Requests and responses are sent using HTTP
● HTTP methods (POST, PUT, GET, DELETE) are applied through requests
sent to the API...
● ...to a set of resources represented by URIs (Universal Resource Identifier)
that identify resources
● The HTTP verbs correspond to CRUD (Create, Read, Update and Delete)
operations.
● Every request sent by the user gets a response from the API
● Resources are represented in API requests and responses in JSON
Exercise: create a neutron port
$ openstack --debug port create --network private port-1
Exercise: create a neutron port request
$ openstack --debug port create --network private port-1
REQ: curl -g -i -X POST http://192.168.33.12:9696/v2.0/ports -H "User-Agent:
openstacksdk/0.9.14 keystoneauth1/2.19.0 python-requests/2.12.5
CPython/2.7.12" -H "Content-Type: application/json" -H "X-Auth-Token:
{SHA1}f42605a7b844675fd5ec4abf79f093b8cd045f22" -d '{"port": {"network_id":
"b1aa112b-04ae-481e-b652-a233c96deaab", "name": "port-1", "admin_state_up":
true}}'

Recommended for you

OpenStack Neutron Advanced Services by Akanda
OpenStack Neutron Advanced Services by AkandaOpenStack Neutron Advanced Services by Akanda
OpenStack Neutron Advanced Services by Akanda

Sean Roberts, VP Development Akanda, gave this talk on 03 September 2015 at the HP Sunnyvale offices. This talk goes into detail of how Akanda delivers OpenStack Neutron Advanced Services. Event details can be found here http://www.meetup.com/openstack/events/215648162/

openstackopenstack mitaka summitakanda
Scaling OpenStack Neutron in Heterogeneous Environments
Scaling OpenStack Neutron in Heterogeneous EnvironmentsScaling OpenStack Neutron in Heterogeneous Environments
Scaling OpenStack Neutron in Heterogeneous Environments

Scaling an Openstack deployment requires serious thought and consideration, commonly it is achieved by multiplying the constrained resource. A notable exception is Neutron, in particular the L2 subsystem. The L2 network needs to scale up while most connected components are scaling out. A common approach to scaling the number of available L2 network segments in a region is the introduction of advanced overlay networks, with the drawback that all connected devices need to implement the overlay protocol. Installations requiring multiple hypervisor types or bare metal have a limited number of overlay protocol options. Neutron provides an alternative to a single overlay protocol; separating L2 in the network fabric from the protocol used on the network edge via Hierarchical Port Binding. This talk introduces a Neutron HPB architecture and ML2 implementation currently in use at SAP. We will discuss the issues that HPB solved and the challenges faced during our HPB deployment.

networkingopenstackenterprise
Open Source Backends for OpenStack Neutron
Open Source Backends for OpenStack NeutronOpen Source Backends for OpenStack Neutron
Open Source Backends for OpenStack Neutron

This document provides an overview of several open source backend alternatives for OpenStack Neutron, including OpenDaylight, Ryu Network OS, and Open Contrail. It summarizes Neutron's built-in solution using ML2 and OVS agents, and how each open source alternative integrates with Neutron. Setup instructions are provided to try each alternative using Devstack.

openstackopen source
Exercise: create a neutron port request
$ openstack --debug port create --network private port-1
REQ: curl -g -i -X POST http://192.168.33.12:9696/v2.0/ports -H "User-Agent:
openstacksdk/0.9.14 keystoneauth1/2.19.0 python-requests/2.12.5
CPython/2.7.12" -H "Content-Type: application/json" -H "X-Auth-Token:
{SHA1}f42605a7b844675fd5ec4abf79f093b8cd045f22" -d '{"port": {"network_id":
"b1aa112b-04ae-481e-b652-a233c96deaab", "name": "port-1", "admin_state_up":
true}}'
HTTP method
Exercise: create a neutron port request
$ openstack --debug port create --network private port-1
REQ: curl -g -i -X POST http://192.168.33.12:9696/v2.0/ports -H "User-Agent:
openstacksdk/0.9.14 keystoneauth1/2.19.0 python-requests/2.12.5
CPython/2.7.12" -H "Content-Type: application/json" -H "X-Auth-Token:
{SHA1}f42605a7b844675fd5ec4abf79f093b8cd045f22" -d '{"port": {"network_id":
"b1aa112b-04ae-481e-b652-a233c96deaab", "name": "port-1", "admin_state_up":
true}}'
Public endpoint and API version
Exercise: create a neutron port request
$ openstack --debug port create --network private port-1
REQ: curl -g -i -X POST http://192.168.33.12:9696/v2.0/ports -H "User-Agent:
openstacksdk/0.9.14 keystoneauth1/2.19.0 python-requests/2.12.5
CPython/2.7.12" -H "Content-Type: application/json" -H "X-Auth-Token:
{SHA1}f42605a7b844675fd5ec4abf79f093b8cd045f22" -d '{"port": {"network_id":
"b1aa112b-04ae-481e-b652-a233c96deaab", "name": "port-1", "admin_state_up":
true}}'
URI
Exercise: create a neutron port request
$ openstack --debug port create --network private port-1
REQ: curl -g -i -X POST http://192.168.33.12:9696/v2.0/ports -H "User-Agent:
openstacksdk/0.9.14 keystoneauth1/2.19.0 python-requests/2.12.5
CPython/2.7.12" -H "Content-Type: application/json" -H "X-Auth-Token:
{SHA1}f42605a7b844675fd5ec4abf79f093b8cd045f22" -d '{"port": {"network_id":
"b1aa112b-04ae-481e-b652-a233c96deaab", "name": "port-1", "admin_state_up":
true}}'
Request headers

Recommended for you

ONUG Tutorial: Bridges and Tunnels Drive Through OpenStack Networking
ONUG Tutorial: Bridges and Tunnels Drive Through OpenStack NetworkingONUG Tutorial: Bridges and Tunnels Drive Through OpenStack Networking
ONUG Tutorial: Bridges and Tunnels Drive Through OpenStack Networking

This document summarizes OpenStack networking (Neutron) and discusses its key components and architecture. It describes how Neutron provides network abstraction and virtualization through pluggable backend drivers. It also outlines some common Neutron features like security groups and highlights new capabilities in the Juno release like IPv6 support and distributed virtual routing. The document concludes by looking ahead to further networking developments in OpenStack.

OpenStack Neutron's Distributed Virtual Router
OpenStack Neutron's Distributed Virtual RouterOpenStack Neutron's Distributed Virtual Router
OpenStack Neutron's Distributed Virtual Router

These are the slides that I used in a presentation given to the Colorado OpenStack meetup group on Wednesday, September 17, 2014.

openstack neutron l3 dvr
OpenStack Neutron behind the Scenes
OpenStack Neutron behind the ScenesOpenStack Neutron behind the Scenes
OpenStack Neutron behind the Scenes

This document discusses OpenStack Neutron and software defined networking. It provides an overview of Neutron and how it allows network as a service capabilities. It describes the packet flow for virtual machines accessing the external network or communicating between virtual machines on the same network. It explains how Neutron integrates with Open vSwitch on the compute nodes to provide networking and discusses the various Neutron agents.

openvswitchopenstack neutron behind the scenesopenstack
Exercise: create a neutron port request
$ openstack --debug port create --network private port-1
REQ: curl -g -i -X POST http://192.168.33.12:9696/v2.0/ports -H "User-Agent:
openstacksdk/0.9.14 keystoneauth1/2.19.0 python-requests/2.12.5
CPython/2.7.12" -H "Content-Type: application/json" -H "X-Auth-Token:
{SHA1}f42605a7b844675fd5ec4abf79f093b8cd045f22" -d '{"port": {"network_id":
"b1aa112b-04ae-481e-b652-a233c96deaab", "name": "port-1", "admin_state_up":
true}}' The body of the request: resource
representation in JSON
Exercise: create a neutron port response
RESP: [201] Content-Type: application/json Content-Length: 1129
X-Openstack-Request-Id: req-63329334-d903-46a3-8fcd-840ffa6e13ee Date:
Wed, 12 Apr 2017 18:59:11 GMT Connection: keep-alive
RESP BODY:
{"port":{"allowed_address_pairs":[],"extra_dhcp_opts":[],"updated_at":"2017-04-12
T18:59:11Z","device_owner":"","revision_number":6,"port_security_enabled":true,"
fixed_ips":[{"subnet_id":"368a67c8-d1ae-452e-b134-23d7d002a1f5","ip_address":
"10.0.0.8"},{"subnet_id":"f8c10064-a3b1-4e7c-8ff6-741ed02dbadc","ip_address":"f
dd8:76d6:991f:0:f816:3eff:fe31:d576"}],"id":"55fc71a4-eabb-43f9-8335-bdbd1b625
99f","security_groups":["c4bcfdfb-9b03-4e89-a4d4-dafef1985588"],"mac_address":
"fa:16:3e:31:d5:76","project_id":"87eda0fcff204327800a17c2bb9a4df3",... }}
Response code
Exercise: create a neutron port response
RESP: [201] Content-Type: application/json Content-Length: 1129
X-Openstack-Request-Id: req-63329334-d903-46a3-8fcd-840ffa6e13ee Date:
Wed, 12 Apr 2017 18:59:11 GMT Connection: keep-alive
RESP BODY:
{"port":{"allowed_address_pairs":[],"extra_dhcp_opts":[],"updated_at":"2017-04-12
T18:59:11Z","device_owner":"","revision_number":6,"port_security_enabled":true,"
fixed_ips":[{"subnet_id":"368a67c8-d1ae-452e-b134-23d7d002a1f5","ip_address":
"10.0.0.8"},{"subnet_id":"f8c10064-a3b1-4e7c-8ff6-741ed02dbadc","ip_address":"f
dd8:76d6:991f:0:f816:3eff:fe31:d576"}],"id":"55fc71a4-eabb-43f9-8335-bdbd1b625
99f","security_groups":["c4bcfdfb-9b03-4e89-a4d4-dafef1985588"],"mac_address":
"fa:16:3e:31:d5:76","project_id":"87eda0fcff204327800a17c2bb9a4df3",... }}
Request ID
Exercise: create a neutron port response
RESP: [201] Content-Type: application/json Content-Length: 1129
X-Openstack-Request-Id: req-63329334-d903-46a3-8fcd-840ffa6e13ee Date:
Wed, 12 Apr 2017 18:59:11 GMT Connection: keep-alive
RESP BODY:
{"port":{"allowed_address_pairs":[],"extra_dhcp_opts":[],"updated_at":"2017-04-12
T18:59:11Z","device_owner":"","revision_number":6,"port_security_enabled":true,"
fixed_ips":[{"subnet_id":"368a67c8-d1ae-452e-b134-23d7d002a1f5","ip_address":
"10.0.0.8"},{"subnet_id":"f8c10064-a3b1-4e7c-8ff6-741ed02dbadc","ip_address":"f
dd8:76d6:991f:0:f816:3eff:fe31:d576"}],"id":"55fc71a4-eabb-43f9-8335-bdbd1b625
99f","security_groups":["c4bcfdfb-9b03-4e89-a4d4-dafef1985588"],"mac_address":
"fa:16:3e:31:d5:76","project_id":"87eda0fcff204327800a17c2bb9a4df3",... }}
Resource representation in JSON

Recommended for you

2014 OpenStack Summit - Neutron OVS to LinuxBridge Migration
2014 OpenStack Summit - Neutron OVS to LinuxBridge Migration2014 OpenStack Summit - Neutron OVS to LinuxBridge Migration
2014 OpenStack Summit - Neutron OVS to LinuxBridge Migration

Presentation titled 'Migrating production workloads from OVS to LinuxBridge'. Presented at the Fall 2014 OpenStack summit in Paris, this slide deck introduced the possibility of migrating live workloads from Open vSwitch to LinuxBridge with minimal downtime.

parisml2bridging
OVN: Scaleable Virtual Networking for Open vSwitch
OVN: Scaleable Virtual Networking for Open vSwitchOVN: Scaleable Virtual Networking for Open vSwitch
OVN: Scaleable Virtual Networking for Open vSwitch

OVN is a network virtualization architecture that allows for scalable virtual networking on Open vSwitch. It abstracts virtual networking from physical networking and provides the same features as physical networks. OVN uses distributed logical flows and databases coordinated by local controllers to convert logical flows to physical flows. This allows for high performance, scalable virtual networking without depending on the physical topology.

virtual networkingopen vswitchopen source
OpenStack Networking and Automation
OpenStack Networking and AutomationOpenStack Networking and Automation
OpenStack Networking and Automation

- OpenStack provides network virtualization and automation capabilities through projects like Neutron, Heat, and plugins like Midonet. - Neutron evolved networking in OpenStack to allow pluggable networking models beyond the initial Nova networking. It supports overlay technologies and network automation. - Heat allows you to define infrastructure like servers, networks, and their relationships in templates that can be deployed through the OpenStack API. This provides automation of virtual network deployment. - Plugins like Midonet provide distributed virtual networking models to improve scalability and performance over overlay approaches like OVS. They also allow automation of physical network configuration.

icehouseopenstackml2
Exercise: update a port
$ openstack --debug port set --name updated-port-name
55fc71a4-eabb-43f9-8335-bdbd1b62599f
Exercise: update a port request
$ openstack --debug port set --name updated-port-name
55fc71a4-eabb-43f9-8335-bdbd1b62599f
REQ: curl -g -i -X PUT
http://192.168.33.12:9696/v2.0/ports/55fc71a4-eabb-43f9-8335-bdbd1b62599f -H
"User-Agent: openstacksdk/0.9.14 keystoneauth1/2.19.0 python-requests/2.12.5
CPython/2.7.12" -H "Content-Type: application/json" -H "X-Auth-Token:
{SHA1}2b22d5669c22b8ccda3c70f98a1c3d5f6b119412" -d '{"port": {"name":
"updated-port-name"}}'
RESP: [200] Content-Type: application/json Content-Length: 1140
X-Openstack-Request-Id: req-639af99a-9ba7-4082-bc5c-b75938200a29….
HTTP method
Exercise: update a port request
$ openstack --debug port set --name updated-port-name
55fc71a4-eabb-43f9-8335-bdbd1b62599f
REQ: curl -g -i -X PUT
http://192.168.33.12:9696/v2.0/ports/55fc71a4-eabb-43f9-8335-bdbd1b62599f -H
"User-Agent: openstacksdk/0.9.14 keystoneauth1/2.19.0 python-requests/2.12.5
CPython/2.7.12" -H "Content-Type: application/json" -H "X-Auth-Token:
{SHA1}2b22d5669c22b8ccda3c70f98a1c3d5f6b119412" -d '{"port": {"name":
"updated-port-name"}}'
RESP: [200] Content-Type: application/json Content-Length: 1140
X-Openstack-Request-Id: req-639af99a-9ba7-4082-bc5c-b75938200a29….
URI
Exercise: update a port request
$ openstack --debug port set --name updated-port-name
55fc71a4-eabb-43f9-8335-bdbd1b62599f
REQ: curl -g -i -X PUT
http://192.168.33.12:9696/v2.0/ports/55fc71a4-eabb-43f9-8335-bdbd1b62599f -H
"User-Agent: openstacksdk/0.9.14 keystoneauth1/2.19.0 python-requests/2.12.5
CPython/2.7.12" -H "Content-Type: application/json" -H "X-Auth-Token:
{SHA1}2b22d5669c22b8ccda3c70f98a1c3d5f6b119412" -d '{"port": {"name":
"updated-port-name"}}'
RESP: [200] Content-Type: application/json Content-Length: 1140
X-Openstack-Request-Id: req-639af99a-9ba7-4082-bc5c-b75938200a29….
Resource representation in JSON

Recommended for you

Openstack Basic with Neutron
Openstack Basic with NeutronOpenstack Basic with Neutron
Openstack Basic with Neutron

This document provides an overview and agenda for a presentation on OpenStack networking. It begins with an overview of OpenStack architecture and services like Compute, Networking, Identity and Image services. It then discusses basic network components like controllers, compute nodes and networking plugins. Next, it covers networking process flows and dives deeper into the Neutron networking plugin, including the Modular Layer 2 plugin framework and drivers like Open vSwitch. It concludes with a planned demonstration of networking functionality in an OpenStack lab environment.

openstackkrdagneutron
L2 and L3 agent restructure
L2 and L3 agent restructureL2 and L3 agent restructure
L2 and L3 agent restructure

In this session we will illustrate the work done during Kilo to improve the Neutron L2 and the L3 agents. We will start with a deep dive into both agents, explaining how they work. We will then give an overview of their deficiencies before Kilo and we will show how we tackled and solved them. We will describe future enhancements and performance gains that will be possible in future releases because of this debt repayment. We will also provide benchmark data to measure the improvement in terms of performance and scalability where applicable.

neutronopenstack
Neutron on boarding room
Neutron on boarding roomNeutron on boarding room
Neutron on boarding room

Slides from Neutron onboarding talk given by Miguel Lavalle and Slawek Kaplonski during the OpenStack PTG in Shanghai, November 2019

openstackneutron
Frequently seen response codes
Response code webob.exc exception Meaning
Success
200 HTTPOk OK
201 HTTPCreated Created
204 HTTPNoContent No Content (deleted)
Client error
400 HTTPBadRequest Bad Request
404 HTTPNotFound Not Found
409 HTTPConflict Conflict
Server error
500 HTTPServerError Internal Server Error
Agenda
● Neutron project overview
● Neutron API
● Core resources, extensions, plugins and service plugins
● Reference back-end implementation
● ML2 plug-in
Core resources
vlan 35
10.0.0.8 10.0.0.9 10.2.0.4
10.0.0.0/24 10.2.0.0/16
Ports
Networks (L2)
Subnets
Neutron plugin architecture
Nova ComputeNova Compute
Nova Compute
Nova Compute
Tenant
Scripts
Horizon
Nova
API Clients Neutron Server
Neutron
Plugin
Create-net
.
.
.
Create-port
virtual switch
Neutron
API
Create-net
.
.
.
Create-port Interfaces from a service
like Nova plug into a
switch managed by the
Neutron plugin
Uniform API
for all clients
DB
Agents or
SDN controller
API + Plugin = Neutron Server

Recommended for you

how to use openstack api
how to use openstack apihow to use openstack api
how to use openstack api

The document provides details about an OpenStack API development workshop conducted by Liang Bo. The 2-day workshop covers topics like developing with OpenStack, developer tools, OpenStack APIs, SDKs and includes hands-on sessions to build a tiny project using OpenStack APIs. Day 1 covers introduction, developing with OpenStack, tools and OpenStack RESTful APIs. Day 2 focuses on workshops to use OpenStack APIs and SDKs.

openstackrestfulapipython
Nova: Openstack Compute-as-a-service
Nova: Openstack Compute-as-a-serviceNova: Openstack Compute-as-a-service
Nova: Openstack Compute-as-a-service

- What is NOVA ? - NOVA architecture - How instance are spawned in Openstack ? - Interaction of nova with other openstack projects like neutron, glance and cinder.

novaopenstack
OpenStack API's and WSGI
OpenStack API's and WSGIOpenStack API's and WSGI
OpenStack API's and WSGI

This document provides an overview of OpenStack APIs and the WSGI (Web Server Gateway Interface) that powers them. It begins with an introduction to WSGI and how OpenStack services are implemented as WSGI applications. It then demonstrates how the OpenStack APIs can be accessed via libraries like novaclient or directly with HTTP requests. Code examples are provided showing how to authenticate against Keystone and retrieve images using urllib2. The document concludes with explanations of how WSGI, WebOb, and Paste are used to implement the OpenStack "web stack".

wsgicloudcomputingapi
Extensions
● Add attributes to core / existing resources
Port
binding_host_id
binding_profile
binding_vif_details
binding_vif_type
binding_vnic_type
Port binding extension
{“port”: {
“binding:host_id”: “allinone”,
“binding:profile”: {},
“binding:vif_details”: {
“port_filter”: true,
“ovs_hybrid_plug”: true
},
“binding:vif_type”: “ovs”,
“binding:vnic_type”: “normal”,
….
}
Extensions
● Add new resources and sub-resources
Neutron L3 Router /v2.0/routers
/v2.0/floatingips
security-group /v2.0/security-groups
/v2.0/security-group-rules
Quality of Service /v2.0/qos/policies
/v2.0/qos/policies/{policy_id}/bandwidth_limit_rules
/v2.0/qos/policies/{policy_id}/dscp_marking_rules
/v2.0/qos/policies/{policy_id}/minimum_bandwidth_rules
Neutron with API extensions and service plugin
Nova ComputeNova Compute
Nova Compute
Nova Compute
Tenant
Scripts
Horizon
Nova
API Clients Neutron Server
Neutron
Plugin
Create-net
.
Create-port
virtual switch
Neutron
API
Create-net
.
Create-port
Interfaces from a service
like Nova plug into a
switch managed by the
Neutron plugin
API + Plugin = Neutron Server
Uniform API
for all clients
API
Extensions
Service
Plugin DB
Agents or
SDN controller
Exercise
● $ openstack extension list --network
● Open /etc/neutron/neutron.conf
○ Search for core_plugin
○ Search for service_plugins

Recommended for you

OpenStack Swift的性能调优
OpenStack Swift的性能调优OpenStack Swift的性能调优
OpenStack Swift的性能调优

CloudConnect 云计算大会 China 2016 OpenStack Swift的性能调优 Performance Tuning of OpenStack Swift 李明宇 奥思数据 创始⼈& CTO Email: li.mingyu@ostorage.com.cn Swift is good at storing small objects like photos and documents.

swiftopenstack
OpenStack APIs: Present and Future (Beta Talk)
OpenStack APIs: Present and Future (Beta Talk)OpenStack APIs: Present and Future (Beta Talk)
OpenStack APIs: Present and Future (Beta Talk)

OpenStack APIs: Present and Future by H. Wade Minter provides an overview of OpenStack storage (Swift) APIs and how to use them. The document discusses how OpenStack is an open source cloud computing platform producing interrelated projects for cloud infrastructure. It then summarizes the Swift storage component and demonstrates making API calls to authenticate, list containers and objects, upload/download objects, and set metadata using CURL examples. Language bindings like Ruby gems simplify using the OpenStack Storage APIs.

June Boston openStack Summit: Preparing quantum for the data center
June Boston openStack Summit: Preparing quantum for the data centerJune Boston openStack Summit: Preparing quantum for the data center
June Boston openStack Summit: Preparing quantum for the data center

Quantum, OpenStack's virtual networking service, is slated to replace Nova's networking service in the upcoming Folsom release. Initial Quantum development has focused on the basic requirements of a green-field Nova cloud deployment. Additional requirements will be discussed that enable Quantum to support private Nova cloud deployments within existing data centers, as well as enterprise virtualization with the oVirt project. Initial work is underway for Folsom, and additional work will follow.

networkingvirtualizationcloud computing
Exercise
● Enable the DNS integration extension:
○ $ openstack port list
○ $ openstack port show <port-id>
○ Edit the /etc/neutron/neutron.conf file and assign a value different to openstacklocal (its default
value) to the dns_domain parameter in the [default] section
○ Add dns to extension_drivers in the [ml2] section of /etc/neutron/plugins/ml2/ml2_conf.ini
○ $ screen -r stack
○ <ctrl-a>“
○ With the <down-arrow> or <up-arrow> select screen q-svc and press enter
○ <ctrl-c> to stop the Neutron server
○ <up-arrow> once to recall the startup command
○ <enter> to restart the Neutron server
○ <ctrl-a>d to leave the screen command
○ $ openstack port show <port-id>
Exercise
● Enable the DNS integration extension:
○ sudo systemctl restart devstack@q-svc.service
Agenda
● Neutron project overview
● Neutron API
● Core resources, extensions, plugins and service plugins
● Reference back-end implementation
● ML2 plug-in
The back end
Nova ComputeNova Compute
Nova Compute
Nova Compute
Tenant
Scripts
Horizon
Nova
API Clients Neutron Server
Neutron
Plugin
Create-net
.
Create-port
virtual switch
Neutron
API
Create-net
.
Create-port
Interfaces from a service
like Nova plug into a
switch managed by the
Neutron plugin
Uniform API
for all clients
Agents or
SDN controller
API
Extensions
Service
Plugin DB
API + Plugin = Neutron Server

Recommended for you

OpenStack: Security Beyond Firewalls
OpenStack: Security Beyond FirewallsOpenStack: Security Beyond Firewalls
OpenStack: Security Beyond Firewalls

OpenStack security is a huge topic. In these slides I presented at the OpenStack Day, I analyzed cloud security the network to the application layer, going through specific layers, some in common between OpenStack itself and the applications.

cloud computingbyodstrong authentication
Openstack: security beyond firewalls
Openstack: security beyond firewallsOpenstack: security beyond firewalls
Openstack: security beyond firewalls

Cloud infrastructure have changed both the way the attacks are made both the methodologies for its protection. In this workshop gave at OpenStack day Italy, Giuseppe Paternò, CTO at GARL, explores the components of OpenStack security and other measures to protect both the infrastructure itself and the applications hosted

 
by GARL
networkopenstacksecurity
LinuxCon 2013 Steven Dake on Using Heat for autoscaling OpenShift on Openstack
LinuxCon 2013 Steven Dake on Using Heat for autoscaling OpenShift on OpenstackLinuxCon 2013 Steven Dake on Using Heat for autoscaling OpenShift on Openstack
LinuxCon 2013 Steven Dake on Using Heat for autoscaling OpenShift on Openstack

OpenStack Heat allows modeling relationships between OpenStack resources and managing infrastructure resources throughout application lifecycles. The presentation discusses Heat architecture, autoscaling workflows using Heat and Ceilometer, and demonstrates an OpenShift autoscaling workflow on OpenStack using Heat templates, DIB elements, and CloudWatch alarms. Future work may expand autoscaling to other resources and integrate it more fully across OpenStack projects.

auto-scalingopenshiftpaas
The back end
Nova ComputeNova Compute
Nova Compute
Nova Compute
Tenant
Scripts
Horizon
Nova
API Clients Neutron Server
Neutron
Plugin
Create-net
.
Create-port
virtual switch
Neutron
API
Create-net
.
Create-port
Interfaces from a service
like Nova plug into a
switch managed by the
Neutron plugin
Uniform API
for all clients
Agents or
SDN controller
API
Extensions
Service
Plugin DB
API + Plugin = Neutron Server
Agents based reference implementation
Agents and server communicate using
RPC implemented over message queue
Under the hood scenario: compute node with OVS
OVS L2 agent
● Runs on compute nodes
● Configures the local virtual bridges: br-int, br-ethx, br-tun
● Wires ports
● Applies security group rules
● Communicates with Neutron server over remote procedure calls (RPC)

Recommended for you

Exploring Node.jS
Exploring Node.jSExploring Node.jS
Exploring Node.jS

You may have heard that Node.js as JavaScript for the server-side and you may be wondering why anyone would want that!. Or maybe you know exactly what Node.js is, but aren’t sure when or why to use it. This month Coffee@DBG comes up with “Step into the Node JS Express” to answer all your questions on Node.JS. If you are enthusiastic to know more about it and why it’s making waves in the community, join it now before the seats get filled. Coffee @ DBG is a Rendezvous of open interactive discussions in technology, where enthusiasts from different companies of Technopark have a get-together to discuss and share their knowledge over a cup of Coffee at DBG. Coffee@DBG has been the most popular tech event in Technopark happening every month on first Wednesdays which will also provide a platform for programmers to get free consultation on problems they are facing in real work. First ever talk about Node.JS in Kerala by its early adopters.

object oriented javascripttechnogeeksnode.js
Service Function Chaining in Openstack Neutron
Service Function Chaining in Openstack NeutronService Function Chaining in Openstack Neutron
Service Function Chaining in Openstack Neutron

Service Function Chaining (SFC) uses software-defined networking (SDN) capabilities to create a service chain of connected network services (such as L4-7 like firewalls, network address translation [NAT], intrusion protection) and connect them in a virtual chain. This capability can be used by network operators to set up suites or catalogs of connected services that enable the use of a single network connection for many services, with different characteristics. networking-sfc is a service plugin of Openstack neutron. The talk will go over the architecture, implementation, use-cases and latest enhancements to networking-sfc (the APIs and implementation to support service function chaining in neutron). About the speaker: Farhad Sunavala is currently a principal architect/engineer working on Network Virtualization, Cloud service, and SDN technologies at Huawei Technology USA. He has led several wireless projects in Huawei including virtual EPC, service function chaining, etc. Prior to Huawei, he worked 17 years at Cisco. Farhad received his MS in Electrical and Computer Engineering from University of New Hampshire. His expertise includes L2/L3/L4 networking, Network Virtualization, SDN, Cloud Computing, and mobile wireless networks. He holds several patents in platforms, virtualization, wireless, service-chaining and cloud computing. Farhad was a core member of networking-sfc.

openstacksdnnfv
Openshift cheat rhce_r3v1 rhce
Openshift cheat rhce_r3v1 rhceOpenshift cheat rhce_r3v1 rhce
Openshift cheat rhce_r3v1 rhce

The document provides an overview and cheat sheet for using the OpenShift command line interface. It defines what OpenShift is, lists common commands for login/authentication, managing projects and resources, building and deploying applications, and provides an example of creating a new project, adding users, building an application from source code and image, and checking the status of deployed resources.

openshift admin
OVS L2 Agent: when a VM is created
OVS L2 agent: loop events (method rpc_loop)
● OVSDB monitor has updates
● Neutron server messages
○ Security group change
○ Port update
● OVS re-started
OVS L2 agent: detect port changes
● OVSDB signals if something has changed in the host
● Agent scans all the ports in the host
● Agent keeps track of the ports it has already processed using a set named
ports
● The difference between ports and the result of the scanning enables the
agent to infer the devices added and deleted
OVS L2 agent: process port added
● Request the device details (get_devices_details_and_failed_devices)
● Provision local vlan and install proper flows
● Set up filters
● Call plugin’s update_device_up (update_device_list)

Recommended for you

Practical Chaos Engineering
Practical Chaos EngineeringPractical Chaos Engineering
Practical Chaos Engineering

Practical Chaos Engineering will show how to start running chaos experiments in your infrastructure and will try to guide your through the principles of chaos.

chaos engineeringcloudkubernetes
Elasticsearch und die Java-Welt
Elasticsearch und die Java-WeltElasticsearch und die Java-Welt
Elasticsearch und die Java-Welt

Elasticsearch is an open source search and analytics engine that is distributed, horizontally scalable, reliable, and easy to manage. The document discusses how to install and interact with Elasticsearch using various Java clients and frameworks. It covers using the standard Java client directly, the Jest HTTP client, and Spring Data Elasticsearch which provides abstractions and dynamic repositories.

springelasticsearchjava
Nikto
NiktoNikto
Nikto

This document provides an overview of several security tools including Nikto, Burp Suite, Wikto, Nmap, Metasploit, Nessus, OpenVAS, and how some of them relate to and integrate with Nikto. It describes Nikto as a web server scanner that checks for vulnerabilities. It then briefly introduces each of the other tools, their purpose, and in some cases how they can work with Nikto, such as Nikto being able to use Nmap scan results or output results to Metasploit's database.

infoiașiniktosoftware security
Exercise: OVS L2 agent
● Review OVS L2 related code
○ Agent side of the RPC API: /opt/stack/neutron/agent/rpc.py
○ Neutron server side of the RPC API: neutron/plugins/ml2/rpc.py
○ Method rpc_loop in agent:
neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py
● Boot an instance and locate OVS and Linux bridge bridges and interfaces
○ $ openstack image list
○ $ openstack server create --flavor 42 --image <image-id> --nic net-id=<private-net-id> test-vm
○ $ openstack server list
○ $ openstack port list
○ $ sudo ovs-vsctl show
○ $ sudo brctl show
Under the hood scenario: routers and DHCP
Distributed Virtual Router (DVR) in compute nodes
● Floating IPs for north /
south IPv4 routing
● East / west IPv4 routing
“VM1-1
patch-tun
br-int
eth0
QRouter-X
“VM2-1
patch-tun
br-int
eth0
QRouter-X
Router and floating ip processing
create_router, update_router,
create_floatingip,
update_floatingip
L3RouterPlugin L3NATAgent
routers_updated
routers_updated
RouterProcessingQueue
add
_process_routers_loop getsync_routers
_process_added_router
self._create_router()
ri.process()
_process_added_router
ri.process()
1
2
3
4
5

Recommended for you

Anwendungsfälle für Elasticsearch JAX 2015
Anwendungsfälle für Elasticsearch JAX 2015Anwendungsfälle für Elasticsearch JAX 2015
Anwendungsfälle für Elasticsearch JAX 2015

The document discusses various use cases for Elasticsearch including document storage, full text search, geo search, log file analysis, and analytics. It provides examples of installing Elasticsearch, indexing and retrieving documents, performing searches using query DSL, filtering and sorting results, and aggregating data. Popular users mentioned include GitHub, Stack Overflow, and Microsoft. The presentation aims to demonstrate the flexibility and power of Elasticsearch beyond just full text search.

luceneelasticsearchnosql
From Ceilometer to Telemetry: not so alarming!
From Ceilometer to Telemetry: not so alarming!From Ceilometer to Telemetry: not so alarming!
From Ceilometer to Telemetry: not so alarming!

Presentation of Ceilometer (OpenStack Telemetry) new features in OpenStack Havana and a look at the features coming in IceHouse. Joint presentation done with Julien Danjou at the OpenStack In Action 4 (Dec 5th 2013)

icehousehavanaorchestration
REST in Peace
REST in PeaceREST in Peace
REST in Peace

Slides from our talk “REST in Peace” for DrupalCamp Baltics 2015: http://drupalcampbaltics.com/event/rest-peace Speakers: - Kate Marshalkina - Konstantin Komelin Speech transcript is available here: http://komelin.com/en/articles/rest-peace-api-development-drupal

restdrupaldrupal 8
Specialist router classes
Exercise: L3 agent
● Review L3 related code:
○ L3 router plugin: neutron/services/l3_router/l3_router_plugin.py
○ L3 DB mixin classes: neutron/db/l3_db.py
■ L3_NAT_db_mixin
■ L3RpcNotifierMixin
■ L3_NAT_dbonly_mixin
○ Server notifier L3 RPC notifier: neutron/api/rpc/agentnotifiers/l3_rpc_agent_api.py
○ L3 agent: neutron/agent/l3/agent.py
■ routers_updated
■ _process_routers_loop
■ get_routers in L3PluginApi
■ _process_added_router
■ _process_updated_router
○ L3 server RPC callbacks: neutron/api/rpc/handlers/l3_rpc.py
○ Router classes example: neutron/agent/l3/router_info.py
Exercise: L3 agent
● Identify the name spaces:
○ $ openstack router list
○ $ openstack network list
○ $ sudo ip netns
○ $ sudo ip netns exec qrouter-<router-id> ip addr list
● Identify router and dhcp ports in OVS:
○ $ openstack port list
○ $ sudo ovs-vsctl show
● Identify iptables entries
○ $ sudo ip netns exec qrouter-<router-id> iptables-save | grep 172
○ $ openstack network list
○ $ openstack floating ip create <external-net-id> --port <instance-port-id>
○ $ sudo ip netns exec qrouter-<router-id> iptables-save | grep 172
○ $ sudo ip netns exec qrouter-<router-id> ip addr list
Agenda
● Neutron project overview
● Neutron API
● Core resources, extensions, plugins and service plugins
● Reference back-end implementation
● ML2 plug-in

Recommended for you

FIWARE Wednesday Webinars - Short Term History within Smart Systems
FIWARE Wednesday Webinars - Short Term History within Smart SystemsFIWARE Wednesday Webinars - Short Term History within Smart Systems
FIWARE Wednesday Webinars - Short Term History within Smart Systems

FIWARE Wednesday Webinar - Short Term History within Smart Systems (2nd April 2020) Corresponding webinar recording: https://youtu.be/fX_YAc7G4Dk This webinar will show how to utilise times series components and monitor and display trends within FIWARE applications. Chapter: Core Context Difficulty: 3 Audience: Any Technical Presenter: Jason Fox (Senior Technical Evangelist, FIWARE Foundation)

context brokercontext managementcore context management
Intro to Amazon Web Services (AWS) and Gen AI
Intro to Amazon Web Services (AWS) and Gen AIIntro to Amazon Web Services (AWS) and Gen AI
Intro to Amazon Web Services (AWS) and Gen AI

Sami provided a beginner-friendly introduction to Amazon Web Services (AWS), covering essential terms, products, and services for cloud deployment. Participants explored AWS' latest Gen AI offerings, making it accessible for those starting their cloud journey or integrating AI into coding practices.

cfmlcoldfusionboxlang
Dombivli @Call @Girls 🛴 9930687706 🛴 Aaradhaya Best High Class Mumbai Available
Dombivli @Call @Girls 🛴 9930687706 🛴 Aaradhaya Best High Class Mumbai AvailableDombivli @Call @Girls 🛴 9930687706 🛴 Aaradhaya Best High Class Mumbai Available
Dombivli @Call @Girls 🛴 9930687706 🛴 Aaradhaya Best High Class Mumbai Available

Dombivli @Call @Girls 🛴 9930687706 🛴 Aaradhaya Best High Class Mumbai Available

ML2 plug-in architecture
Neutron Server
ML2 Plugin
Type Manager Mechanism Manager
Extension Manager
GRE
TypeDriver
Arista
VLAN
TypeDriver
VXLAN
TypeDriver
Cisco
Nexus
mech_sriov
L2
Population
Linuxbridge
Open
vSwitch
macvtap
Multi-segment networks
VXLAN 123567
physnet1 VLAN 37 physnet2 VLAN 413
VM 1 VM 2 VM 3
● Created via multi-provider API extension
● Segments bridged administratively
● Ports associated with network, not specific segment
● Ports bound automatically to segment with connectivity
Plug-in inheritance hierarchy
NeutronPluginBaseV2
neutron/neutron_plugin_base_v2.py
NeutronDbPluginV2
neutron/db/db_base_plugin_v2.py
Ml2Plugin
neutron/plugins/ml2/plugin.py
Defines the core plug-in API
Abstracts the DB management for the
core resources for any core plug-in
Core plug-in reference implementation
ML2 plug-in create_network method pseudo-code
def create_network(self, context, network):
with db_api.context_manager.writer.using(context):
result = self.create_network_db(context, network)
self.type_manager.create_network_segments(context, network)
mech_context = driver_context.NetworkContext(self, context, result)
self.mechanism_manager.create_network_precommit(mech_context)
self.mechanism_manager.create_network_postcommit(mech_context)
return self._make_network_dict(result)

Recommended for you

一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理
一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理
一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理

原版一模一样【微信:741003700 】【英国牛津大学毕业证(oxon毕业证书)成绩单】【微信:741003700 】学位证,留信学历认证(真实可查,永久存档)原件一模一样纸张工艺/offer、在读证明、外壳等材料/诚信可靠,可直接看成品样本,帮您解决无法毕业带来的各种难题!外壳,原版制作,诚信可靠,可直接看成品样本。行业标杆!精益求精,诚心合作,真诚制作!多年品质 ,按需精细制作,24小时接单,全套进口原装设备。十五年致力于帮助留学生解决难题,包您满意。 本公司拥有海外各大学样板无数,能完美还原。 1:1完美还原海外各大学毕业材料上的工艺:水印,阴影底纹,钢印LOGO烫金烫银,LOGO烫金烫银复合重叠。文字图案浮雕、激光镭射、紫外荧光、温感、复印防伪等防伪工艺。材料咨询办理、认证咨询办理请加学历顾问Q/微741003700 【主营项目】 一.毕业证【q微741003700】成绩单、使馆认证、教育部认证、雅思托福成绩单、学生卡等! 二.真实使馆公证(即留学回国人员证明,不成功不收费) 三.真实教育部学历学位认证(教育部存档!教育部留服网站永久可查) 四.办理各国各大学文凭(一对一专业服务,可全程监控跟踪进度) 如果您处于以下几种情况: ◇在校期间,因各种原因未能顺利毕业……拿不到官方毕业证【q/微741003700】 ◇面对父母的压力,希望尽快拿到; ◇不清楚认证流程以及材料该如何准备; ◇回国时间很长,忘记办理; ◇回国马上就要找工作,办给用人单位看; ◇企事业单位必须要求办理的 ◇需要报考公务员、购买免税车、落转户口 ◇申请留学生创业基金 留信网认证的作用: 1:该专业认证可证明留学生真实身份 2:同时对留学生所学专业登记给予评定 3:国家专业人才认证中心颁发入库证书 4:这个认证书并且可以归档倒地方 5:凡事获得留信网入网的信息将会逐步更新到个人身份内,将在公安局网内查询个人身份证信息后,同步读取人才网入库信息 6:个人职称评审加20分 7:个人信誉贷款加10分 8:在国家人才网主办的国家网络招聘大会中纳入资料,供国家高端企业选择人才 办理英国牛津大学毕业证(oxon毕业证书)【微信:741003700 】外观非常简单,由纸质材料制成,上面印有校徽、校名、毕业生姓名、专业等信息。 办理英国牛津大学毕业证(oxon毕业证书)【微信:741003700 】格式相对统一,各专业都有相应的模板。通常包括以下部分: 校徽:象征着学校的荣誉和传承。 校名:学校英文全称 授予学位:本部分将注明获得的具体学位名称。 毕业生姓名:这是最重要的信息之一,标志着该证书是由特定人员获得的。 颁发日期:这是毕业正式生效的时间,也代表着毕业生学业的结束。 其他信息:根据不同的专业和学位,可能会有一些特定的信息或章节。 办理英国牛津大学毕业证(oxon毕业证书)【微信:741003700 】价值很高,需要妥善保管。一般来说,应放置在安全、干燥、防潮的地方,避免长时间暴露在阳光下。如需使用,最好使用复印件而不是原件,以免丢失。 综上所述,办理英国牛津大学毕业证(oxon毕业证书)【微信:741003700 】是证明身份和学历的高价值文件。外观简单庄重,格式统一,包括重要的个人信息和发布日期。对持有人来说,妥善保管是非常重要的。

英国牛津大学毕业证(oxon毕业证书)
Top 10 Tips To Get Google AdSense For Your Website
Top 10 Tips To Get Google AdSense For Your WebsiteTop 10 Tips To Get Google AdSense For Your Website
Top 10 Tips To Get Google AdSense For Your Website

Lots of bloggers are using Google AdSense now. It’s getting really popular. With AdSense, bloggers can make money by showing ads on their websites. Read this important article written by the experienced designers of the best website designing company in Delhi –

website designing company in d
Java SE 17 Study Guide for Certification - Chapter 01
Java SE 17 Study Guide for Certification - Chapter 01Java SE 17 Study Guide for Certification - Chapter 01
Java SE 17 Study Guide for Certification - Chapter 01

Java SE 17 Study Guide for Certification - Chapter 01

ML2 plug-in create_network method pseudo-code
def create_network(self, context, network):
with db_api.context_manager.writer.using(context):
result = self.create_network_db(context, network)
self.type_manager.create_network_segments(context, network)
mech_context = driver_context.NetworkContext(self, context, result)
self.mechanism_manager.create_network_precommit(mech_context)
self.mechanism_manager.create_network_postcommit(mech_context)
return self._make_network_dict(result)
Part 1:
Start a DB transaction
ML2 plug-in create_network method pseudo-code
def create_network(self, context, network):
with db_api.context_manager.writer.using(context):
result = self.create_network_db(context, network)
self.type_manager.create_network_segments(context, network)
mech_context = driver_context.NetworkContext(self, context, result)
self.mechanism_manager.create_network_precommit(mech_context)
self.mechanism_manager.create_network_postcommit(mech_context)
return self._make_network_dict(result)
Part 2:
Code that needs to be
executed inside DB
transaction. It has to be fast
fast, with no blocking calls!
ML2 plug-in create_network method pseudo-code
def create_network(self, context, network):
with db_api.context_manager.writer.using(context):
result = self.create_network_db(context, network)
self.type_manager.create_network_segments(context, network)
mech_context = driver_context.NetworkContext(self, context, result)
self.mechanism_manager.create_network_precommit(mech_context)
self.mechanism_manager.create_network_postcommit(mech_context)
return self._make_network_dict(result)
Part 3:
Set up the networking
infrastructure. Since this code
is outside the DB transaction,
the mechanism manager
post_commit can interact with
networking infrastructure. It
can execute blocking calls
ML2 plug-in create_network method pseudo-code
def create_network(self, context, network):
with db_api.context_manager.writer.using(context):
result = self.create_network_db(context, network)
self.type_manager.create_network_segments(context, network)
mech_context = driver_context.NetworkContext(self, context, result)
self.mechanism_manager.create_network_precommit(mech_context)
self.mechanism_manager.create_network_postcommit(mech_context)
return self._make_network_dict(result)
Part 4
Build the resource (network in this
example) dictionary that will be
returned to the user through the
ReST API. It has to be structured
properly to avoid generating
additional queries to the DB when
adding extensions attributes!

Recommended for you

@Call @Girls in Tiruppur 🤷‍♂️ XXXXXXXX 🤷‍♂️ Tanisha Sharma Best High Class ...
 @Call @Girls in Tiruppur 🤷‍♂️  XXXXXXXX 🤷‍♂️ Tanisha Sharma Best High Class ... @Call @Girls in Tiruppur 🤷‍♂️  XXXXXXXX 🤷‍♂️ Tanisha Sharma Best High Class ...
@Call @Girls in Tiruppur 🤷‍♂️ XXXXXXXX 🤷‍♂️ Tanisha Sharma Best High Class ...

For Ad Post Contact :- adityaroy0215@gmail.com

Shivam Pandit working on Php Web Developer.
Shivam Pandit working on Php Web Developer.Shivam Pandit working on Php Web Developer.
Shivam Pandit working on Php Web Developer.

Shivam Pandit Php Web Dveloper

phpmysqlsql
ENISA Threat Landscape 2023 documentation
ENISA Threat Landscape 2023 documentationENISA Threat Landscape 2023 documentation
ENISA Threat Landscape 2023 documentation

ENISA Threat Landscape 2023

ML2 plug-in create_network: inside DB transaction
def create_network(self, context, network):
with db_api.context_manager.writer.using(context):
result = self.create_network_db(context, network)
self.type_manager.create_network_segments(context, network)
mech_context = driver_context.NetworkContext(self, context, result)
self.mechanism_manager.create_network_precommit(mech_context)
self.mechanism_manager.create_network_postcommit(mech_context)
return self._make_network_dict(result)
ML2 plug-in create_network: inside DB transaction
def create_network(self, context, network):
with db_api.context_manager.writer.using(context):
result = self.create_network_db(context, network)
self.type_manager.create_network_segments(context, network)
mech_context = driver_context.NetworkContext(self, context, result)
self.mechanism_manager.create_network_precommit(mech_context)
self.mechanism_manager.create_network_postcommit(mech_context)
return self._make_network_dict(result)
Call the DB plug-in to create
the row in the networks table.
It can be called directly like
here, or as super, since the
ML2 plugin inherits from
NeutronDbPluginV2
ML2 plug-in create_network: inside DB transaction
def create_network(self, context, network):
with db_api.context_manager.writer.using(context):
result = self.create_network_db(context, network)
self.type_manager.create_network_segments(context, network)
mech_context = driver_context.NetworkContext(self, context, result)
self.mechanism_manager.create_network_precommit(mech_context)
self.mechanism_manager.create_network_postcommit(mech_context)
return self._make_network_dict(result)
Call the type driver
(through the type
manager) to reserve the
segments
ML2 plug-in create_network: inside DB transaction
def create_network(self, context, network):
with db_api.context_manager.writer.using(context):
result = self.create_network_db(context, network)
self.type_manager.create_network_segments(context, network)
mech_context = driver_context.NetworkContext(self, context, result)
self.mechanism_manager.create_network_precommit(mech_context)
self.mechanism_manager.create_network_postcommit(mech_context)
return self._make_network_dict(result)
Create the mechanism
context, that stores the
previous and the current
state of the resource. It is
passed to the mechanism
driver precommit and
postcommit

Recommended for you

bangalore @Call @Girls 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 WhatsApp Number for Real Meet
bangalore @Call @Girls 🐱‍🐉  XXXXXXXXXX 🐱‍🐉 WhatsApp Number for Real Meetbangalore @Call @Girls 🐱‍🐉  XXXXXXXXXX 🐱‍🐉 WhatsApp Number for Real Meet
bangalore @Call @Girls 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 WhatsApp Number for Real Meet

For Ad Post Contact -bangaloreforrents@gmail.com

Bhiwandi @Call @Girls Whatsapp 000000000 With Best And No 1
Bhiwandi @Call @Girls Whatsapp 000000000 With Best And No 1Bhiwandi @Call @Girls Whatsapp 000000000 With Best And No 1
Bhiwandi @Call @Girls Whatsapp 000000000 With Best And No 1

Bhiwandi @Call @Girls Whatsapp 000000000 With Best And No 1 For Ad post Contact : adityaroy0215@gmail.com

Chennai @Call @Girls 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 Genuine WhatsApp Number for Real Meet
Chennai @Call @Girls 🐱‍🐉  XXXXXXXXXX 🐱‍🐉 Genuine WhatsApp Number for Real MeetChennai @Call @Girls 🐱‍🐉  XXXXXXXXXX 🐱‍🐉 Genuine WhatsApp Number for Real Meet
Chennai @Call @Girls 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 Genuine WhatsApp Number for Real Meet

Contact For Rent :-contact4rentt@gmail.com

ML2 plug-in create_network: inside DB transaction
def create_network(self, context, network):
with db_api.context_manager.writer.using(context):
result = self.create_network_db(context, network)
self.type_manager.create_network_segments(context, network)
mech_context = driver_context.NetworkContext(self, context, result)
self.mechanism_manager.create_network_precommit(mech_context)
self.mechanism_manager.create_network_postcommit(mech_context)
return self._make_network_dict(result)
Call the mechanism driver
precommit to store in the
DB any state that needs to
be remembered
ML2 plug-in create_port method pseudo-code
def create_port(self, context, port):
with db_api.context_manager.writer.using(context):
result = self.create_port_db(context, port)
mech_context = driver_context.PortContext(self, context, result)
self.mechanism_manager.create_port_precommit(mech_context)
self.mechanism_manager.create_port_postcommit(mech_context)
bound_context = self._bind_port_if_needed(mech_context)
return bound_context.current
Port binding as a black box
Port binding
Port attributes:
● binding:host_id
● binding:profile
● binding:vnic_type
● Other attributes
Port network segments,
each containing:
● network_type
● physical_network
● segmentation_id
Port attributes:
● binding:vif_type
● binding:vif_details
Port binding levels, each
containing:
● driver
● segment
Port binding
● Plug-in calls bind_port() on registered
mechanism drivers in order listed in config,
until one succeeds or all have been tried
● Driver determines if it can bind based on
○ context.network.network_segments
○ context.host
○ context.host_agents()
● Binding requires live L2 agent on port’s host
that:
○ Supports a network type of a segment of the
port’s network
○ Has a mapping for that segment’s
physical_network if applicable
● If bind possible, driver calls context.set_binding().
Otherwise, port’s binding:vif_type set to
VIF_TYPE_BINDING_FAILED
def PortContext(object):
@abstractproperty
def current(self):
pass
@abstractproperty
def network(self):
pass
@abstractmethod
def set_binding(self, segment_id, vif_type,
vif_details, status):
pass

Recommended for you

Development of Chatbot Using AI\ML Technologies
Development of Chatbot Using AI\ML TechnologiesDevelopment of Chatbot Using AI\ML Technologies
Development of Chatbot Using AI\ML Technologies

A captivating AI chatbot PowerPoint presentation is made with a striking backdrop in order to attract a wider audience. Select this template featuring several AI chatbot visuals to boost audience engagement and spontaneity. With the aid of this multi-colored template, you may make a compelling presentation and get extra bonuses. To easily elucidate your ideas, choose a typeface with vibrant colors. You can include your data regarding utilizing the chatbot methodology to the remaining half of the template.

chatbot ppt
@Call @Girls in Ahmedabad 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 Best High Class Ahmedabad Ava...
 @Call @Girls in Ahmedabad 🐱‍🐉  XXXXXXXXXX 🐱‍🐉  Best High Class Ahmedabad Ava... @Call @Girls in Ahmedabad 🐱‍🐉  XXXXXXXXXX 🐱‍🐉  Best High Class Ahmedabad Ava...
@Call @Girls in Ahmedabad 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 Best High Class Ahmedabad Ava...

For Ad Post Contact :- adityaroy0215@gmail.com

@Call @Girls in Saharanpur 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 Tanisha Sharma Best High Clas...
 @Call @Girls in Saharanpur 🐱‍🐉  XXXXXXXXXX 🐱‍🐉 Tanisha Sharma Best High Clas... @Call @Girls in Saharanpur 🐱‍🐉  XXXXXXXXXX 🐱‍🐉 Tanisha Sharma Best High Clas...
@Call @Girls in Saharanpur 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 Tanisha Sharma Best High Clas...

For Ad Post Contact :- adityaroy0215@gmail.com

Port postcommit and binding in little a more detail
try:
self.mechanism_manager.create_port_postcommit(mech_context)
except ml2_exc.MechanismDriverError:
with excutils.save_and_reraise_exception():
LOG.error(_LE("mechanism_manager.create_port_postcommit "
"failed, deleting port '%s'"), result['id'])
self.delete_port(context, result['id'], l3_port_check=False)
try:
bound_context = self._bind_port_if_needed(mech_context)
except ml2_exc.MechanismDriverError:
with excutils.save_and_reraise_exception():
LOG.error(_LE("_bind_port_if_needed "
"failed, deleting port '%s'"), result['id'])
self.delete_port(context, result['id'], l3_port_check=False)
OVS L2 Agent: when a VM is created
4
Exercise: ML2 plugin
● ML2 related code:
○ Drivers and context API definitions: neutron/plugins/ml2/driver_api.py
○ Network, subnet and port contexts: neutron/plugins/ml2/driver_context.py
○ Drivers: neutron/plugins/ml2/drivers
○ Drivers managers: neutron/plugins/ml2/managers.py
○ Create port in ML2 plugin: neutron/plugins/ml2/plugin.com
● Port binding related code:
○ get_devices_details_list_and_failed_devices in class RpcCallbacks in
neutron/plugins/ml2.rpc.py
○ get_bound_port_context in ML2 plugin
■ Add a LOG.debug statement before returning the port context. Log the resulting binding
vif_type
■ Re-start the server
■ Create a VM

More Related Content

What's hot

OpenStack networking - Neutron deep dive with PLUMgrid
OpenStack networking - Neutron deep dive with PLUMgridOpenStack networking - Neutron deep dive with PLUMgrid
OpenStack networking - Neutron deep dive with PLUMgrid
Kamesh Pemmaraju
 
How to write a Neutron Plugin - if you really need to
How to write a Neutron Plugin - if you really need toHow to write a Neutron Plugin - if you really need to
How to write a Neutron Plugin - if you really need to
salv_orlando
 
OpenStack Neutron Liberty Updates
OpenStack Neutron Liberty UpdatesOpenStack Neutron Liberty Updates
OpenStack Neutron Liberty Updates
mestery
 
OpenStack Neutron Havana Overview - Oct 2013
OpenStack Neutron Havana Overview - Oct 2013OpenStack Neutron Havana Overview - Oct 2013
OpenStack Neutron Havana Overview - Oct 2013
Edgar Magana
 
Networking in OpenStack for non-networking people: Neutron, Open vSwitch and ...
Networking in OpenStack for non-networking people: Neutron, Open vSwitch and ...Networking in OpenStack for non-networking people: Neutron, Open vSwitch and ...
Networking in OpenStack for non-networking people: Neutron, Open vSwitch and ...
Dave Neary
 
Introduction to Software Defined Networking and OpenStack Neutron
Introduction to Software Defined Networking and OpenStack NeutronIntroduction to Software Defined Networking and OpenStack Neutron
Introduction to Software Defined Networking and OpenStack Neutron
Sana Khan
 
Openstack Neutron and SDN
Openstack Neutron and SDNOpenstack Neutron and SDN
Openstack Neutron and SDN
inakipascual
 
OpenStack networking (Neutron)
OpenStack networking (Neutron) OpenStack networking (Neutron)
OpenStack networking (Neutron)
CREATE-NET
 
Neutron behind the scenes
Neutron   behind the scenesNeutron   behind the scenes
Neutron behind the scenes
inbroker
 
OpenStack Neutron Advanced Services by Akanda
OpenStack Neutron Advanced Services by AkandaOpenStack Neutron Advanced Services by Akanda
OpenStack Neutron Advanced Services by Akanda
Sean Roberts
 
Scaling OpenStack Neutron in Heterogeneous Environments
Scaling OpenStack Neutron in Heterogeneous EnvironmentsScaling OpenStack Neutron in Heterogeneous Environments
Scaling OpenStack Neutron in Heterogeneous Environments
Martin Klein
 
Open Source Backends for OpenStack Neutron
Open Source Backends for OpenStack NeutronOpen Source Backends for OpenStack Neutron
Open Source Backends for OpenStack Neutron
mestery
 
ONUG Tutorial: Bridges and Tunnels Drive Through OpenStack Networking
ONUG Tutorial: Bridges and Tunnels Drive Through OpenStack NetworkingONUG Tutorial: Bridges and Tunnels Drive Through OpenStack Networking
ONUG Tutorial: Bridges and Tunnels Drive Through OpenStack Networking
markmcclain
 
OpenStack Neutron's Distributed Virtual Router
OpenStack Neutron's Distributed Virtual RouterOpenStack Neutron's Distributed Virtual Router
OpenStack Neutron's Distributed Virtual Router
carlbaldwin
 
OpenStack Neutron behind the Scenes
OpenStack Neutron behind the ScenesOpenStack Neutron behind the Scenes
OpenStack Neutron behind the Scenes
Anil Bidari ( CEO , Cloud Enabled)
 
2014 OpenStack Summit - Neutron OVS to LinuxBridge Migration
2014 OpenStack Summit - Neutron OVS to LinuxBridge Migration2014 OpenStack Summit - Neutron OVS to LinuxBridge Migration
2014 OpenStack Summit - Neutron OVS to LinuxBridge Migration
James Denton
 
OVN: Scaleable Virtual Networking for Open vSwitch
OVN: Scaleable Virtual Networking for Open vSwitchOVN: Scaleable Virtual Networking for Open vSwitch
OVN: Scaleable Virtual Networking for Open vSwitch
mestery
 
OpenStack Networking and Automation
OpenStack Networking and AutomationOpenStack Networking and Automation
OpenStack Networking and Automation
Adam Johnson
 
Openstack Basic with Neutron
Openstack Basic with NeutronOpenstack Basic with Neutron
Openstack Basic with Neutron
KwonSun Bae
 
L2 and L3 agent restructure
L2 and L3 agent restructureL2 and L3 agent restructure
L2 and L3 agent restructure
Rossella Sblendido
 

What's hot (20)

OpenStack networking - Neutron deep dive with PLUMgrid
OpenStack networking - Neutron deep dive with PLUMgridOpenStack networking - Neutron deep dive with PLUMgrid
OpenStack networking - Neutron deep dive with PLUMgrid
 
How to write a Neutron Plugin - if you really need to
How to write a Neutron Plugin - if you really need toHow to write a Neutron Plugin - if you really need to
How to write a Neutron Plugin - if you really need to
 
OpenStack Neutron Liberty Updates
OpenStack Neutron Liberty UpdatesOpenStack Neutron Liberty Updates
OpenStack Neutron Liberty Updates
 
OpenStack Neutron Havana Overview - Oct 2013
OpenStack Neutron Havana Overview - Oct 2013OpenStack Neutron Havana Overview - Oct 2013
OpenStack Neutron Havana Overview - Oct 2013
 
Networking in OpenStack for non-networking people: Neutron, Open vSwitch and ...
Networking in OpenStack for non-networking people: Neutron, Open vSwitch and ...Networking in OpenStack for non-networking people: Neutron, Open vSwitch and ...
Networking in OpenStack for non-networking people: Neutron, Open vSwitch and ...
 
Introduction to Software Defined Networking and OpenStack Neutron
Introduction to Software Defined Networking and OpenStack NeutronIntroduction to Software Defined Networking and OpenStack Neutron
Introduction to Software Defined Networking and OpenStack Neutron
 
Openstack Neutron and SDN
Openstack Neutron and SDNOpenstack Neutron and SDN
Openstack Neutron and SDN
 
OpenStack networking (Neutron)
OpenStack networking (Neutron) OpenStack networking (Neutron)
OpenStack networking (Neutron)
 
Neutron behind the scenes
Neutron   behind the scenesNeutron   behind the scenes
Neutron behind the scenes
 
OpenStack Neutron Advanced Services by Akanda
OpenStack Neutron Advanced Services by AkandaOpenStack Neutron Advanced Services by Akanda
OpenStack Neutron Advanced Services by Akanda
 
Scaling OpenStack Neutron in Heterogeneous Environments
Scaling OpenStack Neutron in Heterogeneous EnvironmentsScaling OpenStack Neutron in Heterogeneous Environments
Scaling OpenStack Neutron in Heterogeneous Environments
 
Open Source Backends for OpenStack Neutron
Open Source Backends for OpenStack NeutronOpen Source Backends for OpenStack Neutron
Open Source Backends for OpenStack Neutron
 
ONUG Tutorial: Bridges and Tunnels Drive Through OpenStack Networking
ONUG Tutorial: Bridges and Tunnels Drive Through OpenStack NetworkingONUG Tutorial: Bridges and Tunnels Drive Through OpenStack Networking
ONUG Tutorial: Bridges and Tunnels Drive Through OpenStack Networking
 
OpenStack Neutron's Distributed Virtual Router
OpenStack Neutron's Distributed Virtual RouterOpenStack Neutron's Distributed Virtual Router
OpenStack Neutron's Distributed Virtual Router
 
OpenStack Neutron behind the Scenes
OpenStack Neutron behind the ScenesOpenStack Neutron behind the Scenes
OpenStack Neutron behind the Scenes
 
2014 OpenStack Summit - Neutron OVS to LinuxBridge Migration
2014 OpenStack Summit - Neutron OVS to LinuxBridge Migration2014 OpenStack Summit - Neutron OVS to LinuxBridge Migration
2014 OpenStack Summit - Neutron OVS to LinuxBridge Migration
 
OVN: Scaleable Virtual Networking for Open vSwitch
OVN: Scaleable Virtual Networking for Open vSwitchOVN: Scaleable Virtual Networking for Open vSwitch
OVN: Scaleable Virtual Networking for Open vSwitch
 
OpenStack Networking and Automation
OpenStack Networking and AutomationOpenStack Networking and Automation
OpenStack Networking and Automation
 
Openstack Basic with Neutron
Openstack Basic with NeutronOpenstack Basic with Neutron
Openstack Basic with Neutron
 
L2 and L3 agent restructure
L2 and L3 agent restructureL2 and L3 agent restructure
L2 and L3 agent restructure
 

Similar to OpenStack Neutron new developers on boarding

Neutron on boarding room
Neutron on boarding roomNeutron on boarding room
Neutron on boarding room
Sławomir Kapłoński
 
how to use openstack api
how to use openstack apihow to use openstack api
how to use openstack api
Liang Bo
 
Nova: Openstack Compute-as-a-service
Nova: Openstack Compute-as-a-serviceNova: Openstack Compute-as-a-service
Nova: Openstack Compute-as-a-service
Pratik Bandarkar
 
OpenStack API's and WSGI
OpenStack API's and WSGIOpenStack API's and WSGI
OpenStack API's and WSGI
Mike Pittaro
 
OpenStack Swift的性能调优
OpenStack Swift的性能调优OpenStack Swift的性能调优
OpenStack Swift的性能调优
Hardway Hou
 
OpenStack APIs: Present and Future (Beta Talk)
OpenStack APIs: Present and Future (Beta Talk)OpenStack APIs: Present and Future (Beta Talk)
OpenStack APIs: Present and Future (Beta Talk)
Wade Minter
 
June Boston openStack Summit: Preparing quantum for the data center
June Boston openStack Summit: Preparing quantum for the data centerJune Boston openStack Summit: Preparing quantum for the data center
June Boston openStack Summit: Preparing quantum for the data center
Kamesh Pemmaraju
 
OpenStack: Security Beyond Firewalls
OpenStack: Security Beyond FirewallsOpenStack: Security Beyond Firewalls
OpenStack: Security Beyond Firewalls
Giuseppe Paterno'
 
Openstack: security beyond firewalls
Openstack: security beyond firewallsOpenstack: security beyond firewalls
Openstack: security beyond firewalls
GARL
 
LinuxCon 2013 Steven Dake on Using Heat for autoscaling OpenShift on Openstack
LinuxCon 2013 Steven Dake on Using Heat for autoscaling OpenShift on OpenstackLinuxCon 2013 Steven Dake on Using Heat for autoscaling OpenShift on Openstack
LinuxCon 2013 Steven Dake on Using Heat for autoscaling OpenShift on Openstack
OpenShift Origin
 
Exploring Node.jS
Exploring Node.jSExploring Node.jS
Exploring Node.jS
Deepu S Nath
 
Service Function Chaining in Openstack Neutron
Service Function Chaining in Openstack NeutronService Function Chaining in Openstack Neutron
Service Function Chaining in Openstack Neutron
Michelle Holley
 
Openshift cheat rhce_r3v1 rhce
Openshift cheat rhce_r3v1 rhceOpenshift cheat rhce_r3v1 rhce
Openshift cheat rhce_r3v1 rhce
Darnette A
 
Practical Chaos Engineering
Practical Chaos EngineeringPractical Chaos Engineering
Practical Chaos Engineering
SIGHUP
 
Elasticsearch und die Java-Welt
Elasticsearch und die Java-WeltElasticsearch und die Java-Welt
Elasticsearch und die Java-Welt
Florian Hopf
 
Nikto
NiktoNikto
Anwendungsfälle für Elasticsearch JAX 2015
Anwendungsfälle für Elasticsearch JAX 2015Anwendungsfälle für Elasticsearch JAX 2015
Anwendungsfälle für Elasticsearch JAX 2015
Florian Hopf
 
From Ceilometer to Telemetry: not so alarming!
From Ceilometer to Telemetry: not so alarming!From Ceilometer to Telemetry: not so alarming!
From Ceilometer to Telemetry: not so alarming!
Nicolas (Nick) Barcet
 
REST in Peace
REST in PeaceREST in Peace
REST in Peace
Kate Marshalkina
 
FIWARE Wednesday Webinars - Short Term History within Smart Systems
FIWARE Wednesday Webinars - Short Term History within Smart SystemsFIWARE Wednesday Webinars - Short Term History within Smart Systems
FIWARE Wednesday Webinars - Short Term History within Smart Systems
FIWARE
 

Similar to OpenStack Neutron new developers on boarding (20)

Neutron on boarding room
Neutron on boarding roomNeutron on boarding room
Neutron on boarding room
 
how to use openstack api
how to use openstack apihow to use openstack api
how to use openstack api
 
Nova: Openstack Compute-as-a-service
Nova: Openstack Compute-as-a-serviceNova: Openstack Compute-as-a-service
Nova: Openstack Compute-as-a-service
 
OpenStack API's and WSGI
OpenStack API's and WSGIOpenStack API's and WSGI
OpenStack API's and WSGI
 
OpenStack Swift的性能调优
OpenStack Swift的性能调优OpenStack Swift的性能调优
OpenStack Swift的性能调优
 
OpenStack APIs: Present and Future (Beta Talk)
OpenStack APIs: Present and Future (Beta Talk)OpenStack APIs: Present and Future (Beta Talk)
OpenStack APIs: Present and Future (Beta Talk)
 
June Boston openStack Summit: Preparing quantum for the data center
June Boston openStack Summit: Preparing quantum for the data centerJune Boston openStack Summit: Preparing quantum for the data center
June Boston openStack Summit: Preparing quantum for the data center
 
OpenStack: Security Beyond Firewalls
OpenStack: Security Beyond FirewallsOpenStack: Security Beyond Firewalls
OpenStack: Security Beyond Firewalls
 
Openstack: security beyond firewalls
Openstack: security beyond firewallsOpenstack: security beyond firewalls
Openstack: security beyond firewalls
 
LinuxCon 2013 Steven Dake on Using Heat for autoscaling OpenShift on Openstack
LinuxCon 2013 Steven Dake on Using Heat for autoscaling OpenShift on OpenstackLinuxCon 2013 Steven Dake on Using Heat for autoscaling OpenShift on Openstack
LinuxCon 2013 Steven Dake on Using Heat for autoscaling OpenShift on Openstack
 
Exploring Node.jS
Exploring Node.jSExploring Node.jS
Exploring Node.jS
 
Service Function Chaining in Openstack Neutron
Service Function Chaining in Openstack NeutronService Function Chaining in Openstack Neutron
Service Function Chaining in Openstack Neutron
 
Openshift cheat rhce_r3v1 rhce
Openshift cheat rhce_r3v1 rhceOpenshift cheat rhce_r3v1 rhce
Openshift cheat rhce_r3v1 rhce
 
Practical Chaos Engineering
Practical Chaos EngineeringPractical Chaos Engineering
Practical Chaos Engineering
 
Elasticsearch und die Java-Welt
Elasticsearch und die Java-WeltElasticsearch und die Java-Welt
Elasticsearch und die Java-Welt
 
Nikto
NiktoNikto
Nikto
 
Anwendungsfälle für Elasticsearch JAX 2015
Anwendungsfälle für Elasticsearch JAX 2015Anwendungsfälle für Elasticsearch JAX 2015
Anwendungsfälle für Elasticsearch JAX 2015
 
From Ceilometer to Telemetry: not so alarming!
From Ceilometer to Telemetry: not so alarming!From Ceilometer to Telemetry: not so alarming!
From Ceilometer to Telemetry: not so alarming!
 
REST in Peace
REST in PeaceREST in Peace
REST in Peace
 
FIWARE Wednesday Webinars - Short Term History within Smart Systems
FIWARE Wednesday Webinars - Short Term History within Smart SystemsFIWARE Wednesday Webinars - Short Term History within Smart Systems
FIWARE Wednesday Webinars - Short Term History within Smart Systems
 

Recently uploaded

Intro to Amazon Web Services (AWS) and Gen AI
Intro to Amazon Web Services (AWS) and Gen AIIntro to Amazon Web Services (AWS) and Gen AI
Intro to Amazon Web Services (AWS) and Gen AI
Ortus Solutions, Corp
 
Dombivli @Call @Girls 🛴 9930687706 🛴 Aaradhaya Best High Class Mumbai Available
Dombivli @Call @Girls 🛴 9930687706 🛴 Aaradhaya Best High Class Mumbai AvailableDombivli @Call @Girls 🛴 9930687706 🛴 Aaradhaya Best High Class Mumbai Available
Dombivli @Call @Girls 🛴 9930687706 🛴 Aaradhaya Best High Class Mumbai Available
cristine510
 
一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理
一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理
一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理
avufu
 
Top 10 Tips To Get Google AdSense For Your Website
Top 10 Tips To Get Google AdSense For Your WebsiteTop 10 Tips To Get Google AdSense For Your Website
Top 10 Tips To Get Google AdSense For Your Website
e-Definers Technology
 
Java SE 17 Study Guide for Certification - Chapter 01
Java SE 17 Study Guide for Certification - Chapter 01Java SE 17 Study Guide for Certification - Chapter 01
Java SE 17 Study Guide for Certification - Chapter 01
williamrobertherman
 
@Call @Girls in Tiruppur 🤷‍♂️ XXXXXXXX 🤷‍♂️ Tanisha Sharma Best High Class ...
 @Call @Girls in Tiruppur 🤷‍♂️  XXXXXXXX 🤷‍♂️ Tanisha Sharma Best High Class ... @Call @Girls in Tiruppur 🤷‍♂️  XXXXXXXX 🤷‍♂️ Tanisha Sharma Best High Class ...
@Call @Girls in Tiruppur 🤷‍♂️ XXXXXXXX 🤷‍♂️ Tanisha Sharma Best High Class ...
Mona Rathore
 
Shivam Pandit working on Php Web Developer.
Shivam Pandit working on Php Web Developer.Shivam Pandit working on Php Web Developer.
Shivam Pandit working on Php Web Developer.
shivamt017
 
ENISA Threat Landscape 2023 documentation
ENISA Threat Landscape 2023 documentationENISA Threat Landscape 2023 documentation
ENISA Threat Landscape 2023 documentation
sofiafernandezon
 
bangalore @Call @Girls 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 WhatsApp Number for Real Meet
bangalore @Call @Girls 🐱‍🐉  XXXXXXXXXX 🐱‍🐉 WhatsApp Number for Real Meetbangalore @Call @Girls 🐱‍🐉  XXXXXXXXXX 🐱‍🐉 WhatsApp Number for Real Meet
bangalore @Call @Girls 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 WhatsApp Number for Real Meet
rajesvigrag
 
Bhiwandi @Call @Girls Whatsapp 000000000 With Best And No 1
Bhiwandi @Call @Girls Whatsapp 000000000 With Best And No 1Bhiwandi @Call @Girls Whatsapp 000000000 With Best And No 1
Bhiwandi @Call @Girls Whatsapp 000000000 With Best And No 1
arvindkumarji156
 
Chennai @Call @Girls 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 Genuine WhatsApp Number for Real Meet
Chennai @Call @Girls 🐱‍🐉  XXXXXXXXXX 🐱‍🐉 Genuine WhatsApp Number for Real MeetChennai @Call @Girls 🐱‍🐉  XXXXXXXXXX 🐱‍🐉 Genuine WhatsApp Number for Real Meet
Chennai @Call @Girls 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 Genuine WhatsApp Number for Real Meet
lovelykumarilk789
 
Development of Chatbot Using AI\ML Technologies
Development of Chatbot Using AI\ML TechnologiesDevelopment of Chatbot Using AI\ML Technologies
Development of Chatbot Using AI\ML Technologies
MaisnamLuwangPibarel
 
@Call @Girls in Ahmedabad 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 Best High Class Ahmedabad Ava...
 @Call @Girls in Ahmedabad 🐱‍🐉  XXXXXXXXXX 🐱‍🐉  Best High Class Ahmedabad Ava... @Call @Girls in Ahmedabad 🐱‍🐉  XXXXXXXXXX 🐱‍🐉  Best High Class Ahmedabad Ava...
@Call @Girls in Ahmedabad 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 Best High Class Ahmedabad Ava...
DiyaSharma6551
 
@Call @Girls in Saharanpur 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 Tanisha Sharma Best High Clas...
 @Call @Girls in Saharanpur 🐱‍🐉  XXXXXXXXXX 🐱‍🐉 Tanisha Sharma Best High Clas... @Call @Girls in Saharanpur 🐱‍🐉  XXXXXXXXXX 🐱‍🐉 Tanisha Sharma Best High Clas...
@Call @Girls in Saharanpur 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 Tanisha Sharma Best High Clas...
AlinaDevecerski
 
@Call @Girls in Kolkata 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 Best High Class Kolkata Avaulable
 @Call @Girls in Kolkata 🐱‍🐉  XXXXXXXXXX 🐱‍🐉  Best High Class Kolkata Avaulable @Call @Girls in Kolkata 🐱‍🐉  XXXXXXXXXX 🐱‍🐉  Best High Class Kolkata Avaulable
@Call @Girls in Kolkata 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 Best High Class Kolkata Avaulable
DiyaSharma6551
 
@Call @Girls in Surat 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 Best High Class Surat Avaulable
 @Call @Girls in Surat 🐱‍🐉  XXXXXXXXXX 🐱‍🐉  Best High Class Surat Avaulable @Call @Girls in Surat 🐱‍🐉  XXXXXXXXXX 🐱‍🐉  Best High Class Surat Avaulable
@Call @Girls in Surat 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 Best High Class Surat Avaulable
DiyaSharma6551
 
AI Chatbot Development – A Comprehensive Guide  .pdf
AI Chatbot Development – A Comprehensive Guide  .pdfAI Chatbot Development – A Comprehensive Guide  .pdf
AI Chatbot Development – A Comprehensive Guide  .pdf
ayushiqss
 
Migrate your Infrastructure to the AWS Cloud
Migrate your Infrastructure to the AWS CloudMigrate your Infrastructure to the AWS Cloud
Migrate your Infrastructure to the AWS Cloud
Ortus Solutions, Corp
 
Software development... for all? (keynote at ICSOFT'2024)
Software development... for all? (keynote at ICSOFT'2024)Software development... for all? (keynote at ICSOFT'2024)
Software development... for all? (keynote at ICSOFT'2024)
miso_uam
 
@Call @Girls in Tirunelveli 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 Tanisha Sharma Best High Cla...
 @Call @Girls in Tirunelveli 🐱‍🐉  XXXXXXXXXX 🐱‍🐉 Tanisha Sharma Best High Cla... @Call @Girls in Tirunelveli 🐱‍🐉  XXXXXXXXXX 🐱‍🐉 Tanisha Sharma Best High Cla...
@Call @Girls in Tirunelveli 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 Tanisha Sharma Best High Cla...
JoyaBansal
 

Recently uploaded (20)

Intro to Amazon Web Services (AWS) and Gen AI
Intro to Amazon Web Services (AWS) and Gen AIIntro to Amazon Web Services (AWS) and Gen AI
Intro to Amazon Web Services (AWS) and Gen AI
 
Dombivli @Call @Girls 🛴 9930687706 🛴 Aaradhaya Best High Class Mumbai Available
Dombivli @Call @Girls 🛴 9930687706 🛴 Aaradhaya Best High Class Mumbai AvailableDombivli @Call @Girls 🛴 9930687706 🛴 Aaradhaya Best High Class Mumbai Available
Dombivli @Call @Girls 🛴 9930687706 🛴 Aaradhaya Best High Class Mumbai Available
 
一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理
一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理
一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理
 
Top 10 Tips To Get Google AdSense For Your Website
Top 10 Tips To Get Google AdSense For Your WebsiteTop 10 Tips To Get Google AdSense For Your Website
Top 10 Tips To Get Google AdSense For Your Website
 
Java SE 17 Study Guide for Certification - Chapter 01
Java SE 17 Study Guide for Certification - Chapter 01Java SE 17 Study Guide for Certification - Chapter 01
Java SE 17 Study Guide for Certification - Chapter 01
 
@Call @Girls in Tiruppur 🤷‍♂️ XXXXXXXX 🤷‍♂️ Tanisha Sharma Best High Class ...
 @Call @Girls in Tiruppur 🤷‍♂️  XXXXXXXX 🤷‍♂️ Tanisha Sharma Best High Class ... @Call @Girls in Tiruppur 🤷‍♂️  XXXXXXXX 🤷‍♂️ Tanisha Sharma Best High Class ...
@Call @Girls in Tiruppur 🤷‍♂️ XXXXXXXX 🤷‍♂️ Tanisha Sharma Best High Class ...
 
Shivam Pandit working on Php Web Developer.
Shivam Pandit working on Php Web Developer.Shivam Pandit working on Php Web Developer.
Shivam Pandit working on Php Web Developer.
 
ENISA Threat Landscape 2023 documentation
ENISA Threat Landscape 2023 documentationENISA Threat Landscape 2023 documentation
ENISA Threat Landscape 2023 documentation
 
bangalore @Call @Girls 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 WhatsApp Number for Real Meet
bangalore @Call @Girls 🐱‍🐉  XXXXXXXXXX 🐱‍🐉 WhatsApp Number for Real Meetbangalore @Call @Girls 🐱‍🐉  XXXXXXXXXX 🐱‍🐉 WhatsApp Number for Real Meet
bangalore @Call @Girls 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 WhatsApp Number for Real Meet
 
Bhiwandi @Call @Girls Whatsapp 000000000 With Best And No 1
Bhiwandi @Call @Girls Whatsapp 000000000 With Best And No 1Bhiwandi @Call @Girls Whatsapp 000000000 With Best And No 1
Bhiwandi @Call @Girls Whatsapp 000000000 With Best And No 1
 
Chennai @Call @Girls 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 Genuine WhatsApp Number for Real Meet
Chennai @Call @Girls 🐱‍🐉  XXXXXXXXXX 🐱‍🐉 Genuine WhatsApp Number for Real MeetChennai @Call @Girls 🐱‍🐉  XXXXXXXXXX 🐱‍🐉 Genuine WhatsApp Number for Real Meet
Chennai @Call @Girls 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 Genuine WhatsApp Number for Real Meet
 
Development of Chatbot Using AI\ML Technologies
Development of Chatbot Using AI\ML TechnologiesDevelopment of Chatbot Using AI\ML Technologies
Development of Chatbot Using AI\ML Technologies
 
@Call @Girls in Ahmedabad 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 Best High Class Ahmedabad Ava...
 @Call @Girls in Ahmedabad 🐱‍🐉  XXXXXXXXXX 🐱‍🐉  Best High Class Ahmedabad Ava... @Call @Girls in Ahmedabad 🐱‍🐉  XXXXXXXXXX 🐱‍🐉  Best High Class Ahmedabad Ava...
@Call @Girls in Ahmedabad 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 Best High Class Ahmedabad Ava...
 
@Call @Girls in Saharanpur 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 Tanisha Sharma Best High Clas...
 @Call @Girls in Saharanpur 🐱‍🐉  XXXXXXXXXX 🐱‍🐉 Tanisha Sharma Best High Clas... @Call @Girls in Saharanpur 🐱‍🐉  XXXXXXXXXX 🐱‍🐉 Tanisha Sharma Best High Clas...
@Call @Girls in Saharanpur 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 Tanisha Sharma Best High Clas...
 
@Call @Girls in Kolkata 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 Best High Class Kolkata Avaulable
 @Call @Girls in Kolkata 🐱‍🐉  XXXXXXXXXX 🐱‍🐉  Best High Class Kolkata Avaulable @Call @Girls in Kolkata 🐱‍🐉  XXXXXXXXXX 🐱‍🐉  Best High Class Kolkata Avaulable
@Call @Girls in Kolkata 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 Best High Class Kolkata Avaulable
 
@Call @Girls in Surat 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 Best High Class Surat Avaulable
 @Call @Girls in Surat 🐱‍🐉  XXXXXXXXXX 🐱‍🐉  Best High Class Surat Avaulable @Call @Girls in Surat 🐱‍🐉  XXXXXXXXXX 🐱‍🐉  Best High Class Surat Avaulable
@Call @Girls in Surat 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 Best High Class Surat Avaulable
 
AI Chatbot Development – A Comprehensive Guide  .pdf
AI Chatbot Development – A Comprehensive Guide  .pdfAI Chatbot Development – A Comprehensive Guide  .pdf
AI Chatbot Development – A Comprehensive Guide  .pdf
 
Migrate your Infrastructure to the AWS Cloud
Migrate your Infrastructure to the AWS CloudMigrate your Infrastructure to the AWS Cloud
Migrate your Infrastructure to the AWS Cloud
 
Software development... for all? (keynote at ICSOFT'2024)
Software development... for all? (keynote at ICSOFT'2024)Software development... for all? (keynote at ICSOFT'2024)
Software development... for all? (keynote at ICSOFT'2024)
 
@Call @Girls in Tirunelveli 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 Tanisha Sharma Best High Cla...
 @Call @Girls in Tirunelveli 🐱‍🐉  XXXXXXXXXX 🐱‍🐉 Tanisha Sharma Best High Cla... @Call @Girls in Tirunelveli 🐱‍🐉  XXXXXXXXXX 🐱‍🐉 Tanisha Sharma Best High Cla...
@Call @Girls in Tirunelveli 🐱‍🐉 XXXXXXXXXX 🐱‍🐉 Tanisha Sharma Best High Cla...
 

OpenStack Neutron new developers on boarding

  • 1. Neutron On-boarding Room Miguel Lavalle, irc mlavalle Boston, May 2017
  • 2. Agenda ● Neutron project overview ● Neutron API ● Core resources, extensions, plugins and service plugins ● Reference back-end implementation ● ML2 plug-in
  • 3. Get your devstack instances ready We will use them for exercises!
  • 4. Neutron Stadium ● Mission, as defined by the OpenStack governance document “To implement services and associated libraries to provide on-demand, scalable, and technology-agnostic network abstraction.” ● This mission is big and ambitious. To properly tackle it, the Neutron Stadium is defined as (https://docs.openstack.org/developer/neutron/stadium/index.html): “… projects that the Neutron PTL and core team are directly involved in, and manage on a day to day basis.”
  • 6. Neutron Stadium ● Projects have to demonstrate a track record meeting a well defined criteria to be part of the Stadium ○ Exhaustive documentation ○ Exhaustive OpenStack CI coverage ○ Good release model adherence ○ Adherence to deprecation and stable backport policies ○ Demonstrated ability to do upgrades and rolling upgrades, where applicable ○ Client bindings and CLI developed according to the OpenStack Client plugin model ○ Integrate with Neutron via one of the supported, advertised and maintained public Python APIs ○ Above all: be open source from the ground up ● To be considered to join the Stadium, a project must prove compliance with the above criteria for at least two OpenStack releases
  • 7. Neutron team ● Current PTL: Kevin Benton (IRC: kevinbenton) ● Liaison with on-boarding process: Miguel Lavalle (IRC: mlavalle) ● IRC channel: #openstack-neutron in Freenode ● Weekly Neutron IRC meeting: ○ Convenes on alternating weeks on Mondays at 2100 UTC and on Tuesdays at 1400 UTC ● Subteams (L3, QoS, CI, etc) meet also regularly ○ See scheduled times and days here: http://eavesdrop.openstack.org/ ● Neutron has a good developer reference documentation. Please use it!: ○ https://docs.openstack.org/developer/neutron/index.html
  • 8. Project mascot: get your sticker with me!
  • 9. Agenda ● Neutron project overview ● Neutron API ● Core resources, extensions, plugins and service plugins ● Reference back-end implementation ● ML2 plug-in
  • 10. Neutron API Neutron, like all the other OpenStack projects, exposes a ReST API where: ● Requests and responses are sent using HTTP ● HTTP methods (POST, PUT, GET, DELETE) are applied through requests sent to the API... ● ...to a set of resources represented by URIs (Universal Resource Identifier) that identify resources ● The HTTP verbs correspond to CRUD (Create, Read, Update and Delete) operations. ● Every request sent by the user gets a response from the API ● Resources are represented in API requests and responses in JSON
  • 11. Exercise: create a neutron port $ openstack --debug port create --network private port-1
  • 12. Exercise: create a neutron port request $ openstack --debug port create --network private port-1 REQ: curl -g -i -X POST http://192.168.33.12:9696/v2.0/ports -H "User-Agent: openstacksdk/0.9.14 keystoneauth1/2.19.0 python-requests/2.12.5 CPython/2.7.12" -H "Content-Type: application/json" -H "X-Auth-Token: {SHA1}f42605a7b844675fd5ec4abf79f093b8cd045f22" -d '{"port": {"network_id": "b1aa112b-04ae-481e-b652-a233c96deaab", "name": "port-1", "admin_state_up": true}}'
  • 13. Exercise: create a neutron port request $ openstack --debug port create --network private port-1 REQ: curl -g -i -X POST http://192.168.33.12:9696/v2.0/ports -H "User-Agent: openstacksdk/0.9.14 keystoneauth1/2.19.0 python-requests/2.12.5 CPython/2.7.12" -H "Content-Type: application/json" -H "X-Auth-Token: {SHA1}f42605a7b844675fd5ec4abf79f093b8cd045f22" -d '{"port": {"network_id": "b1aa112b-04ae-481e-b652-a233c96deaab", "name": "port-1", "admin_state_up": true}}' HTTP method
  • 14. Exercise: create a neutron port request $ openstack --debug port create --network private port-1 REQ: curl -g -i -X POST http://192.168.33.12:9696/v2.0/ports -H "User-Agent: openstacksdk/0.9.14 keystoneauth1/2.19.0 python-requests/2.12.5 CPython/2.7.12" -H "Content-Type: application/json" -H "X-Auth-Token: {SHA1}f42605a7b844675fd5ec4abf79f093b8cd045f22" -d '{"port": {"network_id": "b1aa112b-04ae-481e-b652-a233c96deaab", "name": "port-1", "admin_state_up": true}}' Public endpoint and API version
  • 15. Exercise: create a neutron port request $ openstack --debug port create --network private port-1 REQ: curl -g -i -X POST http://192.168.33.12:9696/v2.0/ports -H "User-Agent: openstacksdk/0.9.14 keystoneauth1/2.19.0 python-requests/2.12.5 CPython/2.7.12" -H "Content-Type: application/json" -H "X-Auth-Token: {SHA1}f42605a7b844675fd5ec4abf79f093b8cd045f22" -d '{"port": {"network_id": "b1aa112b-04ae-481e-b652-a233c96deaab", "name": "port-1", "admin_state_up": true}}' URI
  • 16. Exercise: create a neutron port request $ openstack --debug port create --network private port-1 REQ: curl -g -i -X POST http://192.168.33.12:9696/v2.0/ports -H "User-Agent: openstacksdk/0.9.14 keystoneauth1/2.19.0 python-requests/2.12.5 CPython/2.7.12" -H "Content-Type: application/json" -H "X-Auth-Token: {SHA1}f42605a7b844675fd5ec4abf79f093b8cd045f22" -d '{"port": {"network_id": "b1aa112b-04ae-481e-b652-a233c96deaab", "name": "port-1", "admin_state_up": true}}' Request headers
  • 17. Exercise: create a neutron port request $ openstack --debug port create --network private port-1 REQ: curl -g -i -X POST http://192.168.33.12:9696/v2.0/ports -H "User-Agent: openstacksdk/0.9.14 keystoneauth1/2.19.0 python-requests/2.12.5 CPython/2.7.12" -H "Content-Type: application/json" -H "X-Auth-Token: {SHA1}f42605a7b844675fd5ec4abf79f093b8cd045f22" -d '{"port": {"network_id": "b1aa112b-04ae-481e-b652-a233c96deaab", "name": "port-1", "admin_state_up": true}}' The body of the request: resource representation in JSON
  • 18. Exercise: create a neutron port response RESP: [201] Content-Type: application/json Content-Length: 1129 X-Openstack-Request-Id: req-63329334-d903-46a3-8fcd-840ffa6e13ee Date: Wed, 12 Apr 2017 18:59:11 GMT Connection: keep-alive RESP BODY: {"port":{"allowed_address_pairs":[],"extra_dhcp_opts":[],"updated_at":"2017-04-12 T18:59:11Z","device_owner":"","revision_number":6,"port_security_enabled":true," fixed_ips":[{"subnet_id":"368a67c8-d1ae-452e-b134-23d7d002a1f5","ip_address": "10.0.0.8"},{"subnet_id":"f8c10064-a3b1-4e7c-8ff6-741ed02dbadc","ip_address":"f dd8:76d6:991f:0:f816:3eff:fe31:d576"}],"id":"55fc71a4-eabb-43f9-8335-bdbd1b625 99f","security_groups":["c4bcfdfb-9b03-4e89-a4d4-dafef1985588"],"mac_address": "fa:16:3e:31:d5:76","project_id":"87eda0fcff204327800a17c2bb9a4df3",... }} Response code
  • 19. Exercise: create a neutron port response RESP: [201] Content-Type: application/json Content-Length: 1129 X-Openstack-Request-Id: req-63329334-d903-46a3-8fcd-840ffa6e13ee Date: Wed, 12 Apr 2017 18:59:11 GMT Connection: keep-alive RESP BODY: {"port":{"allowed_address_pairs":[],"extra_dhcp_opts":[],"updated_at":"2017-04-12 T18:59:11Z","device_owner":"","revision_number":6,"port_security_enabled":true," fixed_ips":[{"subnet_id":"368a67c8-d1ae-452e-b134-23d7d002a1f5","ip_address": "10.0.0.8"},{"subnet_id":"f8c10064-a3b1-4e7c-8ff6-741ed02dbadc","ip_address":"f dd8:76d6:991f:0:f816:3eff:fe31:d576"}],"id":"55fc71a4-eabb-43f9-8335-bdbd1b625 99f","security_groups":["c4bcfdfb-9b03-4e89-a4d4-dafef1985588"],"mac_address": "fa:16:3e:31:d5:76","project_id":"87eda0fcff204327800a17c2bb9a4df3",... }} Request ID
  • 20. Exercise: create a neutron port response RESP: [201] Content-Type: application/json Content-Length: 1129 X-Openstack-Request-Id: req-63329334-d903-46a3-8fcd-840ffa6e13ee Date: Wed, 12 Apr 2017 18:59:11 GMT Connection: keep-alive RESP BODY: {"port":{"allowed_address_pairs":[],"extra_dhcp_opts":[],"updated_at":"2017-04-12 T18:59:11Z","device_owner":"","revision_number":6,"port_security_enabled":true," fixed_ips":[{"subnet_id":"368a67c8-d1ae-452e-b134-23d7d002a1f5","ip_address": "10.0.0.8"},{"subnet_id":"f8c10064-a3b1-4e7c-8ff6-741ed02dbadc","ip_address":"f dd8:76d6:991f:0:f816:3eff:fe31:d576"}],"id":"55fc71a4-eabb-43f9-8335-bdbd1b625 99f","security_groups":["c4bcfdfb-9b03-4e89-a4d4-dafef1985588"],"mac_address": "fa:16:3e:31:d5:76","project_id":"87eda0fcff204327800a17c2bb9a4df3",... }} Resource representation in JSON
  • 21. Exercise: update a port $ openstack --debug port set --name updated-port-name 55fc71a4-eabb-43f9-8335-bdbd1b62599f
  • 22. Exercise: update a port request $ openstack --debug port set --name updated-port-name 55fc71a4-eabb-43f9-8335-bdbd1b62599f REQ: curl -g -i -X PUT http://192.168.33.12:9696/v2.0/ports/55fc71a4-eabb-43f9-8335-bdbd1b62599f -H "User-Agent: openstacksdk/0.9.14 keystoneauth1/2.19.0 python-requests/2.12.5 CPython/2.7.12" -H "Content-Type: application/json" -H "X-Auth-Token: {SHA1}2b22d5669c22b8ccda3c70f98a1c3d5f6b119412" -d '{"port": {"name": "updated-port-name"}}' RESP: [200] Content-Type: application/json Content-Length: 1140 X-Openstack-Request-Id: req-639af99a-9ba7-4082-bc5c-b75938200a29…. HTTP method
  • 23. Exercise: update a port request $ openstack --debug port set --name updated-port-name 55fc71a4-eabb-43f9-8335-bdbd1b62599f REQ: curl -g -i -X PUT http://192.168.33.12:9696/v2.0/ports/55fc71a4-eabb-43f9-8335-bdbd1b62599f -H "User-Agent: openstacksdk/0.9.14 keystoneauth1/2.19.0 python-requests/2.12.5 CPython/2.7.12" -H "Content-Type: application/json" -H "X-Auth-Token: {SHA1}2b22d5669c22b8ccda3c70f98a1c3d5f6b119412" -d '{"port": {"name": "updated-port-name"}}' RESP: [200] Content-Type: application/json Content-Length: 1140 X-Openstack-Request-Id: req-639af99a-9ba7-4082-bc5c-b75938200a29…. URI
  • 24. Exercise: update a port request $ openstack --debug port set --name updated-port-name 55fc71a4-eabb-43f9-8335-bdbd1b62599f REQ: curl -g -i -X PUT http://192.168.33.12:9696/v2.0/ports/55fc71a4-eabb-43f9-8335-bdbd1b62599f -H "User-Agent: openstacksdk/0.9.14 keystoneauth1/2.19.0 python-requests/2.12.5 CPython/2.7.12" -H "Content-Type: application/json" -H "X-Auth-Token: {SHA1}2b22d5669c22b8ccda3c70f98a1c3d5f6b119412" -d '{"port": {"name": "updated-port-name"}}' RESP: [200] Content-Type: application/json Content-Length: 1140 X-Openstack-Request-Id: req-639af99a-9ba7-4082-bc5c-b75938200a29…. Resource representation in JSON
  • 25. Frequently seen response codes Response code webob.exc exception Meaning Success 200 HTTPOk OK 201 HTTPCreated Created 204 HTTPNoContent No Content (deleted) Client error 400 HTTPBadRequest Bad Request 404 HTTPNotFound Not Found 409 HTTPConflict Conflict Server error 500 HTTPServerError Internal Server Error
  • 26. Agenda ● Neutron project overview ● Neutron API ● Core resources, extensions, plugins and service plugins ● Reference back-end implementation ● ML2 plug-in
  • 27. Core resources vlan 35 10.0.0.8 10.0.0.9 10.2.0.4 10.0.0.0/24 10.2.0.0/16 Ports Networks (L2) Subnets
  • 28. Neutron plugin architecture Nova ComputeNova Compute Nova Compute Nova Compute Tenant Scripts Horizon Nova API Clients Neutron Server Neutron Plugin Create-net . . . Create-port virtual switch Neutron API Create-net . . . Create-port Interfaces from a service like Nova plug into a switch managed by the Neutron plugin Uniform API for all clients DB Agents or SDN controller API + Plugin = Neutron Server
  • 29. Extensions ● Add attributes to core / existing resources Port binding_host_id binding_profile binding_vif_details binding_vif_type binding_vnic_type Port binding extension {“port”: { “binding:host_id”: “allinone”, “binding:profile”: {}, “binding:vif_details”: { “port_filter”: true, “ovs_hybrid_plug”: true }, “binding:vif_type”: “ovs”, “binding:vnic_type”: “normal”, …. }
  • 30. Extensions ● Add new resources and sub-resources Neutron L3 Router /v2.0/routers /v2.0/floatingips security-group /v2.0/security-groups /v2.0/security-group-rules Quality of Service /v2.0/qos/policies /v2.0/qos/policies/{policy_id}/bandwidth_limit_rules /v2.0/qos/policies/{policy_id}/dscp_marking_rules /v2.0/qos/policies/{policy_id}/minimum_bandwidth_rules
  • 31. Neutron with API extensions and service plugin Nova ComputeNova Compute Nova Compute Nova Compute Tenant Scripts Horizon Nova API Clients Neutron Server Neutron Plugin Create-net . Create-port virtual switch Neutron API Create-net . Create-port Interfaces from a service like Nova plug into a switch managed by the Neutron plugin API + Plugin = Neutron Server Uniform API for all clients API Extensions Service Plugin DB Agents or SDN controller
  • 32. Exercise ● $ openstack extension list --network ● Open /etc/neutron/neutron.conf ○ Search for core_plugin ○ Search for service_plugins
  • 33. Exercise ● Enable the DNS integration extension: ○ $ openstack port list ○ $ openstack port show <port-id> ○ Edit the /etc/neutron/neutron.conf file and assign a value different to openstacklocal (its default value) to the dns_domain parameter in the [default] section ○ Add dns to extension_drivers in the [ml2] section of /etc/neutron/plugins/ml2/ml2_conf.ini ○ $ screen -r stack ○ <ctrl-a>“ ○ With the <down-arrow> or <up-arrow> select screen q-svc and press enter ○ <ctrl-c> to stop the Neutron server ○ <up-arrow> once to recall the startup command ○ <enter> to restart the Neutron server ○ <ctrl-a>d to leave the screen command ○ $ openstack port show <port-id>
  • 34. Exercise ● Enable the DNS integration extension: ○ sudo systemctl restart devstack@q-svc.service
  • 35. Agenda ● Neutron project overview ● Neutron API ● Core resources, extensions, plugins and service plugins ● Reference back-end implementation ● ML2 plug-in
  • 36. The back end Nova ComputeNova Compute Nova Compute Nova Compute Tenant Scripts Horizon Nova API Clients Neutron Server Neutron Plugin Create-net . Create-port virtual switch Neutron API Create-net . Create-port Interfaces from a service like Nova plug into a switch managed by the Neutron plugin Uniform API for all clients Agents or SDN controller API Extensions Service Plugin DB API + Plugin = Neutron Server
  • 37. The back end Nova ComputeNova Compute Nova Compute Nova Compute Tenant Scripts Horizon Nova API Clients Neutron Server Neutron Plugin Create-net . Create-port virtual switch Neutron API Create-net . Create-port Interfaces from a service like Nova plug into a switch managed by the Neutron plugin Uniform API for all clients Agents or SDN controller API Extensions Service Plugin DB API + Plugin = Neutron Server
  • 38. Agents based reference implementation Agents and server communicate using RPC implemented over message queue
  • 39. Under the hood scenario: compute node with OVS
  • 40. OVS L2 agent ● Runs on compute nodes ● Configures the local virtual bridges: br-int, br-ethx, br-tun ● Wires ports ● Applies security group rules ● Communicates with Neutron server over remote procedure calls (RPC)
  • 41. OVS L2 Agent: when a VM is created
  • 42. OVS L2 agent: loop events (method rpc_loop) ● OVSDB monitor has updates ● Neutron server messages ○ Security group change ○ Port update ● OVS re-started
  • 43. OVS L2 agent: detect port changes ● OVSDB signals if something has changed in the host ● Agent scans all the ports in the host ● Agent keeps track of the ports it has already processed using a set named ports ● The difference between ports and the result of the scanning enables the agent to infer the devices added and deleted
  • 44. OVS L2 agent: process port added ● Request the device details (get_devices_details_and_failed_devices) ● Provision local vlan and install proper flows ● Set up filters ● Call plugin’s update_device_up (update_device_list)
  • 45. Exercise: OVS L2 agent ● Review OVS L2 related code ○ Agent side of the RPC API: /opt/stack/neutron/agent/rpc.py ○ Neutron server side of the RPC API: neutron/plugins/ml2/rpc.py ○ Method rpc_loop in agent: neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py ● Boot an instance and locate OVS and Linux bridge bridges and interfaces ○ $ openstack image list ○ $ openstack server create --flavor 42 --image <image-id> --nic net-id=<private-net-id> test-vm ○ $ openstack server list ○ $ openstack port list ○ $ sudo ovs-vsctl show ○ $ sudo brctl show
  • 46. Under the hood scenario: routers and DHCP
  • 47. Distributed Virtual Router (DVR) in compute nodes ● Floating IPs for north / south IPv4 routing ● East / west IPv4 routing “VM1-1 patch-tun br-int eth0 QRouter-X “VM2-1 patch-tun br-int eth0 QRouter-X
  • 48. Router and floating ip processing create_router, update_router, create_floatingip, update_floatingip L3RouterPlugin L3NATAgent routers_updated routers_updated RouterProcessingQueue add _process_routers_loop getsync_routers _process_added_router self._create_router() ri.process() _process_added_router ri.process() 1 2 3 4 5
  • 50. Exercise: L3 agent ● Review L3 related code: ○ L3 router plugin: neutron/services/l3_router/l3_router_plugin.py ○ L3 DB mixin classes: neutron/db/l3_db.py ■ L3_NAT_db_mixin ■ L3RpcNotifierMixin ■ L3_NAT_dbonly_mixin ○ Server notifier L3 RPC notifier: neutron/api/rpc/agentnotifiers/l3_rpc_agent_api.py ○ L3 agent: neutron/agent/l3/agent.py ■ routers_updated ■ _process_routers_loop ■ get_routers in L3PluginApi ■ _process_added_router ■ _process_updated_router ○ L3 server RPC callbacks: neutron/api/rpc/handlers/l3_rpc.py ○ Router classes example: neutron/agent/l3/router_info.py
  • 51. Exercise: L3 agent ● Identify the name spaces: ○ $ openstack router list ○ $ openstack network list ○ $ sudo ip netns ○ $ sudo ip netns exec qrouter-<router-id> ip addr list ● Identify router and dhcp ports in OVS: ○ $ openstack port list ○ $ sudo ovs-vsctl show ● Identify iptables entries ○ $ sudo ip netns exec qrouter-<router-id> iptables-save | grep 172 ○ $ openstack network list ○ $ openstack floating ip create <external-net-id> --port <instance-port-id> ○ $ sudo ip netns exec qrouter-<router-id> iptables-save | grep 172 ○ $ sudo ip netns exec qrouter-<router-id> ip addr list
  • 52. Agenda ● Neutron project overview ● Neutron API ● Core resources, extensions, plugins and service plugins ● Reference back-end implementation ● ML2 plug-in
  • 53. ML2 plug-in architecture Neutron Server ML2 Plugin Type Manager Mechanism Manager Extension Manager GRE TypeDriver Arista VLAN TypeDriver VXLAN TypeDriver Cisco Nexus mech_sriov L2 Population Linuxbridge Open vSwitch macvtap
  • 54. Multi-segment networks VXLAN 123567 physnet1 VLAN 37 physnet2 VLAN 413 VM 1 VM 2 VM 3 ● Created via multi-provider API extension ● Segments bridged administratively ● Ports associated with network, not specific segment ● Ports bound automatically to segment with connectivity
  • 55. Plug-in inheritance hierarchy NeutronPluginBaseV2 neutron/neutron_plugin_base_v2.py NeutronDbPluginV2 neutron/db/db_base_plugin_v2.py Ml2Plugin neutron/plugins/ml2/plugin.py Defines the core plug-in API Abstracts the DB management for the core resources for any core plug-in Core plug-in reference implementation
  • 56. ML2 plug-in create_network method pseudo-code def create_network(self, context, network): with db_api.context_manager.writer.using(context): result = self.create_network_db(context, network) self.type_manager.create_network_segments(context, network) mech_context = driver_context.NetworkContext(self, context, result) self.mechanism_manager.create_network_precommit(mech_context) self.mechanism_manager.create_network_postcommit(mech_context) return self._make_network_dict(result)
  • 57. ML2 plug-in create_network method pseudo-code def create_network(self, context, network): with db_api.context_manager.writer.using(context): result = self.create_network_db(context, network) self.type_manager.create_network_segments(context, network) mech_context = driver_context.NetworkContext(self, context, result) self.mechanism_manager.create_network_precommit(mech_context) self.mechanism_manager.create_network_postcommit(mech_context) return self._make_network_dict(result) Part 1: Start a DB transaction
  • 58. ML2 plug-in create_network method pseudo-code def create_network(self, context, network): with db_api.context_manager.writer.using(context): result = self.create_network_db(context, network) self.type_manager.create_network_segments(context, network) mech_context = driver_context.NetworkContext(self, context, result) self.mechanism_manager.create_network_precommit(mech_context) self.mechanism_manager.create_network_postcommit(mech_context) return self._make_network_dict(result) Part 2: Code that needs to be executed inside DB transaction. It has to be fast fast, with no blocking calls!
  • 59. ML2 plug-in create_network method pseudo-code def create_network(self, context, network): with db_api.context_manager.writer.using(context): result = self.create_network_db(context, network) self.type_manager.create_network_segments(context, network) mech_context = driver_context.NetworkContext(self, context, result) self.mechanism_manager.create_network_precommit(mech_context) self.mechanism_manager.create_network_postcommit(mech_context) return self._make_network_dict(result) Part 3: Set up the networking infrastructure. Since this code is outside the DB transaction, the mechanism manager post_commit can interact with networking infrastructure. It can execute blocking calls
  • 60. ML2 plug-in create_network method pseudo-code def create_network(self, context, network): with db_api.context_manager.writer.using(context): result = self.create_network_db(context, network) self.type_manager.create_network_segments(context, network) mech_context = driver_context.NetworkContext(self, context, result) self.mechanism_manager.create_network_precommit(mech_context) self.mechanism_manager.create_network_postcommit(mech_context) return self._make_network_dict(result) Part 4 Build the resource (network in this example) dictionary that will be returned to the user through the ReST API. It has to be structured properly to avoid generating additional queries to the DB when adding extensions attributes!
  • 61. ML2 plug-in create_network: inside DB transaction def create_network(self, context, network): with db_api.context_manager.writer.using(context): result = self.create_network_db(context, network) self.type_manager.create_network_segments(context, network) mech_context = driver_context.NetworkContext(self, context, result) self.mechanism_manager.create_network_precommit(mech_context) self.mechanism_manager.create_network_postcommit(mech_context) return self._make_network_dict(result)
  • 62. ML2 plug-in create_network: inside DB transaction def create_network(self, context, network): with db_api.context_manager.writer.using(context): result = self.create_network_db(context, network) self.type_manager.create_network_segments(context, network) mech_context = driver_context.NetworkContext(self, context, result) self.mechanism_manager.create_network_precommit(mech_context) self.mechanism_manager.create_network_postcommit(mech_context) return self._make_network_dict(result) Call the DB plug-in to create the row in the networks table. It can be called directly like here, or as super, since the ML2 plugin inherits from NeutronDbPluginV2
  • 63. ML2 plug-in create_network: inside DB transaction def create_network(self, context, network): with db_api.context_manager.writer.using(context): result = self.create_network_db(context, network) self.type_manager.create_network_segments(context, network) mech_context = driver_context.NetworkContext(self, context, result) self.mechanism_manager.create_network_precommit(mech_context) self.mechanism_manager.create_network_postcommit(mech_context) return self._make_network_dict(result) Call the type driver (through the type manager) to reserve the segments
  • 64. ML2 plug-in create_network: inside DB transaction def create_network(self, context, network): with db_api.context_manager.writer.using(context): result = self.create_network_db(context, network) self.type_manager.create_network_segments(context, network) mech_context = driver_context.NetworkContext(self, context, result) self.mechanism_manager.create_network_precommit(mech_context) self.mechanism_manager.create_network_postcommit(mech_context) return self._make_network_dict(result) Create the mechanism context, that stores the previous and the current state of the resource. It is passed to the mechanism driver precommit and postcommit
  • 65. ML2 plug-in create_network: inside DB transaction def create_network(self, context, network): with db_api.context_manager.writer.using(context): result = self.create_network_db(context, network) self.type_manager.create_network_segments(context, network) mech_context = driver_context.NetworkContext(self, context, result) self.mechanism_manager.create_network_precommit(mech_context) self.mechanism_manager.create_network_postcommit(mech_context) return self._make_network_dict(result) Call the mechanism driver precommit to store in the DB any state that needs to be remembered
  • 66. ML2 plug-in create_port method pseudo-code def create_port(self, context, port): with db_api.context_manager.writer.using(context): result = self.create_port_db(context, port) mech_context = driver_context.PortContext(self, context, result) self.mechanism_manager.create_port_precommit(mech_context) self.mechanism_manager.create_port_postcommit(mech_context) bound_context = self._bind_port_if_needed(mech_context) return bound_context.current
  • 67. Port binding as a black box Port binding Port attributes: ● binding:host_id ● binding:profile ● binding:vnic_type ● Other attributes Port network segments, each containing: ● network_type ● physical_network ● segmentation_id Port attributes: ● binding:vif_type ● binding:vif_details Port binding levels, each containing: ● driver ● segment
  • 68. Port binding ● Plug-in calls bind_port() on registered mechanism drivers in order listed in config, until one succeeds or all have been tried ● Driver determines if it can bind based on ○ context.network.network_segments ○ context.host ○ context.host_agents() ● Binding requires live L2 agent on port’s host that: ○ Supports a network type of a segment of the port’s network ○ Has a mapping for that segment’s physical_network if applicable ● If bind possible, driver calls context.set_binding(). Otherwise, port’s binding:vif_type set to VIF_TYPE_BINDING_FAILED def PortContext(object): @abstractproperty def current(self): pass @abstractproperty def network(self): pass @abstractmethod def set_binding(self, segment_id, vif_type, vif_details, status): pass
  • 69. Port postcommit and binding in little a more detail try: self.mechanism_manager.create_port_postcommit(mech_context) except ml2_exc.MechanismDriverError: with excutils.save_and_reraise_exception(): LOG.error(_LE("mechanism_manager.create_port_postcommit " "failed, deleting port '%s'"), result['id']) self.delete_port(context, result['id'], l3_port_check=False) try: bound_context = self._bind_port_if_needed(mech_context) except ml2_exc.MechanismDriverError: with excutils.save_and_reraise_exception(): LOG.error(_LE("_bind_port_if_needed " "failed, deleting port '%s'"), result['id']) self.delete_port(context, result['id'], l3_port_check=False)
  • 70. OVS L2 Agent: when a VM is created 4
  • 71. Exercise: ML2 plugin ● ML2 related code: ○ Drivers and context API definitions: neutron/plugins/ml2/driver_api.py ○ Network, subnet and port contexts: neutron/plugins/ml2/driver_context.py ○ Drivers: neutron/plugins/ml2/drivers ○ Drivers managers: neutron/plugins/ml2/managers.py ○ Create port in ML2 plugin: neutron/plugins/ml2/plugin.com ● Port binding related code: ○ get_devices_details_list_and_failed_devices in class RpcCallbacks in neutron/plugins/ml2.rpc.py ○ get_bound_port_context in ML2 plugin ■ Add a LOG.debug statement before returning the port context. Log the resulting binding vif_type ■ Re-start the server ■ Create a VM