SlideShare a Scribd company logo
+




    Design of general bare_metal
    proxy compute node
            Mikyung Kang (mkkang@isi.edu)
              Dong-In Kang (dkang@isi.edu)
1                              May 20, 2011
TODO [1] nova.conf
+                                                                                               2


       Current Version                                           Next Version
    Proxy Compute Node                                       Proxy Compute Node


       LibvirtConnection                                         LibvirtConnection
        (libvirt_conn.py)       proxy_baremetal                   (libvirt_conn.py)
    --connection_type=libvirt   specific model                --connection_type=libvirt
                                                              --connection_type=gpu
    --connection_type=gpu
                                                                ProxyConnection
                                                              (proxy_baremetal.py)
                                                      1      --connection_type=baremetal
    --connection_type=tilera                                                              gPXE.py?

       TileraConnection                      TileraConnection         …..      ArmConnection
           (tilera.py)                           (tilera.py)                      (arm.py)
                                                                         --baremetal_driver=arm
                                                             HeckleConnection
                            2    --baremetal_driver=tilera
                                                                (heckle.py)
                                                       --baremetal_driver=heckle
                                                                             Specific arch. or
  1.  Changing --connection_type: tilera          baremetal             Specific provisioning tool
  2.  Adding –baremetal_driver option in nova.conf: tilera/arm/heckle/…
TODO [2] proxy_baremetal.py overview
+                                                                                                3


               Next Version
           Proxy Compute Node

      --connection_type=baremetal
                                             def create_domain(..):
              ProxyConnection                      …
            (proxy_baremetal.py)                   load bare_metal as –baremetal_driver in nova.conf
                                                   baremetal_id = bare_metal.get_idle_node()
                                                   new_dom = {
    class ProxyConnection                                ’baremetal_type': bare_metal,
         def _get_connection(..):                        ’baremetal_id': baremetal_id,
              // _conn <- baremetal_doms                  'name': xml_dict['name'],
         def destroy(..):                                'mac_address': xml_dict['mac_address'],
              // _conn.destroy_domain(..)                 'ip_address': xml_dict['ip_address'],
              // db.instance_set_state(..)                'dhcp_server': xml_dict['dhcp_server'],
                                                          'image_id': xml_dict['image_id'],
         def reboot(..):
                                                          'kernel_id': xml_dict['kernel_id'],
              // _conn.reboot_domain(..)                  'ramdisk_id': xml_dict['ramdisk_id'],
              // db.instance_set_state(..)                 'status': power_state.NOSTATE}
         def spawn(..):                            self.domains.append(new_dom)
              // inject key into image             self.change_domain_state(..)
              // _conn.create_domain(..)           bare_metal.set_fs(..)
              // db.instance_set_state(..)         bare_metal.activate_node(..)
         def get_console_output(..):               …
              // console_log
TODO [3] proxy_baremetal.py: domain management
+                                                                                                                   4


                                 •  bare_metal.get_idle_node() is needed
  baremetal_id                         - ID format is different system by system
                                       - ID can be board_number or string name
                                       - “baremetal_type” and “baremetal_id”
                                       - return value: baremetal_id
                                 •  bare_metal.get_status() & set_status() are needed
                                       - Status can be number(0/1) or string (None/ALLOCATED)
                                       - argument and return value: 0/1 (conversion)
  Tilera: <board_id> 0 ~ 9




                                                                                   Status field is added in __init__

 [{'status': 0, 'kernel_id': '1896115634’, 'ramdisk_id': '', 'image_id': '1552326678', 'ip_address': '10.9.1.45’,
 'board_id': 2, 'name': 'instance-00000046', 'vcpus': 1L, 'mac_address': '02:16:3e:1f:84:69', 'dhcp_server':
 '10.9.1.1'}]
                                                   ‘baremetal_type’:’tilera’, ‘baremetal_id’:2
  Heckle: <Name> bb01~
TODO [4] proxy_baremetal.py: get_image & set_image
+                                                                                                                   5


                                 •  bare_metal.get_image(baremetal_id) is needed
         set_fs                        - Case#1: passed image by euca-run-instances (every time)
                                              - no needed
                                       - Case#2: fake bare metal image / no passed image (manual)
                                              - Actual images should be passed
                                              - After getting images (path) from bare_metal,
                                                vmlinux/initrd/disk should be copied to basepath/.
                                               Then key should be injected to real disk image.
                                 •  bare_metal.set_image(baremetal_id) is needed
                                       - In case that specific directory is used for images (/tftpboot/),
                                         it should pass the key injected image into specific directory

   Tilera: bpath/root -> /tftpboot/fs_x.tar.gz           /tftpboot
 [{'status': 0, 'kernel_id': '1896115634’, 'ramdisk_id': '', 'image_id': '1552326678', 'ip_address': '10.9.1.45’,
 'board_id': 2, 'name': 'instance-00000046', 'vcpus': 1L, 'mac_address': '02:16:3e:1f:84:69', 'dhcp_server':
 '10.9.1.1'}]
                                                                                             /bootconfig
      Heckle: <Image>                                                                        /node
                                                                                             /image
                                                                                             /hardware
                                                                                             /user
                                                                                             /powercontroller …
TODO [5] proxy_baremetal.py: activate_node
+                                                                                             6

                         •  bare_metal.activate_node(baremetal_id, ip_addr, mac_addr)
 Activate_node                 - In case of Tilera, the first/second boot use different vmlinux.
                                 In case of Heckle, script is used for setting activation
                                     -> bare_metal.boot_set() (Tilera:mboot <-> gPXE script)
                               - Tilera uses ePDU management script <-> IPMI
                                     -> bare_metal.power_mgr()
                                     -> bare_metal.check_activated()
                               - Some settings for network and services are needed
                                     -> bare_metal.network_set()
                         •  bare_metal.deactivate_node(baremetal_id) is needed [destroy]
  Tilera: /tftpboot/vmalinux_x_1 and _2
   Heckle: <vmlinux>
TODO [6] proxy_baremetal.py: get_console_output
+                                                                                  7


                   •  bare_metal.get_console_output(instance) is needed
  console_output         - In case of Tilera, /proc/kmsg output is saved offline
                           and then reused whenever it is needed
                           b/c MDE 2.0 doesn’t support dmesg
                         - Most bare metal machines can get dmesg output
                           and then save before running OpenStack


       Tilera:
TODO [7] proxy_baremetal.py: update_available_resource()
+                                                                                                 8

                          •  Needed host information
 update_resource                - get_vcpu_total()               - get_memory_mb_total()
                                - get_local_gb_total()           - get_vcpu_used()
                                - get_memory_mb_used()           - get_local_gb_used()
                                - get_hypervisor_type()          - get_hypervisor_version()
                                - get_cpu_info()
                          •  bare_metal.get_hw_info(field) is needed
                                - In case of Tilera, all information is saved into tilera_boards file,
                                  and each field is loaded from file when running OpenStack,
                                  and then each specific field is retrieved through “field” arg.
                                - vcpu: # of bare_metal node, it should be changed acct. #(run)
                                - total/used: each information of each node
                                - Assumption: one proxy bare_metal for homogeneous machines
  Tilera: tilera_boards




  Heckle: Properties
Overview
+                                        Should be separated into 2
                                           or 3 files and each func.
                                                                                                        9

                                         should be added/modified!

--connection_type=baremetal


proxy_baremetal.py                     baremetal_dom.py                       arch.py (ex. tilera.py)
__init__                               __init__                               class _nodes
                                                                                 def set_status()
Init_host()                            read_domain_from_file()
                                                                                 def check_idle_node()
_get_connection()                      reboot_domain()                           def get_idle_node()
                                                                                 def find_ip_w_id()
destroy()                              destroy_domain()
                                                                                 def free_node()
reboot()                               create_domain()                           def deactivate_node()
                                                                                 def activate_node()
spawn()                                change_domain_state()

get_console_output()                   store_domain()                             def get_hw_info()
                                                                                  def get_image()
update_available_resource()            find_domain()                              def set_image()
…                                      list_domains()                             def get_console_output()
                                                                                  def check_activated()
                                       get_domain_info()
                                                                              …
                                       …

                              --baremetal_driver=arch or tool (tilera/arm/heckle/…)
Ad

Recommended

Drizzles Approach To Improving Performance Of The Server
Drizzles Approach To Improving Performance Of The Server
PerconaPerformance
 
Model-Driven Software Development - Pretty-Printing, Editor Services, Term Re...
Model-Driven Software Development - Pretty-Printing, Editor Services, Term Re...
Eelco Visser
 
Symfony2 - from the trenches
Symfony2 - from the trenches
Lukas Smith
 
Rich Model And Layered Architecture in SF2 Application
Rich Model And Layered Architecture in SF2 Application
Kirill Chebunin
 
Replication
Replication
MongoDB
 
Api Design
Api Design
sartak
 
CapitalCamp Features
CapitalCamp Features
Phase2
 
Advanced Php - Macq Electronique 2010
Advanced Php - Macq Electronique 2010
Michelangelo van Dam
 
DSL - Domain Specific Languages, Chapter 4, Internal DSL
DSL - Domain Specific Languages, Chapter 4, Internal DSL
Hiro Yoshioka
 
What's New In Apache Lenya 1.4
What's New In Apache Lenya 1.4
nobby
 
Symfony 2.0
Symfony 2.0
GrUSP
 
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 2, Dependency I...
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 2, Dependency I...
ZFConf Conference
 
Building High Perf Web Apps - IE8 Firestarter
Building High Perf Web Apps - IE8 Firestarter
Mithun T. Dhar
 
Merb
Merb
Yehuda Katz
 
DataMapper
DataMapper
Yehuda Katz
 
Java e i database: da JDBC a JPA
Java e i database: da JDBC a JPA
benfante
 
Zend Framework and the Doctrine2 MongoDB ODM (ZF1)
Zend Framework and the Doctrine2 MongoDB ODM (ZF1)
Ryan Mauger
 
Php unit the-mostunknownparts
Php unit the-mostunknownparts
Bastian Feder
 
How to Design a Great API (using flask) [ploneconf2017]
How to Design a Great API (using flask) [ploneconf2017]
Devon Bernard
 
The Beauty and the Beast
The Beauty and the Beast
Bastian Feder
 
Lean React - Patterns for High Performance [ploneconf2017]
Lean React - Patterns for High Performance [ploneconf2017]
Devon Bernard
 
groovy databases
groovy databases
Paul King
 
G*ワークショップ in 仙台 Grails(とことん)入門
G*ワークショップ in 仙台 Grails(とことん)入門
Tsuyoshi Yamamoto
 
The Beauty And The Beast Php N W09
The Beauty And The Beast Php N W09
Bastian Feder
 
concurrency with GPars
concurrency with GPars
Paul King
 
Building a Pluggable Plugin
Building a Pluggable Plugin
Brandon Dove
 
Fnt Software Solutions Pvt Ltd Placement Papers - PHP Technology
Fnt Software Solutions Pvt Ltd Placement Papers - PHP Technology
fntsofttech
 
Introduction to hibernate
Introduction to hibernate
Muhammad Zeeshan
 
BOS K8S Meetup - Finetuning LLama 2 Model on GKE.pdf
BOS K8S Meetup - Finetuning LLama 2 Model on GKE.pdf
MichaelOLeary82
 
Kafka JDBC Connect Guide(Postgres Sink).pptx
Kafka JDBC Connect Guide(Postgres Sink).pptx
wonyong hwang
 

More Related Content

What's hot (20)

DSL - Domain Specific Languages, Chapter 4, Internal DSL
DSL - Domain Specific Languages, Chapter 4, Internal DSL
Hiro Yoshioka
 
What's New In Apache Lenya 1.4
What's New In Apache Lenya 1.4
nobby
 
Symfony 2.0
Symfony 2.0
GrUSP
 
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 2, Dependency I...
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 2, Dependency I...
ZFConf Conference
 
Building High Perf Web Apps - IE8 Firestarter
Building High Perf Web Apps - IE8 Firestarter
Mithun T. Dhar
 
Merb
Merb
Yehuda Katz
 
DataMapper
DataMapper
Yehuda Katz
 
Java e i database: da JDBC a JPA
Java e i database: da JDBC a JPA
benfante
 
Zend Framework and the Doctrine2 MongoDB ODM (ZF1)
Zend Framework and the Doctrine2 MongoDB ODM (ZF1)
Ryan Mauger
 
Php unit the-mostunknownparts
Php unit the-mostunknownparts
Bastian Feder
 
How to Design a Great API (using flask) [ploneconf2017]
How to Design a Great API (using flask) [ploneconf2017]
Devon Bernard
 
The Beauty and the Beast
The Beauty and the Beast
Bastian Feder
 
Lean React - Patterns for High Performance [ploneconf2017]
Lean React - Patterns for High Performance [ploneconf2017]
Devon Bernard
 
groovy databases
groovy databases
Paul King
 
G*ワークショップ in 仙台 Grails(とことん)入門
G*ワークショップ in 仙台 Grails(とことん)入門
Tsuyoshi Yamamoto
 
The Beauty And The Beast Php N W09
The Beauty And The Beast Php N W09
Bastian Feder
 
concurrency with GPars
concurrency with GPars
Paul King
 
Building a Pluggable Plugin
Building a Pluggable Plugin
Brandon Dove
 
Fnt Software Solutions Pvt Ltd Placement Papers - PHP Technology
Fnt Software Solutions Pvt Ltd Placement Papers - PHP Technology
fntsofttech
 
Introduction to hibernate
Introduction to hibernate
Muhammad Zeeshan
 
DSL - Domain Specific Languages, Chapter 4, Internal DSL
DSL - Domain Specific Languages, Chapter 4, Internal DSL
Hiro Yoshioka
 
What's New In Apache Lenya 1.4
What's New In Apache Lenya 1.4
nobby
 
Symfony 2.0
Symfony 2.0
GrUSP
 
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 2, Dependency I...
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 2, Dependency I...
ZFConf Conference
 
Building High Perf Web Apps - IE8 Firestarter
Building High Perf Web Apps - IE8 Firestarter
Mithun T. Dhar
 
Java e i database: da JDBC a JPA
Java e i database: da JDBC a JPA
benfante
 
Zend Framework and the Doctrine2 MongoDB ODM (ZF1)
Zend Framework and the Doctrine2 MongoDB ODM (ZF1)
Ryan Mauger
 
Php unit the-mostunknownparts
Php unit the-mostunknownparts
Bastian Feder
 
How to Design a Great API (using flask) [ploneconf2017]
How to Design a Great API (using flask) [ploneconf2017]
Devon Bernard
 
The Beauty and the Beast
The Beauty and the Beast
Bastian Feder
 
Lean React - Patterns for High Performance [ploneconf2017]
Lean React - Patterns for High Performance [ploneconf2017]
Devon Bernard
 
groovy databases
groovy databases
Paul King
 
G*ワークショップ in 仙台 Grails(とことん)入門
G*ワークショップ in 仙台 Grails(とことん)入門
Tsuyoshi Yamamoto
 
The Beauty And The Beast Php N W09
The Beauty And The Beast Php N W09
Bastian Feder
 
concurrency with GPars
concurrency with GPars
Paul King
 
Building a Pluggable Plugin
Building a Pluggable Plugin
Brandon Dove
 
Fnt Software Solutions Pvt Ltd Placement Papers - PHP Technology
Fnt Software Solutions Pvt Ltd Placement Papers - PHP Technology
fntsofttech
 

Similar to Design of bare metal proxy compute node (20)

BOS K8S Meetup - Finetuning LLama 2 Model on GKE.pdf
BOS K8S Meetup - Finetuning LLama 2 Model on GKE.pdf
MichaelOLeary82
 
Kafka JDBC Connect Guide(Postgres Sink).pptx
Kafka JDBC Connect Guide(Postgres Sink).pptx
wonyong hwang
 
Puppet at Opera Sofware - PuppetCamp Oslo 2013
Puppet at Opera Sofware - PuppetCamp Oslo 2013
Cosimo Streppone
 
Symfony2 and Doctrine2 Integration
Symfony2 and Doctrine2 Integration
Jonathan Wage
 
Go Faster With Native Compilation
Go Faster With Native Compilation
PGConf APAC
 
Go faster with_native_compilation Part-2
Go faster with_native_compilation Part-2
Rajeev Rastogi (KRR)
 
C Assignment Help
C Assignment Help
Programming Homework Help
 
ARGUS - THE OMNISCIENT CI
ARGUS - THE OMNISCIENT CI
Cosmin Poieana
 
Go Faster With Native Compilation
Go Faster With Native Compilation
Rajeev Rastogi (KRR)
 
First Steps in Drupal Code Driven Development
First Steps in Drupal Code Driven Development
Nuvole
 
kubernetes practice
kubernetes practice
wonyong hwang
 
XPDDS18: Xenwatch Multithreading - Dongli Zhang, Oracle
XPDDS18: Xenwatch Multithreading - Dongli Zhang, Oracle
The Linux Foundation
 
Cloud RPI4 tomcat ARM64
Cloud RPI4 tomcat ARM64
Jean-Frederic Clere
 
Process Address Space: The way to create virtual address (page table) of user...
Process Address Space: The way to create virtual address (page table) of user...
Adrian Huang
 
Working with core dump
Working with core dump
Thierry Gayet
 
Jaime Blasco & Pablo Rincón - Lost in translation: WTF is happening inside m...
Jaime Blasco & Pablo Rincón - Lost in translation: WTF is happening inside m...
RootedCON
 
Wtf is happening_inside_my_android_phone_public
Wtf is happening_inside_my_android_phone_public
Jaime Blasco
 
R-House (LSRC)
R-House (LSRC)
Fernand Galiana
 
Basics of building a blackfin application
Basics of building a blackfin application
Pantech ProLabs India Pvt Ltd
 
PhpBB meets Symfony2
PhpBB meets Symfony2
Fabien Potencier
 
BOS K8S Meetup - Finetuning LLama 2 Model on GKE.pdf
BOS K8S Meetup - Finetuning LLama 2 Model on GKE.pdf
MichaelOLeary82
 
Kafka JDBC Connect Guide(Postgres Sink).pptx
Kafka JDBC Connect Guide(Postgres Sink).pptx
wonyong hwang
 
Puppet at Opera Sofware - PuppetCamp Oslo 2013
Puppet at Opera Sofware - PuppetCamp Oslo 2013
Cosimo Streppone
 
Symfony2 and Doctrine2 Integration
Symfony2 and Doctrine2 Integration
Jonathan Wage
 
Go Faster With Native Compilation
Go Faster With Native Compilation
PGConf APAC
 
Go faster with_native_compilation Part-2
Go faster with_native_compilation Part-2
Rajeev Rastogi (KRR)
 
ARGUS - THE OMNISCIENT CI
ARGUS - THE OMNISCIENT CI
Cosmin Poieana
 
First Steps in Drupal Code Driven Development
First Steps in Drupal Code Driven Development
Nuvole
 
XPDDS18: Xenwatch Multithreading - Dongli Zhang, Oracle
XPDDS18: Xenwatch Multithreading - Dongli Zhang, Oracle
The Linux Foundation
 
Process Address Space: The way to create virtual address (page table) of user...
Process Address Space: The way to create virtual address (page table) of user...
Adrian Huang
 
Working with core dump
Working with core dump
Thierry Gayet
 
Jaime Blasco & Pablo Rincón - Lost in translation: WTF is happening inside m...
Jaime Blasco & Pablo Rincón - Lost in translation: WTF is happening inside m...
RootedCON
 
Wtf is happening_inside_my_android_phone_public
Wtf is happening_inside_my_android_phone_public
Jaime Blasco
 
Ad

Recently uploaded (20)

Lessons Learned from Developing Secure AI Workflows.pdf
Lessons Learned from Developing Secure AI Workflows.pdf
Priyanka Aash
 
AI vs Human Writing: Can You Tell the Difference?
AI vs Human Writing: Can You Tell the Difference?
Shashi Sathyanarayana, Ph.D
 
GenAI Opportunities and Challenges - Where 370 Enterprises Are Focusing Now.pdf
GenAI Opportunities and Challenges - Where 370 Enterprises Are Focusing Now.pdf
Priyanka Aash
 
cnc-processing-centers-centateq-p-110-en.pdf
cnc-processing-centers-centateq-p-110-en.pdf
AmirStern2
 
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik
 
Securing AI - There Is No Try, Only Do!.pdf
Securing AI - There Is No Try, Only Do!.pdf
Priyanka Aash
 
The Future of Technology: 2025-2125 by Saikat Basu.pdf
The Future of Technology: 2025-2125 by Saikat Basu.pdf
Saikat Basu
 
Improving Data Integrity: Synchronization between EAM and ArcGIS Utility Netw...
Improving Data Integrity: Synchronization between EAM and ArcGIS Utility Netw...
Safe Software
 
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Alliance
 
Connecting Data and Intelligence: The Role of FME in Machine Learning
Connecting Data and Intelligence: The Role of FME in Machine Learning
Safe Software
 
Security Tips for Enterprise Azure Solutions
Security Tips for Enterprise Azure Solutions
Michele Leroux Bustamante
 
"Database isolation: how we deal with hundreds of direct connections to the d...
"Database isolation: how we deal with hundreds of direct connections to the d...
Fwdays
 
Python Conference Singapore - 19 Jun 2025
Python Conference Singapore - 19 Jun 2025
ninefyi
 
ReSTIR [DI]: Spatiotemporal reservoir resampling for real-time ray tracing ...
ReSTIR [DI]: Spatiotemporal reservoir resampling for real-time ray tracing ...
revolcs10
 
Cluster-Based Multi-Objective Metamorphic Test Case Pair Selection for Deep N...
Cluster-Based Multi-Objective Metamorphic Test Case Pair Selection for Deep N...
janeliewang985
 
FIDO Seminar: Authentication for a Billion Consumers - Amazon.pptx
FIDO Seminar: Authentication for a Billion Consumers - Amazon.pptx
FIDO Alliance
 
Creating Inclusive Digital Learning with AI: A Smarter, Fairer Future
Creating Inclusive Digital Learning with AI: A Smarter, Fairer Future
Impelsys Inc.
 
FIDO Seminar: Targeting Trust: The Future of Identity in the Workforce.pptx
FIDO Seminar: Targeting Trust: The Future of Identity in the Workforce.pptx
FIDO Alliance
 
“Key Requirements to Successfully Implement Generative AI in Edge Devices—Opt...
“Key Requirements to Successfully Implement Generative AI in Edge Devices—Opt...
Edge AI and Vision Alliance
 
9-1-1 Addressing: End-to-End Automation Using FME
9-1-1 Addressing: End-to-End Automation Using FME
Safe Software
 
Lessons Learned from Developing Secure AI Workflows.pdf
Lessons Learned from Developing Secure AI Workflows.pdf
Priyanka Aash
 
AI vs Human Writing: Can You Tell the Difference?
AI vs Human Writing: Can You Tell the Difference?
Shashi Sathyanarayana, Ph.D
 
GenAI Opportunities and Challenges - Where 370 Enterprises Are Focusing Now.pdf
GenAI Opportunities and Challenges - Where 370 Enterprises Are Focusing Now.pdf
Priyanka Aash
 
cnc-processing-centers-centateq-p-110-en.pdf
cnc-processing-centers-centateq-p-110-en.pdf
AmirStern2
 
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik
 
Securing AI - There Is No Try, Only Do!.pdf
Securing AI - There Is No Try, Only Do!.pdf
Priyanka Aash
 
The Future of Technology: 2025-2125 by Saikat Basu.pdf
The Future of Technology: 2025-2125 by Saikat Basu.pdf
Saikat Basu
 
Improving Data Integrity: Synchronization between EAM and ArcGIS Utility Netw...
Improving Data Integrity: Synchronization between EAM and ArcGIS Utility Netw...
Safe Software
 
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Alliance
 
Connecting Data and Intelligence: The Role of FME in Machine Learning
Connecting Data and Intelligence: The Role of FME in Machine Learning
Safe Software
 
Security Tips for Enterprise Azure Solutions
Security Tips for Enterprise Azure Solutions
Michele Leroux Bustamante
 
"Database isolation: how we deal with hundreds of direct connections to the d...
"Database isolation: how we deal with hundreds of direct connections to the d...
Fwdays
 
Python Conference Singapore - 19 Jun 2025
Python Conference Singapore - 19 Jun 2025
ninefyi
 
ReSTIR [DI]: Spatiotemporal reservoir resampling for real-time ray tracing ...
ReSTIR [DI]: Spatiotemporal reservoir resampling for real-time ray tracing ...
revolcs10
 
Cluster-Based Multi-Objective Metamorphic Test Case Pair Selection for Deep N...
Cluster-Based Multi-Objective Metamorphic Test Case Pair Selection for Deep N...
janeliewang985
 
FIDO Seminar: Authentication for a Billion Consumers - Amazon.pptx
FIDO Seminar: Authentication for a Billion Consumers - Amazon.pptx
FIDO Alliance
 
Creating Inclusive Digital Learning with AI: A Smarter, Fairer Future
Creating Inclusive Digital Learning with AI: A Smarter, Fairer Future
Impelsys Inc.
 
FIDO Seminar: Targeting Trust: The Future of Identity in the Workforce.pptx
FIDO Seminar: Targeting Trust: The Future of Identity in the Workforce.pptx
FIDO Alliance
 
“Key Requirements to Successfully Implement Generative AI in Edge Devices—Opt...
“Key Requirements to Successfully Implement Generative AI in Edge Devices—Opt...
Edge AI and Vision Alliance
 
9-1-1 Addressing: End-to-End Automation Using FME
9-1-1 Addressing: End-to-End Automation Using FME
Safe Software
 
Ad

Design of bare metal proxy compute node

  • 1. + Design of general bare_metal proxy compute node Mikyung Kang ([email protected]) Dong-In Kang ([email protected]) 1 May 20, 2011
  • 2. TODO [1] nova.conf + 2 Current Version Next Version Proxy Compute Node Proxy Compute Node LibvirtConnection LibvirtConnection (libvirt_conn.py) proxy_baremetal (libvirt_conn.py) --connection_type=libvirt specific model --connection_type=libvirt --connection_type=gpu --connection_type=gpu ProxyConnection (proxy_baremetal.py) 1 --connection_type=baremetal --connection_type=tilera gPXE.py? TileraConnection TileraConnection ….. ArmConnection (tilera.py) (tilera.py) (arm.py) --baremetal_driver=arm HeckleConnection 2 --baremetal_driver=tilera (heckle.py) --baremetal_driver=heckle Specific arch. or 1.  Changing --connection_type: tilera  baremetal Specific provisioning tool 2.  Adding –baremetal_driver option in nova.conf: tilera/arm/heckle/…
  • 3. TODO [2] proxy_baremetal.py overview + 3 Next Version Proxy Compute Node --connection_type=baremetal def create_domain(..): ProxyConnection … (proxy_baremetal.py) load bare_metal as –baremetal_driver in nova.conf baremetal_id = bare_metal.get_idle_node() new_dom = { class ProxyConnection ’baremetal_type': bare_metal, def _get_connection(..): ’baremetal_id': baremetal_id, // _conn <- baremetal_doms 'name': xml_dict['name'], def destroy(..): 'mac_address': xml_dict['mac_address'], // _conn.destroy_domain(..) 'ip_address': xml_dict['ip_address'], // db.instance_set_state(..) 'dhcp_server': xml_dict['dhcp_server'], 'image_id': xml_dict['image_id'], def reboot(..): 'kernel_id': xml_dict['kernel_id'], // _conn.reboot_domain(..) 'ramdisk_id': xml_dict['ramdisk_id'], // db.instance_set_state(..) 'status': power_state.NOSTATE} def spawn(..): self.domains.append(new_dom) // inject key into image self.change_domain_state(..) // _conn.create_domain(..) bare_metal.set_fs(..) // db.instance_set_state(..) bare_metal.activate_node(..) def get_console_output(..): … // console_log
  • 4. TODO [3] proxy_baremetal.py: domain management + 4 •  bare_metal.get_idle_node() is needed baremetal_id - ID format is different system by system - ID can be board_number or string name - “baremetal_type” and “baremetal_id” - return value: baremetal_id •  bare_metal.get_status() & set_status() are needed - Status can be number(0/1) or string (None/ALLOCATED) - argument and return value: 0/1 (conversion) Tilera: <board_id> 0 ~ 9 Status field is added in __init__ [{'status': 0, 'kernel_id': '1896115634’, 'ramdisk_id': '', 'image_id': '1552326678', 'ip_address': '10.9.1.45’, 'board_id': 2, 'name': 'instance-00000046', 'vcpus': 1L, 'mac_address': '02:16:3e:1f:84:69', 'dhcp_server': '10.9.1.1'}] ‘baremetal_type’:’tilera’, ‘baremetal_id’:2 Heckle: <Name> bb01~
  • 5. TODO [4] proxy_baremetal.py: get_image & set_image + 5 •  bare_metal.get_image(baremetal_id) is needed set_fs - Case#1: passed image by euca-run-instances (every time) - no needed - Case#2: fake bare metal image / no passed image (manual) - Actual images should be passed - After getting images (path) from bare_metal, vmlinux/initrd/disk should be copied to basepath/. Then key should be injected to real disk image. •  bare_metal.set_image(baremetal_id) is needed - In case that specific directory is used for images (/tftpboot/), it should pass the key injected image into specific directory Tilera: bpath/root -> /tftpboot/fs_x.tar.gz /tftpboot [{'status': 0, 'kernel_id': '1896115634’, 'ramdisk_id': '', 'image_id': '1552326678', 'ip_address': '10.9.1.45’, 'board_id': 2, 'name': 'instance-00000046', 'vcpus': 1L, 'mac_address': '02:16:3e:1f:84:69', 'dhcp_server': '10.9.1.1'}] /bootconfig Heckle: <Image> /node /image /hardware /user /powercontroller …
  • 6. TODO [5] proxy_baremetal.py: activate_node + 6 •  bare_metal.activate_node(baremetal_id, ip_addr, mac_addr) Activate_node - In case of Tilera, the first/second boot use different vmlinux. In case of Heckle, script is used for setting activation -> bare_metal.boot_set() (Tilera:mboot <-> gPXE script) - Tilera uses ePDU management script <-> IPMI -> bare_metal.power_mgr() -> bare_metal.check_activated() - Some settings for network and services are needed -> bare_metal.network_set() •  bare_metal.deactivate_node(baremetal_id) is needed [destroy] Tilera: /tftpboot/vmalinux_x_1 and _2 Heckle: <vmlinux>
  • 7. TODO [6] proxy_baremetal.py: get_console_output + 7 •  bare_metal.get_console_output(instance) is needed console_output - In case of Tilera, /proc/kmsg output is saved offline and then reused whenever it is needed b/c MDE 2.0 doesn’t support dmesg - Most bare metal machines can get dmesg output and then save before running OpenStack Tilera:
  • 8. TODO [7] proxy_baremetal.py: update_available_resource() + 8 •  Needed host information update_resource - get_vcpu_total() - get_memory_mb_total() - get_local_gb_total() - get_vcpu_used() - get_memory_mb_used() - get_local_gb_used() - get_hypervisor_type() - get_hypervisor_version() - get_cpu_info() •  bare_metal.get_hw_info(field) is needed - In case of Tilera, all information is saved into tilera_boards file, and each field is loaded from file when running OpenStack, and then each specific field is retrieved through “field” arg. - vcpu: # of bare_metal node, it should be changed acct. #(run) - total/used: each information of each node - Assumption: one proxy bare_metal for homogeneous machines Tilera: tilera_boards Heckle: Properties
  • 9. Overview + Should be separated into 2 or 3 files and each func. 9 should be added/modified! --connection_type=baremetal proxy_baremetal.py baremetal_dom.py arch.py (ex. tilera.py) __init__ __init__ class _nodes def set_status() Init_host() read_domain_from_file() def check_idle_node() _get_connection() reboot_domain() def get_idle_node() def find_ip_w_id() destroy() destroy_domain() def free_node() reboot() create_domain() def deactivate_node() def activate_node() spawn() change_domain_state() get_console_output() store_domain() def get_hw_info() def get_image() update_available_resource() find_domain() def set_image() … list_domains() def get_console_output() def check_activated() get_domain_info() … … --baremetal_driver=arch or tool (tilera/arm/heckle/…)