OpenStack Policies Plugin
Project
OpenStack is a free and open-source software platform for cloud computing, mostly deployed as infrastructure-as-a-service (IaaS), whereby virtual servers and other resources are made available to customers. The software platform consists of interrelated components that control diverse, multi-vendor hardware pools of processing, storage, and networking resources throughout a data center. Users either manage it through a web-based dashboard, through command-line tools, or through RESTful web services.
Image 1.1: An OpenStack deployment contains a number of components providing APIs to access infrastructure resources.
Role-based access for making API requests is determined in a set of JSON formatted policy files for each installed project. Both reading as well as modifying JSON files can be complicated, to help this a visualization module is to be created as a working plugin to the current control panel.
Image 1.2: A screenshot of OpenStack's Dashboard Horizon.
Goal
The goal of the project is to design and produce a plugin for OpenStack's dashboard Horizon in which OpenStack users can access and manage project with policies.
Tasks
- Write and design a blueprint for visualization of the current policies and role assignments.
- Produce the code that will gather data from the existing policy files and present them in an easily readable visual format.
- The policy visualization should be built as a plugin to the existing web UI.
- A blueprint will be created and presented to the upstream community in an existing review process.
- Run the code contributions through a professional code review process as well as an automated testing and analytics process.
Requirements
- Have a Horizon dashboard panel through which OpenStack policies can be accessed.
- The dashboard panel will be packaged and installed as a plugin
- Be able to see a list of all available policies:
- See policy type of each policy in the list.
- See a description of each policy in the list.
- See last modified time and date of each policy in the list.
- See last modified by of each policy in the policies list.
- Be able to search for a specific policy.
- Be able to sort and filter policies:
- Sort policies by name (Default).
- Sort policies by type.
- Sort policies by last modified.
- Filter policies by type (Multiple option check boxes).
- Be able to select and view a specific policy.
- Be able to make changes to policies:
- Create a new policy.
- Modify an existing policy.
- Remove an existing policy.
- Save modifications made to a policy.
- Discard modifications made to a policy.
- Receive information about policy changes:
- Get notified when modifications have been successfully saved.
- Get notified when modifications have failed to successfully save.
- Get notified of invalid choices or inputs when modifying a policy.
- Get notified when changes are made to an open policy somewhere else.
- Be able to modify a policy through direct JSON manipulation in a text editor.
- Be able to make quick actions while using the JSON editor:
- Copy a policy's JSON text in the JSON editor by clicking on a Copy button.
- Paste JSON text into the JSON editor by clicking on a Paste button.
- Download a policy's JSON text in the JSON editor by clicking on a Download button.
- Be able to use interactive quality of life features when editing policies in the JSON editor:
- See tool-tip information about a policy, field or value in the JSON editor when hovering over it.
- See auto-complete suggestions when editing a policy in the JSON editor.
- Be able to back up and restore policies:
- Create back ups of policies.
- Restore policies from previously created back ups.
- Use the plugin from different devices:
- Using different desktop web browsers.
- Using different smartphone and tablet web browsers.
- Be able to access a help section that provides information on how to use the plug in.
- Be able to see relevant and visually descriptive icons in buttons.
- Have clear and descriptive labels and alt texts for visually impaired users.
- Ability to enable a scroll to top of page button.
- Be able to read plug in documentation that includes:
- An about the plug in section.
- Features and compatibility section.
- How to install plug in section.
- How to use plug in section.
- How to contribute to the project section.
- Have a well organized code architecture and logical grouping of directories.
- Have well documented code.
- A blueprint will be drafted, explaining the purpose and design of the plugin
- The blueprint will pass an existing review process
Scope
- Area: Cloud infrastructure.
- Focus: Keystone and Horizon.
- Sources and projects: OpenStack upstream community and OpenStack Institute.
- Testing and Integration: CityCloud, Horizon Train release, Python 3.6, Django 2.2.
- Contribution: Open source.
Infrastructure needs
- Virtual servers: Provided by CityNetwork and CityCloud.
Dependencies
- Identify similar projects is underway or being proposed in Nordix or upstream projects
- Identify any specific development be staged with respect to the upstream project and releases.
Product
The current repository for this plugin along with further documentation can be found at github.com/nizos/horizon-policies-plugin.
Search
Quick Navigation
Calendar
- EDIT THE CALENDAR
Customise the different types of events you'd like to manage in this calendar.
#legIndex/#totalLegs - RESTRICT THE CALENDAR
Optionally, restrict who can view or add events to the team calendar.
#legIndex/#totalLegs - SHARE WITH YOUR TEAM
Grab the calendar's URL and email it to your team, or paste it on a page to embed the calendar.
#legIndex/#totalLegs - ADD AN EVENT
The calendar is ready to go! Click any day on the calendar to add an event or use the Add event button.
#legIndex/#totalLegs - SUBSCRIBE
Subscribe to calendars using your favourite calendar client.
#legIndex/#totalLegs
Timeline
Team
University: Blekinge Institute of Technology
KENNETH HENNINGSSON
Course Manager
NAUMAN GHAZI
Head of Department
MUHAMMED USMAN
Coordinator
Industry Partner: CityNetwork
KIM HINDART
Research
VIDA AHMADI
Research Assistant
DANIEL GUSTAFSSON
Industry guidance
Students: Blekinge Institute of Technology
JOEL AMUNDBERG
Software Engineering
RICKARD HELLMAN
Software Engineering
ANDREAS ROSENQVIST
Software Engineering
NIZAR SELANDER
Software Engineering
WISSAM SAWAH
Web Development
Meetings & Notes
Date | Time | Event & Notes | Summary |
---|---|---|---|
| 16:00 - 17:00 | Introduction Meeting | Introduction meeting in which the students were introduced to the organization, the offices and the teams they will be working with. |
| 14:00 - 15:00 | HoD Meeting | First meeting with Head of Department. Attendants introduced themselves to one another and discussed project plan and approach. |
| 10:15 - 10:40 | Team Stand up | Stand up meeting where the team has decided the first steps to take to start the research phase. |
| 13:00 - 13:40 | Team Dynamics | Meeting with a focus on group development and team building. Introduction to Wheelan's integrated model of group development. |
| 15:00 - 15:15 | Team Stand up | Discussed progress on individually assigned tasks and moving from Discord to Microsoft Teams for team communication. |
| 10:45 - 11:10 | Team Stand up | Discussed progress on individually assigned tasks. Prepared questions for Kim at CityNetwork to help clarify some objectives. |
| 13:30 - 14:30 | HoD Meeting | Second meeting with HoD where the team briefed him on progress. Discussed requirements engineering and solution approach. |
| 13:20 - 15:00 | Team Meeting | Established product requirements and product backlog and discussed different implementations and prototypes for the user interface. |
| 13:15 - 14:15 | Team Dynamics | Follow-up on group development and team building. Discussed the importance of individual needs and team needs. |
| 14:00 - 14:45 | CityNetwork Meeting | Discussed the project progress, sprints planning, opensource community and contributing to it, documentation and asking for help. |
| 10:30 - 13:00 | Team Stand up | Team sync up on everything done so far. Product requirements and interface prototypes where looked into again. |
| 14:00 - 14:30 | HoD Meeting | Third meeting with HoD. Discussed changes to who the customer is in this project. Discussed ongoing tasks and reporting. |
| 13:00 - 15:00 | Team Meeting | Established a working plan for the week and assigned new research tasks among the team's members. |
| 13:00 - 13:15 | HoD Meeting | Fourth meeting with HoD where progress done towards finalizing the project commitment was discussed. |
| 14:00 - 14:30 | Team Stand up | Team meeting where status on submitting the project commitment and progress on research tasks were discussed. |
| 14:30 - 15:00 | CityNetwork Meeting | Meeting with CityNetwork and other student project members where project progress, team dynamics and work culture was discussed. |
| 11.30 - 11.45 | Team Stand up | Discussed progress on research topics from the previous week. |
| 15.00 - 15.25 | HoD Meeting | Reviewed the commitment and discussed the Covid-19 situation, development sprint and establishing coding standards. |
| 10:30 - 15:30 | Sprint Planning | Sprint planning meeting where we went through all of the Backlog items, prioritized them, created a burn down chart and more. |
| 15:00 - 15:15 | Daily Scrum | Daily status meeting where we checked up on our health and discussed current happenings in our lives. |
| 10:00 - 10:15 | Daily Scrum | Discussed what we worked with yesterday, what we will work with today and if there are any impediments in our work. |
| 15:00 - 15:30 | Hod Meeting | Discussed the progress, and the transition with the working environment duo to the Covid-19 situation. Presented the burn down chart to HoD |
| 10:00 - 10:15 | Daily Scrum | Discussed what we worked with yesterday, what we will work with today and if there are any impediments in our work. |
| 12:00 - 13:00 | Sprint Review | Discussed what we did and did not do during Sprint. |
| 13:00 - 13:30 | Sprint Retrospective | Discussed what we will commit in the up-coming Sprint. |
| 13:30 - 17:00 | Sprint Planning | We divided the Backlog item(s) into smaller subtasks and planned for the second Sprint |
| 10:00 - 10:15 | Daily Scrum | Discussed what we worked with yesterday, what we will work with today and if there are any impediments in our work. |
| 10:00 - 10:15 | Daily Scrum | Discussed what we worked with yesterday, what we will work with today and if there are any impediments in our work. |
| 10:00 - 10:15 | Daily Scrum | Discussed what we worked with yesterday, what we will work with today and if there are any impediments in our work. |
| Cancelled | HoD meeting | HoD announced at 13:30 that the meeting is cancelled. |
| 14:00 - 15:00 | Review Criteria Meeting | We went through and discussed the criteras for R1 and we're fairly confident that we got them all covered. |
| 10:30 - 11:30 | Review with Kenneth | Risk management and handling needs to be resolved within 14 days. Some other warnings that needs to be discussed. |
| 13:00 - 14:00 | Sprint Review | We went through what was done and not done during Sprint. |
| 14:00 - 14:30 | Sprint Retrospective | We decided that testing and work distribution has to be improved in the next Sprint. |
| 15:00 - 16:30 | Sprint Planning | We planned all the Sprint from week 14 - 22, and which User Stories that will be completed in each Sprint. |
| 10:00 - 10:15 | Daily Scrum | Discussed what we worked with yesterday, what we will work with today and if there are any impediments in our work. |
| 10:00 - 10:15 | Daily Scrum | Discussed what we worked with yesterday, what we will work with today and if there are any impediments in our work. |
| 14:00 - 15:00 | Group Dynamic | We discussed how we all felt, what we've been working on, and how the Covid-19 situation has affected us in short and long term. |
| 15:00 - 15:30 | HoD Meeting | We went through the criterias from the meeting with Kenneth, and discussed how the development progress is going. |
| 10:00 - 10:15 | Daily Scrum | Discussed what we worked with yesterday, what we will work with today and if there are any impediments in our work. |
| 11:00 - 12:00 | Sprint Review | We went through what was done and not done during Sprint. |
| 12:00 - 12:15 | Sprint Retrospective | Keep up with how we work now. Nothing new to commit in the up-coming Sprint(s) |
| 12:15 - 12:30 | Sprint Planning | Previous Sprint Planning remains unchanged. |
| 10:00 - 10:15 | Daily Scrum | Discussed what we worked with yesterday, what we will work with today and if there are any impediments in our work. |
| 10:00 - 10:15 | Daily Scrum | Discussed what we worked with yesterday, what we will work with today and if there are any impediments in our work. |
| 10:00 - 10:15 | Daily Scrum | Discussed what we worked with yesterday, what we will work with today and if there are any impediments in our work. |
| 15:00 - 15:30 | HoD Meeting | We discussed project progress and how the Covid-19 will and has impacted our working strategy |
| 10:00 - 11:00 | Sprint Review | We went through what was done and not done during Sprint. |
| 11:00 - 11:30 | Sprint Retrospective | Add new cards to Backlog, communicate what we're working with and document what we're working with |
| 11:30 - 11:45 | Sprint Planning | Previous Sprint Planning remains unchanged. |
| 11:30 - 11:45 | Daily Scrum | Discussed what we worked with yesterday, what we will work with today and if there are any impediments in our work. |
| 10:00 - 10:15 | Daily Scrum | Discussed what we worked with yesterday, what we will work with today and if there are any impediments in our work. |
| 11:30 - 12:30 | Sprint Review | We only had one User Story for this Sprint and we barely managed to complete it within time. |
| 12:30 - 12:45 | Sprint Retrospective | We came up with four areas for improvements. |
| 12:45 - 13:00 | Sprint Planning | We decided to go for a two week Sprint instead of one week Sprint. We merged Sprint 6 & 7 (week 17 & 18) |
| 13:00 - 13:15 | Daily Scrum | Discussed what we worked with yesterday, what we will work with today and if there are any impediments in our work. |
| 10:00 - 10:15 | Daily Scrum | Discussed what we worked with yesterday, what we will work with today and if there are any impediments in our work. |
| 10:00 - 10:15 | Daily Scrum | Discussed what we worked with yesterday, what we will work with today and if there are any impediments in our work. |
| 15:00 - 15:30 | HoD-meeting | We talked about the progress and preparation for the final presentation. |
| 10:00 - 10:15 | Daily Scrum | Discussed what we worked with yesterday, what we will work with today and if there are any impediments in our work. |
| 10:00 - 10:15 | Daily Scrum | Discussed what we worked with yesterday, what we will work with today and if there are any impediments in our work. |
| 10:00 - 10:15 | Daily Scrum | Discussed what we worked with yesterday, what we will work with today and if there are any impediments in our work. |
| 10:00 - 10:30 | Sprint Review | We worked on all User Stories but we didn't manage to complete all of them. Some of the User Stories was pushed backed into the Backlog. |
| 10:30 - 11:00 | Sprint Retrospective | Discussed what we can improve in the up-coming Sprints. |
| 11:00 - 11:30 | Sprint Planning | We merged Sprint 7 & 8 into a two-week Sprint, with a deadline week 20. |
| 11:30 - 11:45 | Daily Scrum | Discussed what we worked with yesterday, what we will work with today and if there are any impediments in our work. |
| 10:00 - 10:15 | Daily Scrum | Discussed what we worked with yesterday, what we will work with today and if there are any impediments in our work. |
| 10:00 - 10:15 | Daily Scrum | Discussed what we worked with yesterday, what we will work with today and if there are any impediments in our work. |
| 15:00 - 15:30 | HoD-meeting | We talked about the progress and preparation for the final presentation. |
| 10:15 - 10:30 | Daily Scrum | Discussed what we worked with yesterday, what we will work with today and if there are any impediments in our work. |
| 10:00 - 10:15 | Daily Scrum | Discussed what we worked with yesterday, what we will work with today and if there are any impediments in our work. |
| 11:00 - 11:15 | Daily Scrum | Discussed what we worked with yesterday, what we will work with today and if there are any impediments in our work. |
| 13:00 - 14:00 | Group Dynamic | We were three groups in this session, Group 2, 4 and 5. We discussed the project as a whole and what we've learned individually. |
| 15:00 - 15:30 | HoD-meeting | Short meeting, just making sure everything is coming along. We will strive to have a presentation for the next meeting. |
| 10:30 - 11:30 | Sprint Review | Still five User Stories that has been worked on but that hasn't met the requirements needed to be considered "Done". |
| 11:30 - 12:00 | Sprint Retrospective | We should not take on more User Stories than we realistically are capable of during a Sprint. |
| 12:00 - 12:15 | Daily Scrum | Discussed what we worked with yesterday, what we will work with today and if there are any impediments in our work. |
| 10:00 - 10:15 | Daily Scrum | Discussed what we worked with yesterday, what we will work with today and if there are any impediments in our work. |
| 10:00 - 10:15 | Daily Scrum | Discussed what we worked with yesterday, what we will work with today and if there are any impediments in our work. |
| Cancelled | HoD-meeting | Ghazi Nauman was sick so it got cancelled. We agreed on phone that we will send a demo to him by the end of the week. |
| 13:00 - 14:30 | Final Presentation | A video of the Final Presentation can be seen in the event page. |
Reporting
Ongoing & incomplete
Description | Priority | Status | Due date | Assignee | Tasks appears on |
---|---|---|---|---|---|
Investigate usage of soft delete vs. hard delete in database. | LOW | POSTPONED | Research: Week 09 | ||
Design ER model diagram for database to create policy backups. | LOW | POSTPONED | Research: Week 09 |
Completed
Description | Priority | Status | Due date | Assignee | Tasks appears on |
---|---|---|---|---|---|
What are policies? | NORMAL | COMPLETED |
| Research: Week 10 | |
What are they used for? | NORMAL | COMPLETED |
| Research: Week 10 | |
Do they follow any standards? | LOW | COMPLETED |
| Research: Week 10 | |
Do you create new policies or simply modify existing ones? | HIGH | COMPLETED |
| Research: Week 10 | |
Where can changes made to policies be found? | NORMAL | COMPLETED |
| Research: Week 10 | |
What do such policy changes look like? | HIGH | COMPLETED |
| Research: Week 10 | |
How to implement REST client for Keystone in python? | NORMAL | COMPLETED |
| Research: Week 10 | |
What python/django imports are required or available? | NORMAL | COMPLETED |
| Research: Week 10 | |
How to handle requests/responses to/from the database in the REST client? | LOW | COMPLETED |
| Research: Week 10 | |
How to handle authentication and tokens? | HIGH | COMPLETED |
| Research: Week 10 | |
Should the token be stored somewhere and if so where? | HIGH | COMPLETED |
| Research: Week 10 | |
How can authenticated requests be carried out securely? | NORMAL | COMPLETED |
| Research: Week 10 | |
What are Keystone sessions? | HIGH | COMPLETED |
| Research: Week 10 | |
How can sessions be implemented? | NORMAL | COMPLETED |
| Research: Week 10 | |
Investigate functionality to retrieve all policies data for backup. | LOW | COMPLETED |
| Research: Week 10 | |
Which methods preside in the python part of the plugin vs the angularjs? | NORMAL | COMPLETED |
| Research: Week 10 | |
How to implement promises and routing? | LOW | COMPLETED |
| Research: Week 10 | |
Investigate how to get access to a database in OpenStack. | NORMAL | COMPLETED | Research: Week 09 | ||
Investigate implementation of JSON editor's auto-complete suggestions. | HIGH | COMPLETED |
| Research: Week 09 | |
Investigate implementation of dynamic rather than static suggestions. | LOW | COMPLETED |
| Research: Week 09 | |
Investigate implementation of JSON editor's tool-tip functionalities. | HIGH | COMPLETED | Research: Week 09 | ||
Can Node and Express be used instead of Python and Django? | LOW | COMPLETED |
| Research: Week 09 | |
How to deploy a working plugin with an angularjs front end logic? | NORMAL | COMPLETED |
| Research: Week 09 | |
Can Horizon's API be used instead of Keystone's? | IMPORTANT | COMPLETED | Research: Week 09 | ||
How does Horizon's API differ from Keystone's? | IMPORTANT | COMPLETED |
| Research: Week 09 | |
How can the plugin authenticate and get a token? | HIGH | COMPLETED |
| Research: Week 10 | |
How does Horizon carry out its user authentication functionality? | NORMAL | COMPLETED |
| Research: Week 10 | |
Can Horizon's user authentication be shared with the plugin? | HIGH | COMPLETED |
| Research: Week 10 | |
How to know which user is logged in? | HIGH | COMPLETED |
| Research: Week 10 | |
Investigate authenticated Keystone API requests for Horizon logged in users. | HIGH | COMPLETED |
| Research: Week 10 |
Recently Updated
Contributors Summary
User | Edits | Comments | Labels |
---|---|---|---|
Andreas Rosenqvist | 535 | 0 | 60 |
Nizar | 484 | 0 | 172 |
Joel Amundberg | 90 | 0 | 0 |
Wissam Sawah | 16 | 0 | 0 |
Rickard Hellman | 7 | 0 | 0 |
tony.hallen@citynetwork.se | 5 | 0 | 0 |
Nordix Infra | 2 | 0 | 0 |
Robert Tomczyk | 1 | 0 | 0 |
Vida Ahmadi | 1 | 0 | 0 |