Clear registry

Remove all devices from a registry and delete the registry.

Code sample

C#

public static object ClearRegistry(string projectId, string cloudRegion, string registryId)
{
    var parentName = $"projects/{projectId}/locations/{cloudRegion}";
    var registryName = $"{parentName}/registries/{registryId}";
    var cloudIot = CreateAuthorizedClient();
    string responseRegistry = "";


    // The resource name of the location associated with the key rings.
    var parent = $"projects/{projectId}/locations/{cloudRegion}/registries/{registryId}";
    try
    {
        var devices = cloudIot
            .Projects
            .Locations
            .Registries
            .Devices
            .List(parent)
            .Execute()
            .Devices;
        Console.WriteLine("Devices: {0}", parent);

        if (devices != null)
        {
            foreach (var response in devices)
            {
                DeleteDevice(projectId, cloudRegion, registryId, response.Id);
            }
        }
    }
    catch (Google.GoogleApiException e)
    {
        Console.WriteLine(e.Message);
        return e.Error.Code;
    }

    try
    {
        DeleteRegistry(projectId, cloudRegion, registryId);
        Console.WriteLine($"Successfully deleted registry {registryName}");
        Console.WriteLine(responseRegistry);
    }
    catch
    (Google.GoogleApiException e)
    {
        Console.WriteLine("Could not delete registry");
        Console.WriteLine(e.Message);
    }


    return 0;
}

Java

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

What's next

To search and filter code samples for other Google Cloud products, see the Google Cloud sample browser.