2017-08-14 9 views
0

のリクエストを使用してCouchbase(v.4.6.2)バケットを作成しようとしています。モジュールはPython(3.5)で動作しますが、運がありません。ここでは、コードは次のようになります。Couchbase APIバケットの作成

import requests 
import json 
url = 'http://127.0.0.1:8091/pools/default/buckets' 
cdb_login = 'Administrator' 
cdb_pass = 'adminpassw0rd' 
payload = {'bucketType': 'couchbase', 
      'authType': 'sasl', 
      'saslPassword': 'passw0rd', 
      'name': 'newBucket01', 
      'ramQuotaMB': 512, 
      'replicaNumber': 1, 
      'conflictResolutionType':'lww', 
      'flushEnabled': 1} 

r = requests.post(url, auth=(cdb_login, cdb_pass), data=json.dumps(payload)) 
print(r.status_code, r.reason, r.text) 

応答が誤りである:

400 Bad Request {"errors":{"authType":"invalid authType"},"summaries":{"ramSummary":{"total":4831838208,"otherBuckets":641728512,"nodesCount":1,"perNodeMegs":0,"thisAlloc":0,"thisUsed":0,"free":4190109696},"hddSummary":{"total":317653053440,"otherData":123855113749,"otherBuckets":29577092,"thisUsed":0,"free":193768362599}}} 

私が代わりに基本的なデフォルトこのような1 HTTPDigestAuthを強制しようとした:

r = requests.post(url, auth=requests.auth.HTTPDigestAuth(cdb_login, cdb_pass), data=json.dumps(payload)) 

それは

401 Unauthorized 
をスローします

(login aパスワードは上記と同じです)。だからどちらもうまくいかない。

「管理者」と「adminpassw0rd」は、私が127.0.0.1:8091でCouchbaseの管理GUIにアクセスするために使用するログとパスワードです。これらのパラメータは、仕事をし、私はbashのからCURLを使用する場合はバケットを作成します。

import subprocess 
create_bucket_bash = ['curl', '-X', 'POST', '-u', 'Administrator:adminpassw0rd', 'http://127.0.0.1:8091/pools/default/buckets', 
         '-d', 'name=newBucket01', 
         '-d', 'conflictResolutionType=lww', 
         '-d', 'authType=sasl', 
         '-d', 'ramQuotaMB=512', 
         '-d', 'saslPassword=passw0rd', 
         '-d', 'bucketType=couchbase'] 
subprocess.call(create_bucket_bash) 

何が足りないか、要求と間違ってやっているのですか?

答えて

1

RESTエンドポイントは、直接ペイロードを渡すだけで、JSONではなくURLエンコード値が期待されます。

r = requests.post(url, auth=(cdb_login, cdb_pass), data=payload)

あなたは、Python SDKのクラスタ管理APIを使用してみましたか?これは、あなたのためのバケットをインタラクティブに作成することができます。例えば

from couchbase.admin import Admin 

admin = Admin('Administrator', 'password', host='10.112.162.101', port=8091) 

# create bucket 
admin.bucket_create('bucket_name', 
        bucket_type='couchbase', 
        bucket_password='passw0rd', 
        replicas=1, 
        ram_quota=100, 
        flush_enabled=False) 

# optionally wait for bucket to be ready 
admin.wait_ready('bucket_name', 
       timeout=10.0, 
       sleep_interval=0.2) 
+0

ブリリアント!できます! – uzla

関連する問題