def buildKZorpMessage(self, dispatcher_name): messages = [] # determine maximum dimension length kzorp_dimensions = {} for (key, value) in self._dimensions.items(): kzorp_dimensions[self.valid_dimensions[key]] = value kzorp_dimension_sizes = dict(map(lambda (key, value): (key, len(value)), kzorp_dimensions.items())) max_dimension_length = max(kzorp_dimension_sizes.values()) if len(kzorp_dimension_sizes) > 0 else 0 messages.append((kznf.KZNL_MSG_ADD_RULE, kznf.create_add_n_dimension_rule_msg(dispatcher_name, self.getId(), self._service.name, kzorp_dimension_sizes))) for i in xrange(max_dimension_length): data = {} for dimension, values in kzorp_dimensions.items(): if len(values) > i: data[dimension] = values[i] messages.append((kznf.KZNL_MSG_ADD_RULE_ENTRY, kznf.create_add_n_dimension_rule_entry_msg(dispatcher_name, self.getId(), data))) return messages