2014.05.21 Ken ichi Ohmichi NEC Solution Innovators, Ltd.



Similar documents
Challenge to add OpenStack API Validation Framework

Multi Provider Cloud. Srinivasa Acharya, Engineering Manager, Hewlett-Packard

OpenStack Introduction. November 4, 2015

Isabell Sippli Cloud Architect, Lab Based Services IBM Software Group 2013 IBM Corporation

An Introduction to OpenStack and its use of KVM. Daniel P. Berrangé

Change the Game with HP Helion

Is OpenStack the best path forward towards successful Clouds? Cor van der Struijf Senior Cloud Advisor

CON8473 Oracle Distribution of OpenStack Making OpenStack an Enterprise Grade Solution

Sales Slide Midokura Enterprise MidoNet V1. July 2015 Fujitsu Limited

Introduction to Openstack, an Open Cloud Computing Platform. Libre Software Meeting

Introduction to OpenStack

Using SUSE Cloud to Orchestrate Multiple Hypervisors and Storage at ADP

KVM, OpenStack, and the Open Cloud

Building Multi-Site & Ultra-Large Scale Cloud with Openstack Cascading

Openstack. Cloud computing with Openstack. Saverio Proto

OpenStack + VMware: Everything You Need to Know

Ubuntu OpenStack Fundamentals Training

TUT5605: Deploying an elastic Hadoop cluster Alejandro Bonilla

OpenStack Alberto Molina Coballes

How To Install Openstack On Ubuntu (Amd64)

Copyright 2014, Oracle and/or its affiliates. All rights reserved. 2

OpenStack Assessment : Profiling & Tracing

OpenStack Manila Shared File Services for the Cloud

OpenStack IaaS. Rhys Oxenham OSEC.pl BarCamp, Warsaw, Poland November 2013

How an Open Source Cloud Will Help Keep Your Cloud Strategy Options Open

OpenStack/Quantum SDNbased network virtulization with Ryu

OpenStack Awareness Session

SUSE Cloud. OpenStack End User Guide. February 20, 2015

Open Source Virtualization with ovirt. DI (FH) René Koch Systems Engineer Siedl Networks GmbH Grazer Linuxtage,

KVM, OpenStack, and the Open Cloud

Today. 1. Private Clouds. Private Cloud toolkits. Private Clouds and OpenStack Introduction

RCL: Design and Open Specification

A10 Networks LBaaS Driver for Thunder and AX Series Appliances

HO5604 Deploying MongoDB. A Scalable, Distributed Database with SUSE Cloud. Alejandro Bonilla. Sales Engineer abonilla@suse.com

How To Make A Cloud Work For You

Installation and Configuration Guide

Design and Implementation of IaaS platform based on tool migration Wei Ding

Postgres on OpenStack

Adventures & Challenges building an OpenStack public cloud. Walter Heukels, Koert van der Veer en Pim van Riezen

How To Compare Cloud Computing To Cloud Platforms And Cloud Computing

An Intro to OpenStack. Ian Lawson Senior Solution Architect, Red Hat

Hadoop on OpenStack Cloud. Dmitry Mescheryakov Software

IBM Cloud Manager with OpenStack. REST API Reference, version 4.1

CS312 Solutions #6. March 13, 2015

Infrastructure as a Service (IaaS)

Savanna Hadoop on. OpenStack. Savanna Technical Lead

SUSE Cloud Installation: Best Practices Using an Existing SMT and KVM Environment

Open Source Networking for Cloud Data Centers

AMD SEAMICRO OPENSTACK BLUEPRINTS CLOUD- IN- A- BOX OCTOBER 2013

SUSE Cloud 2.0. Pete Chadwick. Douglas Jarvis. Senior Product Manager Product Marketing Manager

HP Helion OpenStack Carrier Grade REST API Copyright Hewlett-Packard Development Company, L.P. All rights reserved.

Getting Started with the CLI and APIs using Cisco Openstack Private Cloud

KVM, OpenStack and the Open Cloud SUSECon November 2015

Tuskar UI Documentation

Are We Done Yet? Testing Your OpenStack Deployment

Accelerate OpenStack* Together. * OpenStack is a registered trademark of the OpenStack Foundation

SMB in the Cloud David Disseldorp

OpenStack & Hyper-V. Alessandro Pilo- CEO Cloudbase

SUSE Cloud 5 Private Cloud based on OpenStack

Whither Enterprise Cloud Platform Linux, Docker and more Loo Chia Zyn Head of Sales Consulting, Japan & Asia Pacific Oracle Linux & Oracle VM

FUJITSU Software ServerView Cloud Monitoring Manager V1 Introduction

Outline. Why Neutron? What is Neutron? API Abstractions Plugin Architecture

Agile Infrastructure: an updated overview of IaaS at CERN

The Total Newbie s Introduction to Heat Orchestration in OpenStack

Cloud on TIEN Part I: OpenStack Cloud Deployment. Vasinee Siripoonya Electronic Government Agency of Thailand Kasidit Chanchio Thammasat

Kerberos-Based Authentication for OpenStack Cloud Infrastructure as a Service

RED HAT INFRASTRUCTURE AS A SERVICE OVERVIEW AND ROADMAP. Andrew Cathrow Red Hat, Inc. Wednesday, June 12, 2013

Cloud Platform Comparison: CloudStack, Eucalyptus, vcloud Director and OpenStack

Mobile Cloud Computing T Open Source IaaS

How To Use Openstack (And Piston) For Your Cloud Computing

UZH Experiences with OpenStack

Leveraging OpenStack Private Clouds

RED HAT ENTEPRISE LINUX OPENSTACK PLATFORM PRODUCT OVERVIEW & UPDATE. Jeff Jameson Sr. Principal Product Marketing Manager Virtualization BU, RED HAT

Oracle OpenStack for Oracle Linux Release 1.0 Installation and User s Guide ORACLE WHITE PAPER DECEMBER 2014

Release Notes for Contrail Release 1.20

OPEN CLOUD INFRASTRUCTURE BUILT FOR THE ENTERPRISE

RED HAT ENTERPRISE LINUX OPENSTACK PLATFORM

Ubuntu OpenStack on VMware vsphere: A reference architecture for deploying OpenStack while limiting changes to existing infrastructure

Building Storage as a Service with OpenStack. Greg Elkinbard Senior Technical Director

Release Notes for Fuel and Fuel Web Version 3.0.1

How To Use Openstack At Cern

Mirantis OpenStack Express: Security White Paper

Running an OpenStack Cloud for several years and living to tell the tale. Alexandre Maumené Gaëtan Trellu Tokyo Summit, November 2015

Sunshine in a Cloudy World

Transcription:

2014.05.21 Ken ichi Ohmichi NEC Solution Innovators, Ltd.

Agenda Who am I OpenStack OpenStack RESTful API Nova RESTful API Issues of Nova RESTful API Going Solutions Current Situation Summary 2

$ who am i 3

Software developer Join OpenStack community for its quality assurance since 2012 Working Areas OpenStack QA (Quality Assurance) OpenStack Compute (Nova) 4

5

OpenStack components OpenStack Neutron Network Nova Compute Glance Image Cinder Block storage Keystone Identity Horizon Dashboard 6

OpenStack community 1400 1200 1000 800 600 400 Rapid Growth 200 0 A B C D E F G H I 2010 2011 2012 2013 2014 OpenStack Versions Companies Developers 7

Community development Importance of code review Can know the internal implementation Can know the trend Can get folks Importance of communication Daily : IRC or e-mail Weekly: IRC meeting Version: F2F at Design Summit 8

9

RESTful API Scalable and stateless Simple and consistent interfaces OpenStack provides many features through RESTful API OpenStack Server POST http://<api-server>/servers RESTful Client RESTful API Create a virtual machine VM 01 Hypervisor (kvm, etc) VM 02 10

Many RESTful client libraries are available for OpenStack Python -.NET Java - Dashboard and commands request operations via RESTful APIs Horizon Dashboard Commands $ nova.. $ cinder.. OpenStack Server RESTful Client library RESTful API

Each OpenStack component also is connected via RESTful APIs Neutron Network Nova Compute Nova RESTful API Glance Image Keystone Identity Horizon Dashboard Commands $ nova.. $ cinder..

13

OpenStack core functions Create a VM (virtual machine) Delete a VM Attach a volume to a VM Scalable Stable Current API version is v2 Nova v2 API contains 250+ APIs (Icehouse)

API usage Create a VM (virtual machine) URL http://<api-server>/servers Body RESTful Client { server : { name : VM01, flavorref : 42, imageref : d57886.. POST Nova v2 API Nova server VM01 Hypervisor (kvm, etc)

16

Inconsistent interfaces Inconsistent naming instance or server, tenant or project CamelCase, or snake_case { CamelCase instanceaction : [ { action : reboot, events : [], instance_uuid : b48316c5-[..], project_id : 147, [..] snake_case { server : { CamelCase accessipv4 :, accessipv6 :, id : 893c7791-[..], name : test-server, tenant_id : a54313c7-[..], [..] snake_case Show insance actions API Show server API 17

Inconsistent interfaces Return incorrect success codes Should return 202(ACCEPTED) but some APIs return 201(CREATED) even if not complete to create a resource yet. 18

Lacks of input validation Cause internal errors, output a lot of error logs in server, and return useless error messages Ex) Pass non-dict as metadata to create a VM Body RESTful Client { server : { name : VM01, flavorref : 42, imageref : d57886.., metadata : non-dict POST The server has either erred or is incapable of performing the requested operation HTTP 500 Nova API server Nova v2 API Internal Error # this bug has been already fixed. 19

Lacks of input validation Ignore unexpected data which a client sends, and the request operates without some details which a client expects Body RESTful Client { server : { name : VM01, flavorref : 42, imageref : d57886.., os:scheduler_fints : { group : group-01 POST typo HTTP 202 Nova API server Nova v2 API Create a VM without scheduler hints 20

21

Nova v3 API (Havana -> Juno) Re-define consistent naming Re-define consistent success codes Comprehensive input validation with JSONSchema V2 API Client Weak Validation Inconsistent interfaces Nova API Server v2.0 API (Current) Internal Error V3 API Client Strong Validation JSONSchema input validation v3 API (Experimen tal) Nova Internal implementation Consistent interfaces 22

{ JSONSchema Common data format definition library Clear, human- and machine-readable data format definition { get_console_output : { length : 100 Correct request data Pass type : object, properties : { get_console_output : { type : object, properties : { length : { type : integer, minimum : -1, additionalproperties : False, required : [ get_console_output ] Data format definition with JSONSchema 23

{ JSONSchema Contains basic validation features in nature Ex) minimum get_console_output : { length : -100 Invalid request data { Fail type : object, properties : { get_console_output : { type : object, properties : { length : { type : integer, minimum : -1, additionalproperties : False, required : [ get_console_output ] Data format definition with JSONSchema 24

{ JSONSchema Can deny undefined parameters Ex) additionalproperties: False get_console_output : { length : 100, undefined : 100 Invalid request data { Fail type : object, properties : { get_console_output : { type : object, properties : { length : { type : integer, minimum : -1, additionalproperties : False, required : [ get_console_output ] Data format definition with JSONSchema 25

Use JSONSchema for input validation Strong validation, then avoid internal errors Return useful error message if a client sends invalid format data The server has either erred or is incapable of performing the requested operation Invalid input for field/attribute length. Value: foo. foo is not of type integer' before JSONSchema validation after JSONSchema validation 26

Use JSONSchema for input validation Clean up logic code by separating validation code Validation code also can be reduced try: min_count = int(str(min_count)) except ValueError: msg = _('min_count must be an integer value') raise exc.httpbadrequest(explanation=msg) if min_count < 1: msg = _('min_count must be > 0') raise exc.httpbadrequest(explanation=msg) Validation code of v2 API 'min_count': { 'type': 'integer', 'minimum': 1 Validation code of v3 API 27

Input validation development history 2013.03 The prototype proposal 2013.04 The first proposal in Portland summit 2013.07 The framework patch was approved, but merger failed 2013.08 Do not merge * 2

Input validation development history 2013.08 Investigated input validations of all API parameters and proposed necessary features. 2013.11 The second proposal in Hong Kong summit. We have gotten a consensus. 2013.11 The framework patch has been merged. Necessary to merge API definition patches still.

Input validation development status Merged patches: 14 Necessary to be reviewed/merged patches: 20

31

Stopped v3 API development Backward incompatibility against v2 API Large maintenance cost due to 250+ APIs for each API version Huge mail thread to keep/drop v3 API Nova API Server V2 API Client V3 API Client Backward incompatibility JSONSchema input validation v2.0 API (Current) Strong Validation v3 API (Experimen tal) Internal Error Nova Internal implementation 32

Proposed v2.1 API Translate v2 request/response and use v3 implementation Strong API validation Keep maintenance cost low Nova API Server V2 API Client Keep compatibility with strong validation V3 API Client Backward incompatibility v2.1 API (v2 v3 Translator) JSONSchema input validation v2.0 API (Current) Strong Validation v3 API (Experimen tal) Internal Error Nova Internal implementation 33

Consensuses after Atlanta Summit Implement v2.1 API in Juno cycle Implement JSONSchema validation for v2.1 API The future of v3 API is unclear now 34

35

Nova v2.1 API will be available after Juno Strong input validation The future of Nova v3 API is unclear Consistent interfaces Strong input validation Join OpenStack community Code review is important Communication is important 36

37