Credit Control
API reference for diameter.message.commands.credit_control
.
Diameter Credit Control Application
This module contains Credit Control Request and Answer messages, implementing
AVPs documented in rfc8506
, rfc5777
and rfc6733
, as well as the 3GPP
diameter charging application specification, as documented in 3GPP TS 32.299
.
CreditControl ¶
CreditControl(header: MessageHeader = None, avps: list[Avp] = None)
Bases: DefinedMessage
A Credit-Control message.
This message class lists message attributes based on the current rfc8506 as python properties, acessible as instance attributes. AVPs not listed in the base protocol can be retrieved using the CreditControl.find_avps search method.
Examples:
AVPs accessible either as instance attributes or by searching:
>>> msg = Message.from_bytes(b"...")
>>> msg.session_id
dra1.mvno.net;2323;546
>>> msg.find_avps((AVP_SESSION_ID, 0))
['dra1.mvno.net;2323;546']
When diameter message is decoded using
Message.from_bytes, it returns
either an instance of CreditControlRequest
or CreditControlAnswer
automatically:
>>> msg = Message.from_bytes(b"...")
>>> assert msg.header.is_request is True
>>> assert isinstance(msg, CreditControlRequest)
When creating a new message, the CreditControlRequest
or
CreditControlAnswer
class should be instantiated directly, and values for
AVPs set as class attributes:
>>> msg = CreditControlRequest()
>>> msg.session_id = "dra1.mvno.net;2323;546"
Other, custom AVPs can be appended to the message using the
CreditControl.append_avp method, or
by overwriting the avp
attribute entirely. Regardless of the custom AVPs
set, the mandatory values listed in RFC6733 must be set, however they can
be set as None
, if they are not to be used.
Warning
Every AVP documented for the subclasses of this command can be accessed
as an instance attribute, even if the original network-received message
did not contain that specific AVP. Such AVPs will be returned with the
value None
when accessed.
Every other AVP not mentioned here, and not present in a
network-received message will raise an AttributeError
when being
accessed; their presence should be validated with hasattr
before
accessing.
CreditControlAnswer ¶
CreditControlAnswer(
header: MessageHeader = None, avps: list[Avp] = None
)
Bases: CreditControl
A Credit-Control-Answer message.
multiple_services_credit_control
instance-attribute
¶
multiple_services_credit_control: list[MultipleServicesCreditControl]
add_multiple_services_credit_control ¶
add_multiple_services_credit_control(
granted_service_unit: GrantedServiceUnit = None,
requested_service_unit: RequestedServiceUnit = None,
used_service_unit: list[UsedServiceUnit] | UsedServiceUnit = None,
tariff_change_usage: int = None,
service_identifier: list[int] | int = None,
rating_group: int = None,
g_s_u_pool_reference: list[GsuPoolReference] = None,
validity_time: int = None,
result_code: int = None,
final_unit_indication: FinalUnitIndication = None,
avp: list[Avp] = None,
)
Add a multiple services credit control instance to the answer.
This is identical to doing:
>>> ccr = CreditControlAnswer()
>>> ccr.multiple_services_credit_control.append(
>>> MultipleServicesCreditControl()
>>> )
Parameters:
Name | Type | Description | Default |
---|---|---|---|
granted_service_unit
|
GrantedServiceUnit
|
Optional granted service units |
None
|
requested_service_unit
|
RequestedServiceUnit
|
Optional requested service units |
None
|
used_service_unit
|
list[UsedServiceUnit] | UsedServiceUnit
|
Optional reported used service units |
None
|
tariff_change_usage
|
int
|
Optional tariff changed usage indication |
None
|
service_identifier
|
list[int] | int
|
A list of service identifiers |
None
|
rating_group
|
int
|
An optional rating group identifier |
None
|
g_s_u_pool_reference
|
list[GsuPoolReference]
|
An optional list of G-S-U-Pool references |
None
|
validity_time
|
int
|
Validity time in seconds |
None
|
result_code
|
int
|
A sub-result code for this specific MSCC |
None
|
final_unit_indication
|
FinalUnitIndication
|
An optional final unit indiciation |
None
|
avp
|
list[Avp]
|
A list of custom AVPs to attach |
None
|
CreditControlRequest ¶
CreditControlRequest(
header: MessageHeader = None, avps: list[Avp] = None
)
Bases: CreditControl
A Credit-Control-Request message.
access_network_charging_identifier_gx
instance-attribute
¶
access_network_charging_identifier_gx: bytes
destination_host
instance-attribute
¶
destination_host: bytes
Destination peer; should not be set for CCR-I, but should be set for the subsequent requests, based on the CCR-I answer.
multiple_services_credit_control
instance-attribute
¶
multiple_services_credit_control: list[MultipleServicesCreditControl]
user_equipment_info_extension
instance-attribute
¶
user_equipment_info_extension: UserEquipmentInfoExtension
add_multiple_services_credit_control ¶
add_multiple_services_credit_control(
granted_service_unit: GrantedServiceUnit = None,
requested_service_unit: RequestedServiceUnit = None,
used_service_unit: list[UsedServiceUnit] | UsedServiceUnit = None,
tariff_change_usage: int = None,
service_identifier: list[int] | int = None,
rating_group: int = None,
g_s_u_pool_reference: list[GsuPoolReference] = None,
validity_time: int = None,
result_code: int = None,
final_unit_indication: FinalUnitIndication = None,
avp: list[Avp] = None,
)
Add a multiple services credit control instance to the request.
This is identical to doing:
>>> ccr = CreditControlRequest()
>>> ccr.multiple_services_credit_control.append(
>>> MultipleServicesCreditControl()
>>> )
Parameters:
Name | Type | Description | Default |
---|---|---|---|
granted_service_unit
|
GrantedServiceUnit
|
Optional granted service units |
None
|
requested_service_unit
|
RequestedServiceUnit
|
Optional requested service units |
None
|
used_service_unit
|
list[UsedServiceUnit] | UsedServiceUnit
|
Optional reported used service units |
None
|
tariff_change_usage
|
int
|
Optional tariff changed usage indication |
None
|
service_identifier
|
list[int] | int
|
A list of service identifiers |
None
|
rating_group
|
int
|
An optional rating group identifier |
None
|
g_s_u_pool_reference
|
list[GsuPoolReference]
|
An optional list of G-S-U-Pool references |
None
|
validity_time
|
int
|
Validity time in seconds |
None
|
result_code
|
int
|
A sub-result code for this specific MSCC |
None
|
final_unit_indication
|
FinalUnitIndication
|
An optional final unit indiciation |
None
|
avp
|
list[Avp]
|
A list of custom AVPs to attach |
None
|
add_subscription_id ¶
add_subscription_id(
subscription_id_type: int, subscription_id_data: str
)
Add a subscription ID to the request.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
subscription_id_type
|
int
|
One of the |
required |
subscription_id_data
|
str
|
Actual subscription ID |
required |