SlideShare a Scribd company logo
1 of 45
Download to read offline
Convert2rhel Development: The Actions
Framework
05/08/2023 2
Goals of this Presentation?
05/08/2023 3
Goals of this Presentation?
●
Write a new Action
05/08/2023 4
Goals of this Presentation?
●
Write a new Action
●
Fix bugs in the Action Framework
05/08/2023 5
Writing New Actions: File Layout
05/08/2023 6
Writing New Actions: File Layout
●
Python modules live in convert2rhel/actions/{stage}/{action}.py
05/08/2023 7
Writing New Actions: File Layout
●
Python modules live in convert2rhel/actions/{stage}/{action}.py
●
All Actions in a stage run before the next stage
05/08/2023 8
Writing New Actions: File Layout
●
Python modules live in convert2rhel/actions/{stage}/{action}.py
●
All Actions in a stage run before the next stage
●
Currently two stages:
●
system_checks
●
pre_ponr_changes
05/08/2023 10
Writing New Actions: Code Structure
●
Each Action is a class in a module
05/08/2023 11
Writing New Actions: Code Structure
●
Each Action is a class in a module
●
Must contain subclasses of convert2rhel.actions.Action
●
Must set a unique id
●
Must implement a run() method
●
Should call super().__init__()
●
Should log a task header with logger.task()
●
Default result is success. Specify a different result with set_result()
followed by return
05/08/2023 17
Writing New Actions: Code Structure
●
Each Action is a class in a module
●
Must contain subclasses of convert2rhel.actions.Action
●
Must set a unique id
●
Must implement a run() method
●
Should call super().__init__()
●
Should log a task header with logger.task()
●
Default result is success. Specify a different result with set_result()
followed by return
05/08/2023 18
Writing New Actions: Code Structure
●
Each Action is a class in a module
●
Must contain subclasses of convert2rhel.actions.Action
●
Must set a unique id
●
Must implement a run() method
●
Should call super().__init__()
●
Should log a task header with logger.task()
●
Default result is success. Specify a different result with set_result()
followed by return
●
Dependencies
05/08/2023 21
Writing New Actions: Code Structure
●
Each Action is a class in a module
●
Must contain subclasses of convert2rhel.actions.Action
●
Must set a unique id
●
Must implement a run() method
●
Should call super().__init__()
●
Should log a task header with logger.task()
●
Default result is success. Specify a different result with set_result()
followed by return
●
Dependencies
05/08/2023 22
The Action Framework
05/08/2023 23
The Action Framework
●
Two main entry points
05/08/2023 24
The Action Framework
●
Two main entry points
●
actions.run_actions()
●
actions.report.summary()
05/08/2023 27
run_actions()
●
run_actions() has four tasks
05/08/2023 28
run_actions()
●
run_actions() has four tasks
●
Set up the Stages
●
Check the dependencies
●
Run the actions
●
Format the results as a dictionary
05/08/2023 34
A brief word on Stages
05/08/2023 35
A brief word on Stages
●
Discover the Actions in this Stage
●
Figure out the dependency order of Actions
●
Run the Actions
05/08/2023 36
A brief word on Stages
●
Discover the Actions in this Stage
●
Stage("system_checks", "Check whether system is ready for
conversion", pre_ponr_changes)
●
Helper function, get_actions()
●
All subclasses of convert2rhel.actions.Action...
●
… inside of a specific subdirectory of convert2rhel/actions
●
Knows about Stages that come afterwards
●
Figure out the dependency order of Actions
●
Run the Actions
05/08/2023 37
A brief word on Stages
●
Discover the Actions in this Stage
●
Figure out the dependency order of Actions
●
Helper function resolve_action_order()
●
Used for both Stage.check_dependencies() and Stage.run()
●
Knows about all Stages which come afterwards
●
Run the Actions
05/08/2023 38
A brief word on Stages
●
Discover the Actions in this Stage
●
Figure out the dependency order of Actions
●
Run the Actions
●
Run in order
●
Record failures
●
Skip tests whose dependencies have failed
●
Catch unhandled exceptions with a generic Error.
05/08/2023 39
The Report
05/08/2023 40
The Report
●
convert2rhel.actions.report.summary()
05/08/2023 41
The Report
●
convert2rhel.actions.report.summary()
●
All data is in the results
05/08/2023 42
The Report
●
convert2rhel.actions.report.summary()
●
All data is in the results
●
Formats the data
●
Can filter out successes
●
Colorizes
●
Indents
●
Sorts by severity
05/08/2023 43
The Report
●
convert2rhel.actions.report.summary()
●
All data is in the results
●
Formats the data
●
Can filter out successes
●
Colorizes
●
Indents
●
Sorts by severity
●
Future:
●
Add Warnings and other messages to the report
05/08/2023 44
The Report
●
convert2rhel.actions.report.summary()
●
All data is in the results
●
Formats the data
●
Can filter out successes
●
Colorizes
●
Indents
●
Sorts by severity
●
Future:
●
Add Warnings and other messages to the report
●
A json version of the report for other programs to consume
05/08/2023 45
People and places
●
Pull Request:
●
https://github.com/oamg/convert2rhel/pull/761
●
Preston and Rodolfo: Writing Actions
●
Rodolfo: Report
●
Toshio: Dependencies, Stages, and the Framework in general

More Related Content

Similar to Convert2rhel Development: The Actions Framework

Gradle - the Enterprise Automation Tool
Gradle  - the Enterprise Automation ToolGradle  - the Enterprise Automation Tool
Gradle - the Enterprise Automation ToolIzzet Mustafaiev
 
JS Fest 2018. Anna Herlihy. How to Write a Compass Plugin
JS Fest 2018. Anna Herlihy. How to Write a Compass PluginJS Fest 2018. Anna Herlihy. How to Write a Compass Plugin
JS Fest 2018. Anna Herlihy. How to Write a Compass PluginJSFestUA
 
RPA Summer School Studio Session 4 AMER: Advanced practices with Studio and O...
RPA Summer School Studio Session 4 AMER: Advanced practices with Studio and O...RPA Summer School Studio Session 4 AMER: Advanced practices with Studio and O...
RPA Summer School Studio Session 4 AMER: Advanced practices with Studio and O...Diana Gray, MBA
 
1BM_S4CLD2302_BPD_EN_US.docx
1BM_S4CLD2302_BPD_EN_US.docx1BM_S4CLD2302_BPD_EN_US.docx
1BM_S4CLD2302_BPD_EN_US.docxnavinsurya3
 
Advanced Dagger talk from 360andev
Advanced Dagger talk from 360andevAdvanced Dagger talk from 360andev
Advanced Dagger talk from 360andevMike Nakhimovich
 
Git and git workflow best practice
Git and git workflow best practiceGit and git workflow best practice
Git and git workflow best practiceMajid Hosseini
 
Sprint 125
Sprint 125Sprint 125
Sprint 125ManageIQ
 
Suite Script 2.0 API Basics
Suite Script 2.0 API BasicsSuite Script 2.0 API Basics
Suite Script 2.0 API BasicsJimmy Butare
 
ASP.Net Technologies Part-2
ASP.Net Technologies Part-2ASP.Net Technologies Part-2
ASP.Net Technologies Part-2Vasudev Sharma
 
Performance Profiling Tools & Tricks
Performance Profiling Tools & TricksPerformance Profiling Tools & Tricks
Performance Profiling Tools & TricksAll Things Open
 
Performance Profiling Tools and Tricks
Performance Profiling Tools and TricksPerformance Profiling Tools and Tricks
Performance Profiling Tools and TricksPhase2
 
ServiceNow Knowledge11 Advanced Scripting & Debugging Lab
ServiceNow Knowledge11 Advanced Scripting & Debugging LabServiceNow Knowledge11 Advanced Scripting & Debugging Lab
ServiceNow Knowledge11 Advanced Scripting & Debugging LabJohn Roberts
 
Dependency injection using dagger2
Dependency injection using dagger2Dependency injection using dagger2
Dependency injection using dagger2Javad Hashemi
 
CICD Pipeline configuration as a code
CICD Pipeline configuration as a codeCICD Pipeline configuration as a code
CICD Pipeline configuration as a codeGrid Dynamics
 
Git Branching and Merging.pptx
Git Branching and Merging.pptxGit Branching and Merging.pptx
Git Branching and Merging.pptxtapanvyas11
 

Similar to Convert2rhel Development: The Actions Framework (20)

FuzzyDebugger.pdf
FuzzyDebugger.pdfFuzzyDebugger.pdf
FuzzyDebugger.pdf
 
Drupal 7 rules module
Drupal 7 rules moduleDrupal 7 rules module
Drupal 7 rules module
 
Gradle - the Enterprise Automation Tool
Gradle  - the Enterprise Automation ToolGradle  - the Enterprise Automation Tool
Gradle - the Enterprise Automation Tool
 
Praes
PraesPraes
Praes
 
Spring batch overivew
Spring batch overivewSpring batch overivew
Spring batch overivew
 
JS Fest 2018. Anna Herlihy. How to Write a Compass Plugin
JS Fest 2018. Anna Herlihy. How to Write a Compass PluginJS Fest 2018. Anna Herlihy. How to Write a Compass Plugin
JS Fest 2018. Anna Herlihy. How to Write a Compass Plugin
 
Shared Memory
Shared MemoryShared Memory
Shared Memory
 
RPA Summer School Studio Session 4 AMER: Advanced practices with Studio and O...
RPA Summer School Studio Session 4 AMER: Advanced practices with Studio and O...RPA Summer School Studio Session 4 AMER: Advanced practices with Studio and O...
RPA Summer School Studio Session 4 AMER: Advanced practices with Studio and O...
 
1BM_S4CLD2302_BPD_EN_US.docx
1BM_S4CLD2302_BPD_EN_US.docx1BM_S4CLD2302_BPD_EN_US.docx
1BM_S4CLD2302_BPD_EN_US.docx
 
Advanced Dagger talk from 360andev
Advanced Dagger talk from 360andevAdvanced Dagger talk from 360andev
Advanced Dagger talk from 360andev
 
Git and git workflow best practice
Git and git workflow best practiceGit and git workflow best practice
Git and git workflow best practice
 
Sprint 125
Sprint 125Sprint 125
Sprint 125
 
Suite Script 2.0 API Basics
Suite Script 2.0 API BasicsSuite Script 2.0 API Basics
Suite Script 2.0 API Basics
 
ASP.Net Technologies Part-2
ASP.Net Technologies Part-2ASP.Net Technologies Part-2
ASP.Net Technologies Part-2
 
Performance Profiling Tools & Tricks
Performance Profiling Tools & TricksPerformance Profiling Tools & Tricks
Performance Profiling Tools & Tricks
 
Performance Profiling Tools and Tricks
Performance Profiling Tools and TricksPerformance Profiling Tools and Tricks
Performance Profiling Tools and Tricks
 
ServiceNow Knowledge11 Advanced Scripting & Debugging Lab
ServiceNow Knowledge11 Advanced Scripting & Debugging LabServiceNow Knowledge11 Advanced Scripting & Debugging Lab
ServiceNow Knowledge11 Advanced Scripting & Debugging Lab
 
Dependency injection using dagger2
Dependency injection using dagger2Dependency injection using dagger2
Dependency injection using dagger2
 
CICD Pipeline configuration as a code
CICD Pipeline configuration as a codeCICD Pipeline configuration as a code
CICD Pipeline configuration as a code
 
Git Branching and Merging.pptx
Git Branching and Merging.pptxGit Branching and Merging.pptx
Git Branching and Merging.pptx
 

Recently uploaded

A Deep Dive into Secure Product Development Frameworks.pdf
A Deep Dive into Secure Product Development Frameworks.pdfA Deep Dive into Secure Product Development Frameworks.pdf
A Deep Dive into Secure Product Development Frameworks.pdfICS
 
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...Lisi Hocke
 
Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...
Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...
Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...drm1699
 
Software Engineering - Introduction + Process Models + Requirements Engineering
Software Engineering - Introduction + Process Models + Requirements EngineeringSoftware Engineering - Introduction + Process Models + Requirements Engineering
Software Engineering - Introduction + Process Models + Requirements EngineeringPrakhyath Rai
 
The Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdf
The Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdfThe Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdf
The Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdfkalichargn70th171
 
Weeding your micro service landscape.pdf
Weeding your micro service landscape.pdfWeeding your micro service landscape.pdf
Weeding your micro service landscape.pdftimtebeek1
 
The mythical technical debt. (Brooke, please, forgive me)
The mythical technical debt. (Brooke, please, forgive me)The mythical technical debt. (Brooke, please, forgive me)
The mythical technical debt. (Brooke, please, forgive me)Roberto Bettazzoni
 
Evolving Data Governance for the Real-time Streaming and AI Era
Evolving Data Governance for the Real-time Streaming and AI EraEvolving Data Governance for the Real-time Streaming and AI Era
Evolving Data Governance for the Real-time Streaming and AI Eraconfluent
 
Novo Nordisk: When Knowledge Graphs meet LLMs
Novo Nordisk: When Knowledge Graphs meet LLMsNovo Nordisk: When Knowledge Graphs meet LLMs
Novo Nordisk: When Knowledge Graphs meet LLMsNeo4j
 
Rapidoform for Modern Form Building and Insights
Rapidoform for Modern Form Building and InsightsRapidoform for Modern Form Building and Insights
Rapidoform for Modern Form Building and Insightsrapidoform
 
architecting-ai-in-the-enterprise-apis-and-applications.pdf
architecting-ai-in-the-enterprise-apis-and-applications.pdfarchitecting-ai-in-the-enterprise-apis-and-applications.pdf
architecting-ai-in-the-enterprise-apis-and-applications.pdfWSO2
 
Lessons Learned from Building a Serverless Notifications System.pdf
Lessons Learned from Building a Serverless Notifications System.pdfLessons Learned from Building a Serverless Notifications System.pdf
Lessons Learned from Building a Serverless Notifications System.pdfSrushith Repakula
 
Alluxio Monthly Webinar | Simplify Data Access for AI in Multi-Cloud
Alluxio Monthly Webinar | Simplify Data Access for AI in Multi-CloudAlluxio Monthly Webinar | Simplify Data Access for AI in Multi-Cloud
Alluxio Monthly Webinar | Simplify Data Access for AI in Multi-CloudAlluxio, Inc.
 
Community is Just as Important as Code by Andrea Goulet
Community is Just as Important as Code by Andrea GouletCommunity is Just as Important as Code by Andrea Goulet
Community is Just as Important as Code by Andrea GouletAndrea Goulet
 
Transformer Neural Network Use Cases with Links
Transformer Neural Network Use Cases with LinksTransformer Neural Network Use Cases with Links
Transformer Neural Network Use Cases with LinksJinanKordab
 
Workshop - Architecting Innovative Graph Applications- GraphSummit Milan
Workshop -  Architecting Innovative Graph Applications- GraphSummit MilanWorkshop -  Architecting Innovative Graph Applications- GraphSummit Milan
Workshop - Architecting Innovative Graph Applications- GraphSummit MilanNeo4j
 

Recently uploaded (20)

A Deep Dive into Secure Product Development Frameworks.pdf
A Deep Dive into Secure Product Development Frameworks.pdfA Deep Dive into Secure Product Development Frameworks.pdf
A Deep Dive into Secure Product Development Frameworks.pdf
 
Abortion Pill Prices Mthatha (@](+27832195400*)[ 🏥 Women's Abortion Clinic In...
Abortion Pill Prices Mthatha (@](+27832195400*)[ 🏥 Women's Abortion Clinic In...Abortion Pill Prices Mthatha (@](+27832195400*)[ 🏥 Women's Abortion Clinic In...
Abortion Pill Prices Mthatha (@](+27832195400*)[ 🏥 Women's Abortion Clinic In...
 
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...
 
Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...
Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...
Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...
 
Abortion Pill Prices Germiston ](+27832195400*)[ 🏥 Women's Abortion Clinic in...
Abortion Pill Prices Germiston ](+27832195400*)[ 🏥 Women's Abortion Clinic in...Abortion Pill Prices Germiston ](+27832195400*)[ 🏥 Women's Abortion Clinic in...
Abortion Pill Prices Germiston ](+27832195400*)[ 🏥 Women's Abortion Clinic in...
 
Software Engineering - Introduction + Process Models + Requirements Engineering
Software Engineering - Introduction + Process Models + Requirements EngineeringSoftware Engineering - Introduction + Process Models + Requirements Engineering
Software Engineering - Introduction + Process Models + Requirements Engineering
 
Abortion Clinic In Pretoria ](+27832195400*)[ 🏥 Safe Abortion Pills in Pretor...
Abortion Clinic In Pretoria ](+27832195400*)[ 🏥 Safe Abortion Pills in Pretor...Abortion Clinic In Pretoria ](+27832195400*)[ 🏥 Safe Abortion Pills in Pretor...
Abortion Clinic In Pretoria ](+27832195400*)[ 🏥 Safe Abortion Pills in Pretor...
 
The Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdf
The Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdfThe Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdf
The Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdf
 
Weeding your micro service landscape.pdf
Weeding your micro service landscape.pdfWeeding your micro service landscape.pdf
Weeding your micro service landscape.pdf
 
The mythical technical debt. (Brooke, please, forgive me)
The mythical technical debt. (Brooke, please, forgive me)The mythical technical debt. (Brooke, please, forgive me)
The mythical technical debt. (Brooke, please, forgive me)
 
Evolving Data Governance for the Real-time Streaming and AI Era
Evolving Data Governance for the Real-time Streaming and AI EraEvolving Data Governance for the Real-time Streaming and AI Era
Evolving Data Governance for the Real-time Streaming and AI Era
 
Novo Nordisk: When Knowledge Graphs meet LLMs
Novo Nordisk: When Knowledge Graphs meet LLMsNovo Nordisk: When Knowledge Graphs meet LLMs
Novo Nordisk: When Knowledge Graphs meet LLMs
 
Rapidoform for Modern Form Building and Insights
Rapidoform for Modern Form Building and InsightsRapidoform for Modern Form Building and Insights
Rapidoform for Modern Form Building and Insights
 
architecting-ai-in-the-enterprise-apis-and-applications.pdf
architecting-ai-in-the-enterprise-apis-and-applications.pdfarchitecting-ai-in-the-enterprise-apis-and-applications.pdf
architecting-ai-in-the-enterprise-apis-and-applications.pdf
 
Lessons Learned from Building a Serverless Notifications System.pdf
Lessons Learned from Building a Serverless Notifications System.pdfLessons Learned from Building a Serverless Notifications System.pdf
Lessons Learned from Building a Serverless Notifications System.pdf
 
Abortion Clinic In Springs ](+27832195400*)[ 🏥 Safe Abortion Pills in Springs...
Abortion Clinic In Springs ](+27832195400*)[ 🏥 Safe Abortion Pills in Springs...Abortion Clinic In Springs ](+27832195400*)[ 🏥 Safe Abortion Pills in Springs...
Abortion Clinic In Springs ](+27832195400*)[ 🏥 Safe Abortion Pills in Springs...
 
Alluxio Monthly Webinar | Simplify Data Access for AI in Multi-Cloud
Alluxio Monthly Webinar | Simplify Data Access for AI in Multi-CloudAlluxio Monthly Webinar | Simplify Data Access for AI in Multi-Cloud
Alluxio Monthly Webinar | Simplify Data Access for AI in Multi-Cloud
 
Community is Just as Important as Code by Andrea Goulet
Community is Just as Important as Code by Andrea GouletCommunity is Just as Important as Code by Andrea Goulet
Community is Just as Important as Code by Andrea Goulet
 
Transformer Neural Network Use Cases with Links
Transformer Neural Network Use Cases with LinksTransformer Neural Network Use Cases with Links
Transformer Neural Network Use Cases with Links
 
Workshop - Architecting Innovative Graph Applications- GraphSummit Milan
Workshop -  Architecting Innovative Graph Applications- GraphSummit MilanWorkshop -  Architecting Innovative Graph Applications- GraphSummit Milan
Workshop - Architecting Innovative Graph Applications- GraphSummit Milan
 

Convert2rhel Development: The Actions Framework

  • 1. Convert2rhel Development: The Actions Framework
  • 2. 05/08/2023 2 Goals of this Presentation?
  • 3. 05/08/2023 3 Goals of this Presentation? ● Write a new Action
  • 4. 05/08/2023 4 Goals of this Presentation? ● Write a new Action ● Fix bugs in the Action Framework
  • 5. 05/08/2023 5 Writing New Actions: File Layout
  • 6. 05/08/2023 6 Writing New Actions: File Layout ● Python modules live in convert2rhel/actions/{stage}/{action}.py
  • 7. 05/08/2023 7 Writing New Actions: File Layout ● Python modules live in convert2rhel/actions/{stage}/{action}.py ● All Actions in a stage run before the next stage
  • 8. 05/08/2023 8 Writing New Actions: File Layout ● Python modules live in convert2rhel/actions/{stage}/{action}.py ● All Actions in a stage run before the next stage ● Currently two stages: ● system_checks ● pre_ponr_changes
  • 9.
  • 10. 05/08/2023 10 Writing New Actions: Code Structure ● Each Action is a class in a module
  • 11. 05/08/2023 11 Writing New Actions: Code Structure ● Each Action is a class in a module ● Must contain subclasses of convert2rhel.actions.Action ● Must set a unique id ● Must implement a run() method ● Should call super().__init__() ● Should log a task header with logger.task() ● Default result is success. Specify a different result with set_result() followed by return
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17. 05/08/2023 17 Writing New Actions: Code Structure ● Each Action is a class in a module ● Must contain subclasses of convert2rhel.actions.Action ● Must set a unique id ● Must implement a run() method ● Should call super().__init__() ● Should log a task header with logger.task() ● Default result is success. Specify a different result with set_result() followed by return
  • 18. 05/08/2023 18 Writing New Actions: Code Structure ● Each Action is a class in a module ● Must contain subclasses of convert2rhel.actions.Action ● Must set a unique id ● Must implement a run() method ● Should call super().__init__() ● Should log a task header with logger.task() ● Default result is success. Specify a different result with set_result() followed by return ● Dependencies
  • 19.
  • 20.
  • 21. 05/08/2023 21 Writing New Actions: Code Structure ● Each Action is a class in a module ● Must contain subclasses of convert2rhel.actions.Action ● Must set a unique id ● Must implement a run() method ● Should call super().__init__() ● Should log a task header with logger.task() ● Default result is success. Specify a different result with set_result() followed by return ● Dependencies
  • 23. 05/08/2023 23 The Action Framework ● Two main entry points
  • 24. 05/08/2023 24 The Action Framework ● Two main entry points ● actions.run_actions() ● actions.report.summary()
  • 25.
  • 26.
  • 28. 05/08/2023 28 run_actions() ● run_actions() has four tasks ● Set up the Stages ● Check the dependencies ● Run the actions ● Format the results as a dictionary
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34. 05/08/2023 34 A brief word on Stages
  • 35. 05/08/2023 35 A brief word on Stages ● Discover the Actions in this Stage ● Figure out the dependency order of Actions ● Run the Actions
  • 36. 05/08/2023 36 A brief word on Stages ● Discover the Actions in this Stage ● Stage("system_checks", "Check whether system is ready for conversion", pre_ponr_changes) ● Helper function, get_actions() ● All subclasses of convert2rhel.actions.Action... ● … inside of a specific subdirectory of convert2rhel/actions ● Knows about Stages that come afterwards ● Figure out the dependency order of Actions ● Run the Actions
  • 37. 05/08/2023 37 A brief word on Stages ● Discover the Actions in this Stage ● Figure out the dependency order of Actions ● Helper function resolve_action_order() ● Used for both Stage.check_dependencies() and Stage.run() ● Knows about all Stages which come afterwards ● Run the Actions
  • 38. 05/08/2023 38 A brief word on Stages ● Discover the Actions in this Stage ● Figure out the dependency order of Actions ● Run the Actions ● Run in order ● Record failures ● Skip tests whose dependencies have failed ● Catch unhandled exceptions with a generic Error.
  • 42. 05/08/2023 42 The Report ● convert2rhel.actions.report.summary() ● All data is in the results ● Formats the data ● Can filter out successes ● Colorizes ● Indents ● Sorts by severity
  • 43. 05/08/2023 43 The Report ● convert2rhel.actions.report.summary() ● All data is in the results ● Formats the data ● Can filter out successes ● Colorizes ● Indents ● Sorts by severity ● Future: ● Add Warnings and other messages to the report
  • 44. 05/08/2023 44 The Report ● convert2rhel.actions.report.summary() ● All data is in the results ● Formats the data ● Can filter out successes ● Colorizes ● Indents ● Sorts by severity ● Future: ● Add Warnings and other messages to the report ● A json version of the report for other programs to consume
  • 45. 05/08/2023 45 People and places ● Pull Request: ● https://github.com/oamg/convert2rhel/pull/761 ● Preston and Rodolfo: Writing Actions ● Rodolfo: Report ● Toshio: Dependencies, Stages, and the Framework in general