mirror of
https://github.com/OpenMTC/OpenMTC.git
synced 2025-02-14 22:31:56 +00:00
1733 lines
47 KiB
Python
1733 lines
47 KiB
Python
from enum import IntEnum, unique
|
|
|
|
from openmtc.model import (Resource as Res, UnicodeAttribute, DatetimeAttribute,
|
|
Attribute, ListAttribute, Entity, EntityAttribute,
|
|
AnyURI, StringListAttribute, ContentResource)
|
|
from openmtc.model.exc import ModelTypeError
|
|
from futile import issubclass
|
|
|
|
LATEST_VERSION = "2a"
|
|
|
|
|
|
class OneM2MIntEnum(IntEnum):
|
|
def __str__(self):
|
|
return str(self.value)
|
|
|
|
|
|
class OneM2MEntity(Entity):
|
|
pass
|
|
|
|
|
|
class OneM2MContentResource(ContentResource, OneM2MEntity):
|
|
pass
|
|
|
|
|
|
class OneM2MResource(Res, OneM2MEntity):
|
|
__model_name__ = "onem2m"
|
|
__model_version__ = "2a"
|
|
|
|
|
|
################################################################################
|
|
# enumerationTypes
|
|
################################################################################
|
|
|
|
class ResourceTypeE(OneM2MIntEnum):
|
|
accessControlPolicy = 1
|
|
AE = 2
|
|
container = 3
|
|
contentInstance = 4
|
|
CSEBase = 5
|
|
delivery = 6
|
|
eventConfig = 7
|
|
execInstance = 8
|
|
group = 9
|
|
locationPolicy = 10
|
|
m2mServiceSubscription = 11
|
|
mgmtCmd = 12
|
|
mgmtObj = 13
|
|
node = 14
|
|
pollingChannel = 15
|
|
remoteCSE = 16
|
|
request = 17
|
|
schedule = 18
|
|
serviceSubscribedAppRule = 19
|
|
serviceSubscribedNode = 20
|
|
statsCollect = 21
|
|
statsConfig = 22
|
|
subscription = 23
|
|
semanticDescriptor = 24
|
|
notificationTargetMgmtPolicyRef = 25
|
|
notificationTargetPolicy = 26
|
|
policyDeletionRules = 27
|
|
flexContainer = 28
|
|
timeSeries = 29
|
|
timeSeriesInstance = 30
|
|
role = 31
|
|
token = 32
|
|
trafficPattern = 33
|
|
dynamicAuthorizationConsultation = 34
|
|
accessControlPolicyAnnc = 10001
|
|
AEAnnc = 10002
|
|
containerAnnc = 10003
|
|
contentInstanceAnnc = 10004
|
|
groupAnnc = 10009
|
|
locationPolicyAnnc = 10010
|
|
mgmtObjAnnc = 10013
|
|
nodeAnnc = 10014
|
|
remoteCSEAnnc = 10016
|
|
scheduleAnnc = 10018
|
|
semanticDescriptorAnnc = 10024
|
|
flexContainerAnnc = 10028
|
|
timeSeriesAnnc = 10029
|
|
timeSeriesInstanceAnnc = 10030
|
|
trafficPatternAnnc = 10033
|
|
dynamicAuthorizationConsultationAnnc = 10034
|
|
|
|
|
|
@unique
|
|
class CSETypeIDE(OneM2MIntEnum):
|
|
IN_CSE = 1
|
|
MN_CSE = 2
|
|
AEN_CSE = 3
|
|
|
|
|
|
@unique
|
|
class LocationSourceE(OneM2MIntEnum):
|
|
Network_based = 1
|
|
Device_based = 2
|
|
Sharing_based = 3
|
|
|
|
|
|
@unique
|
|
class StdEventCatsE(OneM2MIntEnum):
|
|
mmediate = 2
|
|
BestEffort = 3
|
|
Latest = 4
|
|
|
|
|
|
@unique
|
|
class OperationE(OneM2MIntEnum):
|
|
Create = 1
|
|
Retrieve = 2
|
|
Update = 3
|
|
Delete = 4
|
|
Notify = 5
|
|
|
|
|
|
@unique
|
|
class ResponseType(OneM2MIntEnum):
|
|
nonBlockingRequestSynch = 1
|
|
nonBlockingRequestAsynch = 2
|
|
blockingRequest = 3
|
|
|
|
|
|
# @unique
|
|
class ResultContentE(OneM2MIntEnum):
|
|
nothing = 0
|
|
attributes = 1
|
|
hierarchical_address = 2
|
|
hierarchical_address_and_attributes = 3
|
|
attributes_and_child_resources = 4
|
|
attributes_and_child_resource_references = 5
|
|
child_resource_references = 6
|
|
original_resource = 7
|
|
child_resources = 8
|
|
modified_attributes = 9
|
|
|
|
|
|
@unique
|
|
class DiscResTypeE(OneM2MIntEnum):
|
|
structured = 1
|
|
unstructured = 2
|
|
|
|
|
|
# TODO: responseStatusCode
|
|
|
|
|
|
@unique
|
|
class RequestStatusE(OneM2MIntEnum):
|
|
COMPLETED = 1
|
|
FAILED = 2
|
|
PENDING = 3
|
|
FORWARDED = 4
|
|
|
|
|
|
@unique
|
|
class MemberTypeE(OneM2MIntEnum):
|
|
mixed = 0
|
|
accessControlPolicy = 1
|
|
AE = 2
|
|
container = 3
|
|
contentInstance = 4
|
|
CSEBase = 5
|
|
delivery = 6
|
|
eventConfig = 7
|
|
execInstance = 8
|
|
group = 9
|
|
locationPolicy = 10
|
|
m2mServiceSubscription = 11
|
|
mgmtCmd = 12
|
|
mgmtObj = 13
|
|
node = 14
|
|
pollingChannel = 15
|
|
remoteCSE = 16
|
|
request = 17
|
|
schedule = 18
|
|
serviceSubscribedAppRule = 19
|
|
serviceSubscribedNode = 20
|
|
statsCollect = 21
|
|
statsConfig = 22
|
|
subscription = 23
|
|
semanticDescriptor = 24
|
|
notificationTargetMgmtPolicyRef = 25
|
|
notificationTargetPolicy = 26
|
|
policyDeletionRules = 27
|
|
flexContainer = 28
|
|
timeSeries = 29
|
|
timeSeriesInstance = 30
|
|
role = 31
|
|
token = 32
|
|
trafficPattern = 33
|
|
dynamicAuthorizationConsultation = 34
|
|
accessControlPolicyAnnc = 10001
|
|
AEAnnc = 10002
|
|
containerAnnc = 10003
|
|
contentInstanceAnnc = 10004
|
|
groupAnnc = 10009
|
|
locationPolicyAnnc = 10010
|
|
mgmtObjAnnc = 10013
|
|
nodeAnnc = 10014
|
|
remoteCSEAnnc = 10016
|
|
scheduleAnnc = 10018
|
|
semanticDescriptorAnnc = 10024
|
|
flexContainerAnnc = 10028
|
|
timeSeriesAnnc = 10029
|
|
timeSeriesInstanceAnnc = 10030
|
|
trafficPatternAnnc = 10033
|
|
dynamicAuthorizationConsultationAnnc = 10034
|
|
oldest = 20001
|
|
latest = 20002
|
|
|
|
|
|
@unique
|
|
class ConsistencyStrategyE(OneM2MIntEnum):
|
|
ABANDON_MEMBER = 1
|
|
ABANDON_GROUP = 2
|
|
SET_MIXED = 3
|
|
|
|
|
|
@unique
|
|
class CmdTypeE(OneM2MIntEnum):
|
|
RESET = 1
|
|
REBOOT = 2
|
|
UPLOAD = 3
|
|
DOWNLOAD = 4
|
|
SOFTWAREINSTALL = 5
|
|
SOFTWAREUNINSTALL = 6
|
|
SOFTWAREUPDATE = 7
|
|
|
|
|
|
@unique
|
|
class ExecModeTypeE(OneM2MIntEnum):
|
|
MMEDIATEONCE = 1
|
|
IMMEDIATEREPEAT = 2
|
|
RANDOMONCE = 3
|
|
RANDOMREPEAT = 4
|
|
|
|
|
|
@unique
|
|
class ExecStatusTypeE(OneM2MIntEnum):
|
|
INITIATED = 1
|
|
PENDING = 2
|
|
FINISHED = 3
|
|
CANCELLING = 4
|
|
CANCELLED = 5
|
|
STATUS_NON_CANCELLABLE = 6
|
|
|
|
|
|
@unique
|
|
class ExecResultTypeE(OneM2MIntEnum):
|
|
STATUS_REQUEST_UNSUPPORTED = 1
|
|
STATUS_REQUEST_DENIED = 2
|
|
STATUS_CANCELLATION_DENIED = 3
|
|
STATUS_INTERNAL_ERROR = 4
|
|
STATUS_INVALID_ARGUMENTS = 5
|
|
STATUS_RESOURCES_EXCEEDED = 6
|
|
STATUS_FILE_TRANSFER_FAILED = 7
|
|
STATUS_FILE_TRANSFER_SERVER_AUTHENTICATION_FAILURE = 8
|
|
STATUS_UNSUPPORTED_PROTOCOL = 9
|
|
STATUS_UPLOAD_FAILED = 10
|
|
STATUS_FILE_TRANSFER_FAILED_MULTICAST_GROUP_UNABLE_JOIN = 11
|
|
STATUS_FILE_TRANSFER_FAILED_SERVER_CONTACT_FAILED = 12
|
|
STATUS_FILE_TRANSFER_FAILED_FILE_ACCESS_FAILED = 13
|
|
STATUS_FILE_TRANSFER_FAILED_DOWNLOAD_INCOMPLETE = 14
|
|
STATUS_FILE_TRANSFER_FAILED_FILE_CORRUPTED = 15
|
|
STATUS_FILE_TRANSFER_FILE_AUTHENTICATION_FAILURE = 16
|
|
STATUS_FILE_TRANSFER_WINDOW_EXCEEDED = 19
|
|
STATUS_INVALID_UUID_FORMAT = 20
|
|
STATUS_UNKNOWN_EXECUTION_ENVIRONMENT = 21
|
|
STATUS_DISABLED_EXECUTION_ENVIRONMENT = 22
|
|
STATUS_EXECUTION_ENVIRONMENT_MISMATCH = 23
|
|
STATUS_DUPLICATE_DEPLOYMENT_UNIT = 24
|
|
STATUS_SYSTEM_RESOURCES_EXCEEDED = 25
|
|
STATUS_UNKNOWN_DEPLOYMENT_UNIT = 26
|
|
STATUS_INVALID_DEPLOYMENT_UNIT_STATE = 27
|
|
STATUS_INVALID_DEPLOYMENT_UNIT_UPDATE_DOWNGRADE_DISALLOWED = 28
|
|
STATUS_INVALID_DEPLOYMENT_UNIT_UPDATE_UPGRADE_DISALLOWED = 29
|
|
STATUS_INVALID_DEPLOYMENT_UNIT_UPDATE_VERSION_EXISTS = 30
|
|
|
|
|
|
@unique
|
|
class PendingNotificationE(OneM2MIntEnum):
|
|
sendLatest = 1
|
|
sendAllPending = 2
|
|
|
|
|
|
@unique
|
|
class NotificationContentTypeE(OneM2MIntEnum):
|
|
allAttributes = 1
|
|
modifiedAttributes = 2
|
|
resourceID = 3
|
|
|
|
|
|
@unique
|
|
class NotificationEventTypeE(OneM2MIntEnum):
|
|
updateOfResource = 1
|
|
deleteOfResource = 2
|
|
createOfDirectChildResource = 3
|
|
deleteOfDirectChildResource = 4
|
|
|
|
|
|
@unique
|
|
class StatusE(OneM2MIntEnum):
|
|
Successful = 1
|
|
Failure = 2
|
|
In_Process = 3
|
|
|
|
|
|
@unique
|
|
class BatteryStatusE(OneM2MIntEnum):
|
|
NORMAL = 1
|
|
CHARGING = 2
|
|
CHARGING_COMPLETE = 3
|
|
DAMAGED = 4
|
|
LOW_BATTERY = 5
|
|
NOT_INSTALLED = 6
|
|
UNKNOWN = 7
|
|
|
|
|
|
@unique
|
|
class ManagementDefinitionE(OneM2MIntEnum):
|
|
firmware = 1001
|
|
software = 1002
|
|
memory = 1003
|
|
areaNwkInfo = 1004
|
|
areaNwkDeviceInfo = 1005
|
|
battery = 1006
|
|
deviceInfo = 1007
|
|
deviceCapability = 1008
|
|
reboot = 1009
|
|
eventLog = 1010
|
|
cmdhPolicy = 1011
|
|
activeCmdhPolicy = 1012
|
|
cmdhDefaults = 1013
|
|
cmdhDefEcValue = 1014
|
|
cmdhEcDefParamValues = 1015
|
|
cmdhLimits = 1016
|
|
cmdhNetworkAccessRules = 1017
|
|
cmdhNwAccessRule = 1018
|
|
cmdhBuffer = 1019
|
|
Unspecified = 0
|
|
|
|
|
|
@unique
|
|
class LogTypeIdE(OneM2MIntEnum):
|
|
System = 1
|
|
Security = 2
|
|
Event = 3
|
|
Trace = 4
|
|
Panic = 5
|
|
|
|
|
|
@unique
|
|
class LogStatusE(OneM2MIntEnum):
|
|
Started = 1
|
|
Stopped = 2
|
|
Unknown = 3
|
|
NotPresent = 4
|
|
Error = 5
|
|
|
|
|
|
@unique
|
|
class EventTypeE(OneM2MIntEnum):
|
|
DATAOPERATION = 1
|
|
STORAGEBASED = 2
|
|
TIMERBASED = 3
|
|
|
|
|
|
@unique
|
|
class StatsRuleStatusTypeE(OneM2MIntEnum):
|
|
ACTIVE = 1
|
|
INACTIVE = 2
|
|
|
|
|
|
@unique
|
|
class StatModelTypeE(OneM2MIntEnum):
|
|
EVENTBASED = 1
|
|
|
|
|
|
@unique
|
|
class EncodingTypeE(OneM2MIntEnum):
|
|
plain = 0
|
|
base64String = 1
|
|
base64Binary = 2
|
|
|
|
|
|
# TODO(rkr): values are wrong?
|
|
# => see TS-0004, p.47, m2m:accessControlOperations,
|
|
# => more values in xsd enumerationTypes
|
|
@unique
|
|
class AccessControlOperationE(OneM2MIntEnum):
|
|
create = 1
|
|
retrieve = 2
|
|
update = 4
|
|
delete = 8
|
|
notify = 16
|
|
discover = 32
|
|
|
|
# TODO: SRole-ID
|
|
|
|
|
|
@unique
|
|
class FilterUsageE(OneM2MIntEnum):
|
|
Discovery = 1
|
|
ConditionalRetrieval = 2
|
|
|
|
|
|
@unique
|
|
class CountryCodeE(OneM2MIntEnum):
|
|
india = 91
|
|
usa = 01
|
|
|
|
|
|
@unique
|
|
class SecurityInfoTypeE(OneM2MIntEnum):
|
|
# TS-0004, p.49, Table 6.3.4.2.35-1
|
|
DynamicAuthorizationRequest = 1
|
|
DynamicAuthorizationResponse = 2
|
|
ReceiverE2ERandObjectRequest = 3
|
|
ReceiverE2ERandObjectResponse = 4
|
|
ESPrimObject = 5
|
|
ESCertKEMessage = 6
|
|
|
|
|
|
################################################################################
|
|
# commonTypes
|
|
################################################################################
|
|
|
|
# simple #######################################################################
|
|
|
|
|
|
class IDS(UnicodeAttribute):
|
|
pass
|
|
|
|
# TODO: nodeID
|
|
|
|
# TODO: deviceID
|
|
|
|
# TODO: externalID
|
|
|
|
|
|
class RequestIDS(UnicodeAttribute):
|
|
pass
|
|
|
|
|
|
class NhURIS(UnicodeAttribute):
|
|
pass
|
|
|
|
# TODO: acpType
|
|
|
|
|
|
class LabelsS(StringListAttribute):
|
|
pass
|
|
|
|
# TODO: triggerRecipientID
|
|
|
|
# TODO: listOfM2MID
|
|
|
|
# TODO: longMin-1
|
|
|
|
# TODO: listOfMinMax
|
|
|
|
# TODO: backOffParameters
|
|
|
|
# TODO: poaList
|
|
|
|
|
|
class TimestampS(DatetimeAttribute):
|
|
pass
|
|
|
|
# TODO: absRelTimestamp
|
|
|
|
# TODO: typeOfContent
|
|
|
|
# TODO: permittedMediaTypes
|
|
|
|
# TODO: serializations
|
|
|
|
# TODO: contentInfo
|
|
|
|
# TODO: eventCat
|
|
|
|
# TODO: eventCatWithDef
|
|
|
|
# TODO: listOfEventCat
|
|
|
|
# TODO: listOfEventCatWithDef
|
|
|
|
# TODO: scheduleEntry
|
|
|
|
|
|
class ListOfURIsS(StringListAttribute):
|
|
content_type = AnyURI
|
|
|
|
|
|
class AttributeListS(StringListAttribute):
|
|
pass
|
|
|
|
# complex ######################################################################
|
|
|
|
# TODO: deliveryMetaData
|
|
|
|
# TODO: aggregatedRequest
|
|
|
|
# TODO: metaInformation
|
|
|
|
# TODO: primitiveContent
|
|
|
|
|
|
class FilterCriteria(OneM2MEntity):
|
|
createdBefore = TimestampS()
|
|
createdAfter = TimestampS()
|
|
modifiedSince = TimestampS()
|
|
unmodifiedSince = TimestampS()
|
|
stateTagSmaller = Attribute(int) # xs:positiveInteger
|
|
stateTagBigger = Attribute(int) # xs:nonNegativeInteger
|
|
expireBefore = TimestampS()
|
|
expireAfter = TimestampS()
|
|
labels = StringListAttribute()
|
|
resourceType = ListAttribute(ResourceTypeE)
|
|
sizeAbove = Attribute(int) # xs:nonNegativeInteger
|
|
sizeBelow = Attribute(int) # xs:positiveInteger
|
|
contentType = UnicodeAttribute() # m2m:typeOfContent
|
|
attribute = ListAttribute() # m2m:attribute
|
|
filterUsage = EntityAttribute(FilterUsageE)
|
|
limit = Attribute(int) # xs:nonNegativeInteger
|
|
|
|
# TODO: attribute
|
|
|
|
# TODO: scheduleEntries
|
|
|
|
# TODO: actionStatus
|
|
|
|
# TODO: anyArgType
|
|
|
|
# TODO: resetArgsType
|
|
|
|
# TODO: rebootArgsType
|
|
|
|
# TODO: uploadArgsType
|
|
|
|
# TODO: downloadArgsType
|
|
|
|
# TODO: softwareInstallArgsType
|
|
|
|
# TODO: softwareUpdateArgsType
|
|
|
|
# TODO: softwareUninstallArgsType
|
|
|
|
# TODO: execReqArgsListType
|
|
|
|
# TODO: mgmtLinkRef
|
|
|
|
# TODO: childResourceRef
|
|
|
|
# TODO: responseTypeInfo
|
|
|
|
# TODO: operationResult
|
|
|
|
|
|
# TODO(rkr):
|
|
# "This is an xs:choice. A locationRegion shall contain either:
|
|
# 1) A countryCode element, in which case circRegion shall not appear, or
|
|
# 2) A circRegion element, in which case countryCode shall not appear"
|
|
class LocationRegionC(OneM2MEntity):
|
|
countryCode = ListAttribute(CountryCodeE)
|
|
circRegion = ListAttribute(float) # "list of 3 xs:float": values "represent" latitude. longitude, radius
|
|
|
|
|
|
class LabeledResource(OneM2MResource):
|
|
labels = LabelsS()
|
|
|
|
|
|
class ExpiringResource(OneM2MResource):
|
|
expirationTime = TimestampS(mandatory=False)
|
|
|
|
|
|
class AccessControlPolicyIDHolder(OneM2MResource):
|
|
accessControlPolicyIDs = StringListAttribute()
|
|
|
|
|
|
class DynamicAuthorizationConsultationIDHolder(OneM2MResource):
|
|
dynamicAuthorizationConsultationIDs = ListOfURIsS()
|
|
|
|
|
|
class SubscribableResource(OneM2MResource):
|
|
pass
|
|
|
|
|
|
class AnnounceableResource(OneM2MResource):
|
|
announceTo = ListOfURIsS()
|
|
announcedAttribute = UnicodeAttribute() # TODO
|
|
|
|
|
|
class AnnouncedResource(OneM2MResource):
|
|
link = Attribute(AnyURI)
|
|
|
|
|
|
class ResourceC(LabeledResource):
|
|
__child_types__ = ()
|
|
|
|
typename = None
|
|
|
|
resourceName = UnicodeAttribute(accesstype=Attribute.WO)
|
|
|
|
resourceType = EntityAttribute(ResourceTypeE, accesstype=Attribute.RO)
|
|
resourceID = IDS(accesstype=Attribute.RO)
|
|
parentID = NhURIS(accesstype=Attribute.RO)
|
|
|
|
lastModifiedTime = TimestampS(accesstype=Attribute.RO)
|
|
creationTime = TimestampS(accesstype=Attribute.RO)
|
|
|
|
childResource = ListAttribute()
|
|
|
|
@property
|
|
def name(self):
|
|
return self.resourceName
|
|
|
|
@property
|
|
def id(self):
|
|
return self.resourceID
|
|
|
|
def __repr__(self):
|
|
return "%s(path='%s', id='%s')" % (type(self).__name__, self.path,
|
|
self.id)
|
|
|
|
def has_child_type(self, resource_type):
|
|
return resource_type in self.__child_types__
|
|
|
|
|
|
ResourceC.childResource.content_type = ResourceC
|
|
|
|
|
|
class RegularResourceC(ResourceC, ExpiringResource, AccessControlPolicyIDHolder,
|
|
DynamicAuthorizationConsultationIDHolder):
|
|
pass
|
|
|
|
|
|
class AnnounceableResourceC(RegularResourceC, AnnounceableResource):
|
|
pass
|
|
|
|
|
|
class AnnouncedResourceC(RegularResourceC, AnnouncedResource):
|
|
pass
|
|
|
|
|
|
class AnnounceableSubordinateResourceC(ResourceC, ExpiringResource,
|
|
AnnounceableResource):
|
|
pass
|
|
|
|
|
|
class AnnouncedSubordinateResourceC(ResourceC, ExpiringResource,
|
|
AnnouncedResource):
|
|
pass
|
|
|
|
# TODO: mgmtResource
|
|
|
|
# TODO: announcedMgmtResource
|
|
|
|
|
|
################################################################################
|
|
# requestPrimitive
|
|
################################################################################
|
|
|
|
class RequestPrimitive(OneM2MEntity):
|
|
operation = EntityAttribute(OperationE)
|
|
to = Attribute(AnyURI)
|
|
from_ = IDS()
|
|
requestIdentifier = RequestIDS()
|
|
resourceType = EntityAttribute(ResourceTypeE)
|
|
name = UnicodeAttribute()
|
|
primitiveContent = UnicodeAttribute() # m2m:primitiveContent
|
|
role = UnicodeAttribute() # xs:anyType
|
|
originatingTimestamp = TimestampS()
|
|
requestExpirationTimestamp = TimestampS() # m2m::absRelTimestamp
|
|
resultExpirationTimestamp = TimestampS() # m2m::absRelTimestamp
|
|
operationExecutionTime = TimestampS() # m2m::absRelTimestamp
|
|
responseType = UnicodeAttribute() # m2m:responseTypeInfo
|
|
resultPersistence = TimestampS() # m2m::absRelTimestamp
|
|
resultContent = UnicodeAttribute() # m2m:resultContent
|
|
eventCategory = UnicodeAttribute() # m2m:eventCat
|
|
deliveryAggregation = Attribute(bool)
|
|
groupRequestIdentifier = UnicodeAttribute()
|
|
filterCriteria = EntityAttribute(FilterCriteria)
|
|
discoveryResultType = EntityAttribute(DiscResTypeE)
|
|
|
|
|
|
class AttributeList(OneM2MContentResource):
|
|
typename = "attributeList"
|
|
CONTENT = AttributeListS()
|
|
|
|
|
|
################################################################################
|
|
# responsePrimitive
|
|
################################################################################
|
|
|
|
class ResponsePrimitive(OneM2MEntity):
|
|
responseStatusCode = UnicodeAttribute() # m2m:responseStatusCode
|
|
requestIdentifier = RequestIDS()
|
|
primitiveContent = UnicodeAttribute() # m2m:primitiveContent
|
|
to = IDS()
|
|
from_ = IDS()
|
|
originatingTimestamp = TimestampS()
|
|
resultExpirationTimestamp = TimestampS() # m2m:absRelTimestamp
|
|
eventCategory = UnicodeAttribute() # m2m:eventCat
|
|
|
|
|
|
class Resource(OneM2MContentResource):
|
|
pass
|
|
|
|
|
|
class URIList(OneM2MContentResource):
|
|
typename = "URIList"
|
|
CONTENT = ListOfURIsS()
|
|
|
|
|
|
class AggregatedResponse(OneM2MEntity):
|
|
responsePrimitive = ListAttribute(ResponsePrimitive)
|
|
|
|
|
|
################################################################################
|
|
# notification
|
|
################################################################################
|
|
|
|
class OperationMonitorTypeC(OneM2MEntity):
|
|
operation = UnicodeAttribute() # m2m:operation
|
|
originator = UnicodeAttribute() # m2m:ID
|
|
|
|
|
|
class NotificationEventC(OneM2MEntity):
|
|
representation = EntityAttribute(ResourceC) # xs:anyType
|
|
operationMonitor = EntityAttribute(OperationMonitorTypeC)
|
|
notificationEventType = EntityAttribute(NotificationEventTypeE)
|
|
|
|
|
|
class Notification(OneM2MEntity):
|
|
notificationEvent = EntityAttribute(NotificationEventC)
|
|
verificationRequest = Attribute(bool)
|
|
subscriptionDeletion = Attribute(bool)
|
|
subscriptionReference = Attribute(AnyURI)
|
|
creator = UnicodeAttribute() # ID
|
|
notificationForwardingURI = Attribute(AnyURI)
|
|
|
|
|
|
class AggregatedNotification(OneM2MEntity):
|
|
"""See TS-0004 Table 7.4.1.1-2"""
|
|
|
|
notification = ListAttribute(Notification)
|
|
|
|
|
|
################################################################################
|
|
# subscription
|
|
################################################################################
|
|
|
|
class EventNotificationCriteria(OneM2MEntity):
|
|
"""See TS-0004 Table 6.3.2.3-1"""
|
|
|
|
createdBefore = TimestampS()
|
|
createdAfter = TimestampS()
|
|
modifiedSince = TimestampS()
|
|
unmodifiedSince = TimestampS()
|
|
stateTagSmaller = Attribute(int)
|
|
stateTagBigger = Attribute(int)
|
|
expireBefore = TimestampS()
|
|
expireAfter = TimestampS()
|
|
sizeAbove = Attribute(int)
|
|
sizeBelow = Attribute(int)
|
|
operationMonitor = UnicodeAttribute() # ListAttribute(m2m:operation)
|
|
# attribute = Attribute(int) # enum but to be defined in the standard
|
|
attribute = UnicodeAttribute() # ListAttribute(m2m:attribute)
|
|
notificationEventType = ListAttribute(NotificationEventTypeE)
|
|
|
|
|
|
class BatchNotify(OneM2MEntity):
|
|
pass # TODO
|
|
|
|
|
|
class RateLimit(OneM2MEntity):
|
|
pass # TODO
|
|
|
|
|
|
class Subscription(RegularResourceC):
|
|
""" See TS-0001 section 9.6.8
|
|
See TS-0004 Table 7.3.7.1-3"""
|
|
|
|
eventNotificationCriteria = EntityAttribute(EventNotificationCriteria)
|
|
expirationCounter = Attribute(int)
|
|
notificationURI = ListOfURIsS(mandatory=True)
|
|
groupID = Attribute(AnyURI)
|
|
notificationForwardingURI = Attribute(AnyURI)
|
|
batchNotify = EntityAttribute(BatchNotify)
|
|
rateLimit = EntityAttribute(RateLimit)
|
|
preSubscriptionNotify = Attribute(int, accesstype=Attribute.WO,
|
|
mandatory=False)
|
|
pendingNotification = Attribute(PendingNotificationE)
|
|
notificationStoragePriority = Attribute(int)
|
|
latestNotify = Attribute(bool)
|
|
notificationContentType = Attribute(NotificationContentTypeE)
|
|
notificationEventCat = UnicodeAttribute() # m2m:eventCat
|
|
creator = IDS(accesstype=Attribute.WO, mandatory=False)
|
|
subscriberURI = Attribute(AnyURI, accesstype=Attribute.WO, mandatory=False)
|
|
|
|
__child_types__ = (
|
|
# Schedule,
|
|
)
|
|
|
|
|
|
################################################################################
|
|
# accessControlPolicy
|
|
################################################################################
|
|
|
|
class AccessControlObjectDetailsC(OneM2MEntity):
|
|
# specifies to which resource type the rule applies
|
|
resourceType = EntityAttribute(ResourceTypeE)
|
|
# TODO(rkr): Child resource types listed in the childResourceType component are subject of
|
|
# TODO access control for the Create operation only. Once a child resource is created,
|
|
# TODO the Access Control Policies assigned directly to it apply.
|
|
# for create operation only, list of creatable child resources
|
|
childResourceType = ListAttribute(ResourceTypeE)
|
|
specializationID = Attribute(AnyURI) # xs:anyURI
|
|
|
|
|
|
class AccessControlIpAddressesC(OneM2MEntity):
|
|
ipv4Addresses = ListAttribute(AnyURI) # m2m:ipv4
|
|
ipv6Addresses = ListAttribute(AnyURI) # m2m:ipv6
|
|
|
|
|
|
class AccessControlContextsC(OneM2MEntity):
|
|
accessControlWindow = StringListAttribute() # m2m:scheduleEntry
|
|
accessControlIpAddresses = EntityAttribute(AccessControlIpAddressesC)
|
|
accessControlLocationRegion = ListAttribute(LocationRegionC) # m2m:locationRegion
|
|
|
|
|
|
class AccessControlRuleC(OneM2MEntity):
|
|
accessControlOriginators = ListOfURIsS() # m2m:listOfURIs # Mand
|
|
accessControlOperations = ListAttribute(AccessControlOperationE) # Mand
|
|
accessControlContexts = ListAttribute(AccessControlContextsC) # Opt
|
|
# accessControlContexts = EntityAttribute(AccessControlContextsC) # Opt
|
|
# TODO(rkr): currently default of the Flag is set to False;
|
|
# TODO if not explicitly set to True the authorization is performed without authentication
|
|
# TODO when authentication is used, it should maybe set to be True by default
|
|
accessControlAuthenticationFlag = Attribute(bool, default=False) # Opt
|
|
# TODO(rkr): "ObjectDetails" only described in TS-0001, 9.6.2.4, p.121 (which is version 2.10.0) as optional
|
|
# TODO parameter of an access control rule, but not in TS-0004 and not in xsd version 2.7.0.
|
|
# accessControlObjectDetails = ListAttribute(AccessControlObjectDetailsC)
|
|
|
|
|
|
class AccessControlPolicy(AnnounceableSubordinateResourceC,
|
|
SubscribableResource):
|
|
privileges = ListAttribute(AccessControlRuleC)
|
|
selfPrivileges = ListAttribute(AccessControlRuleC)
|
|
|
|
__child_types__ = (
|
|
Subscription,
|
|
)
|
|
|
|
|
|
class AccessControlPolicyAnnc(AnnouncedSubordinateResourceC,
|
|
SubscribableResource):
|
|
privileges = ListAttribute(AccessControlRuleC)
|
|
selfPrivileges = ListAttribute(AccessControlRuleC)
|
|
|
|
__child_types__ = (
|
|
Subscription,
|
|
)
|
|
|
|
|
|
################################################################################
|
|
# SemanticDescriptor
|
|
################################################################################
|
|
|
|
class SemanticDescriptor(AnnounceableResourceC, SubscribableResource):
|
|
|
|
# Has a default value : application/rdf+xml:1
|
|
descriptorRepresentation = StringListAttribute(mandatory=True)
|
|
semanticOpExec = Attribute(str)
|
|
descriptor = Attribute(str, mandatory=True)
|
|
ontologyRef = Attribute(AnyURI, mandatory=False)
|
|
relatedSemantics = StringListAttribute(mandatory=False)
|
|
|
|
__child_types__ = (
|
|
Subscription,
|
|
)
|
|
|
|
|
|
################################################################################
|
|
# dynamicAuthorization
|
|
################################################################################
|
|
|
|
class DynamicAuthorizationConsultation(AnnounceableResourceC):
|
|
dynamicAuthorizationEnabled = Attribute(bool, mandatory=True)
|
|
dynamicAuthorizationPoA = ListOfURIsS()
|
|
dynamicAuthorizationLifetime = TimestampS()
|
|
|
|
|
|
class OriginatorIPTypeC(OneM2MEntity):
|
|
ipv4Address = UnicodeAttribute() # m2m:ipv4
|
|
ipv6Address = UnicodeAttribute() # m2m:ipv6
|
|
|
|
|
|
# see "CDT-notification-v2_7_0.xsd" for securityInfoType and dynAuthDasResponse
|
|
class DynamicACPInfoC(OneM2MEntity):
|
|
grantedPrivileges = ListAttribute(AccessControlRuleC)
|
|
privilegesLifetime = TimestampS() # m2m:absRelTimestamp
|
|
|
|
|
|
# see "CDT-commonTypes-v2_7_0.xsd"
|
|
class DynAuthDasRequestC(OneM2MEntity):
|
|
originator = UnicodeAttribute() # m2m:ID
|
|
targetedResourceType = Attribute(ResourceTypeE)
|
|
operation = UnicodeAttribute() # m2m:operation
|
|
# operation = EntityAttribute(OperationE)
|
|
originatorIP = EntityAttribute(OriginatorIPTypeC)
|
|
originatorLocation = EntityAttribute(LocationRegionC)
|
|
requestTimestamp = TimestampS()
|
|
targetedResourceID = UnicodeAttribute() # xs:anyURI
|
|
# targetedResourceID = Attribute(AnyURI)
|
|
proposedPrivilegesLifetime = TimestampS()
|
|
# TODO(rkr): is this ok?
|
|
originatorRoleIDs = StringListAttribute() # list of m2m:roleID
|
|
roleIDsFromACPs = StringListAttribute() # list of m2m:roleID
|
|
tokenIDs = StringListAttribute() # list of m2m:tokeID
|
|
|
|
|
|
class DynAuthDasResponseC(OneM2MEntity):
|
|
# dynamicACPInfo = ListAttribute(DynamicACPInfoC)
|
|
dynamicACPInfo = EntityAttribute(DynamicACPInfoC)
|
|
tokens = StringListAttribute() # list of simpleType m2m:dynAuthJWT
|
|
|
|
|
|
# TODO(rkr): check if correct
|
|
class SecurityInfo(OneM2MEntity):
|
|
securityInfoType = Attribute(SecurityInfoTypeE)
|
|
# dasRequest = ListAttribute() # lists are wrong?
|
|
# dasResponse = ListAttribute()
|
|
dasRequest = EntityAttribute(DynAuthDasRequestC)
|
|
dasResponse = EntityAttribute(DynAuthDasResponseC)
|
|
esprimRandObject = ListAttribute() # m2m:receiverESPrimRandObject
|
|
esprimObject = ListAttribute() # m2m:e2eCompactJWE
|
|
escertkeMessage = ListAttribute() # xs:base64Binary
|
|
|
|
|
|
################################################################################
|
|
# remoteCSE
|
|
################################################################################
|
|
|
|
class RemoteCSE(AnnounceableResourceC, SubscribableResource):
|
|
"""See TS-0001 section 9.6.4"""
|
|
|
|
cseType = Attribute(CSETypeIDE, accesstype=Attribute.WO, mandatory=False)
|
|
pointOfAccess = StringListAttribute()
|
|
CSEBase = UnicodeAttribute(accesstype=Attribute.WO)
|
|
CSE_ID = UnicodeAttribute(accesstype=Attribute.WO) # TODO: CSE-ID (minus!)
|
|
M2M_Ext_ID = UnicodeAttribute() # TODO: M2M-Ext-ID (minus!)
|
|
Trigger_Recipient_ID = UnicodeAttribute() # TODO: Trigger-Recipient-ID
|
|
requestReachability = Attribute(bool)
|
|
nodeLink = UnicodeAttribute()
|
|
|
|
__child_types__ = (
|
|
Subscription,
|
|
SemanticDescriptor,
|
|
)
|
|
|
|
|
|
class RemoteCSEAnnc(AnnouncedResourceC, SubscribableResource):
|
|
cseType = Attribute(CSETypeIDE, accesstype=Attribute.WO, mandatory=False)
|
|
pointOfAccess = StringListAttribute()
|
|
CSEBase = UnicodeAttribute(accesstype=Attribute.WO)
|
|
CSE_ID = UnicodeAttribute(accesstype=Attribute.WO) # TODO: CSE-ID (minus!)
|
|
requestReachability = Attribute(bool)
|
|
nodeLink = UnicodeAttribute()
|
|
|
|
__child_types__ = (
|
|
Subscription,
|
|
SemanticDescriptor,
|
|
# TODO
|
|
)
|
|
|
|
|
|
################################################################################
|
|
# contentInstance
|
|
################################################################################
|
|
|
|
class ContentInstance(AnnounceableSubordinateResourceC,
|
|
SubscribableResource):
|
|
"""See TS-0001 section 9.6.7"""
|
|
|
|
stateTag = Attribute(int, accesstype=Attribute.RO)
|
|
creator = UnicodeAttribute() # m2m:ID
|
|
# contentInfo = typeOfContent(:EncodingType)
|
|
# typeOfContent => Media Types
|
|
# ex: application/json:1
|
|
contentInfo = UnicodeAttribute() # m2m:contentInfo
|
|
contentSize = Attribute(int, accesstype=Attribute.RO)
|
|
ontologyRef = UnicodeAttribute(accesstype=Attribute.WO)
|
|
content = Attribute(bytes, accesstype=Attribute.WO, mandatory=True)
|
|
|
|
__child_types__ = (
|
|
Subscription,
|
|
SemanticDescriptor,
|
|
)
|
|
|
|
|
|
class ContentInstanceAnnc(AnnouncedSubordinateResourceC):
|
|
stateTag = Attribute(int, accesstype=Attribute.RO)
|
|
contentInfo = UnicodeAttribute(EncodingTypeE) # m2m:contentInfo
|
|
contentSize = Attribute(int, accesstype=Attribute.WO)
|
|
ontologyRef = UnicodeAttribute(accesstype=Attribute.WO)
|
|
content = Attribute(bytes, accesstype=Attribute.WO, mandatory=True)
|
|
|
|
|
|
################################################################################
|
|
# container
|
|
################################################################################
|
|
|
|
class Container(AnnounceableResourceC, SubscribableResource):
|
|
"""See TS-0001 section 9.6.6"""
|
|
|
|
stateTag = Attribute(int, accesstype=Attribute.RO)
|
|
creator = UnicodeAttribute()
|
|
maxNrOfInstances = Attribute(int)
|
|
maxByteSize = Attribute(int)
|
|
maxInstanceAge = UnicodeAttribute(mandatory=False) # todo
|
|
currentNrOfInstances = Attribute(int, accesstype=Attribute.RO)
|
|
currentByteSize = Attribute(int, accesstype=Attribute.RO)
|
|
locationID = UnicodeAttribute()
|
|
ontologyRef = UnicodeAttribute()
|
|
latest = Attribute(ContentInstance, mandatory=False)
|
|
oldest = Attribute(ContentInstance, mandatory=False)
|
|
|
|
__child_types__ = (
|
|
ContentInstance,
|
|
Subscription,
|
|
SemanticDescriptor,
|
|
)
|
|
|
|
|
|
Container.__child_types__ = (
|
|
ContentInstance,
|
|
Container,
|
|
Subscription,
|
|
SemanticDescriptor,
|
|
)
|
|
|
|
|
|
class ContainerAnnc(AnnouncedResourceC, SubscribableResource):
|
|
|
|
stateTag = Attribute(int, accesstype=Attribute.RO)
|
|
maxNrOfInstances = Attribute(int)
|
|
maxByteSize = Attribute(int)
|
|
maxInstanceAge = UnicodeAttribute(mandatory=False) # todo
|
|
currentNrOfInstances = Attribute(int, accesstype=Attribute.RO)
|
|
currentByteSize = Attribute(int, accesstype=Attribute.RO)
|
|
locationID = UnicodeAttribute()
|
|
ontologyRef = UnicodeAttribute()
|
|
latest = Attribute(ContentInstance, mandatory=False)
|
|
|
|
__child_types__ = (
|
|
ContentInstance,
|
|
ContentInstanceAnnc,
|
|
Container,
|
|
Subscription,
|
|
SemanticDescriptor,
|
|
)
|
|
|
|
|
|
ContainerAnnc.__child_types__ = (
|
|
ContentInstance,
|
|
ContentInstanceAnnc,
|
|
Container,
|
|
ContainerAnnc,
|
|
Subscription,
|
|
SemanticDescriptor,
|
|
)
|
|
|
|
|
|
################################################################################
|
|
# AE
|
|
################################################################################
|
|
|
|
class AE(AnnounceableResourceC, SubscribableResource):
|
|
"""See TS-0001 section 9.6.5"""
|
|
|
|
typename = "AE"
|
|
|
|
appName = UnicodeAttribute()
|
|
App_ID = UnicodeAttribute(accesstype=Attribute.WO, mandatory=True)
|
|
AE_ID = UnicodeAttribute(accesstype=Attribute.RO) # m2m:ID
|
|
pointOfAccess = StringListAttribute() # m2m:poaList
|
|
ontologyRef = UnicodeAttribute() # xs:anyURI
|
|
nodeLink = UnicodeAttribute(accesstype=Attribute.RO) # xs:anyURI
|
|
requestReachability = Attribute(bool, mandatory=True)
|
|
contentSerialization = UnicodeAttribute() # TODO m2m:serializations
|
|
|
|
__child_types__ = (
|
|
Container,
|
|
# Group,
|
|
Subscription,
|
|
AccessControlPolicy,
|
|
# PollingChannel,
|
|
# Schedule,
|
|
DynamicAuthorizationConsultation,
|
|
SemanticDescriptor,
|
|
)
|
|
|
|
|
|
class AEAnnc(AnnouncedResourceC, SubscribableResource):
|
|
|
|
typename = "AEAnnc"
|
|
|
|
appName = UnicodeAttribute(accesstype=Attribute.WO)
|
|
App_ID = UnicodeAttribute()
|
|
AE_ID = UnicodeAttribute()
|
|
pointOfAccess = StringListAttribute()
|
|
ontologyRef = UnicodeAttribute()
|
|
nodeLink = UnicodeAttribute()
|
|
requestReachability = Attribute(bool)
|
|
|
|
__child_types__ = (
|
|
Container,
|
|
ContainerAnnc,
|
|
# Group,
|
|
# GroupAnnc,
|
|
Subscription,
|
|
# AccessControlPolicy,
|
|
# AccessControlPolicyAnnc,
|
|
# PollingChannel,
|
|
# Schedule,
|
|
SemanticDescriptor,
|
|
)
|
|
|
|
|
|
################################################################################
|
|
# CSEBase
|
|
################################################################################
|
|
|
|
class CSEBase(ResourceC, SubscribableResource, AccessControlPolicyIDHolder):
|
|
"""See TS-0001 section 9.6.3"""
|
|
|
|
typename = "CSEBase"
|
|
|
|
cseType = Attribute(CSETypeIDE, accesstype=Attribute.WO)
|
|
CSE_ID = UnicodeAttribute(accesstype=Attribute.WO) # TODO: CSE-ID (minus!)
|
|
supportedResourceType = StringListAttribute(content_type=ResourceTypeE,
|
|
accesstype=Attribute.RO)
|
|
pointOfAccess = StringListAttribute()
|
|
nodeLink = UnicodeAttribute()
|
|
|
|
__child_types__ = (
|
|
RemoteCSE,
|
|
# Node,
|
|
AE,
|
|
Container,
|
|
# Group,
|
|
AccessControlPolicy,
|
|
Subscription,
|
|
# MgmtCmd,
|
|
# LocationPolicy,
|
|
# StatsConfig,
|
|
# StatsCollect,
|
|
# Request,
|
|
# Delivery,
|
|
# Schedule,
|
|
# M2mServiceSubscriptionProfile,
|
|
DynamicAuthorizationConsultation,
|
|
SemanticDescriptor,
|
|
)
|
|
|
|
|
|
################################################################################
|
|
# misc
|
|
################################################################################
|
|
|
|
long_to_short_attribute_mapping = {
|
|
"accessControlPolicyIDs": "acpi",
|
|
"announcedAttribute": "aa",
|
|
"announceTo": "at",
|
|
"creationTime": "ct",
|
|
"expirationTime": "et",
|
|
"labels": "lbl",
|
|
"lastModifiedTime": "lt",
|
|
"parentID": "pi",
|
|
"resourceID": "ri",
|
|
"resourceType": "ty",
|
|
"stateTag": "st",
|
|
"resourceName": "rn",
|
|
"privileges": "pv",
|
|
"selfPrivileges": "pvs",
|
|
"App-ID": "api",
|
|
"AE-ID": "aei",
|
|
"appName": "apn",
|
|
"pointOfAccess": "poa",
|
|
"ontologyRef": "or",
|
|
"nodeLink": "nl",
|
|
"contentSerialization": "csz",
|
|
"creator": "cr",
|
|
"maxNrOfInstances": "mni",
|
|
"maxByteSize": "mbs",
|
|
"maxInstanceAge": "mia",
|
|
"currentNrOfInstances": "cni",
|
|
"currentByteSize": "cbs",
|
|
"locationID": "li",
|
|
"contentInfo": "cnf",
|
|
"contentSize": "cs",
|
|
"primitiveContent": "pc",
|
|
"content": "con",
|
|
"cseType": "cst",
|
|
"CSE-ID": "csi",
|
|
"supportedResourceType": "srt",
|
|
"notificationCongestionPolicy": "ncp",
|
|
"source": "sr",
|
|
"target": "tg",
|
|
"lifespan": "ls",
|
|
"eventCat": "ec",
|
|
"deliveryMetaData": "dmd",
|
|
"aggregatedRequest": "arq",
|
|
"eventID": "evi",
|
|
"eventType": "evt",
|
|
"evenStart": "evs",
|
|
"eventEnd": "eve",
|
|
"operationType": "opt",
|
|
"dataSize": "ds",
|
|
"execStatus": "exs",
|
|
"execResult": "exr",
|
|
"execDisable": "exd",
|
|
"execTarget": "ext",
|
|
"execMode": "exm",
|
|
"execFrequency": "exf",
|
|
"execDelay": "exy",
|
|
"execNumber": "exn",
|
|
"execReqArgs": "exra",
|
|
"execEnable": "exe",
|
|
"memberType": "mt",
|
|
"currentNrOfMembers": "cnm",
|
|
"maxNrOfMembers": "mnm",
|
|
"memberIDs": "mid",
|
|
"membersAccessControlPolicyIDs": "macp",
|
|
"memberTypeValidated": "mtv",
|
|
"consistencyStrategy": "csy",
|
|
"groupName": "gn",
|
|
"locationSource": "los",
|
|
"locationUpdatePeriod": "lou",
|
|
"locationTargetId": "lot",
|
|
"locationServer": "lor",
|
|
"locationContainerID": "loi",
|
|
"locationContainerName": "lon",
|
|
"locationStatus": "lost",
|
|
"serviceRoles": "svr",
|
|
"description": "dc",
|
|
"cmdType": "cmt",
|
|
"mgmtDefinition": "mgd",
|
|
"objectIDs": "onis",
|
|
"objectPaths": "obps",
|
|
"nodeID": "ni",
|
|
"hostedCSELink": "hcl",
|
|
"CSEBase": "cb",
|
|
"M2M-Ext-ID": "mei",
|
|
"Trigger-Recipient-ID": "tri",
|
|
"requestReachability": "rr",
|
|
"originator": "og",
|
|
"metaInformation": "mi",
|
|
"requestStatus": "rs",
|
|
"operationResult": "ol",
|
|
"operation": "opn",
|
|
"requestID": "rid",
|
|
"scheduleElement": "se",
|
|
"deviceIdentifier": "di",
|
|
"ruleLinks": "rlk",
|
|
"statsCollectID": "sci",
|
|
"collectingEntityID": "cei",
|
|
"collectedEntityID": "cdi",
|
|
"devStatus": "ss",
|
|
"statsRuleStatus": "srs",
|
|
"statModel": "sm",
|
|
"collectPeriod": "cp",
|
|
"eventNotificationCriteria": "enc",
|
|
"expirationCounter": "exc",
|
|
"notificationURI": "nu",
|
|
"groupID": "gpi",
|
|
"notificationForwardingURI": "nfu",
|
|
"batchNotify": "bn",
|
|
"rateLimit": "rl",
|
|
"preSubscriptionNotify": "psn",
|
|
"pendingNotification": "pn",
|
|
"notificationStoragePriority": "nsp",
|
|
"latestNotify": "ln",
|
|
"notificationContentType": "nct",
|
|
"notificationEventCat": "nec",
|
|
"subscriberURI": "su",
|
|
"version": "vr",
|
|
"URL": "url",
|
|
"update": "ud",
|
|
"updateStatus": "uds",
|
|
"install": "in",
|
|
"uninstall": "un",
|
|
"installStatus": "ins",
|
|
"activate": "act",
|
|
"deactivate": "dea",
|
|
"activeStatus": "acts",
|
|
"memAvailable": "mma",
|
|
"memTotal": "mmt",
|
|
"areaNwkType": "ant",
|
|
"listOfDevices": "idv",
|
|
"devId": "dvd",
|
|
"devType": "dvt",
|
|
"areaNwkId": "awi",
|
|
"sleepInterval": "sli",
|
|
"sleepDuration": "sld",
|
|
"listOfNeighbors": "lnh",
|
|
"batteryLevel": "btl",
|
|
"batteryStatus": "bts",
|
|
"deviceLabel": "dlb",
|
|
"manufacturer": "man",
|
|
"model": "mod",
|
|
"deviceType": "dty",
|
|
"fwVersion": "fwv",
|
|
"swVersion": "swv",
|
|
"hwVersion": "hwv",
|
|
"capabilityName": "can",
|
|
"attached": "att",
|
|
"capabilityActionStatus": "cas",
|
|
"enable": "ena",
|
|
"disable": "dis",
|
|
"currentState": "cus",
|
|
"reboot": "rbo",
|
|
"factoryReset": "far",
|
|
"logTypeId": "lgt",
|
|
"logData": "lgd",
|
|
"logActionStatus": "lgs",
|
|
"logStatus": "lgst",
|
|
"logStart": "lga",
|
|
"logStop": "lgo",
|
|
"firmwareName": "fwnnam",
|
|
"softwareName": "swn",
|
|
"cmdhPolicyName": "cpn",
|
|
"mgmtLink": "cmlk",
|
|
"activeCmdhPolicyLink": "acmlk",
|
|
"order": "od",
|
|
"defEcValue": "dev",
|
|
"requestOrigin": "ror",
|
|
"requestContext": "rct",
|
|
"requestContextNotification": "rcn",
|
|
"requestCharacteristics": "rch",
|
|
"applicableEventCategories": "aecs",
|
|
"applicableEventCategory": "aec",
|
|
"defaultRequestExpTime": "dget",
|
|
"defaultResultExpTime": "dset",
|
|
"defaultOpExecTime": "doet",
|
|
"defaultRespPersistence": "drp",
|
|
"defaultDelAggregation": "dda",
|
|
"limitsEventCategory": "lec",
|
|
"limitsRequestExpTime": "lget",
|
|
"limitsResultExpTime": "lset",
|
|
"limitsOpExecTime": "loet",
|
|
"limitsRespPersistence": "lrp",
|
|
"limitsDelAggregation": "lda",
|
|
"targetNetwork": "ttn",
|
|
"minReqVolume": "mrv",
|
|
"backOffParameters": "bop",
|
|
"otherConditions": "ohc",
|
|
"maxBufferSize": "mbfs",
|
|
"storagePriority": "sgp",
|
|
"applicableCredIDs": "apci",
|
|
"allowedApp-IDs": "aai",
|
|
"allowedAEs": "aae",
|
|
"dynamicAuthorizationConsultationIDs": "daci",
|
|
"dynamicAuthorizationEnabled": "dae",
|
|
"dynamicAuthorizationPoA": "dap",
|
|
"dynamicAuthorizationLifetime": "dal",
|
|
# TODO (rkr): resourceType is specified in Table 8.2.3-267, "Resource attribute short names", two times with
|
|
# TODO different short names "ty" and "acodTy"
|
|
# there is some issue paper from oneM2M where there have found out that this is an issue with usual resource type
|
|
# "resourceType": "acodTy"
|
|
"descriptorRepresentation": "dcrp",
|
|
"semanticOpExec": "soe",
|
|
"descriptor": "dsp",
|
|
"relatedSemantics": "rels",
|
|
}
|
|
|
|
short_to_long_attribute_mapping = {v: k for k, v in
|
|
long_to_short_attribute_mapping.items()}
|
|
|
|
|
|
def get_long_attribute_name(n):
|
|
return short_to_long_attribute_mapping.get(n)
|
|
|
|
|
|
def get_short_attribute_name(n):
|
|
return long_to_short_attribute_mapping.get(n)
|
|
|
|
|
|
long_to_short_resource_mapping = {
|
|
"accessControlPolicy": "acp",
|
|
"accessControlPolicyAnnc": "acpA",
|
|
"AE": "ae",
|
|
"AEAnnc": "aeA",
|
|
"container": "cnt",
|
|
"containerAnnc": "cntA",
|
|
"latest": "la",
|
|
"oldest": "ol",
|
|
"contentInstance": "cin",
|
|
"contentInstanceAnnc": "cinA",
|
|
"CSEBase": "cb",
|
|
"delivery": "dlv",
|
|
"eventConfig": "evcg",
|
|
"execInstance": "exin",
|
|
"fanOutPoint": "fopt",
|
|
"group": "grp",
|
|
"groupAnnc": "grpA",
|
|
"locationPolicy": "lcp",
|
|
"locationPolicyAnnc": "lcpA",
|
|
"m2mServiceSubscriptionProfile": "mssp",
|
|
"mgmtCmd": "mgc",
|
|
"mgmtObj": "mgo",
|
|
"mgmtObjAnnc": "mgoA",
|
|
"node": "nod",
|
|
"nodeAnnc": "nodA",
|
|
"pollingChannel": "pch",
|
|
"pollingChannelURI": "pcu",
|
|
"remoteCSE": "csr",
|
|
"remoteCSEAnnc": "csrA",
|
|
"request": "req",
|
|
"schedule": "sch",
|
|
"scheduleAnnc": "schA",
|
|
"serviceSubscribedAppRule": "asar",
|
|
"serviceSubscribedNode": "svsn",
|
|
"statsCollect": "stcl",
|
|
"statsConfig": "stcg",
|
|
"subscription": "sub",
|
|
"semanticDescriptor": "smd",
|
|
"firmware": "fwr",
|
|
"firmwareAnnc": "fwrA",
|
|
"software": "swr",
|
|
"softwareAnnc": "swrA",
|
|
"memory": "mem",
|
|
"memoryAnnc": "memA",
|
|
"areaNwkInfo": "ani",
|
|
"areaNwkInfoAnnc": "aniA",
|
|
"areaNwkDeviceInfo": "andi",
|
|
"areaNwkDeviceInfoAnnc": "andiA",
|
|
"battery": "bat",
|
|
"batteryAnnc": "batA",
|
|
"deviceInfo": "dvi",
|
|
"deviceInfoAnnc": "dviA",
|
|
"deviceCapability": "dvc",
|
|
"deviceCapabilityAnnc": "dvcA",
|
|
"reboot": "rbo",
|
|
"rebootAnnc": "rboA",
|
|
"eventLog": "evl",
|
|
"eventLogAnnc": "evlA",
|
|
"cmdhPolicy": "cmp",
|
|
"activeCmdhPolicy": "acmp",
|
|
"cmdhDefaults": "cmdf",
|
|
"cmdhDefEcValue": "cmdv",
|
|
"cmdhEcDefParamValues": "cmpv",
|
|
"cmdhLimits": "cml",
|
|
"cmdhNetworkAccessRules": "cmnr",
|
|
"cmdhNwAccessRule": "cmwr",
|
|
"cmdhBuffer": "cmbf",
|
|
"dynamicAuthorizationConsultation": "dac"
|
|
}
|
|
|
|
short_to_long_resource_mapping = {v: k for k, v in
|
|
long_to_short_resource_mapping.items()}
|
|
|
|
|
|
def get_long_resource_name(n):
|
|
return short_to_long_resource_mapping.get(n)
|
|
|
|
|
|
def get_short_resource_name(n):
|
|
return long_to_short_resource_mapping.get(n)
|
|
|
|
|
|
long_to_short_member_mapping = {
|
|
"createdBefore": "crb",
|
|
"createdAfter": "cra",
|
|
"modifiedSince": "ms",
|
|
"unmodifiedSince": "us",
|
|
"stateTagSmaller": "sts",
|
|
"stateTagBigger": "stb",
|
|
"expireBefore": "exb",
|
|
"expireAfter": "exa",
|
|
"labels": "lbl",
|
|
"resourceType": "ty",
|
|
"sizeAbove": "sza",
|
|
"sizeBelow": "szb",
|
|
"contentType": "cty",
|
|
"limit": "lim",
|
|
"attribute": "atr",
|
|
"notificationEventType": "net",
|
|
"operationMonitor": "om",
|
|
"representation": "rep",
|
|
"filterUsage": "fu",
|
|
"eventCatType": "ect",
|
|
"eventCatNo": "ecn",
|
|
"number": "num",
|
|
"duration": "dur",
|
|
"notification": "sgn",
|
|
"notificationEvent": "nev",
|
|
"verificationRequest": "vrq",
|
|
"subscriptionDeletion": "sud",
|
|
"subscriptionReference": "sur",
|
|
"creator": "cr",
|
|
"notificationForwardingURI": "nfu",
|
|
"operation": "opr",
|
|
"originator": "org",
|
|
"accessId": "aci",
|
|
"MSISDN": "msd",
|
|
"action": "acn",
|
|
"status": "sus",
|
|
"childResource": "ch",
|
|
"accessControlRule": "acr",
|
|
"accessControlOriginators": "acor",
|
|
"accessControlOperations": "acop",
|
|
"accessControlContexts": "acco",
|
|
"accessControlWindow": "actw",
|
|
"accessControlIpAddresses": "acip",
|
|
"ipv4Addresses": "ipv4",
|
|
"ipv6Addresses": "ipv6",
|
|
"accessControlLocationRegion": "aclr",
|
|
"countryCode": "accc",
|
|
"circRegion": "accr",
|
|
"name": "nm",
|
|
"value": "val",
|
|
"type": "typ",
|
|
"maxNrOfNotify": "mnn",
|
|
"timeWindow": "tww",
|
|
"scheduleEntry": "sce",
|
|
"aggregatedNotification": "agn",
|
|
"attributeList": "atrl",
|
|
"aggregatedResponse": "agr",
|
|
"resource": "rce",
|
|
"URIList": "uril",
|
|
"anyArg": "any",
|
|
"fileType": "ftyp",
|
|
"URL": "url",
|
|
"username": "unm",
|
|
"password": "pwd",
|
|
"fileSize": "fsi",
|
|
"targetFile": "tgf",
|
|
"delaySeconds": "dss",
|
|
"successURL": "surl",
|
|
"startTime": "stt",
|
|
"completeTime": "cpt",
|
|
"UUID": "uuid",
|
|
"executionEnvRef": "eer",
|
|
"version": "vr",
|
|
"reset": "rst",
|
|
"reboot": "rbo",
|
|
"upload": "uld",
|
|
"download": "dld",
|
|
"softwareInstall": "swin",
|
|
"softwareUpdate": "swup",
|
|
"softwareUninstall": "swun",
|
|
"tracingOption": "tcop",
|
|
"tracingInfo": "tcin",
|
|
"responseTypeValue": "rtv",
|
|
"notificationURI": "nu",
|
|
"accessControlAuthenticationFlag": "acaf",
|
|
"ipv4Address": "ip4",
|
|
"ipv6Address": "ip6",
|
|
"specializationID": "spid",
|
|
"accessControlObjectDetails": "acod",
|
|
"childResourceType": "chty",
|
|
"targetedResourceType": "trt",
|
|
"originatorIP": "oip",
|
|
"originatorLocation": "olo",
|
|
"originatorRoleIDs": "orid",
|
|
"requestTimestamp": "rts",
|
|
"targetedResourceID": "trid",
|
|
"proposedPrivilegesLifetime": "ppl",
|
|
"roleIDsFromACPs": "rfa",
|
|
"tokenIDs": "tids",
|
|
"dynamicACPInfo": "dai",
|
|
"grantedPrivileges": "gp",
|
|
"privilegesLifetime": "pl",
|
|
"tokens": "tkns",
|
|
"securityInfo": "seci",
|
|
"securityInfoType": "sit",
|
|
"dasRequest": "dreq",
|
|
"dasResponse": "dres",
|
|
"esprimRandObject": "ero",
|
|
"esprimObject": "epo",
|
|
"escertkeMessage": "eckm"
|
|
}
|
|
|
|
short_to_long_member_mapping = {v: k for k, v in
|
|
long_to_short_member_mapping.items()}
|
|
|
|
|
|
def get_long_member_name(n):
|
|
return short_to_long_member_mapping.get(n)
|
|
|
|
|
|
def get_short_member_name(n):
|
|
return long_to_short_member_mapping.get(n)
|
|
|
|
|
|
long_to_short_root_mapping = {
|
|
"requestPrimitive": "rqp",
|
|
"responsePrimitive": "rsp"
|
|
}
|
|
|
|
short_to_long_root_mapping = {v: k for k, v in
|
|
long_to_short_root_mapping.items()}
|
|
|
|
|
|
def get_long_root_name(n):
|
|
return short_to_long_root_mapping.get(n)
|
|
|
|
|
|
def get_short_root_name(n):
|
|
return long_to_short_root_mapping.get(n)
|
|
|
|
|
|
long_to_short_parameter_mapping = {
|
|
"operation": "op",
|
|
"to": "to",
|
|
"from": "fr",
|
|
"requestIdentifier": "rqi",
|
|
"resourceType": "ty",
|
|
"primitiveContent": "pc",
|
|
"role": "rol",
|
|
"originatingTimestamp": "ot",
|
|
"requestExpirationTimestamp": "rqet",
|
|
"resultExpirationTimestamp": "rset",
|
|
"operationExecutionTime": "oet",
|
|
"responseType": "rt",
|
|
"resultPersistence": "rp",
|
|
"resultContent": "rcn",
|
|
"eventCategory": "ec",
|
|
"deliveryAggregation": "da",
|
|
"groupRequestIdentifier": "gid",
|
|
"filterCriteria": "fc",
|
|
"discoveryResultType": "drt",
|
|
"responseStatusCode": "rsc"
|
|
}
|
|
|
|
short_to_long_parameter_mapping = {v: k for k, v in
|
|
long_to_short_parameter_mapping.items()}
|
|
|
|
|
|
def get_long_parameter_name(n):
|
|
return short_to_long_parameter_mapping.get(n)
|
|
|
|
|
|
def get_short_parameter_name(n):
|
|
return long_to_short_parameter_mapping.get(n)
|
|
|
|
|
|
_all_types = {k: v for k, v in globals().iteritems()
|
|
if issubclass(v, OneM2MEntity) and not v.__subclasses__()}
|
|
|
|
_all_types_short = {}
|
|
_all_types_long = {}
|
|
|
|
for k, v in _all_types.iteritems():
|
|
if get_short_resource_name(k):
|
|
long_name = k
|
|
short_name = get_short_resource_name(k)
|
|
elif get_short_attribute_name(k):
|
|
long_name = k
|
|
short_name = get_short_attribute_name(k)
|
|
elif get_short_member_name(k):
|
|
long_name = k
|
|
short_name = get_short_member_name(k)
|
|
elif get_short_root_name(k):
|
|
long_name = k
|
|
short_name = get_short_root_name(k)
|
|
elif get_short_resource_name(k[0].lower() + k[1:]):
|
|
long_name = k[0].lower() + k[1:]
|
|
short_name = get_short_resource_name(long_name)
|
|
elif get_short_attribute_name(k[0].lower() + k[1:]):
|
|
long_name = k[0].lower() + k[1:]
|
|
short_name = get_short_attribute_name(long_name)
|
|
elif get_short_member_name(k[0].lower() + k[1:]):
|
|
long_name = k[0].lower() + k[1:]
|
|
short_name = get_short_member_name(long_name)
|
|
elif get_short_root_name(k[0].lower() + k[1:]):
|
|
long_name = k[0].lower() + k[1:]
|
|
short_name = get_short_root_name(long_name)
|
|
else:
|
|
continue
|
|
_all_types_short[short_name] = v
|
|
_all_types_long[long_name] = v
|
|
|
|
|
|
_resource_types = {k: v for k, v in _all_types.iteritems()
|
|
if issubclass(v, ResourceC)}
|
|
|
|
_resource_types_short = {}
|
|
_resource_types_long = {}
|
|
|
|
for k, v in _resource_types.iteritems():
|
|
if get_short_resource_name(k):
|
|
long_name = k
|
|
short_name = get_short_resource_name(k)
|
|
elif get_short_resource_name(k[0].lower() + k[1:]):
|
|
long_name = k[0].lower() + k[1:]
|
|
short_name = get_short_resource_name(long_name)
|
|
else:
|
|
continue
|
|
_resource_types_short[short_name] = v
|
|
_resource_types_long[long_name] = v
|
|
|
|
|
|
def get_onem2m_type(typename):
|
|
try:
|
|
try:
|
|
return _all_types_short[typename]
|
|
except KeyError:
|
|
return _all_types_long[typename]
|
|
except KeyError:
|
|
raise ModelTypeError("Not a valid type: %s" % (typename,))
|
|
|
|
|
|
def get_onem2m_resource_type(typename):
|
|
try:
|
|
try:
|
|
return _resource_types_short[typename]
|
|
except KeyError:
|
|
return _resource_types_long[typename]
|
|
except KeyError:
|
|
raise ModelTypeError("Not a valid resource type: %s" % (typename,))
|
|
|
|
|
|
def get_onem2m_types():
|
|
return _all_types.values()
|
|
|
|
|
|
def get_onem2m_resource_types():
|
|
return _resource_types.values()
|