Search in sources :

Example 1 with ListDevicesResponse

use of com.google.api.services.cloudiot.v1.model.ListDevicesResponse in project udmi by faucetsdn.

the class CloudIotManager method fetchDeviceList.

public Set<String> fetchDeviceList() {
    Preconditions.checkNotNull(cloudIotService, "CloudIoT service not initialized");
    Set<Device> allDevices = new HashSet<>();
    String nextPageToken = null;
    try {
        do {
            ListDevicesResponse response = cloudIotRegistries.devices().list(getRegistryPath()).setPageToken(nextPageToken).setPageSize(LIST_PAGE_SIZE).execute();
            List<Device> devices = response.getDevices();
            allDevices.addAll(devices == null ? ImmutableList.of() : devices);
            System.err.printf("Retrieved %d devices from registry...%n", allDevices.size());
            nextPageToken = response.getNextPageToken();
        } while (nextPageToken != null);
        return allDevices.stream().map(Device::getId).collect(Collectors.toSet());
    } catch (Exception e) {
        throw new RuntimeException("While listing devices for registry " + registryId, e);
    }
}
Also used : Device(com.google.api.services.cloudiot.v1.model.Device) ListDevicesResponse(com.google.api.services.cloudiot.v1.model.ListDevicesResponse) GoogleJsonResponseException(com.google.api.client.googleapis.json.GoogleJsonResponseException) IOException(java.io.IOException) HashSet(java.util.HashSet)

Example 2 with ListDevicesResponse

use of com.google.api.services.cloudiot.v1.model.ListDevicesResponse in project java-docs-samples by GoogleCloudPlatform.

the class DeviceRegistryExample method clearRegistry.

// [END iot_delete_registry]
/**
 * clearRegistry
 *
 * <ul>
 *   <li>Registries can't be deleted if they contain devices,
 *   <li>Gateways (a type of device) can't be deleted if they have bound devices
 *   <li>Devices can't be deleted if bound to gateways...
 * </ul>
 *
 * To completely remove a registry, you must unbind all devices from gateways, then remove all
 * devices in a registry before removing the registry. As pseudocode: <code>
 *   ForAll gateways
 *     ForAll devicesBoundToGateway
 *       unbindDeviceFromGateway
 *   ForAll devices
 *     Delete device by ID
 *   Delete registry
 *  </code>
 */
// [START iot_clear_registry]
protected static void clearRegistry(String cloudRegion, String projectId, String registryName) throws GeneralSecurityException, IOException {
    GoogleCredentials credential = GoogleCredentials.getApplicationDefault().createScoped(CloudIotScopes.all());
    JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
    HttpRequestInitializer init = new HttpCredentialsAdapter(credential);
    final CloudIot service = new CloudIot.Builder(GoogleNetHttpTransport.newTrustedTransport(), jsonFactory, init).setApplicationName(APP_NAME).build();
    final String registryPath = String.format("projects/%s/locations/%s/registries/%s", projectId, cloudRegion, registryName);
    CloudIot.Projects.Locations.Registries regAlias = service.projects().locations().registries();
    CloudIot.Projects.Locations.Registries.Devices devAlias = regAlias.devices();
    ListDevicesResponse listGatewaysRes = devAlias.list(registryPath).setGatewayListOptionsGatewayType("GATEWAY").execute();
    List<Device> gateways = listGatewaysRes.getDevices();
    // Unbind all devices from all gateways
    if (gateways != null) {
        System.out.println("Found " + gateways.size() + " devices");
        for (Device g : gateways) {
            String gatewayId = g.getId();
            System.out.println("Id: " + gatewayId);
            ListDevicesResponse res = devAlias.list(registryPath).setGatewayListOptionsAssociationsGatewayId(gatewayId).execute();
            List<Device> deviceNumIds = res.getDevices();
            if (deviceNumIds != null) {
                System.out.println("Found " + deviceNumIds.size() + " devices");
                for (Device device : deviceNumIds) {
                    String deviceId = device.getId();
                    System.out.println(String.format("ID: %s", deviceId));
                    // Remove any bindings from the device
                    UnbindDeviceFromGatewayRequest request = new UnbindDeviceFromGatewayRequest();
                    request.setDeviceId(deviceId);
                    request.setGatewayId(gatewayId);
                    regAlias.unbindDeviceFromGateway(registryPath, request).execute();
                }
            } else {
                System.out.println("Gateway has no bound devices.");
            }
        }
    }
    // Remove all devices from the regsitry
    List<Device> devices = devAlias.list(registryPath).execute().getDevices();
    if (devices != null) {
        System.out.println("Found " + devices.size() + " devices");
        for (Device d : devices) {
            String deviceId = d.getId();
            String devicePath = String.format("%s/devices/%s", registryPath, deviceId);
            service.projects().locations().registries().devices().delete(devicePath).execute();
        }
    }
    // Delete the registry
    service.projects().locations().registries().delete(registryPath).execute();
}
Also used : CloudIot(com.google.api.services.cloudiot.v1.CloudIot) HttpCredentialsAdapter(com.google.auth.http.HttpCredentialsAdapter) Device(com.google.api.services.cloudiot.v1.model.Device) JsonFactory(com.google.api.client.json.JsonFactory) UnbindDeviceFromGatewayRequest(com.google.api.services.cloudiot.v1.model.UnbindDeviceFromGatewayRequest) ListDevicesResponse(com.google.api.services.cloudiot.v1.model.ListDevicesResponse) GoogleCredentials(com.google.auth.oauth2.GoogleCredentials) HttpRequestInitializer(com.google.api.client.http.HttpRequestInitializer)

Example 3 with ListDevicesResponse

use of com.google.api.services.cloudiot.v1.model.ListDevicesResponse in project udmi by faucetsdn.

the class CloudIotManager method listDevices.

Set<String> listDevices() {
    final String registryPath = String.format("projects/%s/locations/%s/registries/%s", projectId, iotConfig.cloud_region, iotConfig.registry_id);
    try {
        Set<String> deviceSet = new HashSet<>();
        String nextPageToken = null;
        do {
            LOG.info("Listing devices for " + registryPath);
            Devices.List listRequest = cloudIot.projects().locations().registries().devices().list(registryPath);
            if (nextPageToken != null) {
                listRequest.setPageToken(nextPageToken);
            }
            ListDevicesResponse listDevicesResponse = listRequest.execute();
            List<Device> devices = listDevicesResponse.getDevices();
            if (devices == null) {
                throw new RuntimeException("Devices list is empty");
            }
            devices.forEach(device -> deviceSet.add(device.getId()));
            nextPageToken = listDevicesResponse.getNextPageToken();
        } while (nextPageToken != null);
        return deviceSet;
    } catch (Exception e) {
        throw new RuntimeException("While fetching devices from " + registryPath, e);
    }
}
Also used : ListDevicesResponse(com.google.api.services.cloudiot.v1.model.ListDevicesResponse) Device(com.google.api.services.cloudiot.v1.model.Device) Devices(com.google.api.services.cloudiot.v1.CloudIot.Projects.Locations.Registries.Devices) GoogleJsonResponseException(com.google.api.client.googleapis.json.GoogleJsonResponseException) HashSet(java.util.HashSet)

Aggregations

Device (com.google.api.services.cloudiot.v1.model.Device)3 ListDevicesResponse (com.google.api.services.cloudiot.v1.model.ListDevicesResponse)3 GoogleJsonResponseException (com.google.api.client.googleapis.json.GoogleJsonResponseException)2 HashSet (java.util.HashSet)2 HttpRequestInitializer (com.google.api.client.http.HttpRequestInitializer)1 JsonFactory (com.google.api.client.json.JsonFactory)1 CloudIot (com.google.api.services.cloudiot.v1.CloudIot)1 Devices (com.google.api.services.cloudiot.v1.CloudIot.Projects.Locations.Registries.Devices)1 UnbindDeviceFromGatewayRequest (com.google.api.services.cloudiot.v1.model.UnbindDeviceFromGatewayRequest)1 HttpCredentialsAdapter (com.google.auth.http.HttpCredentialsAdapter)1 GoogleCredentials (com.google.auth.oauth2.GoogleCredentials)1 IOException (java.io.IOException)1