A modern dashboard for OpenStack - API server
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
yangshaoxue f47fa7dcd5 Integration with Kolla and Kolla-Ansible 2 weeks ago
container fix: Fix make build failed 2 months ago
devstack refactor: Change the way to install nodejs and yarn 3 weeks ago
docs docs: add mascot description 3 months ago
etc feat: Add ironic and octavia into service_mapping 1 month ago
kolla Integration with Kolla and Kolla-Ansible 1 week ago
libs style: Change makefile for apiserver and nginx of skyline 2 weeks ago
playbooks Fix: Add post-run into publish job 2 weeks ago
skyline refactor: Move skyline-apiserver to libs 3 months ago
tools/git_config feat: Add initial code of skyline-apiserver 5 months ago
.dockerignore chore: Add make clean to clean up project directory 3 months ago
.flake8 feat: Add initial code of skyline-apiserver 5 months ago
.gitignore feat: Add initial code of skyline-apiserver 5 months ago
.gitmodules feat: Add skyline-console to submodule 3 months ago
.gitreview Added .gitreview 6 months ago
.zuul.yaml Integration with Kolla and Kolla-Ansible 1 week ago
LICENSE feat: Add initial code of skyline-apiserver 5 months ago
Makefile refactor: Remove -f of poetry build command 4 weeks ago
README-zh_CN.md Integration with Kolla and Kolla-Ansible 1 week ago
README.md Integration with Kolla and Kolla-Ansible 1 week ago
bindep.txt feature: Add ZUUL JOBs 2 months ago
mypy.ini chore: Add make clean to clean up project directory 3 months ago
poetry.lock chore: Update dependencies 1 month ago
poetry.toml feat: Add initial code of skyline-apiserver 5 months ago
pyproject.toml refactor: Move skyline-apiserver to libs 3 months ago
tox.ini Fix: Fail to publish package to tarballs 3 weeks ago

README.md

Skyline API

English | 简体中文

Skyline is an OpenStack dashboard optimized by UI and UE. It has a modern technology stack and ecology, is easier for developers to maintain and operate by users, and has higher concurrency performance.

Skyline's mascot is the nine-color deer. The nine-color deer comes from Dunhuang mural "the nine-color king deer", whose moral is Buddhist cause-effect and gratefulness, which is consistent with 99cloud's philosophy of embracing and feedback community since its inception. We also hope Skyline can keep light, elegant and powerful as the nine-color deer, to provide a better dashboard for the openstack community and users.

Table of contents

Resources

Quick Start

Prerequisites

  • An OpenStack environment that runs at least core components and can access OpenStack components through Keystone endpoints
  • A Linux server with container engine (docker or podman) installed

Configure

  1. Edit the /etc/skyline/skyline.yaml file in linux server

    You can refer to the sample file, and modify the following parameters according to the actual environment

    • database_url
    • keystone_url
    • default_region
    • interface_type
    • system_project_domain
    • system_project
    • system_user_domain
    • system_user_name
    • system_user_password

Deployment with Sqlite

  1. Run the skyline_bootstrap container to bootstrap

    rm -rf /tmp/skyline && mkdir /tmp/skyline
    
    docker run -d --name skyline_bootstrap -e KOLLA_BOOTSTRAP="" -v /etc/skyline/skyline.yaml:/etc/skyline/skyline.yaml -v /tmp/skyline:/tmp --net=host 99cloud/skyline:latest
    
    # Check bootstrap is normal `exit 0`
    docker logs skyline_bootstrap
    
  2. Run the skyline service after bootstrap is complete

    docker rm -f skyline_bootstrap
    
    docker run -d --name skyline --restart=always -v /etc/skyline/skyline.yaml:/etc/skyline/skyline.yaml -v /tmp/skyline:/tmp --net=host 99cloud/skyline:latest
    

Deployment with MariaDB

  1. Connect to database of the OpenStack environment and create the skyline database

    $ mysql -u root -p
    MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS skyline DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
    Query OK, 1 row affected (0.001 sec)
    
  2. Grant proper access to the databases

    Replace SKYLINE_DBPASS with a suitable password.

    MariaDB [(none)]> GRANT ALL PRIVILEGES ON skyline.* TO 'skyline'@'localhost' IDENTIFIED BY 'SKYLINE_DBPASS';
    Query OK, 0 rows affected (0.001 sec)
    
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON skyline.* TO 'skyline'@'%'  IDENTIFIED BY 'SKYLINE_DBPASS';
    Query OK, 0 rows affected (0.001 sec)
    
  3. Create skyline service credentials

    # Source the admin credentials
    $ source admin-openrc
    
    # Create the skyline user
    $ openstack user create --domain default --password-prompt skyline
    User Password:
    Repeat User Password:
    +---------------------+----------------------------------+
    | Field               | Value                            |
    +---------------------+----------------------------------+
    | domain_id           | default                          |
    | enabled             | True                             |
    | id                  | 1qaz2wsx3edc4rfv5tgb6yhn7ujm8ikl |
    | name                | skyline                          |
    | options             | {}                               |
    | password_expires_at | 2020-08-08T08:08:08.123456       |
    +---------------------+----------------------------------+
    
    # Add the admin role to the skyline user:
    $ openstack role add --project service --user skyline admin
    
  4. Run the skyline_bootstrap container to bootstrap

    docker run -d --name skyline_bootstrap -e KOLLA_BOOTSTRAP="" -v /etc/skyline/skyline.yaml:/etc/skyline/skyline.yaml --net=host 99cloud/skyline:latest
    
    # Check bootstrap is normal `exit 0`
    docker logs skyline_bootstrap
    
  5. Run the skyline service after bootstrap is complete

    docker rm -f skyline_bootstrap
    
    docker run -d --name skyline --restart=always -v /etc/skyline/skyline.yaml:/etc/skyline/skyline.yaml --net=host 99cloud/skyline:latest
    

Test Access

You can now access the dashboard: https://<ip_address>:9999

Develop Skyline-apiserver

Support Linux & Mac OS (Recommend Linux OS) (Because uvloop & cython)

Dependent tools

  • make >= 3.82
  • python >= 3.8
  • poetry >= 1.1.0 (Installation Guide)
  • node >= 10.22.0 (Optional if you only develop with apiserver)
  • yarn >= 1.22.4 (Optional if you only develop with apiserver)

Install & Run

  1. Installing dependency packages

    # You can export IGNORE_JS=True to skip skyline-console if only develop with apiserver
    export IGNORE_JS=True
    
    make install
    
  2. Set skyline.yaml config file

    cp etc/skyline.yaml.sample etc/skyline.yaml
    export OS_CONFIG_DIR=$(pwd)/etc
    

    Maybe you should change the params with your real environment as followed:

    - database_url
    - keystone_url
    - default_region
    - interface_type
    - system_project_domain
    - system_project
    - system_user_domain
    - system_user_name
    - system_user_password
    

    If you set such as sqlite:////tmp/skyline.db for database_url , just do as followed. If you set such as mysql://root:root@localhost:3306/skyline for database_url , you should refer to steps 1 and 2 of the chapter Deployment with MariaDB at first.

  3. Init skyline database

    pushd libs/skyline-apiserver/
    make db_sync
    popd
    
  4. Run skyline-apiserver

    $ poetry run uvicorn --reload --reload-dir libs/skyline-apiserver/skyline_apiserver --port 28000 --log-level debug skyline_apiserver.main:app
    
    INFO:     Uvicorn running on http://127.0.0.1:28000 (Press CTRL+C to quit)
    INFO:     Started reloader process [154033] using statreload
    INFO:     Started server process [154037]
    INFO:     Waiting for application startup.
    INFO:     Application startup complete.
    

    You can now access the online API documentation: http://127.0.0.1:28000/docs

  5. Build Image

    make build
    

Devstack Integration

Fast integration with Devstack to build an environment.

Kolla Ansible Deployment

Kolla Ansible to build an environment.