o .&a$@sddlmZddlmZddlmZddlmZddlmZGdddeZGdd d eZGd d d eZ Gd d d eZ dS)) constants)emrutils) hbaseutils)helptext)Commandc@sHeZdZdZdejZddejdddejddej dgZ d d Z d S) RestoreFromHBaseBackupzrestore-from-hbase-backupzRestores HBase from S3. cluster-idTnamerequired help_textdirzbackup-versionr r cCsXg}t|j|j}tjtjtjtj |d}| ||j |d}t |j d||dSN)jarr action_on_failureargs JobFlowIdStepsAddJobFlowStepsr)r$build_hbase_restore_from_backup_argsr backup_versionr build_steprHBASE_JAR_PATHHBASE_RESTORE_STEP_NAMECANCEL_AND_WAITappend cluster_idcall_and_display_response_sessionself parsed_argsparsed_globalsstepsr step_config parametersr(A/usr/lib/python3/dist-packages/awscli/customizations/emr/hbase.py_run_main_command"s$  z(RestoreFromHBaseBackup._run_main_commandN) __name__ __module__ __qualname__NAMErAVAILABLE_ONLY_FOR_AMI_VERSIONS DESCRIPTION CLUSTER_IDHBASE_BACKUP_DIRHBASE_BACKUP_VERSION ARG_TABLEr*r(r(r(r)rs  rc @seZdZdZdejZddejdddddddejdd dd dd dd dd ddddddgZ ddZ ddZ ddZ ddZ dS)ScheduleHBaseBackupzschedule-hbase-backupz0Adds a step to schedule automated HBase backup. rTr typez<

Backup type. You can specify 'incremental' or 'full'.

r intervalz

The time between backups.

unitz|

The time unit for backup's time-interval. You can specify one of the following values: 'minutes', 'hours', or 'days'.

z start-timez]

The time of the first backup in ISO format.

e.g. 2014-04-21T05:26:10Z. Default is now.r consistent store_truep

Performs a consistent backup. Pauses all write operations to the HBase cluster during the backup process.

r actionr cCsjg}||j||j||}tjtjtj tj |d}| ||j |d}t |jd||dSr) _check_typer6 _check_unitr8!_build_hbase_schedule_backup_argsrrrrHBASE_SCHEDULE_BACKUP_STEP_NAMErrrrr r!r(r(r)r*Ps$     z%ScheduleHBaseBackup._run_main_commandcCs@|}|tjkr|tjkrtdtjdtjddSdS)Nz0aws: error: invalid type. type should be either  or .)lowerrFULL INCREMENTAL ValueError)r"r6r(r(r)r>cszScheduleHBaseBackup._check_typecCsX|}|tjkr&|tjkr(|tjkr*tdtjdtjdtjddSdSdS)NzFaws: error: invalid unit. unit should be one of the following values: z, rBrC)rDrMINUTESHOURSDAYSrG)r"r8r(r(r)r?ks(   zScheduleHBaseBackup._check_unitcCstjtjtjtj|jg}|j}|j}|j dur!| tj |tj kr-| tj n| tj| |j|tj krE| tjn| tj| || tj|jdurc| |j|S| tj|SNT)r HBASE_MAINHBASE_SCHEDULED_BACKUPTRUEr2r r6rDr8r9rHBASE_BACKUP_CONSISTENTrEHBASE_FULL_BACKUP_INTERVAL!HBASE_INCREMENTAL_BACKUP_INTERVALr7HBASE_FULL_BACKUP_INTERVAL_UNIT&HBASE_INCREMENTAL_BACKUP_INTERVAL_UNITHBASE_BACKUP_STARTTIME start_timeNOW)r"r#rr6r8r(r(r)r@us*               z5ScheduleHBaseBackup._build_hbase_schedule_backup_argsN)r+r,r-r.rr/r0r1r2r4r*r>r?r@r(r(r(r)r55s> r5c@sPeZdZdZdejZddejdddejdddd d gZ d d Z d dZ dS)CreateHBaseBackupzcreate-hbase-backupzCreates a HBase backup in S3. rTr r r9r:r;r<cCsRg}||}tjtjtjtj|d}|||j|d}t |j d||dSr) _build_hbase_backup_argsrrrrHBASE_BACKUP_STEP_NAMErrrrr r!r(r(r)r*s    z#CreateHBaseBackup._run_main_commandcCs.tjtjtj|jg}|jdur|tj|SrK)rrL HBASE_BACKUPr2r r9rrO)r"r#rr(r(r)rXs  z*CreateHBaseBackup._build_hbase_backup_argsN) r+r,r-r.rr/r0r1r2r4r*rXr(r(r(r)rWs" rWc@sNeZdZdZdejZddejddddd d dd d gZd d Z ddZ dS)DisableHBaseBackupszdisable-hbase-backupsz/Add a step to disable automated HBase backups. rTr fullr:zDisables full backup.r< incrementalzDisables incremental backup.cCsPg}||}ttjtjtj|}|||j|d}t |j d||dS)Nrrr) !_build_hbase_disable_backups_argsrrrrrArrrrr r!r(r(r)r*s    z%DisableHBaseBackups._run_main_commandcCsttjtjtjg}|jdur"|jdur"dtjdtjd}t||jdur-| tj |jdur8| tj |S)NFz!Should specify at least one of --z and --rCT) rrLrMFALSEr\r]rErFrGrHBASE_DISABLE_FULL_BACKUP HBASE_DISABLE_INCREMENTAL_BACKUP)r"r#r error_messager(r(r)r^s&    z5DisableHBaseBackups._build_hbase_disable_backups_argsN) r+r,r-r.rr/r0r1r4r*r^r(r(r(r)r[s" r[N) awscli.customizations.emrrrrr!awscli.customizations.emr.commandrrr5rWr[r(r(r(r)s     a+