]> git.proxmox.com Git - ceph.git/blob - ceph/src/rgw/rgw_admin_user.cc
import 15.2.0 Octopus source
[ceph.git] / ceph / src / rgw / rgw_admin_user.cc
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab ft=cpp
3
4 #include "include/rgw/librgw_admin_user.h"
5 #include "rgw_admin_user.h"
6 #include "rgw_user.h"
7 #include "common/errno.h"
8
9 #define dout_context g_ceph_context
10 #define dout_subsys ceph_subsys_rgw
11
12 using namespace rgw;
13
14 namespace rgw {
15
16 extern RGWLibAdmin rgw_lib_admin;
17
18 }
19
20 extern "C" {
21
22 int rgw_admin_create_user(librgw_admin_user_t librgw_admin_user, const char *uid,
23 const char *display_name, const char *access_key, const char* secret_key,
24 const char *email, const char *caps,
25 const char *access, bool admin, bool system)
26 {
27 RGWUserAdminOpState user_op;
28 rgw_user user_id;
29 user_id.from_str(uid);
30 user_op.set_user_id(user_id);
31 user_op.set_display_name(display_name);
32 user_op.user_email = email;
33 user_op.user_email_specified=true;
34 user_op.set_access_key(access_key);
35 user_op.set_secret_key(secret_key);
36 user_op.set_caps(caps);
37 if (access) {
38 uint32_t perm_mask = rgw_str_to_perm(access);
39 user_op.set_perm(perm_mask);
40 }
41 user_op.set_admin(admin);
42 user_op.set_system(system);
43
44 RGWUser user;
45 int ret = 0;
46 ret = user.init(rgw_lib_admin.get_store(), user_op);
47 if (ret < 0) {
48 cerr << "user.init failed: " << cpp_strerror(-ret) << std::endl;
49 return -ret;
50 }
51
52 std::string err_msg;
53 ret = user.add(user_op, &err_msg);
54 if (ret < 0) {
55 cerr << "could not create user: " << err_msg << std::endl;
56 if (ret == -ERR_INVALID_TENANT_NAME)
57 ret = -EINVAL;
58
59 return -ret;
60 }
61
62 return 0;
63 }
64
65 int rgw_admin_user_info(librgw_admin_user_t librgw_admin_user, const char *uid, rgw_user_info* user_info)
66 {
67 RGWUserAdminOpState user_op;
68 rgw_user user_id;
69 user_id.from_str(uid);
70 user_op.set_user_id(user_id);
71
72 RGWUser user;
73 int ret = 0;
74 ret = user.init(rgw_lib_admin.get_store(), user_op);
75 if (ret < 0) {
76 cerr << "user.init failed: " << cpp_strerror(-ret) << std::endl;
77 return -ret;
78 }
79
80 std::string err_msg;
81 RGWUserInfo info;
82 ret = user.info(info, &err_msg);
83 if (ret < 0) {
84 cerr << "could not fetch user info: " << err_msg << std::endl;
85 return -ret;
86 }
87
88 return 0;
89 }
90
91 }