예제 #1
0
 def create_ocm_share(self, grantee_opaque, idp, domain, endpoint,
                      file_path, grantee_type, role, reshare):
     opaque = cs3_types.Opaque(
         map={
             "permissions":
             cs3_types.OpaqueEntry(decoder="plain",
                                   value=str.encode(self._map_role(role))),
             "name":
             cs3_types.OpaqueEntry(decoder="plain",
                                   value=str.encode('my_resource_name'))
         })
     resource_id = storage_resources.ResourceId(storage_id=endpoint,
                                                opaque_id=file_path)
     user_id = identity_res.UserId(idp=idp, opaque_id=grantee_opaque)
     grantee_opaque = storage_resources.Grantee(
         type=ShareUtils.map_grantee(grantee_type), user_id=user_id)
     perms = sharing_res.SharePermissions(
         permissions=ShareUtils.get_resource_permissions(role),
         reshare=bool(reshare))
     grant = sharing_res.ShareGrant(permissions=perms,
                                    grantee=grantee_opaque)
     provider_info = self._get_provider_info(domain)
     request = ocm_api.CreateOCMShareRequest(
         opaque=opaque,
         resource_id=resource_id,
         grant=grant,
         recipient_mesh_provider=provider_info)
     response = self.ocm_share_api.CreateOCMShare(request=request,
                                                  metadata=self._token())
     if self._is_code_ok(response):
         self.log.info("OCM share created:\n" + response)
     else:
         self._handle_error(response, "Error creating OCM share")
     return self._map_share(response.share)
예제 #2
0
 def _get_share_grant(self, grantee_type, share_permissions, idp, grantee):
     user_id = identity_res.UserId(idp=idp, opaque_id=grantee)
     resources_grantee = storage_resources.Grantee(user_id=user_id, type=grantee_type)
     return sharing_res.ShareGrant(permissions=share_permissions, grantee=resources_grantee)