def create_qos_rules(target_name, qos_rules, target_type = QoStargetType::VVSET)
      if @current_version < @min_version && !qos_rules.nil?
        qos_rules.delete_if { |key, _value| key == :latencyGoaluSecs }
      end
      begin
        @qos.create_qos_rules(target_name, qos_rules, target_type)
      rescue => ex
        Util.log_exception(ex, caller_locations(1, 1)[0].label)
        raise ex
      end
    end
def create_qos_rules(target_name, qos_rules, target_type = QoStargetType::VVSET)
      if @current_version < @min_version && !qos_rules.nil?
        qos_rules.delete_if { |key, _value| key == :latencyGoaluSecs }
      end
      begin
        @qos.create_qos_rules(target_name, qos_rules, target_type)
      rescue => ex
        Util.log_exception(ex, caller_locations(1, 1)[0].label)
        raise ex
      end
    end
Creates QOS rules
 The QoS rule can be applied to VV sets. By using sys:all_others,
 you can apply the rule to all volumes in the system for which no
 QoS rule has been defined.
 ioMinGoal and ioMaxLimit must be used together to set I/O limits.
 Similarly, bwMinGoalKB and bwMaxLimitKB must be used together.
 If ioMaxLimitOP is set to 2 (no limit), ioMinGoalOP must also be
 to set to 2 (zero), and vice versa. They cannot be set to
 'none' individually. Similarly, if bwMaxLimitOP is set to 2 (no
 limit), then bwMinGoalOP must also be set to 2.
 If ioMaxLimitOP is set to 1 (no limit), ioMinGoalOP must also be
 to set to 1 (zero) and vice versa. Similarly, if bwMaxLimitOP is
 set to 1 (zero), then bwMinGoalOP must also be set to 1.
 The ioMinGoalOP and ioMaxLimitOP fields take precedence over
 the ioMinGoal and ioMaxLimit fields.
 The bwMinGoalOP and bwMaxLimitOP fields take precedence over
 the bwMinGoalKB and bwMaxLimitKB fields

 ==== Attributes

 * target_type: Type of QoS target, either enum TARGET_TYPE_VVS or TARGET_TYPE_SYS.
      type target_type:  VVSET or SYS. Refer QoStargetType::VVSET for complete enumeration
 * target_name: Name of the target object on which the QoS rule will be created.
      type target_name: String
 * qos_rules: QoS options
     type qos_rules: Hash
     qos_rules = {
         'priority'=> 2,         # Refer Hpe3parSdk::QoSpriorityEnumeration for complete enumeration
         'bwMinGoalKB'=> 1024,   # bandwidth rate minimum goal in
                                 #   kilobytes per second
         'bwMaxLimitKB'=> 1024,  # bandwidth rate maximum limit in
                                 #   kilobytes per second
         'ioMinGoal'=> 10000,    # I/O-per-second minimum goal
         'ioMaxLimit'=> 2000000, # I/0-per-second maximum limit
         'enable'=> false,        # QoS rule for target enabled?
         'bwMinGoalOP'=> 1,      # zero none operation enum, when set to
                                 #   1, bandwidth minimum goal is 0
                                 # when set to 2, the bandwidth mimumum
                                 #   goal is none (NoLimit)
         'bwMaxLimitOP'=> 1,     # zero none operation enum, when set to
                                 #   1, bandwidth maximum limit is 0
                                 # when set to 2, the bandwidth maximum
                                 #   limit is none (NoLimit)
         'ioMinGoalOP'=>1,       # zero none operation enum, when set to
                                 #   1, I/O minimum goal is 0
                                 # when set to 2, the I/O minimum goal is
                                 #   none (NoLimit)
         'ioMaxLimitOP'=> 1,     # zero none operation enum, when set to
                                 #   1, I/O maximum limit is 0
                                 # when set to 2, the I/O maximum limit
                                 #   is none (NoLimit)
         'latencyGoal'=>5000,    # Latency goal in milliseconds
         'defaultLatency'=> false# Use latencyGoal or defaultLatency?
     }

 ==== Raises

 * Hpe3parSdk::HTTPBadRequest
        - INV_INPUT_EXCEEDS_RANGE - Invalid input: number exceeds expected range.
 * Hpe3parSdk::HTTPNotFound
        - NON_EXISTENT_QOS_RULE - QoS rule does not exists.
 * Hpe3parSdk::HTTPBadRequest
        - INV_INPUT_ILLEGAL_CHAR - Illegal character in the input.
 * Hpe3parSdk::HTTPBadRequest
        - EXISTENT_QOS_RULE - QoS rule already exists.
 * Hpe3parSdk::HTTPBadRequest
        - INV_INPUT_MIN_GOAL_GRT_MAX_LIMIT - I/O-per-second maximum limit should be greater than the minimum goal.
 * Hpe3parSdk::HTTPBadRequest
        - INV_INPUT_BW_MIN_GOAL_GRT_MAX_LIMIT - Bandwidth maximum limit should be greater than the mimimum goal.
 * Hpe3parSdk::HTTPBadRequest
        - INV_INPUT_BELOW_RANGE - I/O-per-second limit is below range.Bandwidth limit is below range.
 * Hpe3parSdk::HTTPBadRequest
        - UNLICENSED_FEATURE - The system is not licensed for QoS.