Installation with pip

At the command line:

$ pip install openstack-cyborg

Or, if you have virtualenvwrapper installed:

$ mkvirtualenv cyborg
$ pip install openstack-cyborg

Common Configuration

Regardless of the package or code source you must do the following to properly setup the Accelerator Life Cycle Management service. A database, service credentials, and API endpoints must be created.

  1. To create the database, complete these steps:

    • Use the database access client to connect to the database server as the root user:

      $ mysql -u root -p
      
    • Create the cyborg database:

      CREATE DATABASE cyborg;
      
    • Grant proper access to the cyborg database:

      GRANT ALL PRIVILEGES ON cyborg.* TO 'cyborg'@'localhost' IDENTIFIED BY 'CYBORG_DBPASS';
      

      Replace CYBORG_DBPASS with a suitable password.

    • Exit the database access client.

      exit;
      
  2. Source the admin credentials to gain access to admin-only CLI commands:

    $ . admin-openrc
    
  3. To create the service credentials, complete these steps:

    • Create the cyborg user:

      $ openstack user create --domain default --password-prompt cyborg
      
    • Add the admin role to the cyborg user:

      $ openstack role add --project service --user cyborg admin
      
    • Create the cyborg service entities:

      $ openstack service create --name cyborg --description "Acceleration Service" accelerator
      
  4. Create the Acceleration service API endpoints:

    • If cyborg-api service is deployed using uwsgi, create the following endpoints:

    $ openstack endpoint create --region RegionOne \
      accelerator public http://<cyborg-ip>/accelerator/v2
    $ openstack endpoint create --region RegionOne \
      accelerator internal http://<cyborg-ip>/accelerator/v2
    $ openstack endpoint create --region RegionOne \
      accelerator admin http://<cyborg-ip>/accelerator/v2
    
    • Otherwise, if cyborg-api service is running as a python process, create the following endpoints:

    $ openstack endpoint create --region RegionOne \
      accelerator public http://<cyborg-ip>:6666/v2
    $ openstack endpoint create --region RegionOne \
      accelerator internal http://<cyborg-ip>:6666/v2
    $ openstack endpoint create --region RegionOne \
      accelerator admin http://<cyborg-ip>:6666/v2
    

    Note

    URLs (publicurl, internalurl and adminurl) may be different depending on your environment.

Configure Cyborg

  1. Edit cyborg.conf with your favorite editor. Below is an example which contains basic settings you likely need to configure.

    [DEFAULT]
    transport_url = rabbit://%RABBITMQ_USER%:%RABBITMQ_PASSWORD%@%OPENSTACK_HOST_IP%:5672/
    use_syslog = False
    state_path = /var/lib/cyborg
    debug = True
    
    ...
    
    [api]
    host_ip = 0.0.0.0
    
    ...
    
    [database]
    connection = mysql+pymysql://%DATABASE_USER%:%DATABASE_PASSWORD%@%OPENSTACK_HOST_IP%/cyborg
    
    ...
    
    [service_catalog]
    cafile = /opt/stack/data/ca-bundle.pem
    project_domain_id = default
    user_domain_id = default
    project_name = service
    password = cyborg
    username = cyborg
    auth_url = http://%OPENSTACK_HOST_IP%/identity
    auth_type = password
    
    ...
    
    [placement]
    project_domain_name = Default
    project_name = service
    user_domain_name = Default
    password = password
    username = placement
    auth_url = http://%OPENSTACK_HOST_IP%/identity
    auth_type = password
    auth_section = keystone_authtoken
    
    ...
    
    [nova]
    project_domain_name = Default
    project_name = service
    user_domain_name = Default
    password = password
    username = nova
    auth_url = http://%OPENSTACK_HOST_IP%/identity
    auth_type = password
    auth_section = keystone_authtoken
    
    ...
    
    [keystone_authtoken]
    memcached_servers = localhost:11211
    signing_dir = /var/cache/cyborg/api
    cafile = /opt/stack/data/ca-bundle.pem
    project_domain_name = Default
    project_name = service
    user_domain_name = Default
    password = cyborg
    username = cyborg
    auth_url = http://%OPENSTACK_HOST_IP%/identity
    auth_type = password
    
  2. Create database tables for Cyborg.

    cyborg-dbsync --config-file /etc/cyborg/cyborg.conf upgrade
    
  3. Install Cyborg API via WSGI api-uwsgi

Note

Cyborg-api service can also be run as a Python command that runs a web serve, which can be launched as follows with different Acceleration service API endpoints as mentioned in Prerequisites part. However, we would like to recommend you the uwsgi way since when a project provides a WSGI application the API service gains flexibility in terms of deployment, performance, configuration and scaling. BYW, if you choose devstack to deploy your acceleration service, uwsgi is a default choice.

cyborg-api –config-file=/etc/cyborg/cyborg.conf

  1. Launch Cyborg Conductor, Cyborg Agent services. Open a separate terminal for each service since the console will be locked by a running process.

    cyborg-conductor --config-file=/etc/cyborg/cyborg.conf
    cyborg-agent --config-file=/etc/cyborg/cyborg.conf