Skip to end of metadata
Go to start of metadata


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.

 Plugin Quick Start

Quick Start

Clone the repository

Navigate  to /opt/stack/horizon/ and clone the repository.

cd /opt/stack/horizon/
git clone https://github.com/nizos/horizon-policies-plugin

Initialize Inner repository

Navigate into the horizon-policies-plugin/policy-ui/ directory then initialize a repository, add all the files to it and commit the additions.

cd horizon-policies-plugin/policy-ui/
git init
git add .
git commit -a

Install the plugin

Run the pip installer by pointing it to the requirements file then create a source distribution and install it.

python3 -m pip install -r requirements.txt
python3 setup.py sdist
python3 -m pip install dist/policy-ui-0.0.0.tar.gz

Enable the plugin

Copy the plugin's enabled files from horizon-policies-plugin/policy-ui/policy_ui/enabled/ to Horizon's enabled directory openstack_dashboard/enabled/.

cd /opt/stack/horizon/
cp horizon-policies-plugin/policy-ui/policy_ui/enabled/_90_project_policy_panelgroup.py \
	openstack_dashboard/enabled/
cp horizon-policies-plugin/policy-ui/policy_ui/enabled/_91_project_policy_policies_panel.py \
	openstack_dashboard/enabled/


Copy the plugin's static files from horizon-policies-plugin/policy-ui/policy_ui/static/dashboard/ to Horizon's static directory static/dashboard/.

cd /opt/stack/horizon/
cp -r horizon-policies-plugin/policy-ui/policy_ui/static/dashboard/. static/dashboard/

Restart Horizon

Finally, we will restart apache2 for the changes to take effect.

sudo service apache2 restart

You can now open your web browser and visit the ip address or domain of your server instance. You will be prompted to login using the credentials created in your local.conf file.

Further Instructions on Installation and trouble shooting can be found here.


Search

Quick Navigation

Calendar

  1. EDIT THE CALENDAR

    Customise the different types of events you'd like to manage in this calendar.

    #legIndex/#totalLegs
  2. RESTRICT THE CALENDAR

    Optionally, restrict who can view or add events to the team calendar.

    #legIndex/#totalLegs
  3. 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
  4. 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
  5. SUBSCRIBE

    Subscribe to calendars using your favourite calendar client.

    #legIndex/#totalLegs

Timeline

Jan2020 Feb Mar Apr May
Formation
Research
Production
Delivery

TF

M

RS

CP

Development Sprints

PD


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


DateTimeEvent & NotesSummary

 

16:00 - 17:00Introduction MeetingIntroduction meeting in which the students were introduced to the organization, the offices and the teams they will be working with.

 

14:00 - 15:00HoD MeetingFirst meeting with Head of Department. Attendants introduced themselves to one another and discussed project plan and approach.

 

10:15 - 10:40Team Stand upStand up meeting where the team has decided the first steps to take to start the research phase.

 

13:00 - 13:40Team DynamicsMeeting with a focus on group development and team building. Introduction to Wheelan's integrated model of group development.

 

15:00 - 15:15Team Stand upDiscussed progress on individually assigned tasks and moving from Discord to Microsoft Teams for team communication.

 

10:45 - 11:10Team Stand up

Discussed progress on individually assigned tasks. Prepared questions for Kim at CityNetwork to help clarify some objectives.

 

13:30 - 14:30HoD MeetingSecond meeting with HoD where the team briefed him on progress. Discussed requirements engineering and solution approach.

 

13:20 - 15:00Team MeetingEstablished product requirements and product backlog and discussed different implementations and prototypes for the user interface.

 

13:15 - 14:15Team DynamicsFollow-up on group development and team building. Discussed the importance of individual needs and team needs.

 

14:00 - 14:45CityNetwork MeetingDiscussed the project progress, sprints planning, opensource community and contributing to it, documentation and asking for help. 

 

10:30 - 13:00Team Stand upTeam sync up on everything done so far. Product requirements and interface prototypes where looked into again.

 

14:00 - 14:30HoD MeetingThird meeting with HoD. Discussed changes to who the customer is in this project. Discussed ongoing tasks and reporting.

 

13:00 - 15:00Team MeetingEstablished a working plan for the week and assigned new research tasks among the team's members.

 

13:00 - 13:15HoD MeetingFourth meeting with HoD where progress done towards finalizing the project commitment was discussed.

 

14:00 - 14:30Team Stand upTeam meeting where status on submitting the project commitment and progress on research tasks were discussed.

 

14:30 - 15:00CityNetwork MeetingMeeting with CityNetwork and other student project members where project progress, team dynamics and work culture was discussed.

 

11.30 - 11.45Team Stand upDiscussed progress on research topics from the previous week.

 

15.00 - 15.25HoD MeetingReviewed the commitment and discussed the Covid-19 situation, development sprint and establishing coding standards.

 

10:30 - 15:30Sprint PlanningSprint planning meeting where we went through all of the Backlog items, prioritized them, created a burn down chart and more.

 

15:00 - 15:15Daily ScrumDaily status meeting where we checked up on our health and discussed current happenings in our lives.

 

10:00 - 10:15Daily ScrumDiscussed what we worked with yesterday, what we will work with today and if there are any impediments in our work.

 

15:00 - 15:30Hod MeetingDiscussed 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:15Daily ScrumDiscussed what we worked with yesterday, what we will work with today and if there are any impediments in our work.

 

12:00 - 13:00Sprint ReviewDiscussed what we did and did not do during Sprint.

 

13:00 - 13:30Sprint RetrospectiveDiscussed what we will commit in the up-coming Sprint.

 

13:30 - 17:00Sprint PlanningWe divided the Backlog item(s) into smaller subtasks and planned for the second Sprint

 

10:00 - 10:15Daily ScrumDiscussed what we worked with yesterday, what we will work with today and if there are any impediments in our work.

 

10:00 - 10:15Daily ScrumDiscussed what we worked with yesterday, what we will work with today and if there are any impediments in our work.

 

10:00 - 10:15Daily ScrumDiscussed what we worked with yesterday, what we will work with today and if there are any impediments in our work.

 

CancelledHoD meetingHoD announced at 13:30 that the meeting is cancelled.

 

14:00 - 15:00Review 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:30Review with KennethRisk management and handling needs to be resolved within 14 days. Some other warnings that needs to be discussed.

 

13:00 - 14:00Sprint ReviewWe went through what was done and not done during Sprint.

 

14:00 - 14:30Sprint RetrospectiveWe decided that testing and work distribution has to be improved in the next Sprint.

 

15:00 - 16:30Sprint PlanningWe planned all the Sprint from week 14 - 22, and which User Stories that will be completed in each Sprint.

 

10:00 - 10:15Daily ScrumDiscussed what we worked with yesterday, what we will work with today and if there are any impediments in our work.

 

10:00 - 10:15Daily ScrumDiscussed what we worked with yesterday, what we will work with today and if there are any impediments in our work.

 

14:00 - 15:00Group DynamicWe 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:30HoD MeetingWe went through the criterias from the meeting with Kenneth, and discussed how the development progress is going.

 

10:00 - 10:15Daily ScrumDiscussed what we worked with yesterday, what we will work with today and if there are any impediments in our work.

 

11:00 - 12:00Sprint ReviewWe went through what was done and not done during Sprint.

 

12:00 - 12:15Sprint RetrospectiveKeep up with how we work now. Nothing new to commit in the up-coming Sprint(s)

 

12:15 - 12:30Sprint PlanningPrevious Sprint Planning remains unchanged.

 

10:00 - 10:15Daily ScrumDiscussed what we worked with yesterday, what we will work with today and if there are any impediments in our work.

 

10:00 - 10:15Daily ScrumDiscussed what we worked with yesterday, what we will work with today and if there are any impediments in our work.

 

10:00 - 10:15Daily ScrumDiscussed what we worked with yesterday, what we will work with today and if there are any impediments in our work.

 

15:00 - 15:30HoD MeetingWe discussed project progress and how the Covid-19 will and has impacted our working strategy

 

10:00 - 11:00Sprint ReviewWe went through what was done and not done during Sprint.

 

11:00 - 11:30Sprint RetrospectiveAdd new cards to Backlog, communicate what we're working with and document what we're working with

 

11:30 - 11:45Sprint PlanningPrevious Sprint Planning remains unchanged.

 

11:30 - 11:45Daily ScrumDiscussed what we worked with yesterday, what we will work with today and if there are any impediments in our work.

 

10:00 - 10:15Daily ScrumDiscussed what we worked with yesterday, what we will work with today and if there are any impediments in our work.

 

11:30 - 12:30Sprint ReviewWe only had one User Story for this Sprint and we barely managed to complete it within time.

 

12:30 - 12:45Sprint RetrospectiveWe came up with four areas for improvements.

 

12:45 - 13:00Sprint PlanningWe decided to go for a two week Sprint instead of one week Sprint. We merged Sprint 6 & 7 (week 17 & 18)

 

13:00 - 13:15Daily ScrumDiscussed what we worked with yesterday, what we will work with today and if there are any impediments in our work.

 

10:00 - 10:15Daily ScrumDiscussed what we worked with yesterday, what we will work with today and if there are any impediments in our work.

 

10:00 - 10:15Daily ScrumDiscussed what we worked with yesterday, what we will work with today and if there are any impediments in our work.

 

15:00 - 15:30HoD-meetingWe talked about the progress and preparation for the final presentation.

 

10:00 - 10:15Daily ScrumDiscussed what we worked with yesterday, what we will work with today and if there are any impediments in our work.

 

10:00 - 10:15Daily ScrumDiscussed what we worked with yesterday, what we will work with today and if there are any impediments in our work.

 

10:00 - 10:15Daily ScrumDiscussed what we worked with yesterday, what we will work with today and if there are any impediments in our work.

 

10:00 - 10:30Sprint ReviewWe 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:00Sprint RetrospectiveDiscussed what we can improve in the up-coming Sprints.

 

11:00 - 11:30Sprint PlanningWe merged Sprint 7 & 8 into a two-week Sprint, with a deadline week 20.

 

11:30 - 11:45Daily ScrumDiscussed what we worked with yesterday, what we will work with today and if there are any impediments in our work.

 

10:00 - 10:15Daily ScrumDiscussed what we worked with yesterday, what we will work with today and if there are any impediments in our work.

 

10:00 - 10:15Daily ScrumDiscussed what we worked with yesterday, what we will work with today and if there are any impediments in our work.

 

15:00 - 15:30HoD-meetingWe talked about the progress and preparation for the final presentation.

 

10:15 - 10:30Daily ScrumDiscussed what we worked with yesterday, what we will work with today and if there are any impediments in our work.

 

10:00 - 10:15Daily ScrumDiscussed what we worked with yesterday, what we will work with today and if there are any impediments in our work.

 

11:00 - 11:15Daily ScrumDiscussed what we worked with yesterday, what we will work with today and if there are any impediments in our work.

 

13:00 - 14:00Group DynamicWe 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:30HoD-meetingShort meeting, just making sure everything is coming along. We will strive to have a presentation for the next meeting.

 

10:30 - 11:30Sprint ReviewStill five User Stories that has been worked on but that hasn't met the requirements needed to be considered "Done".

 

11:30 - 12:00Sprint RetrospectiveWe should not take on more User Stories than we realistically are capable of during a Sprint.

 

12:00 - 12:15Daily ScrumDiscussed what we worked with yesterday, what we will work with today and if there are any impediments in our work.

 

10:00 - 10:15Daily ScrumDiscussed what we worked with yesterday, what we will work with today and if there are any impediments in our work.

 

10:00 - 10:15Daily ScrumDiscussed what we worked with yesterday, what we will work with today and if there are any impediments in our work.

 

CancelledHoD-meetingGhazi 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:30Final PresentationA video of the Final Presentation can be seen in the event page.

Reporting

Ongoing & incomplete

DescriptionPriorityStatusDue dateAssigneeTasks 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

DescriptionPriorityStatusDue dateAssigneeTasks 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

UserEditsCommentsLabels
Andreas Rosenqvist 535060
Nizar 4970172
Joel Amundberg 9000
Wissam Sawah 1600
Rickard Hellman 700
tony.hallen@citynetwork.se 500
Vida Ahmadi 100

Attachments

  File Modified
PDF File Timeline.pdf Jan 23, 2020 by tony.hallen@citynetwork.se
PDF File Schedule.pdf Jan 23, 2020 by tony.hallen@citynetwork.se
PDF File Contacts.pdf Jan 23, 2020 by tony.hallen@citynetwork.se
PDF File Task.pdf Jan 23, 2020 by tony.hallen@citynetwork.se

Write a comment…