Beispiel #1
0
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)
Beispiel #2
0
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)
Beispiel #3
0
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,
    )
Beispiel #4
0
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
Beispiel #5
0
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
Beispiel #6
0
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)
Beispiel #7
0
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()
Beispiel #8
0
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")
Beispiel #9
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)
Beispiel #10
0
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
    )
Beispiel #11
0
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()
Beispiel #12
0
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)
Beispiel #13
0
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)
Beispiel #14
0
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, )
Beispiel #15
0
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, )
Beispiel #16
0
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
Beispiel #17
0
class Notification(OneM2MEntity):
    notificationEvent = EntityAttribute(NotificationEventC)
    verificationRequest = Attribute(bool)
    subscriptionDeletion = Attribute(bool)
    subscriptionReference = Attribute(AnyURI)
    creator = UnicodeAttribute()  # ID
    notificationForwardingURI = Attribute(AnyURI)
Beispiel #18
0
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
Beispiel #19
0
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,
    )
Beispiel #20
0
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")
Beispiel #21
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)
Beispiel #22
0
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__
Beispiel #23
0
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,
    )
Beispiel #25
0
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)
Beispiel #26
0
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,
    )
Beispiel #28
0
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)
Beispiel #29
0
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,
    )