(class_name >> class_cap) [_val = phoenix::construct<OSDCapSpec>(_1, _2)]);
// profile := profile <name> [pool[=]<pool> [namespace[=]<namespace>]]
- profile_name %= (spaces >> lit("profile") >> spaces >> str);
+ profile_name %= (lit("profile") >> (lit('=') | spaces) >> str);
profile = (
(profile_name >> pool_name >> nspace) [_val = phoenix::construct<OSDCapProfile>(_1, _2, _3)] |
(profile_name >> pool_name) [_val = phoenix::construct<OSDCapProfile>(_1, _2)]);
// grant := allow match capspec
- grant = (*ascii::blank >> lit("allow") >>
- ((capspec >> match) [_val = phoenix::construct<OSDCapGrant>(_2, _1)] |
- (match >> capspec) [_val = phoenix::construct<OSDCapGrant>(_1, _2)] |
- (profile) [_val = phoenix::construct<OSDCapGrant>(_1)]
+ grant = (*ascii::blank >>
+ ((lit("allow") >> capspec >> match) [_val = phoenix::construct<OSDCapGrant>(_2, _1)] |
+ (lit("allow") >> match >> capspec) [_val = phoenix::construct<OSDCapGrant>(_1, _2)] |
+ (profile) [_val = phoenix::construct<OSDCapGrant>(_1)]
) >> *ascii::blank);
// osdcap := grant [grant ...]
grants %= (grant % (lit(';') | lit(',')));
"allow pool foo namespace=nfoo rwx; allow pool bar namespace nbar object_prefix rbd r",
"allow pool foo namespace=\"\" rwx; allow pool bar namespace='' object_prefix rbd r",
"allow pool foo namespace \"\" rwx; allow pool bar namespace '' object_prefix rbd r",
- "allow profile abc, allow profile abc pool=bar, allow profile abc pool=bar namespace=foo",
+ "profile abc, profile abc pool=bar, profile abc pool=bar namespace=foo",
0
};
TEST(OSDCap, AllowProfile) {
OSDCap cap;
- ASSERT_TRUE(cap.parse("allow profile read-only, allow profile read-write pool abc", NULL));
+ ASSERT_TRUE(cap.parse("profile read-only, profile read-write pool abc", NULL));
ASSERT_FALSE(cap.allow_all());
ASSERT_FALSE(cap.is_capable("foo", "", 0, "asdf", true, true, {}));
ASSERT_TRUE(cap.is_capable("foo", "", 0, "asdf", true, false, {}));
// RBD
cap.grants.clear();
- ASSERT_TRUE(cap.parse("allow profile rbd pool abc", NULL));
+ ASSERT_TRUE(cap.parse("profile rbd pool abc", NULL));
ASSERT_FALSE(cap.allow_all());
ASSERT_FALSE(cap.is_capable("foo", "", 0, "asdf", true, true, {}));
ASSERT_FALSE(cap.is_capable("foo", "", 0, "rbd_children", true, false, {}));
{{"rbd", true, true, true}}));
cap.grants.clear();
- ASSERT_TRUE(cap.parse("allow profile rbd-read-only pool abc", NULL));
+ ASSERT_TRUE(cap.parse("profile rbd-read-only pool abc", NULL));
ASSERT_FALSE(cap.allow_all());
ASSERT_FALSE(cap.is_capable("foo", "", 0, "rbd_children", true, false, {}));
ASSERT_TRUE(cap.is_capable("abc", "", 0, "asdf", true, false,