The document discusses enhancing the OpenStack Horizon dashboard user interface with AngularJS. It provides an overview of OpenStack and Horizon architectures, and then describes how to add a new panel to Horizon using AngularJS. Key aspects covered include creating RESTful APIs, controllers, views, and templates to integrate new dynamic and client-side functionality within the existing Horizon framework. The approach allows cleaner separation of client and server code for improved user experience, testing, and development velocity.
The OpenStack project was launched by Rackspace and NASA in July 2010. Since then it has gained considerable momentum, with over 200 companies joining the project.
Horizon is OpenStack’s web-based user interface. It is constructed in two parts: 1) a core set of libraries for implementing a dashboard; 2) a reference dashboard implementation that uses the core set of libraries. Customization is key to the Horizon framework. It allows developers to construct their own dashboards, panel groups, and panels, and assemble them via a common navigation/presentation framework.
In this presentation, David will provide a brief introduction to OpenStack and Horizon. Then he will review Horizon’s architecture, explain how it integrates with other OpenStack services, examine its most interesting features, and describe how to start developing with it.
The OpenStack Horizon project provides a web-based User Interface to OpenStack services. It is constructed in two parts: (1) a core set of libraries for implementing a Dashboard; (2) the dashboard implementation that uses the core set of libraries.
Horizon uses python django — server side technology
Django is a wonderful framework, but a little dated. Pre-dates the rise in client-side and single page applications.
Javascript is used for enhancing the user experience
In the time since Horizon was first architected, there have been major advances in the design, and best practices for web applications. In particular, the use of more sophisticated and robust client-side javascript frameworks like BackboneJS, AngularJS, MeteorJS, have come to the fore.
These applications provide a much more responsive user experience, much cleaner separation between the client and server, enable configuration driven interfaces, and facilitate more modular testing.
This in turn, results in shorter development cycles, more testable software, and above all, a better user experience.
In this presentation, we share some of our recent work in re-architecting parts of Horizon to take advantage of these new technologies. We discuss some of the technologies we use, our application architecture, and some of the pitfalls to avoid.
OpenStack Horizon: Controlling the Cloud using DjangoDavid Lapsley
OpenStack is an open source cloud computing project that is implemented predominantly in Python. OpenStack’s goal is to provide the "ubiquitous open source cloud computing platform for public and private clouds”. The OpenStack project was launched by Rackspace and NASA in July 2010. Since then the project has gained considerable momentum with over 200 companies joining the project, and the launch of commercial services and products that use OpenStack.
The OpenStack Horizon project provides a web-based User Interface to OpenStack services. It is constructed in two parts: (1) a core set of libraries for implementing a Dashboard; (2) a reference dashboard implementation that uses the core set of libraries. Customization is a core part of the Horizon Framework. The framework enables developers to construct their own dashboards, panel groups and panels, and enables them to assemble them together via a common navigation/presentation framework.
In this presentation, we will provide a brief introduction to OpenStack and Horizon. Then we will dive into the details of Horizon. We will review Horizon’s overall architecture and how it integrates with other OpenStack services. We will look at some of Horizon’s interesting features and describe how to get started developing with Horizon. Finally, we will discuss some of the current challenges facing Horizon and some future directions.
Slides from the Meteor Toronto Meet Up. September 21, 2016.
The session started with cursory introductions of Angular 2 and Redux. We then explore an experimental implementation of an Angular 2 Redux app with Meteor. A high level overview of the approach will be presented and then we will explore the source code guided by the curiosity of the group.
Deze presentatie is gegeven tijdens de KScope conferentie 2012
Spreker: Luc Bors
Titel: An ADF Special Report
Onderwerp: Fusion Middleware - Subonderwerp: ADF
Oracle ADF is zeer geschikt voor het bouwen van enterprise applicaties. ADF heeft echter geen ingebouwde oplossingen voor het maken van rapportages. Door het inbouwen van rapportage mogelijkheden is het niet nodig om externe rapportage tooling op te starten. Met één druk op de knop worden de rapportages getoond en krijg je snel inzicht in bedrijfskritische gegevens. In deze sessie leer je hoe je dit kunt oplossen door het gebruik van open source rapportage-tools en tools van Oracle.
Oracle ADF is a very powerful framework for building enterprise applications. The framework, however, has no built-in solutions for reporting. In this session, you will learn how to fill this gap by using open source reporting solutions and solutions provided by Oracle.
The OpenStack project was launched by Rackspace and NASA in July 2010. Since then it has gained considerable momentum, with over 200 companies joining the project.
Horizon is OpenStack’s web-based user interface. It is constructed in two parts: 1) a core set of libraries for implementing a dashboard; 2) a reference dashboard implementation that uses the core set of libraries. Customization is key to the Horizon framework. It allows developers to construct their own dashboards, panel groups, and panels, and assemble them via a common navigation/presentation framework.
In this presentation, David will provide a brief introduction to OpenStack and Horizon. Then he will review Horizon’s architecture, explain how it integrates with other OpenStack services, examine its most interesting features, and describe how to start developing with it.
The OpenStack Horizon project provides a web-based User Interface to OpenStack services. It is constructed in two parts: (1) a core set of libraries for implementing a Dashboard; (2) the dashboard implementation that uses the core set of libraries.
Horizon uses python django — server side technology
Django is a wonderful framework, but a little dated. Pre-dates the rise in client-side and single page applications.
Javascript is used for enhancing the user experience
In the time since Horizon was first architected, there have been major advances in the design, and best practices for web applications. In particular, the use of more sophisticated and robust client-side javascript frameworks like BackboneJS, AngularJS, MeteorJS, have come to the fore.
These applications provide a much more responsive user experience, much cleaner separation between the client and server, enable configuration driven interfaces, and facilitate more modular testing.
This in turn, results in shorter development cycles, more testable software, and above all, a better user experience.
In this presentation, we share some of our recent work in re-architecting parts of Horizon to take advantage of these new technologies. We discuss some of the technologies we use, our application architecture, and some of the pitfalls to avoid.
OpenStack Horizon: Controlling the Cloud using DjangoDavid Lapsley
OpenStack is an open source cloud computing project that is implemented predominantly in Python. OpenStack’s goal is to provide the "ubiquitous open source cloud computing platform for public and private clouds”. The OpenStack project was launched by Rackspace and NASA in July 2010. Since then the project has gained considerable momentum with over 200 companies joining the project, and the launch of commercial services and products that use OpenStack.
The OpenStack Horizon project provides a web-based User Interface to OpenStack services. It is constructed in two parts: (1) a core set of libraries for implementing a Dashboard; (2) a reference dashboard implementation that uses the core set of libraries. Customization is a core part of the Horizon Framework. The framework enables developers to construct their own dashboards, panel groups and panels, and enables them to assemble them together via a common navigation/presentation framework.
In this presentation, we will provide a brief introduction to OpenStack and Horizon. Then we will dive into the details of Horizon. We will review Horizon’s overall architecture and how it integrates with other OpenStack services. We will look at some of Horizon’s interesting features and describe how to get started developing with Horizon. Finally, we will discuss some of the current challenges facing Horizon and some future directions.
Slides from the Meteor Toronto Meet Up. September 21, 2016.
The session started with cursory introductions of Angular 2 and Redux. We then explore an experimental implementation of an Angular 2 Redux app with Meteor. A high level overview of the approach will be presented and then we will explore the source code guided by the curiosity of the group.
Deze presentatie is gegeven tijdens de KScope conferentie 2012
Spreker: Luc Bors
Titel: An ADF Special Report
Onderwerp: Fusion Middleware - Subonderwerp: ADF
Oracle ADF is zeer geschikt voor het bouwen van enterprise applicaties. ADF heeft echter geen ingebouwde oplossingen voor het maken van rapportages. Door het inbouwen van rapportage mogelijkheden is het niet nodig om externe rapportage tooling op te starten. Met één druk op de knop worden de rapportages getoond en krijg je snel inzicht in bedrijfskritische gegevens. In deze sessie leer je hoe je dit kunt oplossen door het gebruik van open source rapportage-tools en tools van Oracle.
Oracle ADF is a very powerful framework for building enterprise applications. The framework, however, has no built-in solutions for reporting. In this session, you will learn how to fill this gap by using open source reporting solutions and solutions provided by Oracle.
Drupal8Day: Demystifying Drupal 8 Ajax Callback commandsMichael Miles
This session outlines and explains Drupal 8 AJAX callback commands and how to use them. AJAX callback commands are the sets of PHP and JavaScript functions that control all AJAX functionality on a Drupal site. You will be surprised about how simple and straight forward they are. Mastering these commands will allow your AJAX calls to do so much more then just return rendered HTML. Allowing you to provide the visitors of your Drupal 8 site a more dynamic, richer experience.
Demystifying AJAX Callback Commands in Drupal 8Michael Miles
This session outlines and explains Drupal 8 AJAX callback commands and how to use them. AJAX callback commands are the sets of PHP and JavaScript functions that control all AJAX functionality on a Drupal site. You will be suprised about how simple and straight forward they are. Mastering these commands will allow your AJAX calls to do so much more then just return rendered HTML. Allowing you to provide the visitors of your Drupal 8 site a more dynamic, richers experience.
This session is presented in three parts.
First, explaining what AJAX callback commands are.
Second, explaining how to use AJAX callback commands.
Third, explaining how to create and use your own custom commands.
Each section provides example code and walks through a real world Drupal 8 scenario.
Attendees should already be familiar with PHP and JavaScript, as well as, have a general understanding of Drupal and AJAX.
Developing application for Windows Phone 7 in TDDMichele Capra
A real example of how to develop an application for Windows Phone 7 with Test Driven Development approach. In this presentation you'll see also hoew to implements the Model-View-ViewModel (MVVM) pattern.
The talk presents how we established a TDD cycle within the complex AEM technology stack using a "unified testing API". It illustrates how such an API can be built and discusses various advantages over other approaches such as the Sling Testing API.
Unit testing your code can be hard and confusing. Particularly, for complex object structures you mock away functionality of collaborators and stub in expected return values, but covering every interaction seems difficult and pointless. In all your code, some parts call APIs to implement a functionality while they also provide an interface that can be used by others. A class' interface can be seen as a boundary with a contract to distinguish client code that uses the class, from service code that implements it's interface. Following this distinction, unit tests can be separated into collaboration and contract tests. In this talk, you'll see examples for different APIs and learn what is tested by existing tests to distinguish between collaboration and contract tests. You'll learn how to use mock objects to implement collaboration and contract tests, and see how integrated tests can be replaced with selected unit tests.
Drupal 8 introduces a lot of changes for javascript: how to add a JS file to a page, how Drupal process the aggregation of JS files, what are the new javascript APIs, what do we mean by mobile-first.
This session will focus on showing Drupal developers how to update their javascript from Drupal 7 to 8 by taking an example module and going through all the relevant changes.
By the end you'll know what fancy new features Drupal 8 provides you to build rich applications on top of Drupal while keeping mobile devices in mind.
Behind the curtain - How Django handles a requestDaniel Hepper
Does Django sometimes feel like Magic to you? In this presentation, we will peek behind the curtain to understand the wizardry that turns an HTTP request into a response.
Despite rumors to the contrary, Django does not actually involve any magic - it's just code! We will dive deep into this code and trace the exact steps that turn an HTTP request into a response.
On this exciting journey, you'll get a high-level overview of the different components that make up Django and dissect elegant code constructs.
Originally presented at DjangoCon Europe 2018 in Heidelberg, Germany.
Drupal8Day: Demystifying Drupal 8 Ajax Callback commandsMichael Miles
This session outlines and explains Drupal 8 AJAX callback commands and how to use them. AJAX callback commands are the sets of PHP and JavaScript functions that control all AJAX functionality on a Drupal site. You will be surprised about how simple and straight forward they are. Mastering these commands will allow your AJAX calls to do so much more then just return rendered HTML. Allowing you to provide the visitors of your Drupal 8 site a more dynamic, richer experience.
Demystifying AJAX Callback Commands in Drupal 8Michael Miles
This session outlines and explains Drupal 8 AJAX callback commands and how to use them. AJAX callback commands are the sets of PHP and JavaScript functions that control all AJAX functionality on a Drupal site. You will be suprised about how simple and straight forward they are. Mastering these commands will allow your AJAX calls to do so much more then just return rendered HTML. Allowing you to provide the visitors of your Drupal 8 site a more dynamic, richers experience.
This session is presented in three parts.
First, explaining what AJAX callback commands are.
Second, explaining how to use AJAX callback commands.
Third, explaining how to create and use your own custom commands.
Each section provides example code and walks through a real world Drupal 8 scenario.
Attendees should already be familiar with PHP and JavaScript, as well as, have a general understanding of Drupal and AJAX.
Developing application for Windows Phone 7 in TDDMichele Capra
A real example of how to develop an application for Windows Phone 7 with Test Driven Development approach. In this presentation you'll see also hoew to implements the Model-View-ViewModel (MVVM) pattern.
The talk presents how we established a TDD cycle within the complex AEM technology stack using a "unified testing API". It illustrates how such an API can be built and discusses various advantages over other approaches such as the Sling Testing API.
Unit testing your code can be hard and confusing. Particularly, for complex object structures you mock away functionality of collaborators and stub in expected return values, but covering every interaction seems difficult and pointless. In all your code, some parts call APIs to implement a functionality while they also provide an interface that can be used by others. A class' interface can be seen as a boundary with a contract to distinguish client code that uses the class, from service code that implements it's interface. Following this distinction, unit tests can be separated into collaboration and contract tests. In this talk, you'll see examples for different APIs and learn what is tested by existing tests to distinguish between collaboration and contract tests. You'll learn how to use mock objects to implement collaboration and contract tests, and see how integrated tests can be replaced with selected unit tests.
Drupal 8 introduces a lot of changes for javascript: how to add a JS file to a page, how Drupal process the aggregation of JS files, what are the new javascript APIs, what do we mean by mobile-first.
This session will focus on showing Drupal developers how to update their javascript from Drupal 7 to 8 by taking an example module and going through all the relevant changes.
By the end you'll know what fancy new features Drupal 8 provides you to build rich applications on top of Drupal while keeping mobile devices in mind.
Behind the curtain - How Django handles a requestDaniel Hepper
Does Django sometimes feel like Magic to you? In this presentation, we will peek behind the curtain to understand the wizardry that turns an HTTP request into a response.
Despite rumors to the contrary, Django does not actually involve any magic - it's just code! We will dive deep into this code and trace the exact steps that turn an HTTP request into a response.
On this exciting journey, you'll get a high-level overview of the different components that make up Django and dissect elegant code constructs.
Originally presented at DjangoCon Europe 2018 in Heidelberg, Germany.
Modular Test-driven SPAs with Spring and AngularJSGunnar Hillert
Single-page Applications (SPA) are all the rage these days and with them there is an avalanche of new tools, libraries and frameworks we need to know. But what does this mean for us as Spring developers? In this session we will give you an overview of the current landscape and illustrate the choices the Spring XD team has made for its user interface. What do I use to write SPA applications? How do I integrate them into existing Spring-based backends? How do I build them? Can I integrate them into my existing Gradle or Maven build processes in order to achieve complete build automation? How do I integrate realtime messaging using Spring's SockJS/WebSocket support? In this talk we will answer these and many more questions. We will cover frameworks such as AngularJS, Bootstrap, RequireJS; tools like Bower, Grunt, Gulp; and also talk about testing using Karma and Protractor.
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJSmurtazahaveliwala
First part of AngularJS Training.
Covers details of AngularJs community and answers
- Why AngularJS ?
- What is AngularJS ?
- Getting started
- Basic Application layout and anatomies
- Data-binding, Existing Directives, Filters, Controllers
- Hosting on local (NodeJS) HTTPServer
Code samples available at
https://github.com/murtazahaveliwala/technext-angularjs-demo/tree/master/demos/static/angular-apps
Opencast Admin UI - Introduction to developing using AngularJSbuttyx
This presentation is intended to help developers anticipating using and potentially extending the new Admin UI get a hands-on introduction into the Angular JS portion of the software. It has been presented in the form of a workshop and therefore the last slides (starting with the 22) could seem a bit abstract.
AngularJS 101 - Everything you need to know to get startedStéphane Bégaudeau
In this presentation, you will find everything need to get started with AngularJS.
For more details, have a look at my blog (http://stephanebegaudeau.tumblr.com) or follow me on twitter (@sbegaudeau)
Chicago Coder Conference 2015
Speaker Biography: Wei Ru
Wei Ru has over 15 years of professional experience in design and development of Java enterprise applications across multiple industries. Currently he works as a technical architect at STA Group, LLC. He received a M.S. degree in Computer Science from Loyola University Chicago. As a software developer with an emphasis on Java, he strongly believes in software re-usability, open standards, and various best practices. He has successfully delivered many products using open source platforms and frameworks during his IT consultancies.
Speaker Biography: Vincent Lau
Vincent Lau has been Senior Architect at STA Group in Chicago for the last two years. He received a B.S. degree in Accounting and Finance from the University of Illinois at Chicago and worked on M.S. of Computer Science at DePaul University. He has over 15 years of software design, development, testing and project management experience on large enterprise distributed computing platforms. Most recently, he has worked on web based applications using Java, Spring, JavaScript, Angular.js, jQuery and web services. He previously had Senior Software Engineer and Lead positions in Royal Caribbean Cruises, Wells Fargo Bank, Cap Gemini America and Trans Union Corp.
Presentation: Practical AngularJS
AngularJS has been seen gaining momentum recently. Whether you want to develop a modern single-page application or to spice up only the view enabled by a traditional MVC web framework, AngularJS allows you to write cleaner, shorter code. AngularJS’ two-way data binding feature allows a declarative approach on views and controllers, and ultimately code modulization. With this strategic change and many features offered by AngularJS, learning AngularJS can be challenging. In this session, we will share some of the experiences we had in Angular UI development, we will cover:
AngularJS modules and common project setup
Communicating to a Restful service
Commonly used Angular functions, directives
UI Bootstrap, grid views and forms in AngularJS
Custom Angular directives
Asynchronous functions and event processing
Ansible is a Configuration Management System that is very simple to use, because of its straightforward and robust model for managing automation and it’s low barrier to entry for ease of use in both development and production.
During OpenStack development, Ansible can be used in conjunction with Vagrant and Devstack to manage complex, multi-node development environments with relative ease.
In this presentation, Juergen Brendel and David Lapsley review Ansible and provide some sample playbooks to get developers up and running quickly. They also describes how to use Ansible, Vagrant, Devstack, and OpenStack to accelerate OpenStack development cycles.
VXLAN is a point to point, UDP-based "tunneling" protocol, that enables L2 encapsulation over an L3 "undernet", while also allowing up to 16 million Virtual Networks. One challenge with deploying VXLAN is that by default VXLAN requires multicast support for Broadcast, Unknown and Multi-cast packets. Often this is not possible in customer networks. An alternative approach is to use the Service Node concept where dedicated node(s)/process(es) are responsible for flooding Broadcast, Unknown, and Multicast packets throughout a network.
This removes the need for multi-cast, and greatly simplifies network configuration. However, it does require a scalable, and highly available implementation.
Empowering Admins by taking away root (Improving platform visibility in Horizon)David Lapsley
OpenStack as a Service enables Adminstrators to move upstack and concentrate more on helping their users and less on the low level details of managing their cloud hardware and software. However, this can come at a perceived cost: Cloud Administrators are used to being able log in to devices in their networks and see exactly what is going on.
In this presentation, we show how providing Admins with enhanced platform visibility through features like LiveStats and Historical Metrics can obsolete the requirement that Admins have root access to every device in their clouds, and enable them to invest their time and energy in areas where their users will benefit the most.
Increasingly, our customers are asking for more detailed and up to date information about the cloud infrastructure on which their applications are running. Currently, the information sources available to Horizon are quite limited in the type of information available, the sources of information, and the timeliness with which the information can be made available.
In this presentation, we describe recent work we have done in instrumenting our OpenStack deployments with distributed agents that provide real-time information to Horizon. We describe some re-architecture work done to Horizon to enable it to access this information, and show the results of our implementation. This work has enabled our customers to have increased visibility into the real-time state of their clouds, and has been very well received.
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptxBrad Spiegel Macon GA
Brad Spiegel Macon GA’s journey exemplifies the profound impact that one individual can have on their community. Through his unwavering dedication to digital inclusion, he’s not only bridging the gap in Macon but also setting an example for others to follow.
2.Cellular Networks_The final stage of connectivity is achieved by segmenting...JeyaPerumal1
A cellular network, frequently referred to as a mobile network, is a type of communication system that enables wireless communication between mobile devices. The final stage of connectivity is achieved by segmenting the comprehensive service area into several compact zones, each called a cell.
Instagram has become one of the most popular social media platforms, allowing people to share photos, videos, and stories with their followers. Sometimes, though, you might want to view someone's story without them knowing.
1.Wireless Communication System_Wireless communication is a broad term that i...JeyaPerumal1
Wireless communication involves the transmission of information over a distance without the help of wires, cables or any other forms of electrical conductors.
Wireless communication is a broad term that incorporates all procedures and forms of connecting and communicating between two or more devices using a wireless signal through wireless communication technologies and devices.
Features of Wireless Communication
The evolution of wireless technology has brought many advancements with its effective features.
The transmitted distance can be anywhere between a few meters (for example, a television's remote control) and thousands of kilometers (for example, radio communication).
Wireless communication can be used for cellular telephony, wireless access to the internet, wireless home networking, and so on.
Gen Z and the marketplaces - let's translate their needsLaura Szabó
The product workshop focused on exploring the requirements of Generation Z in relation to marketplace dynamics. We delved into their specific needs, examined the specifics in their shopping preferences, and analyzed their preferred methods for accessing information and making purchases within a marketplace. Through the study of real-life cases , we tried to gain valuable insights into enhancing the marketplace experience for Generation Z.
The workshop was held on the DMA Conference in Vienna June 2024.
Italy Agriculture Equipment Market Outlook to 2027harveenkaur52
Agriculture and Animal Care
Ken Research has an expertise in Agriculture and Animal Care sector and offer vast collection of information related to all major aspects such as Agriculture equipment, Crop Protection, Seed, Agriculture Chemical, Fertilizers, Protected Cultivators, Palm Oil, Hybrid Seed, Animal Feed additives and many more.
Our continuous study and findings in agriculture sector provide better insights to companies dealing with related product and services, government and agriculture associations, researchers and students to well understand the present and expected scenario.
Our Animal care category provides solutions on Animal Healthcare and related products and services, including, animal feed additives, vaccination
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024APNIC
Ellisha Heppner, Grant Management Lead, presented an update on APNIC Foundation to the PNG DNS Forum held from 6 to 10 May, 2024 in Port Moresby, Papua New Guinea.
15. OpenStack
● Open Source Cloud Platform
o Build public/private clouds
o Multi-tenant
o Virtual machines on demand
o Storage volumes
● Founded in 2010 by Rackspace and NASA
● Since then, enormous growth…
31. AngularJS lets you extend HTML vocabulary
for your application. The resulting environment
is extraordinarily expressive, readable, and
quick to develop.
https://angularjs.org
32. Develop smaller, lighter web apps that are
simple to create and easy to test, extend and
maintain as they grow
Brad Green, Shyam Seshadri, “AngularJS”
33. Core concepts
● Model View Controller framework
● Client-side templates
● Data binding
● Dependency injection
40. Dashboards & Panels
● Horizon provides a flexible framework for
creating Dashboards and Panels
● Panels grouped into PanelGroups
● PanelGroups into Dashboards
41. Dashboard App
● Dashboards created as Django Applications
● Dashboard modules partitioned into:
o static
o templates
o python modules
46. Panel
● Panels are created as Python Modules
● Panel modules partitioned into:
o static/
o templates/
o python modules:
urls.py, views.py, panel.py
tables.py, forms.py, tabs.py, tests.py
48. panel.py
from django.utils.translation import ugettext_lazy as _
import horizon
from openstack_dashboard.dashboards.socalangularjs import dashboard
class Hypervisors(horizon.Panel):
name = _("Hypervisors")
slug = 'hypervisors'
dashboard.socalangularjs.register(Hypervisors)
50. View Module
● View module ties together everything:
o Tables, Templates, API Calls
● Horizon base views:
o APIView, LoginView, MultiTableView,
DataTableView, MixedDataTableView,
TabView, TabbedTableView, WorkflowView
51. views.py
from horizon import tables
class HypervisorsIndexView(tables.DataTableView):
table_class = hv_tables.AdminHypervisorsTable
template_name = ’socalangularjs/hypervisors/index.html’
def get_data(self):
hypervisors = []
states = {}
hypervisors = api.nova.hypervisor_list(self.request)
…
return hypervisors
52. Table Module
● Table classes provide framework for tables:
o consistent look and feel
o configurable table_actions and row_actions
o select/multi-select column
o sorting
o pagination
● Functionality is split server- and client-side
62. REST Resource
● Provides the source of data via RESTful API
● Resource includes/provides:
o entity data/state
o configurable table_actions and row_actions
o sorting
o pagination
o CRUD operations
70. Advantages
● Clean split between server and client side
● Significantly cleaner, terser, easier to
understand client-side code
● Significant easier to improve UX
● Client- and server-side code can be
developed and tested independently
● Faster feature velocity
76. Devstack and Contributing
● Devstack:
o “A documented shell script to build complete
OpenStack development environments.”
o http://devstack.org
● Contributing to Horizon:
– http://docs.openstack.org/developer/horizo
n/contributing.html
78. References
● Web:
o http://www.stackalytics.com
o http://activity.openstack.org/dash/browser/
o http://gabrielhurley.github.io/slides/openstac
k/building_on_horizon/
o http://www.solinea.com/blog/openstack-grizzly-
architecture-revisited
79. Thank You
David Lapsley
@devlaps, david.lapsley@metacloud.com
80. If this sounds interesting…
http://jobs.metacloud.com
We are hiring!
Editor's Notes
Intro
Horizon in Action
Overview of how Horizon works with other services in OpenStack
Horizon architecture
Horizon UI structure, features
Interesting design patterns (work through an example)
Pluggable settings
Customization
Advanced features
How to contribute
LOGICAL MODEL
* Dashboard ("Horizon") provides a web front end to the other OpenStack services
* Compute ("Nova") Create, delete, and manipulate virtual machines. Stores and retrieves virtual disks ("images") and associated metadata in Image ("Glance")
* Network ("Quantum") provides virtual networking for Compute.
* Block Storage ("Cinder") provides storage volumes for Compute.
* Image ("Glance") can store the actual virtual disk files in the Object Store("Swift")
All the services authenticate with Identity ("Keystone")
NODE TYPES:
Controller:
Responsible for running the management software services needed for the OpenStack environment to function.
API services, MysQL
Compute
Compute nodes run the virtual machine instances in OpenStack.
Run the bare minimum of services needed to facilitate these instances.
Storage
Store all the data required for the environment, including disk images in the Image Service library, and the persistent storage volumes created by the Block Storage service.
Network
Responsible for doing all the virtual networking needed for people to create public or private networks and uplink their virtual machines into external networks.
Utility
Basic system administration functions needed to get the environment up and running and to maintain
Provisioning, configuration management, monitoring
Compute
Most complicated and distributed component of OpenStack.
Turn end user API requests into running virtual machines.
Interacts with many other OpenStack services:
Keystone for authentication,
Glance for images and
Horizon for web interface.
Image Store
Image discovery, image retrieval and image storage.
Accepts API requests for images (or image metadata) from end users or Nova components and can store its disk files in the object storage service
Object Store
Accepts files to upload, modifications to metadata or container creation.
Serves files or container listings to web browsers.
Identity
Keystone provides a single point of integration for OpenStack Policy, Catalog, Token and Authentication
keystone handles API requests as well as providing configurable catalog, policy, token and identity services.
Network
Quantum provides "network connectivity as a service" between interface devices managed by other OpenStack services (most likely Nova).
Allows users to create their own networks and then attach interfaces to them.
Interacts mainly Nova, where it will provide networks and connectivity for its instances.
Block Storage
Cinder implements persistent block storage functionality
Allows for Manipulation of volumes, volume types, and volume snapshots.
Mainly interacts with Nova, providing volumes for its instances.
NODE TYPES:
Controller
Responsible for running the management software services needed for the OpenStack environment to function.
API services
Run a number of services in a highly available fashion
Supply highly available "infrastructure" services, such as MySQL
Compute
Compute nodes run the virtual machine instances in OpenStack.
Run the bare minimum of services needed to facilitate these instances.
Storage
Store all the data required for the environment, including disk images in the Image Service library, and the persistent storage volumes created by the Block Storage service.
Network
Responsible for doing all the virtual networking needed for people to create public or private networks and uplink their virtual machines into external networks.
Utility
Used by internal administration staff only to provide a number of basic system administration functions needed to get the environment up and running and to maintain the hardware, OS, and software on which it runs.
provisioning, configuration management, monitoring
Add client-side…
Open source web framework
Maintained by Google and community
Single Page Applications
Client-side Model-View-Controller pattern
Been around since 2010
----- Meeting Notes (8/20/14 20:59) -----
30 mins
----- Meeting Notes (8/20/14 20:59) -----
30 mins
----- Meeting Notes (8/20/14 20:59) -----
30 mins
Server provides data over RESTful API – json data
Client responsible for rendering and presenting
Much more interactive, client can now take immediate action on data it knows about instead of round tripping to server
Faster feature velocity, server and client can be developed in parallel
Simpler code
Instrument each node with livestastd
Controllers and Hypervisors
Pull information about processes, network, disk, cpu
Updates every 5 seconds
Using the same client-side rendering pattern as before
Aggregating real-time data
Greatly increases visibility into platform..
Our customers also wanted to see more historical data.
We instrumented all of our nodes and push data into Graphite
Very high performance and flexiblie time series tool
Evolution of RRD Tool
Graphite provides data over RESTful API, so we just pull that data and use it to populate these charts..
Easy access for the user (simply click on controller or hypervisor row and chart will drop down)
Data from 1 hour range to 1 year range..