コード例 #1
0
ファイル: servicecall.py プロジェクト: noobg1/testsignupaws
    def call(self, request):
        '''Make API call and translate AWSServiceException to more specific exception'''
        try:
            log.debug(request)
            return_msg = self._client.call(request, self._format)
            log.debug(u'Request ID: {0}'.format(return_msg.json().values()[0]\
                                                [u'ResponseMetadata'][u'RequestId'])) 
                      
            return return_msg.json()
            
        except AwsServiceException as ex:
            log.debug(misc.to_unicode(ex))

            # Translate general RDS exception
            if misc.string_equal_ignore_case(ex.code, AwsErrorCode.OptInRequired):
                raise OptInRequiredException(ex)

            if misc.string_equal_ignore_case(ex.code, AwsErrorCode.InsufficientPrivileges):
                raise InsufficientPrivilegesException(ex)

            if misc.string_equal_ignore_case(ex.code, AwsErrorCode.InvalidParameterValue):
                raise InvalidParameterValueException(ex)
            
            if misc.string_equal_ignore_case(ex.code, AwsErrorCode.MissingParameter):
                raise MissingParameterException(ex)
            
            raise
コード例 #2
0
ファイル: servicecall.py プロジェクト: cpdean/cpd.dotfiles
    def call(self, request):
        """Make API call and translate AWSServiceException to more specific exception"""
        try:
            log.debug(request)
            return_msg = self._client.call(request, self._format)
            log.debug(u"Request ID: {0}".format(return_msg.json().values()[0][u"ResponseMetadata"][u"RequestId"]))

            # TODO: set more specific charset code
            return return_msg.json()

        except AwsServiceException as ex:
            log.debug(misc.to_unicode(ex))

            # Translate general Elastic Beanstalk exception
            if misc.string_equal_ignore_case(ex.code, AwsErrorCode.OptInRequired):
                raise OptInRequiredException(ex)

            if misc.string_equal_ignore_case(ex.code, AwsErrorCode.InsufficientPrivileges):
                raise InsufficientPrivilegesException(ex)

            if misc.string_equal_ignore_case(ex.code, AwsErrorCode.InvalidParameterValue):
                raise InvalidParameterValueException(ex)

            if misc.string_equal_ignore_case(ex.code, AwsErrorCode.MissingParameter):
                raise MissingParameterException(ex)

            raise
コード例 #3
0
ファイル: servicecall.py プロジェクト: basilbeltran/bashitol
    def call(self, request):
        '''Make API call and translate AWSServiceException to more specific exception'''
        try:
            log.debug(request)
            return_msg = self._client.call(request, self._format)
            log.debug(return_msg)

            #TODO: set more specific charset code
            return return_msg.json

        except AwsServiceException as ex:
            # Translate general Elastic Beanstalk exception
            if misc.string_equal_ignore_case(ex.code,
                                             AwsErrorCode.OptInRequired):
                raise OptInRequiredException(ex)

            if misc.string_equal_ignore_case(
                    ex.code, AwsErrorCode.InsufficientPrivileges):
                raise InsufficientPrivilegesException(ex)

            if misc.string_equal_ignore_case(
                    ex.code, AwsErrorCode.InvalidParameterValue):
                raise InvalidParameterValueException(ex)

            if misc.string_equal_ignore_case(ex.code,
                                             AwsErrorCode.MissingParameter):
                raise MissingParameterException(ex)

            raise
コード例 #4
0
ファイル: servicecall.py プロジェクト: mark-lester/Gee
    def call(self, request):
        '''Make API call and translate AWSServiceException to more specific exception'''
        try:
            log.debug(request)
            return_msg = self._client.call(request, self._format)
            log.debug('Request ID: {0}'.format(list(return_msg.json().values())[0]\
                                                ['ResponseMetadata']['RequestId']))

            #TODO: set more specific charset code
            return return_msg.json()

        except AwsServiceException as ex:
            log.debug(misc.to_unicode(ex))

            # Translate general Elastic Beanstalk exception
            if misc.string_equal_ignore_case(ex.code,
                                             AwsErrorCode.OptInRequired):
                raise OptInRequiredException(ex)

            if misc.string_equal_ignore_case(
                    ex.code, AwsErrorCode.InsufficientPrivileges):
                raise InsufficientPrivilegesException(ex)

            if misc.string_equal_ignore_case(
                    ex.code, AwsErrorCode.InvalidParameterValue):
                raise InvalidParameterValueException(ex)

            if misc.string_equal_ignore_case(ex.code,
                                             AwsErrorCode.MissingParameter):
                raise MissingParameterException(ex)

            raise
コード例 #5
0
ファイル: base.py プロジェクト: ignaciosw/aws-devtool
    def ask_confirmation(cls, messsage=None, can_return_none=False):
        if messsage is None:
            messsage = TerminalMessage.ConfirmToProceed

        value = cls.line_input(messsage, can_return_none)

        if value is None:
            return None
        elif misc.string_equal_ignore_case(value, TerminalConstant.Y)\
            or misc.string_equal_ignore_case(value, TerminalConstant.Yes):
            return True
        else:
            return False
コード例 #6
0
ファイル: eb_utils.py プロジェクト: eduardog/aws-toolbox
def has_default_app(parameter_pool, solution_stack, eb_client = None):
    appsource = OptionSepcification(DefualtAppSource.Namespace, DefualtAppSource.OptionName)
    
    options = api_wrapper.retrieve_configuration_options(parameter_pool, 
                                            solution_stack = solution_stack,
                                            options = [appsource],
                                            eb_client = eb_client)
    for option in options:
        if misc.string_equal_ignore_case(DefualtAppSource.Namespace, option.namespace) \
            and misc.string_equal_ignore_case(DefualtAppSource.OptionName, option.name):
            return True
        
    return False
コード例 #7
0
    def ask_confirmation(cls, messsage = None, can_return_none = False):
        if messsage is None:
            messsage = TerminalMessage.ConfirmToProceed 
        
        value = cls.line_input(messsage, can_return_none)

        if value is None:
            return None
        elif misc.string_equal_ignore_case(value, TerminalConstant.Y)\
            or misc.string_equal_ignore_case(value, TerminalConstant.Yes):
            return True
        else:
            return False
コード例 #8
0
def has_default_app(parameter_pool, solution_stack, eb_client=None):
    appsource = OptionSepcification(DefaultAppSource.Namespace,
                                    DefaultAppSource.OptionName)

    options = api_wrapper.retrieve_configuration_options(
        parameter_pool,
        solution_stack=solution_stack,
        options=[appsource],
        eb_client=eb_client)
    for option in options:
        if misc.string_equal_ignore_case(DefaultAppSource.Namespace, option.namespace) \
            and misc.string_equal_ignore_case(DefaultAppSource.OptionName, option.name):
            return True

    return False
コード例 #9
0
    def ask_branch_environment_name(cls, parameter_pool):
        # Auto generate environment name if not specified by user
        if not parameter_pool.has(ParameterName.EnvironmentName):
            old_env_name = None
            app_name = parameter_pool.get_value(ParameterName.ApplicationName,
                                                False)
            current_branch = parameter_pool.get_value(
                ParameterName.CurrentBranch, False)
            env_name = cls.generate_env_name(app_name \
                                             + ServiceDefault.Environment.BRANCH_NAME_SEPERATOR\
                                             + current_branch)
            cls.ask_parameter(parameter_pool,
                              ParameterName.EnvironmentName,
                              autogen_value=env_name)
        else:
            old_env_name = parameter_pool.get_value(
                ParameterName.EnvironmentName, False)
            cls.ask_parameter(parameter_pool, ParameterName.EnvironmentName)

        # Generate option setting file pathname
        new_env_name = parameter_pool.get_value(ParameterName.EnvironmentName,
                                                False)
        if not misc.string_equal_ignore_case(old_env_name, new_env_name):
            new_opsetting_path = os.path.join(
                os.getcwdu(), EbLocalDir.Path,
                OptionSettingFile.Name + u'.' + new_env_name)
            parameter_pool.put(
                Parameter(
                    ParameterName.OptionSettingFile, new_opsetting_path,
                    parameter_pool.get_source(ParameterName.EnvironmentName)))
コード例 #10
0
 def ask_branch_environment_name(cls, parameter_pool):
     # Auto generate environment name if not specified by user
     if not parameter_pool.has(ParameterName.EnvironmentName):
         old_env_name = None
         app_name = parameter_pool.get_value(ParameterName.ApplicationName)
         current_branch = parameter_pool.get_value(ParameterName.CurrentBranch)
         env_name = re.sub(ServiceDefault.Environment.REGEX_NAME_FILTER, 
                            u'', app_name, flags = re.UNICODE)
         if len(env_name) > 0:
             env_name = env_name + ServiceDefault.Environment.BRANCH_NAME_SEPERATOR\
                 + current_branch + ServiceDefault.Environment.NAME_POSTFIX
             if len(env_name) > ServiceDefault.Environment.MAX_NAME_LEN:
                 env_name = env_name[:ServiceDefault.Environment.MAX_NAME_LEN]
         else:
             env_name = None
         cls.ask_parameter(parameter_pool, 
                            ParameterName.EnvironmentName,
                            autogen_value = env_name)
     else:
         old_env_name = parameter_pool.get_value(ParameterName.EnvironmentName)
         cls.ask_parameter(parameter_pool, ParameterName.EnvironmentName)            
 
     # Generate option setting file pathname
     new_env_name = parameter_pool.get_value(ParameterName.EnvironmentName)
     if not misc.string_equal_ignore_case(old_env_name, new_env_name):
         new_opsetting_path = os.path.join(os.getcwdu(), EbLocalDir.Path, 
                                        OptionSettingFile.Name + u'.' + new_env_name)
         parameter_pool.put(Parameter(ParameterName.OptionSettingFile,
                                      new_opsetting_path,
                                      parameter_pool.get_source(ParameterName.EnvironmentName)))
コード例 #11
0
 def _validate_change(self, parameter_pool, eb_client, app_name, env_name, 
                      option_settings, option_remove, template_spec):
     response = eb_client.validate_configuration_settings(app_name, option_settings, 
                                                          environment_name = env_name,
                                                          option_remove = option_remove,
                                                          template_specification = template_spec)
     warning_count = 0
     error_count = 0
     for message in response.result:
         if misc.string_equal_ignore_case(message.severity, ValidationSeverity.SeverityError):
             error_count = error_count + 1
         else:
             warning_count = warning_count + 1
         prompt.error(ValidationMessage.ValidateSettingError.format\
                      (message.severity, message.namespace, message.option_name, message.message))
         
     if error_count > 0:            
         log.info('Validating configuration setting failed. Abort command.')
         raise EBSCliException()
     elif warning_count > 0:
         if parameter_pool.get_value(ParameterName.Force) == ServiceDefault.ENABLED:
             pass
         elif not TerminalBase.ask_confirmation(UpdateEnvironmentOptionSettingOpMessage.Continue):
             log.info('User cancelled command.')
             raise EBSCliException()
     else:
         log.info('Validating configuration setting passed.')
コード例 #12
0
ファイル: eb_utils.py プロジェクト: alwaysanirudh/revaar
def has_default_app(parameter_pool, solution_stack, eb_client = None):
    appsource_options = {DefaultAppSource.Namespace : {DefaultAppSource.OptionName}}
    
    spec = TemplateSpecification()
    spec.template_source.solution_stack_name = solution_stack,     
    
    options = api_wrapper.retrieve_configuration_options(parameter_pool, 
                                            solution_stack = solution_stack,
                                            options = appsource_options,
                                            template_specification = spec,
                                            eb_client = eb_client)
    for option in options:
        if misc.string_equal_ignore_case(DefaultAppSource.Namespace, option.namespace) \
            and misc.string_equal_ignore_case(DefaultAppSource.OptionName, option.name):
            return True
        
    return False
コード例 #13
0
    def call(self, request):
        '''Make API call and translate AWSServiceException to more specific exception'''
        try:
            log.debug(request)
            return_msg = self._client.call(request, self._format)
            log.debug(u'Request ID: {0}'.format(return_msg.json().values()[0]\
                                                [u'ResponseMetadata'][u'RequestId']))

            return return_msg.json()

        except AwsServiceException as ex:
            log.debug(misc.to_unicode(ex))

            # Translate general IAM exception
            if misc.string_equal_ignore_case(ex.code,
                                             AwsErrorCode.AccessDenied):
                raise AccessDeniedException(ex)

            elif misc.string_equal_ignore_case(ex.code,
                                               AwsErrorCode.OptInRequired):
                raise OptInRequiredException(ex)

            elif misc.string_equal_ignore_case(
                    ex.code, AwsErrorCode.InsufficientPrivileges):
                raise InsufficientPrivilegesException(ex)

            elif misc.string_equal_ignore_case(
                    ex.code, AwsErrorCode.InvalidParameterValue):
                raise InvalidParameterValueException(ex)

            elif misc.string_equal_ignore_case(ex.code,
                                               AwsErrorCode.MissingParameter):
                raise MissingParameterException(ex)

            elif misc.string_equal_ignore_case(
                    ex.code, IamErrorCode.EntityAlreadyExists):
                raise IamEntityAlreadyExistsException(ex)

            elif misc.string_equal_ignore_case(ex.code,
                                               IamErrorCode.NoSuchEntity):
                raise IamNoSuchEntityException(ex)

            elif misc.string_equal_ignore_case(
                    ex.code, IamErrorCode.MalformedPolicyDocument):
                raise IamMalformedPolicyDocumentException(ex)

            elif misc.string_equal_ignore_case(ex.code,
                                               IamErrorCode.LimitExceeded):
                raise IamLimitExceededException(ex)

            raise
コード例 #14
0
def has_default_app(parameter_pool, solution_stack, eb_client = None):
    appsource_options = {DefaultAppSource.Namespace : {DefaultAppSource.OptionName}}
    
    if not eb_client:
        eb_client = api_wrapper.create_eb_client(parameter_pool)
    
    spec = TemplateSpecification()
    spec.template_source.solution_stack_name = solution_stack,     
    
    options = api_wrapper.retrieve_configuration_options(eb_client = eb_client,
                                            solution_stack = solution_stack,
                                            options = appsource_options,
                                            template_specification = spec)
    for option in options:
        if misc.string_equal_ignore_case(DefaultAppSource.Namespace, option.namespace) \
            and misc.string_equal_ignore_case(DefaultAppSource.OptionName, option.name):
            return True
        
    return False
コード例 #15
0
    def ask_environment_name(cls, parameter_pool):
        # Auto generate environment name if not specified by user
        if not parameter_pool.has(ParameterName.EnvironmentName):
            old_env_name = None
            app_name = parameter_pool.get_value(ParameterName.ApplicationName)
            env_name = re.sub(ServiceDefault.Environment.REGEX_NAME_FILTER, 
                               u'', app_name, flags = re.UNICODE)
            if len(env_name) > 0:
                env_name = env_name + ServiceDefault.Environment.NAME_POSTFIX
                if len(env_name) > ServiceDefault.Environment.MAX_NAME_LEN:
                    env_name = env_name[:ServiceDefault.Environment.MAX_NAME_LEN]
            else:
                env_name = None
            cls.ask_parameter(parameter_pool, 
                               ParameterName.EnvironmentName,
                               autogen_value = env_name)
        else:
            old_env_name = parameter_pool.get_value(ParameterName.EnvironmentName)
            cls.ask_parameter(parameter_pool, ParameterName.EnvironmentName)            
    
        # Post processing
        new_env_name = parameter_pool.get_value(ParameterName.EnvironmentName)
        new_env_source = parameter_pool.get_source(ParameterName.EnvironmentName)
        
        # Reload RDS password if environment name changes
        if old_env_name != new_env_name:
            location = parameter_pool.get_value(ParameterName.AwsCredentialFile) \
                if parameter_pool.has(ParameterName.AwsCredentialFile) else None
            rds_password = config_file.read_rds_master_password(new_env_name, location)
            if rds_password:
                parameter_pool.put(Parameter(ParameterName.RdsMasterPassword,
                                             rds_password,
                                             new_env_source))
            else:
                parameter_pool.remove(ParameterName.RdsMasterPassword)
    
        # Generate option setting file pathname
        if parameter_pool.get_source(ParameterName.OptionSettingFile) == ParameterSource.Default\
            or not misc.string_equal_ignore_case(old_env_name, new_env_name):
            new_opsetting_path = os.path.join(os.getcwdu(), EbLocalDir.Path, 
                                           OptionSettingFile.Name + u'.' + new_env_name)
            old_opsetting_path = parameter_pool.get_value(ParameterName.OptionSettingFile)
            
            # Rename old style optionsetting file 
            if parameter_pool.get_source(ParameterName.OptionSettingFile) == ParameterSource.Default\
                and parameter_pool.has(ParameterName.OriginalSolutionStack)\
                and old_opsetting_path and os.path.exists(old_opsetting_path):
                os.rename(old_opsetting_path, new_opsetting_path)

            # Update optionsetting file name in parameter pool                
            parameter_pool.put(Parameter(ParameterName.OptionSettingFile,
                                         new_opsetting_path,
                                         new_env_source))
コード例 #16
0
    def ask_environment_name(cls, parameter_pool):
        # Auto generate environment name if not specified by user
        if not parameter_pool.has(ParameterName.EnvironmentName):
            old_env_name = None
            app_name = parameter_pool.get_value(ParameterName.ApplicationName,
                                                False)
            env_name = cls.generate_env_name(app_name)
            cls.ask_parameter(parameter_pool,
                              ParameterName.EnvironmentName,
                              autogen_value=env_name)
        else:
            old_env_name = parameter_pool.get_value(
                ParameterName.EnvironmentName, False)
            cls.ask_parameter(parameter_pool, ParameterName.EnvironmentName)

        # Post processing
        new_env_name = parameter_pool.get_value(ParameterName.EnvironmentName,
                                                False)
        new_env_source = parameter_pool.get_source(
            ParameterName.EnvironmentName)

        # Reload RDS password if environment name changes
        if old_env_name != new_env_name:
            location = parameter_pool.get_value(
                ParameterName.AwsCredentialFile)
            rds_password = config_file.read_rds_master_password(
                new_env_name, location)
            if rds_password:
                parameter_pool.put(
                    Parameter(ParameterName.RdsMasterPassword, rds_password,
                              new_env_source))
            else:
                parameter_pool.remove(ParameterName.RdsMasterPassword)

        # Generate option setting file pathname
        if parameter_pool.get_source(ParameterName.OptionSettingFile) == ParameterSource.Default\
            or not misc.string_equal_ignore_case(old_env_name, new_env_name):
            new_opsetting_path = os.path.join(
                os.getcwdu(), EbLocalDir.Path,
                OptionSettingFile.Name + u'.' + new_env_name)
            old_opsetting_path = parameter_pool.get_value(
                ParameterName.OptionSettingFile, False)

            # Rename old style optionsetting file
            if parameter_pool.get_source(ParameterName.OptionSettingFile) == ParameterSource.Default\
                and parameter_pool.has(ParameterName.OriginalSolutionStack)\
                and old_opsetting_path and os.path.exists(old_opsetting_path):
                os.rename(old_opsetting_path, new_opsetting_path)

            # Update optionsetting file name in parameter pool
            parameter_pool.put(
                Parameter(ParameterName.OptionSettingFile, new_opsetting_path,
                          new_env_source))
コード例 #17
0
    def call(self, request):
        '''Make API call and translate AWSServiceException to more specific exception'''
        try:
            log.debug(request)
            return_msg = self._client.call(request, self._format)
            log.debug(u'Request ID: {0}'.format(return_msg.json().values()[0]\
                                                [u'ResponseMetadata'][u'RequestId'])) 
                      
            return return_msg.json()
            
        except AwsServiceException as ex:
            log.debug(misc.to_unicode(ex))

            # Translate general IAM exception
            if misc.string_equal_ignore_case(ex.code, AwsErrorCode.AccessDenied):
                raise AccessDeniedException(ex)

            elif misc.string_equal_ignore_case(ex.code, AwsErrorCode.OptInRequired):
                raise OptInRequiredException(ex)

            elif misc.string_equal_ignore_case(ex.code, AwsErrorCode.InsufficientPrivileges):
                raise InsufficientPrivilegesException(ex)

            elif misc.string_equal_ignore_case(ex.code, AwsErrorCode.InvalidParameterValue):
                raise InvalidParameterValueException(ex)
            
            elif misc.string_equal_ignore_case(ex.code, AwsErrorCode.MissingParameter):
                raise MissingParameterException(ex)

            elif misc.string_equal_ignore_case(ex.code, IamErrorCode.EntityAlreadyExists):
                raise IamEntityAlreadyExistsException(ex)

            elif misc.string_equal_ignore_case(ex.code, IamErrorCode.NoSuchEntity):
                raise IamNoSuchEntityException(ex)

            elif misc.string_equal_ignore_case(ex.code, IamErrorCode.MalformedPolicyDocument):
                raise IamMalformedPolicyDocumentException(ex)

            elif misc.string_equal_ignore_case(ex.code, IamErrorCode.LimitExceeded):
                raise IamLimitExceededException(ex)
            
            raise
コード例 #18
0
    def ask_environment_name(cls, parameter_pool):
        # Auto generate environment name if not specified by user
        if not parameter_pool.has(ParameterName.EnvironmentName):
            old_env_name = None
            app_name = parameter_pool.get_value(ParameterName.ApplicationName, False)
            env_name = cls.generate_env_name(app_name)
            cls.ask_parameter(parameter_pool, 
                               ParameterName.EnvironmentName,
                               autogen_value = env_name)
        else:
            old_env_name = parameter_pool.get_value(ParameterName.EnvironmentName, False)
            #cls.ask_parameter(parameter_pool, ParameterName.EnvironmentName)
            print "Env Name is %s \n" % old_env_name
            return old_env_name

    
        # Post processing
        new_env_name = parameter_pool.get_value(ParameterName.EnvironmentName, False)
        new_env_source = parameter_pool.get_source(ParameterName.EnvironmentName)
        
        # Reload RDS password if environment name changes
        if old_env_name != new_env_name:
            location = parameter_pool.get_value(ParameterName.AwsCredentialFile)
            rds_password = config_file.read_rds_master_password(new_env_name, location)
            if rds_password:
                parameter_pool.put(Parameter(ParameterName.RdsMasterPassword,
                                             rds_password,
                                             new_env_source))
            else:
                parameter_pool.remove(ParameterName.RdsMasterPassword)
    
        # Generate option setting file pathname
        if parameter_pool.get_source(ParameterName.OptionSettingFile) == ParameterSource.Default\
            or not misc.string_equal_ignore_case(old_env_name, new_env_name):
            new_opsetting_path = os.path.join(os.getcwdu(), EbLocalDir.Path, 
                                           OptionSettingFile.Name + u'.' + new_env_name)
            old_opsetting_path = parameter_pool.get_value(ParameterName.OptionSettingFile, False)
            
            # Rename old style optionsetting file 
            if parameter_pool.get_source(ParameterName.OptionSettingFile) == ParameterSource.Default\
                and parameter_pool.has(ParameterName.OriginalSolutionStack)\
                and old_opsetting_path and os.path.exists(old_opsetting_path):
                os.rename(old_opsetting_path, new_opsetting_path)

            # Update optionsetting file name in parameter pool                
            parameter_pool.put(Parameter(ParameterName.OptionSettingFile,
                                         new_opsetting_path,
                                         new_env_source))
コード例 #19
0
 def _sort_snapshots_by_create_time(cls, snapshots):
     sorted_snapshots = deque()
     for item in snapshots:
         if misc.string_equal_ignore_case(item.snapshot_type, DBSnapshot.TypeAutomated):
             continue    #skip if snapshot is created automated
         
         if len(sorted_snapshots) < 1:
             sorted_snapshots.append(item)
         elif item._snapshot_create_time_raw <  sorted_snapshots[-1]._snapshot_create_time_raw:
             sorted_snapshots.append(item)
         else:
             shift = 0
             while item._snapshot_create_time_raw <  sorted_snapshots[0]._snapshot_create_time_raw:
                 sorted_snapshots.rotate(-1)
                 shift = shift + 1
             sorted_snapshots.appendleft(item)
             sorted_snapshots.rotate(shift)
     
     return sorted_snapshots
コード例 #20
0
ファイル: rds_terminal.py プロジェクト: basilbeltran/bashitol
 def _sort_snapshots_by_create_time(cls, snapshots):
     sorted_snapshots = _deque()
     for item in snapshots:
         if misc.string_equal_ignore_case(item.snapshot_type, DBSnapshot.TypeAutomated):
             continue    #skip if snapshot is created automated
         
         if len(sorted_snapshots) < 1:
             sorted_snapshots.append(item)
         elif item._snapshot_create_time_raw <  sorted_snapshots[-1]._snapshot_create_time_raw:
             sorted_snapshots.append(item)
         else:
             shift = 0
             while item._snapshot_create_time_raw <  sorted_snapshots[0]._snapshot_create_time_raw:
                 sorted_snapshots.rotate(-1)
                 shift = shift + 1
             sorted_snapshots.appendleft(item)
             sorted_snapshots.rotate(shift)
     
     return sorted_snapshots
コード例 #21
0
    def ask_branch_environment_name(cls, parameter_pool):
        # Auto generate environment name if not specified by user
        if not parameter_pool.has(ParameterName.EnvironmentName):
            old_env_name = None
            app_name = parameter_pool.get_value(ParameterName.ApplicationName)
            current_branch = parameter_pool.get_value(
                ParameterName.CurrentBranch)
            env_name = re.sub(ServiceDefault.Environment.REGEX_NAME_FILTER,
                              u'',
                              app_name,
                              flags=re.UNICODE)
            if len(env_name) > 0:
                env_name = env_name + ServiceDefault.Environment.BRANCH_NAME_SEPERATOR\
                    + current_branch + ServiceDefault.Environment.NAME_POSTFIX
                if len(env_name) > ServiceDefault.Environment.MAX_NAME_LEN:
                    env_name = env_name[:ServiceDefault.Environment.
                                        MAX_NAME_LEN]
            else:
                env_name = None
            cls.ask_parameter(parameter_pool,
                              ParameterName.EnvironmentName,
                              autogen_value=env_name)
        else:
            old_env_name = parameter_pool.get_value(
                ParameterName.EnvironmentName)
            cls.ask_parameter(parameter_pool, ParameterName.EnvironmentName)

        # Generate option setting file pathname
        new_env_name = parameter_pool.get_value(ParameterName.EnvironmentName)
        if not misc.string_equal_ignore_case(old_env_name, new_env_name):
            new_opsetting_path = os.path.join(
                os.getcwdu(), EbLocalDir.Path,
                OptionSettingFile.Name + u'.' + new_env_name)
            parameter_pool.put(
                Parameter(
                    ParameterName.OptionSettingFile, new_opsetting_path,
                    parameter_pool.get_source(ParameterName.EnvironmentName)))
コード例 #22
0
 def ask_branch_environment_name(cls, parameter_pool):
     # Auto generate environment name if not specified by user
     if not parameter_pool.has(ParameterName.EnvironmentName):
         old_env_name = None
         app_name = parameter_pool.get_value(ParameterName.ApplicationName, False)
         current_branch = parameter_pool.get_value(ParameterName.CurrentBranch, False)
         env_name = cls.generate_env_name(app_name \
                                          + ServiceDefault.Environment.BRANCH_NAME_SEPERATOR\
                                          + current_branch)
         cls.ask_parameter(parameter_pool, 
                            ParameterName.EnvironmentName,
                            autogen_value = env_name)
     else:
         old_env_name = parameter_pool.get_value(ParameterName.EnvironmentName, False)
         cls.ask_parameter(parameter_pool, ParameterName.EnvironmentName)            
 
     # Generate option setting file pathname
     new_env_name = parameter_pool.get_value(ParameterName.EnvironmentName, False)
     if not misc.string_equal_ignore_case(old_env_name, new_env_name):
         new_opsetting_path = os.path.join(os.getcwdu(), EbLocalDir.Path, 
                                        OptionSettingFile.Name + u'.' + new_env_name)
         parameter_pool.put(Parameter(ParameterName.OptionSettingFile,
                                      new_opsetting_path,
                                      parameter_pool.get_source(ParameterName.EnvironmentName)))