User:Denis M.

= Mission = Provide specific API interface to end-user which would allow to manipulate with database log files.

= Design = Log manipulations are designed to let user perform log investigations. Since Trove is PaaS - level project, it's user cannot interact with compute instance directly, only with database through given API (database operations). That is we

= API Schema =

DownloadDBLogFile request parameters and DBLog Model

 * Description
 * Downloads current database log file.
 * Downloads current database log file.

Request Parameters:

 * Instance ID or Name
 * The customer-assigned name of the DB instance that contains the log files you want to list.
 * Constraints:
 * Must contain from 1 to 63 alphanumeric characters or hyphens or UUID
 * Type: String
 * Required: Yes
 * LogFileName
 * The name of the log file to be downloaded.
 * Type: String
 * Required: Yes
 * Marker
 * The pagination token provided in the previous request. If this parameter is specified the response includes only records beyond the marker, up to MaxRecords (defined via Trove conf).
 * Type: String
 * Required: No
 * NumberOfLines
 * The number of lines remaining to be downloaded.
 * Type: Integer
 * Required: No
 * Required: Yes
 * Marker
 * The pagination token provided in the previous request. If this parameter is specified the response includes only records beyond the marker, up to MaxRecords (defined via Trove conf).
 * Type: String
 * Required: No
 * NumberOfLines
 * The number of lines remaining to be downloaded.
 * Type: Integer
 * Required: No
 * Required: No

Response Elements

 * The following elements are returned in a structure named DBLog.
 * LogFileData
 * Log file entry.
 * Type: String
 * Errors
 * DBInstanceNotFound
 * DBInstanceIdentifier does not refer to an existing DB instance.
 * HTTP Status Code: 404
 * HTTP Status Code: 404

DBLog Database Model

 * ID
 * UUID
 * Type: String
 * DBInstanceID
 * UUID of DBInstance.
 * Type: String
 * Location
 * URL. Storage location
 * Type: String
 * CreateAt
 * A POSIX timestamp when the last log entry was created.
 * Type: String
 * LogFileName
 * The name of the log file for the specified DB instance.
 * Type: String
 * Size
 * The size, in bytes, of the log file for the specified DB instance.
 * Type: Long
 * DeletedAt:
 * A POSIX timestamp when the log entry was deleted.
 * Type: String
 * Deleted:
 * If record deleted then True
 * Type: Boolean

= Server-side configuration =
 * Trove taskmanager and api services would require next conf values:


 * 1) log_file_storage_dir per datastore (could be retrieved from database configuration at guest side).
 * 2) pagination limit.

= Guest-side configuration =
 * Same as server side, guest side requires several configuration values:


 * 1) naming convention: uuid+daytime.log
 * 2) manifest convention: *.log or *tar.bz2 or *tar.gz
 * 3) Storage Strategy: Swift
 * 4) Container: logs_files