..
 This work is licensed under a Creative Commons Attribution 4.0
 International License.

===================================
ONAP MultiCloud Administrator Guide
===================================

The guide for MultiCloud Administrator.

Architecture
============

Please refer to the link for more details:
https://wiki.onap.org/pages/viewpage.action?pageId=8227952


Configuration
=============

Multicloud doesn’t have any configuration file for now.

Administration
==============

From MSB
--------

After Multicloud is up and running, administrator can check Multicloud
services from MSB. Go to MSB UI page, administrator should see several icons
with name that starts with multicloud.

.. image:: ./images/msb-icons.png
    :alt: Multicloud icons in MSB
    :width: 975
    :height: 293
    :align: center

The icon named Multicloud is the main framework of Multicloud services. And
other icons are the plugin for corresponding backend cloud. For example,
multilcloud-vio is the plugin for VMware Integrated OpenStack.

Administrator can manage Multicloud from MSB UI page. By clicking the icon
named multicloud, there will be available api URL in the bottom of MSB UI
page. After filling required fields, and clicking `Try it out!`, administrator
can perform GET/POST/PUT/DELETE over Multicloud.

From CLI
--------

Besides the MSB UI page, Administrator could manage Multicloud from command
line interface(CLI). Multicloud’s CLI is the same as OpenStack’s CLI, and
therefore, administrator can use OpenStack Client to manage Multicloud.
To make OpenStack Client work with Multicloud, administrator needs to set the
environment variables of operation system. An example of environment variables
is list as below:

::

    OS_AUTH_URL=http://<msb-ip>:80/api/multicloud/v0/<vim_info>/identity/v3
    OS_PROJECT_ID=<project id in backend OpenStack>
    OS_PROJECT_NAME=<project name in backend OpenStack>
    OS_USER_DOMAIN_NAME=<domain name in backend OpenStack>
    OS_USERNAME=<administrator username in backend OpenStack>
    OS_PASSWORD=<password of administrator in backend OpenStack>
    OS_REGION_NAME=<region name in backend OpenStack>
    OS_INTERFACE=internal
    OS_IDENTITY_API_VERSION=3

<msb-ip> in OS_AUTH_URL is the IP address of MSB. <vim-info> is composed of
cloud_type and cloud_region_id. These two attributes are information of cloud
from A&AI. Other environment variables listed above are some information from
Multicloud’s backend OpenStack.
After exporting above variables into operation system, administrator can use
OpenStack Client to mange Multicloud. For example:

::

    nova list

will list the virtual machine in Multicloud’s backend OpenStack.


Logging And Diagnostics
=======================


Logging file
------------

The logging file named "runtime_multivimbroker.log" located at /opt/multivimbroker/logs/ directory
would record  INFO, WARN, ERROR and DEBUG level of information.
The format string of logging is "%(asctime)s-%(funcName)s-%(filename)s-%(lineno)d-%(levelno)s-%(content string)s".
If there are any issus happened in framework service, you are able to check ERROR level logging to
diagnose the problem.
The content of this file list as below:

::

    2017-11-03 07:03:31,646:[multivimbroker.pub.utils.restcall]:[restcall.py]-[63][DEBUG]:request=http://192.168.10.45:80/api/multicloud/v0/vmware_vio/identity/v2.0)
    2017-11-03 07:08:38,020:[multivimbroker.pub.utils.restcall]:[restcall.py]-[63][DEBUG]:request=https://192.168.10.26:8443/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/vmware/vio)
    2017-11-03 07:08:38,103:[multivimbroker.pub.utils.restcall]:[restcall.py]-[63][DEBUG]:request=http://192.168.10.45:80/api/multicloud/v0/vmware_vio/identity/v2.0)


The stdout of framework service named "nohup.out" located at /opt/multivimbroker/ record each http request.
The content of this file looks like as below:

::

    [25/Oct/2017 00:09:27] "POST /api/multicloud/v0/vmware_vio/identity/v2.0/tokens HTTP/1.0" 500 273
    [25/Oct/2017 14:17:27] "POST /api/multicloud/v0/vmware_fake/identity/v2.0/tokens HTTP/1.0" 200 5389
    [26/Oct/2017 23:44:13] "POST /api/multicloud/v0/vmware_vio/identity/v3/auth/tokens HTTP/1.0" 200 6213


Each line compose with http method, url and response code, so you are able to check the response status of
every http request.
