})
log.info(f"Deleted export user {export.fsal.user_id}")
elif isinstance(export.fsal, RGWFSAL):
- assert export.fsal.user_id
- uid = f'nfs.{export.cluster_id}.{export.path}'
- self._exec(['radosgw-admin', 'user', 'rm', '--uid', uid])
- log.info(f"Deleted export RGW user {uid}")
+ # do nothing; we're using the bucket owner creds.
+ pass
def _create_export_user(self, export: Export) -> None:
if isinstance(export.fsal, CephFSFSAL):
elif isinstance(export.fsal, RGWFSAL):
rgwfsal = cast(RGWFSAL, export.fsal)
- rgwfsal.user_id = f'nfs.{export.cluster_id}.{export.path}'
- ret, out, err = self._exec(['radosgw-admin', 'user', 'info', '--uid',
- rgwfsal.user_id])
+ ret, out, err = self._exec(['radosgw-admin', 'bucket', 'stats', '--bucket',
+ export.path])
if ret:
- ret, out, err = self._exec(['radosgw-admin', 'user', 'create',
- '--uid', rgwfsal.user_id,
- '--display-name', rgwfsal.user_id])
- if ret:
- raise NFSException(f'Failed to create user {rgwfsal.user_id}')
+ raise NFSException(f'Failed to fetch owner for bucket {export.path}')
j = json.loads(out)
+ owner = j.get('owner', '')
+ rgwfsal.user_id = owner
+ ret, out, err = self._exec([
+ 'radosgw-admin', 'user', 'info', '--uid', owner
+ ])
+ if ret:
+ raise NFSException(
+ f'Failed to fetch key for bucket {export.path} owner {owner}'
+ )
+ j = json.loads(out)
+
# FIXME: make this more tolerate of unexpected output?
rgwfsal.access_key_id = j['keys'][0]['access_key']
rgwfsal.secret_access_key = j['keys'][0]['secret_key']
assert export.protocols == [4, 3]
assert export.transports == ["TCP", "UDP"]
assert export.fsal.name == "RGW"
- assert export.fsal.user_id == "nfs.foo.bucket"
assert export.fsal.access_key_id == "the_access_key"
assert export.fsal.secret_access_key == "the_secret_key"
assert len(export.clients) == 1
assert export.protocols == [4]
assert export.transports == ["TCP"]
assert export.fsal.name == "RGW"
- assert export.fsal.user_id == "nfs.foo.newbucket"
assert export.fsal.access_key_id == "the_access_key"
assert export.fsal.secret_access_key == "the_secret_key"
assert len(export.clients) == 1
assert export.protocols == [4]
assert export.transports == ["TCP"]
assert export.fsal.name == "RGW"
- assert export.fsal.user_id == "nfs.foo.newestbucket"
assert export.fsal.access_key_id == "the_access_key"
assert export.fsal.secret_access_key == "the_secret_key"
assert len(export.clients) == 1
assert export.protocols == [4]
assert export.transports == ["TCP"]
assert export.fsal.name == "RGW"
- assert export.fsal.user_id == "nfs.foo.bucket"
assert export.fsal.access_key_id == "the_access_key"
assert export.fsal.secret_access_key == "the_secret_key"
assert len(export.clients) == 1
assert export.protocols == [4]
assert export.transports == ["TCP"]
assert export.fsal.name == "RGW"
- assert export.fsal.user_id == "nfs.foo.bucket2"
assert export.fsal.access_key_id == "the_access_key"
assert export.fsal.secret_access_key == "the_secret_key"
assert len(export.clients) == 1
assert export.protocols == [4]
assert export.transports == ["TCP"]
assert export.fsal.name == "RGW"
- assert export.fsal.user_id == "nfs.foo.bucket"
assert export.fsal.access_key_id == "the_access_key"
assert export.fsal.secret_access_key == "the_secret_key"
assert len(export.clients) == 1