def describe_rules()

in footmark/ess/connection.py [0:0]


    def describe_rules(self, scaling_group_id=None, scaling_rule_ids=None, scaling_rule_names=None, scaling_rule_aris=None,
                       pagenumber=None, pagesize=50):
        """
        Queries information of a scaling rule. You can query all scaling rules in a scaling group by specifying the scaling group ID.
        
        :type str
        :param scaling_group_id: ID of the scaling group of a scaling configuration.
        :type list
        :param scaling_rule_ids: List ID of a scaling configurations. A maximum of 10 values can be entered.
        :type list
        :param scaling_rule_names: List name of a scaling configurations. A maximum of 10 values can be entered.
        :type list
        :param scaling_rule_aris: Unique identifier of a scaling rule. A maximum of 10 values can be entered.
        :type int
        :param pagenumber: Page number of the scaling rule list. The initial value and default value are both 1.
        :type int
        :param pagesize: When querying by page, this parameter indicates the number of lines per page. Maximum value: 50;
            default value: 50.
        
        :rtype: list
        :return: A list of  :class:`footmark.ess.rule`
    
        """

        rules = []
        params = {}
        if scaling_group_id:
            self.build_list_params(params, scaling_group_id, 'ScalingGroupId')
        if scaling_rule_ids:
            for i in range(len(scaling_rule_ids)):
                if i < 10 and scaling_rule_ids[i]:
                    self.build_list_params(params, scaling_rule_ids[i], 'ScalingRuleId'+ bytes(i+1))
        if scaling_rule_names:
            for i in range(len(scaling_rule_names)):
                if i < 10 and scaling_rule_names[i]:
                    self.build_list_params(params, scaling_rule_names[i], 'ScalingRuleName'+bytes(i+1))
        if scaling_rule_aris:
            for i in range(len(scaling_rule_aris)):
                if i < 10 and scaling_rule_aris[i]:
                    self.build_list_params(params, scaling_rule_aris[i], 'ScalingRuleAri'+bytes(i+1))

        self.build_list_params(params, pagesize, 'PageSize')

        pNum = pagenumber
        if not pNum:
            pNum = 1
        while True:
            self.build_list_params(params, pNum, 'PageNumber')
            rule_list = self.get_list('DescribeScalingRules', params, ['ScalingRules', ScalingRule])
            # API DescribeScalingRules has not 'ScalingRules' when there is no any rule.
            if not isinstance(rule_list, list):
                return rules

            for rule in rule_list:
                rules.append(rule)
            if pagenumber or len(rule_list) < pagesize:
                break
            pNum += 1

        return rules