def test_get_and_set_resource_value(self):
        # an example: get and set a resource value
        from mbed_cloud.foundation import Device
        from mbed_cloud import ApiFilter
        from mbed_cloud.foundation.enums import DeviceStateEnum
        from mbed_cloud import ConnectAPI

        # Use the Foundation interface to find a registered device.
        api_filter = ApiFilter()
        api_filter.add_filter("state", "eq", DeviceStateEnum.REGISTERED)
        device = Device().list(max_results=2, filter=api_filter).next()

        # Use the Legacy interface to find resources
        connect_api = ConnectAPI()

        # Find an observable resource
        for resource in connect_api.list_resources(device.id):
            if resource.observable:
                break

        # Set a resource value
        connect_api.set_resource_value(device.id, resource.path, "12")

        # Get a resource value
        value = connect_api.get_resource_value(device.id, resource.path)
        print("Device %s, path %s, current value: %s" %(device.id, resource.path, value))
        # end of example

        connect_api.stop_notifications()
    def test_list_entities_with_filters(self):
        from mbed_cloud import SDK
        pelion_dm_sdk = SDK()

        # an example: list entities with filters
        from mbed_cloud import ApiFilter
        from mbed_cloud.foundation.enums import UserStatusEnum

        api_filter = ApiFilter()
        api_filter.add_filter("email", "eq", "*****@*****.**")
        api_filter.add_filter(
            "status", "in", [UserStatusEnum.ACTIVE, UserStatusEnum.ENROLLING])

        for user in pelion_dm_sdk.foundation.user().list(filter=api_filter):
            print("%s (%s): %s" % (user.full_name, user.id, user.email))
    def test_firmware_update_campaign_launch(self):
        from mbed_cloud.foundation import FirmwareManifest

        firmware_manifest = FirmwareManifest().list().first()
        my_manifest_id = firmware_manifest.id

        # an example: firmware update campaign launch
        from datetime import datetime
        from pprint import pprint
        from mbed_cloud import SDK
        from mbed_cloud import ApiFilter

        pelion_dm_sdk = SDK()
        new_campaign = pelion_dm_sdk.foundation.update_campaign(
            root_manifest_id=my_manifest_id,
            name="campaign - " + str(datetime.now()),
            description="Update campaign for prior 2019 devices")

        # Create a filter for all devices created before the 1st of January 2019 so that these devices will have their
        # firmware replaced by the one defined in the manifest.
        api_filter = ApiFilter()
        api_filter.add_filter("created_at", "lte", datetime(2019, 1, 1))
        new_campaign.device_filter_helper = api_filter

        # Create the campaign
        new_campaign.create()

        # Determine the phase of the campaign
        print("Campaign Phase:", new_campaign.phase)

        # Start the campaign
        new_campaign.start()

        # Determine the phase of the campaign
        new_campaign.read()
        print("Campaign Phase:", new_campaign.phase)

        # Print all device metadata related to this campaign
        for campaign_device_metadata in new_campaign.device_metadata():
            pprint(campaign_device_metadata.to_dict())

        # end of example
        new_campaign.stop()
        new_campaign.read()
        print("Campaign Phase:", new_campaign.phase)

        new_campaign.delete()
    def test_certificate_black_listing(self):
        from mbed_cloud.foundation import TrustedCertificate

        # Find a production certificate
        my_certificate = TrustedCertificate().list(filter={
            "device_execution_mode": {
                "neq": 1
            }
        }).first()
        my_cert_id = my_certificate.id
        # Record the original status to revert to its original state at the end
        original_status = TrustedCertificate(id=my_cert_id).read().status

        # an example: certificate black listing
        from mbed_cloud import SDK
        from mbed_cloud import ApiFilter
        from mbed_cloud.foundation.enums import TrustedCertificateStatusEnum

        pelion_dm_sdk = SDK()

        # Set the certificate to inactive
        my_cert = pelion_dm_sdk.foundation.trusted_certificate(
            id=my_cert_id).read()
        my_cert.status = TrustedCertificateStatusEnum.INACTIVE
        my_cert.update()

        # List all devices which have tried to bootstrap
        api_filter = ApiFilter()
        api_filter.add_filter("trusted_certificate_id", "eq", my_cert)

        for device_denial in pelion_dm_sdk.foundation.device_enrollment_denial(
        ).list(filter=api_filter):
            print("Device endpoint name: %s" % device_denial.endpoint_name)
        # end of example

        new_status = my_cert.read().status
        self.assertEqual(TrustedCertificateStatusEnum.INACTIVE, new_status,
                         "Status should have been set to disabled")

        # Revert the certificate to its original status
        my_cert.status = original_status
        my_cert.update()

        end_status = my_cert.read().status
        self.assertEqual(
            original_status, end_status,
            "Status should have been reverted back to its original value")
Example #5
0
    def test_add_filter(self):
        api_filter = ApiFilter()
        self.assertEqual({}, api_filter.to_api())

        api_filter.add_filter("created_at", "gte", datetime(2019, 1, 1))
        expected_filter = {"created_at__gte": "2019-01-01T00:00:00Z"}
        self.assertEqual(expected_filter, api_filter.to_api())

        api_filter.add_filter("created_at", "lte", date(2019, 12, 31))
        expected_filter = {
            "created_at__gte": "2019-01-01T00:00:00Z",
            "created_at__lte": "2019-12-31"
        }
        self.assertEqual(expected_filter, api_filter.to_api())

        api_filter.add_filter("status", "eq", True)
        expected_filter = {
            "created_at__gte": "2019-01-01T00:00:00Z",
            "created_at__lte": "2019-12-31",
            "status__eq": "true"
        }
        expected_query_string = "created_at__gte=2019-01-01T00:00:00Z&created_at__lte=2019-12-31&status__eq=true"
        self.assertEqual(expected_filter, api_filter.to_api())
        self.assertEqual(expected_query_string, api_filter.to_query_string())