/** @param args */
  public static void main(String[] args) {
    Keystone keystone = new Keystone(ExamplesConfiguration.KEYSTONE_AUTH_URL);
    // access with unscoped token
    Access access =
        keystone
            .tokens()
            .authenticate(
                new UsernamePassword(
                    ExamplesConfiguration.KEYSTONE_USERNAME,
                    ExamplesConfiguration.KEYSTONE_PASSWORD))
            .execute();
    // use the token in the following requests
    keystone.setTokenProvider(new OpenStackSimpleTokenProvider(access.getToken().getId()));

    Tenants tenants = keystone.tenants().list().execute();
    // try to exchange token using the first tenant
    if (tenants.getList().size() > 0) {
      // access with tenant
      access =
          keystone
              .tokens()
              .authenticate(new TokenAuthentication(access.getToken().getId()))
              .withTenantId(tenants.getList().get(0).getId())
              .execute();

      Quantum quantumClient =
          new Quantum(
              KeystoneUtils.findEndpointURL(access.getServiceCatalog(), "network", null, "public"));
      quantumClient.setTokenProvider(new OpenStackSimpleTokenProvider(access.getToken().getId()));

      Network networkQuery = new Network();
      networkQuery.setName("benn.cs");
      networkQuery.setAdminStateUp(true);
      /*
      Networks networks = quantumClient.execute(NetworkQuery.queryNetworks(networkQuery));

      for (Network network : networks) {
      	System.out.println(network);
      }

      Subnet subnetQuery = new Subnet();
      subnetQuery.setIpversion(Subnet.IpVersion.IPV4);
      Subnets Subnets = quantumClient.execute(NetworkQuery.querySubnets(subnetQuery));
      for (Subnet subnet : Subnets) {
      	System.out.println(subnet);
      }
      */
    } else {
      System.out.println("No tenants found!");
    }
  }
  /** @param args */
  public static void main(String[] args) {
    Keystone keystone = new Keystone(ExamplesConfiguration.KEYSTONE_AUTH_URL);
    Access access =
        keystone
            .tokens()
            .authenticate(
                new UsernamePassword(
                    ExamplesConfiguration.KEYSTONE_USERNAME,
                    ExamplesConfiguration.KEYSTONE_PASSWORD))
            .execute();

    // use the token in the following requests
    keystone.token(access.getToken().getId());

    Tenants tenants = keystone.tenants().list().execute();

    // try to exchange token using the first tenant
    if (tenants.getList().size() > 0) {

      access =
          keystone
              .tokens()
              .authenticate(new TokenAuthentication(access.getToken().getId()))
              .withTenantId(tenants.getList().get(0).getId())
              .execute();

      // NovaClient novaClient = new
      // NovaClient(KeystoneUtils.findEndpointURL(access.getServiceCatalog(), "compute", null,
      // "public"), access.getToken().getId());
      Nova novaClient =
          new Nova(
              ExamplesConfiguration.NOVA_ENDPOINT
                  .concat("/")
                  .concat(tenants.getList().get(0).getId()));
      novaClient.token(access.getToken().getId());
      // novaClient.enableLogging(Logger.getLogger("nova"), 100 * 1024);

      Flavors flavors = novaClient.flavors().list(true).execute();
      for (Flavor flavor : flavors) {
        System.out.println(flavor);
      }

    } else {
      System.out.println("No tenants found!");
    }
  }