class ExecInstance(ExpiringResource, SubscribableResource): """See TS 102.921 10.33.1.""" id = UnicodeAttribute(id_attribute=True) accessRightID = UnicodeAttribute(mandatory=False) execStatus = UnicodeAttribute(mandatory=False) execResult = UnicodeAttribute(mandatory=False) execDisable = UnicodeAttribute(mandatory=False)
class CommunicationChannel(DefaultResource): """See TS 102.921 10.42.1.""" id = UnicodeAttribute(mandatory=False, id_attribute=True) channelType = UnicodeAttribute(mandatory=True, accesstype=Attribute.WO) contactURI = UnicodeAttribute(accesstype=Attribute.RO) channelData = EntityAttribute(accesstype=Attribute.RO, type=LongPollingChannelData)
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, )
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 Container(ExpiringResource, SubscribableResource, AnnounceableResource): """See TS 102.921 10.14.1.""" contentInstances = SubresourceMember(ContentInstances) id = UnicodeAttribute(id_attribute=True) accessRightID = UnicodeAttribute(mandatory=False) # todo searchStrings = ListAttribute(mandatory=False) maxNrOfInstances = Attribute(int, default=-1) maxByteSize = Attribute(int, default=-1) maxInstanceAge = UnicodeAttribute(mandatory=False) # todo
class MgmtObj(FlexibleAttributesMixin, ExpiringResource, SubscribableResource): """See TS 102.921 10.29.1.""" id = UnicodeAttribute(id_attribute=True) moID = UnicodeAttribute(mandatory=True, accesstype=Attribute.WO) accessRightID = UnicodeAttribute(mandatory=False) # todo searchStrings = ListAttribute(mandatory=False) description = UnicodeAttribute(mandatory=False) # todo originalMO = UnicodeAttribute(mandatory=False, accesstype=Attribute.WO) parametersCollection = CollectionMember(Parameters)
class Notify(Entity): """See TS 102.921 table 10.305""" statusCode = Attribute(mandatory=True) representation = EntityAttribute(dict) timeoutReason = UnicodeAttribute() subscriptionReference = UnicodeAttribute(mandatory=True) contact = UnicodeAttribute() requestingEntity = UnicodeAttribute()
class ContentInstance(DefaultResource): """See TS 102.921 10.19.1.""" id = UnicodeAttribute(mandatory=False, id_attribute=True) href = UnicodeAttribute(mandatory=False, path_attribute=True) contentTypes = ListAttribute() contentSize = Attribute(int) # creationTime # lastModifiedTime delayTolerance = UnicodeAttribute(mandatory=False) # todo content = EntityAttribute(Content) searchStrings = ListAttribute(version="2.0")
class AnnouncementResource(ExpiringResource): id = UnicodeAttribute(id_attribute=True) accessRightID = UnicodeAttribute(mandatory=False) # todo searchStrings = ListAttribute(mandatory=True) # TODO(rst): workaround -> change back to RW later link = UnicodeAttribute(mandatory=True, accesstype=Attribute.RW, update_mandatory=False) announceTo = EntityAttribute(mandatory=False, type=AnnounceTo, default=None)
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, # TODO )
class SclBase(DefaultResource, SubscribableResource): """See TS 102.921 10.4.1.""" scls = SubresourceMember(Scls) applications = SubresourceMember(Applications) containers = SubresourceMember(Containers) groups = SubresourceMember(Groups) accessRights = SubresourceMember(AccessRights) discovery = SubresourceMember(Discovery) # todo accessRightID = UnicodeAttribute() searchStrings = ListAttribute() aPocHandling = UnicodeAttribute()
class LocationContainer(ExpiringResource, SubscribableResource, AnnounceableResource): """See TS 102.921 10.16.1.""" contentInstances = SubresourceMember(ContentInstances) id = UnicodeAttribute(id_attribute=True) accessRightID = UnicodeAttribute(mandatory=False) # todo searchStrings = ListAttribute(mandatory=False) # announceTo maxNrOfInstances = Attribute(int) maxByteSize = Attribute(int) maxInstanceAge = UnicodeAttribute(mandatory=False) # todo locationContainerType = UnicodeAttribute(mandatory=True, accesstype=Attribute.WO)
class Group(SubscribableResource, ExpiringResource, AnnounceableResource): """See TS 102.921 10.21.1.""" id = UnicodeAttribute(id_attribute=True) accessRightID = UnicodeAttribute(mandatory=False) searchStrings = ListAttribute(mandatory=False) members = ListAttribute(mandatory=False, content_type=AnyURI) membersContent = SubresourceMember(MembersContent) memberType = UnicodeAttribute(mandatory=True, accesstype=Attribute.WO) currentNrOfMembers = Attribute(int, default=0, accesstype=Attribute.RO) maxNrOfMembers = Attribute(int) membersContentAccessRightID = UnicodeAttribute(mandatory=False) memberTypeValidated = Attribute(bool, accesstype=Attribute.RO) consistencyStrategy = UnicodeAttribute(mandatory=False)
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, )
class ContentInstance(AnnounceableSubordinateResourceC, SubscribableResource): """See TS-0001 section 9.6.7""" stateTag = UnicodeAttribute(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, )
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 Notification(OneM2MEntity): notificationEvent = EntityAttribute(NotificationEventC) verificationRequest = Attribute(bool) subscriptionDeletion = Attribute(bool) subscriptionReference = Attribute(AnyURI) creator = UnicodeAttribute() # ID notificationForwardingURI = Attribute(AnyURI)
class Containers(SubscribableCollection): """See TS 102.921 10.13.1.""" containerCollection = CollectionMember(Container) containerAnncCollection = CollectionMember(ContainerAnnc) locationContainerCollection = CollectionMember(LocationContainer) locationContainerAnncCollection = CollectionMember(LocationContainerAnnc) accessRightID = UnicodeAttribute(mandatory=False) # 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, )
class Application(ExpiringResource, SubscribableResource, AnnounceableResource): """See TS 102.921 10.8.1.""" containers = SubresourceMember(Containers) groups = SubresourceMember(Groups) accessRights = SubresourceMember(AccessRights) notificationChannels = SubresourceMember(NotificationChannels) appId = UnicodeAttribute(mandatory=False, id_attribute=True, id_immutable=True) accessRightID = UnicodeAttribute(mandatory=False) searchStrings = ListAttribute(mandatory=False) aPoC = UnicodeAttribute(mandatory=False) aPoCPaths = ListAttribute(mandatory=False, content_type=APocPath) locrequester = UnicodeAttribute(mandatory=False) # todo referencePoint = UnicodeAttribute(accesstype=Attribute.RO, version="2.0")
class AccessRight(ExpiringResource, SubscribableResource, AnnounceableResource): """See TS 102.921 10.11.1.""" searchStrings = ListAttribute(mandatory=False) permissions = ListAttribute(mandatory=False, content_type=Permission) selfPermissions = ListAttribute(mandatory=True, content_type=Permission) id = UnicodeAttribute(mandatory=False, id_attribute=True)
class ResourceC(LabeledResource): __child_types__ = () typename = None resourceName = UnicodeAttribute(accesstype=Attribute.WO, mandatory=False) 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__
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 ContainerAnnc(AnnouncedResourceC, SubscribableResource): stateTag = UnicodeAttribute(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, )
class Applications(SubscribableCollection): """See TS 102.921 10.7.1.""" applicationCollection = CollectionMember(Application) applicationAnncCollection = CollectionMember(ApplicationAnnc) mgmtObjs = SubresourceMember(MgmtObjs) accessRightID = UnicodeAttribute(mandatory=False) def __repr__(self): return "openmtc.Applications( %s, %s )" % ( self.applicationAnncCollection, self.applicationCollection)
class Container(AnnounceableResourceC, SubscribableResource): """See TS-0001 section 9.6.6""" stateTag = UnicodeAttribute(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, )
class GroupAnnc(AnnounceableResourceC, SubscribableResource): creator = UnicodeAttribute() memberType = Attribute(MemberTypeE, accesstype=Attribute.WO) currentNrOfMembers = Attribute(int, accesstype=Attribute.RO) maxNrOfMembers = Attribute(int) memberIDs = ListOfURIsS(mandatory=True) membersAccessControlPolicyIDs = ListOfURIsS() memberTypeValidated = Attribute(bool, mandatory=False, accesstype=Attribute.RO) consistencyStrategy = Attribute(ConsistencyStrategyE, accesstype=Attribute.WO) groupName = UnicodeAttribute(mandatory=False) semanticSupportIndicator = UnicodeAttribute(mandatory=False, accesstype=Attribute.RO) __child_types__ = ( Subscription, SemanticDescriptor, )
class MgmtCmd(ExpiringResource, SubscribableResource): """See TS 102.921 10.31.1.""" id = UnicodeAttribute(id_attribute=True) accessRightID = UnicodeAttribute(mandatory=False) # todo searchStrings = ListAttribute(mandatory=False) description = UnicodeAttribute(mandatory=False) # todo originalMO = UnicodeAttribute(mandatory=False, accesstype=Attribute.WO) cmdType = UnicodeAttribute(mandatory=True, update_mandatory=False) execEnable = UnicodeAttribute(mandatory=True, accesstype=Attribute.WO) execReqArgs = UnicodeAttribute(mandatory=False) execInstances = SubresourceMember(ExecInstances)
class Subscription(ExpiringResource): """See TS 102.921 10.25.1.""" # expirationTime minimalTimeBetweenNotifications = UnicodeAttribute(mandatory=False) # todo delayTolerance = UnicodeAttribute(mandatory=False) # todo # creationTime # lastModifiedTime filterCriteria = EntityAttribute(mandatory=False, accesstype=Attribute.WO, type=FilterCriteria, default=None) subscriptionType = UnicodeAttribute(mandatory=False, accesstype=Attribute.WO) # todo contact = Attribute(str, mandatory=True, accesstype=Attribute.WO) id = UnicodeAttribute(mandatory=False, id_attribute=True) aggregateURI = Attribute(str, version="2.0") timeoutReason = UnicodeAttribute(version="2.0") noRepresentation = Attribute(bool, version="2.0") subscriberId = Attribute(str, version="2.0", accesstype=None) def __repr__(self): return "openmtc.Subscription(%r, %r)" % (self.id, self.contact)
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, )