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);
}
}
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();
}
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);
}
}
Aggregations