'''
/*-
* ============LICENSE_START=======================================================
* APPC
* ================================================================================
* Copyright (C) 2017 AT&T Intellectual Property.  All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ============LICENSE_END=========================================================
* ECOMP is a trademark and service mark of AT&T Intellectual Property.
*/
'''

============
INSTALLATION:
============

Python:
-------
sudo apt-get install python2.7
sudo apt-get install python-pip
pip install PyMySQL
pip install requests

Ansible:
--------
sudo apt-get install software-properties-common
sudo apt-add-repository ppa:ansible/ansible
sudo apt-get update
sudo apt-get install ansible

SQL db:
-------

sudo apt-get install mysql-server

Set root passwd during installation (i.e. password_4_mysql_user_id)

sudo service mysql restart

Setup mysql:
------------

mysql -u [username]-p
mysql -uroot -p

Create user (i.e. id=mysql_user_id psswd=password_4_mysql_user_id)
  CREATE USER 'appc'@'%' IDENTIFIED BY 'password_4_mysql_user_id';
  GRANT ALL PRIVILEGES ON *.* TO 'mysql_user_id'@'%';
  SET PASSWORD FOR 'mysql_user_id'@'%'=PASSWORD('password_4_mysql_user_id');

Create schema
  CREATE SCHEMA ansible;
  show databases;
  use ansible;
  CREATE TABLE playbook (name VARCHAR(45) NOT NULL, value BLOB, type VARCHAR(60), version VARCHAR(60), PRIMARY KEY (name));
  show tables;
  CREATE TABLE inventory (hostname VARCHAR(45) NOT NULL, hostgroup VARCHAR(45), credentials VARCHAR(500), PRIMARY KEY (hostname));
  SHOW COLUMNS FROM playbook;
  SHOW COLUMNS FROM inventory;
  GRANT ALL PRIVILEGES ON *.* TO 'mysql_user_id'@'%' IDENTIFIED BY 'password_4_mysql_user_id' WITH GRANT OPTION;
  GRANT ALL PRIVILEGES ON *.* TO 'ansible'@'%' IDENTIFIED BY 'ansible_agent' WITH GRANT OPTION;
  FLUSH PRIVILEGES;

Load db:
--------

python LoadAnsibleMySql.py

=============
CODE TESTING:
=============
1. Start RestServer: python RestServer.py

2. Try curl commands (case no secured REST: http & no authentication):

- Request to execute playbook:
curl -H "Content-type: application/json" -X POST -d '{"Id": "10", "PlaybookName": "ansible_sleep", "NodeList": ["host"], "Timeout": "60", "EnvParameters": {"Sleep": "10"}}' http://0.0.0.0:8000/Dispatch

response: {"ExpectedDuration": "60sec", "StatusMessage": "PENDING", "StatusCode": 100}

- Get results (blocked until test finished):
curl --cacert ~/SshKey/fusion_eric-vm_cert.pem --user "appc:abc123" -H "Content-type: application/json" -X GET  "http://0.0.0.0:8000/Dispatch/?Id=10&Type=GetResult"

response: {"Results": {"localhost": {"GroupName": "host", "StatusMessage": "SUCCESS", "StatusCode": 200}}, "PlaybookName": "ansible_sleep", "Version": "0.00", "Duration": "11.261794", "StatusMessage": "FINISHED", "StatusCode": 200}

- Delete playbook execution information
curl --cacert ~/SshKey/fusion_eric-vm_cert.pem --user "appc:abc123" -H "Content-type: application/json" -X DELETE  http://0.0.0.0:8000/Dispatch/?Id=10

response: {"StatusMessage": "PLAYBOOK EXECUTION RECORDS DELETED", "StatusCode": 200}
