DefaultClusterManager(final String username, final String password, final ConnectionString connectionString, final CouchbaseEnvironment environment, final ClusterFacade core) { asyncClusterManager = DefaultAsyncClusterManager.create(username, password, connectionString, environment, core); this.timeout = environment.managementTimeout(); }
DefaultBucketManager(final CouchbaseEnvironment environment, final String bucket, final String username, final String password, final ClusterFacade core) { asyncBucketManager = DefaultAsyncBucketManager.create(bucket, username, password, core, environment); this.timeout = environment.managementTimeout(); }
@Override public PingReport ping(String reportId, Collection<ServiceType> services) { return ping(reportId, services, environment.managementTimeout(), TIMEOUT_UNIT); } }
@Override public PingReport ping(String reportId) { return ping(reportId, environment.managementTimeout(), TIMEOUT_UNIT); }
@Override public PingReport ping(Collection<ServiceType> services) { return ping(services, environment.managementTimeout(), TIMEOUT_UNIT); }
@Override public PingReport ping() { return ping(environment.managementTimeout(), TIMEOUT_UNIT); }
@Override public DiagnosticsReport diagnostics(String reportId) { return Blocking.blockForSingle( couchbaseAsyncCluster.diagnostics(reportId), environment.managementTimeout(), TIMEOUT_UNIT ); } }
@Override public int invalidateQueryCache() { return Blocking.blockForSingle( asyncBucket.invalidateQueryCache(), environment.managementTimeout(), TIMEOUT_UNIT ); }
private Observable<Boolean> drop(final boolean ignoreIfNotExist, Statement dropIndex, final String errorPrefix) { return queryExecutor.execute(N1qlQuery.simple(dropIndex), env, env.managementTimeout(), TimeUnit.MILLISECONDS) .flatMap(new Func1<AsyncN1qlQueryResult, Observable<Boolean>>() { @Override
@Override public Observable<Boolean> createN1qlPrimaryIndex(final String customName, final boolean ignoreIfExist, boolean defer) { Statement createIndex; UsingWithPath usingWithPath = Index.createNamedPrimaryIndex(customName).on(bucket); if (defer) { createIndex = usingWithPath.withDefer(); } else { createIndex = usingWithPath; } return queryExecutor.execute(N1qlQuery.simple(createIndex), env, env.managementTimeout(), TimeUnit.MILLISECONDS) .compose(checkIndexCreation(ignoreIfExist, "Error creating custom primary index " + customName)); }
@Override public Observable<Boolean> createN1qlPrimaryIndex(final boolean ignoreIfExist, boolean defer) { Statement createIndex; UsingWithPath usingWithPath = Index.createPrimaryIndex().on(bucket); if (defer) { createIndex = usingWithPath.withDefer(); } else { createIndex = usingWithPath; } return queryExecutor.execute(N1qlQuery.simple(createIndex), env, env.managementTimeout(), TimeUnit.MILLISECONDS) .compose(checkIndexCreation(ignoreIfExist, "Error creating primary index")); }
@Override public Observable<Boolean> createN1qlIndex(final String indexName, List<Object> fields, Expression whereClause, final boolean ignoreIfExist, boolean defer) { if (fields == null || fields.isEmpty()) { throw new IllegalArgumentException("At least one field is required for secondary index"); } int i = -1; Expression firstExpression = expressionOrIdentifier(fields.get(0)); Expression[] otherExpressions = new Expression[fields.size() - 1]; for (Object field : fields) { if (i > -1) { otherExpressions[i] = expressionOrIdentifier(field); } //otherwise skip first expression, already processed i++; } Statement createIndex; UsingWithPath usingWithPath; if (whereClause != null) { usingWithPath = Index.createIndex(indexName).on(bucket, firstExpression, otherExpressions).where(whereClause); } else { usingWithPath = Index.createIndex(indexName).on(bucket, firstExpression, otherExpressions); } if (defer) { createIndex = usingWithPath.withDefer(); } else { createIndex = usingWithPath; } return queryExecutor.execute(N1qlQuery.simple(createIndex), env, env.managementTimeout(), TimeUnit.MILLISECONDS) .compose(checkIndexCreation(ignoreIfExist, "Error creating secondary index " + indexName)); }
@Override public Observable<IndexInfo> listN1qlIndexes() { Expression whereClause = x("keyspace_id").eq(s(bucket)) .and(i("using").eq(s("gsi"))); Statement listIndexes = select("idx.*").from(x("system:indexes").as("idx")).where(whereClause) .orderBy(Sort.desc("is_primary"), Sort.asc("name")); final Func1<List<JsonObject>, Observable<AsyncN1qlQueryRow>> errorHandler = errorsToThrowable( "Error while listing indexes: "); return queryExecutor.execute( N1qlQuery.simple(listIndexes, N1qlParams.build().consistency(ScanConsistency.REQUEST_PLUS)), env, env.managementTimeout(), TimeUnit.MILLISECONDS) .flatMap(new Func1<AsyncN1qlQueryResult, Observable<AsyncN1qlQueryRow>>() { @Override public Observable<AsyncN1qlQueryRow> call(final AsyncN1qlQueryResult aqr) { return aqr.finalSuccess() .flatMap(new Func1<Boolean, Observable<AsyncN1qlQueryRow>>() { @Override public Observable<AsyncN1qlQueryRow> call(Boolean success) { if (success) { return aqr.rows(); } else { return aqr.errors().toList().flatMap(errorHandler); } } }); } }).map(ROW_VALUE_TO_INDEXINFO); }