Skip to content

Commit 340ac5f

Browse files
committed
add config for reva cli tests to run with EOS
1 parent 4f00de0 commit 340ac5f

File tree

5 files changed

+231
-77
lines changed

5 files changed

+231
-77
lines changed

.github/workflows/test-reva-cli.yml

Lines changed: 3 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ jobs:
2424
- name: Setup Node.js
2525
uses: actions/setup-node@v4
2626
with:
27-
node-version: '18'
27+
node-version: "18"
2828
- name: Install judo
2929
run: npm install -g @intuit/judo
3030
- name: Build reva
@@ -34,69 +34,9 @@ jobs:
3434
- name: Create storage directory
3535
run: mkdir -p tmp/revalocalstorage/data tmp/revalocalstorage/shares
3636
- name: Create users.json
37-
run: |
38-
cat > tmp/users.json << 'EOF'
39-
[
40-
{
41-
"username": "testuser",
42-
"id": {
43-
"idp": "http://localhost:20080",
44-
"opaque_id": "testuser",
45-
"type": 1
46-
},
47-
"secret": "testpass",
48-
"display_name": "Test User",
49-
"mail": "[email protected]",
50-
"mail_verified": true,
51-
"groups": ["users"],
52-
"uid_number": 1000,
53-
"gid_number": 1000
54-
},
55-
{
56-
"username": "testreceivinguser",
57-
"id": {
58-
"idp": "http://localhost:20080",
59-
"opaque_id": "testreceivinguser",
60-
"type": 1
61-
},
62-
"secret": "testpass",
63-
"display_name": "Test User",
64-
"mail": "[email protected]",
65-
"mail_verified": true,
66-
"groups": ["users"],
67-
"uid_number": 1001,
68-
"gid_number": 1000
69-
}
70-
]
71-
EOF
37+
run: cp tests/integration/reva-cli/config/users.json tmp/users.json
7238
- name: Create groups.json
73-
run: |
74-
cat > tmp/groups.json << 'EOF'
75-
[
76-
{
77-
"id": {
78-
"opaque_id": "users",
79-
"idp": "http://localhost:20080"
80-
},
81-
"group_name": "users",
82-
"mail": "[email protected]",
83-
"display_name": "Sailing Lovers",
84-
"gid_number": 123,
85-
"members": [
86-
{
87-
"id": {
88-
"idp": "http://localhost:20080",
89-
"opaque_id": "testuser"
90-
}
91-
},
92-
{
93-
"idp": "http://localhost:20080",
94-
"opaque_id": "testreceivinguser"
95-
}
96-
]
97-
}
98-
]
99-
EOF
39+
run: cp tests/integration/reva-cli/config/groups.json tmp/groups.json
10040
- name: Start revad
10141
run: |
10242
./cmd/revad/revad -c tests/integration/reva-cli/config/revad-localfs.toml &

pkg/eosclient/eosgrpc/eosgrpc.go

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -143,34 +143,38 @@ func newgrpc(ctx context.Context, log *zerolog.Logger, opt *Options) (erpc.EosCl
143143

144144
log.Debug().Msgf("Going to ping '%s'", opt.GrpcURI)
145145
ecl := erpc.NewEosClient(conn)
146-
// If we can't ping... just print warnings. In the case EOS is down, grpc will take care of
147-
// connecting later
146+
148147
prq := new(erpc.PingRequest)
149148
prq.Authkey = opt.Authkey
150149
prq.Message = []byte("hi this is a ping from reva")
151150
prep, err := ecl.Ping(ctx, prq)
152151
if err != nil {
153-
if opt.AllowInsecure {
154-
conn, err = grpc.NewClient(opt.GrpcURI, grpc.WithTransportCredentials(insecure.NewCredentials()))
155-
if err != nil {
156-
log.Warn().Err(err).Msgf("Error connecting to '%s' using insecure", opt.GrpcURI)
157-
return nil, err
158-
} else {
159-
log.Warn().Err(err).Msgf("Fell back to insecure mode when connecting to %s because TLS ping failed", opt.GrpcURI)
160-
ecl = erpc.NewEosClient(conn)
161-
}
162-
} else {
152+
// Must use TLS, so we fail
153+
if !opt.AllowInsecure {
163154
log.Error().Err(err).Msgf("Failed to connect to '%s' using TLS, and allow_insecure is false", opt.GrpcURI)
164155
return nil, err
165156
}
166-
log.Warn().Err(err).Msgf("Could not ping to '%s'", opt.GrpcURI)
157+
158+
// Otherwise, let's try again, but this time without TLS
159+
conn, err = grpc.NewClient(opt.GrpcURI, grpc.WithTransportCredentials(insecure.NewCredentials()))
160+
if err != nil {
161+
log.Warn().Err(err).Msgf("Failed to create insecure gRPC client")
162+
return nil, err
163+
}
164+
ecl = erpc.NewEosClient(conn)
165+
prep, err = ecl.Ping(ctx, prq)
166+
if err != nil {
167+
log.Error().Err(err).Msgf("Failed to connect to '%s' in insecure mode", opt.GrpcURI)
168+
return nil, err
169+
}
167170
}
168171

169172
if prep == nil {
170173
log.Warn().Msgf("Could not ping to '%s': nil response", opt.GrpcURI)
174+
return nil, errors.New("Got nil response from ping to EOS")
171175
}
172-
log.Debug().Msgf("Ping to '%s' succeeded", opt.GrpcURI)
173176

177+
log.Debug().Msgf("Ping to '%s' succeeded", opt.GrpcURI)
174178
return ecl, nil
175179
}
176180

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
[
2+
{
3+
"id": {
4+
"opaque_id": "myusers",
5+
"idp": "http://localhost:20080"
6+
},
7+
"group_name": "myusers",
8+
"mail": "[email protected]",
9+
"display_name": "Sailing Lovers",
10+
"gid_number": 123,
11+
"members": [
12+
{
13+
"id": {
14+
"idp": "http://localhost:20080",
15+
"opaque_id": "testuser"
16+
}
17+
},
18+
{
19+
"idp": "http://localhost:20080",
20+
"opaque_id": "testreceivinguser"
21+
}
22+
]
23+
}
24+
]
Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
[log]
2+
level = "debug"
3+
4+
[shared]
5+
gatewaysvc = "localhost:9142"
6+
jwt_secret = "top_secret_jwt_secret"
7+
skip_user_groups_in_token = true
8+
9+
db_name = "test"
10+
db_engine = "sqlite"
11+
12+
###########
13+
# GATEWAY #
14+
###########
15+
16+
[grpc]
17+
address = "0.0.0.0:9142"
18+
19+
[grpc.services.gateway]
20+
commit_share_to_storage_grant = true
21+
commit_share_to_storage_ref = true
22+
disable_home_creation_on_login = true
23+
transfer_shared_secret = "top_secret_transfer_shared_secret"
24+
transfer_expires = 86400
25+
home_mapping = ""
26+
home_layout = "/localfs/"
27+
etag_cache_ttl = 0
28+
create_home_cache_ttl = 1
29+
resource_info_cache_ttl = 60
30+
resource_info_cache_type = "memory"
31+
ocm_enabled = false
32+
33+
authregistrysvc = "localhost:9142"
34+
storageregistrysvc = "localhost:9142"
35+
appregistrysvc = "localhost:9142"
36+
preferencessvc = "localhost:9142"
37+
userprovidersvc = "localhost:9142"
38+
groupprovidersvc = "localhost:9142"
39+
usershareprovidersvc = "localhost:9142"
40+
publicshareprovidersvc = "localhost:9142"
41+
spacessvc = "localhost:9142"
42+
43+
datagateway = "http://localhost:38001/data"
44+
45+
allowed_user_agents = { "/home" = ["grpc", "desktop"] }
46+
47+
[grpc.services.gateway.token_managers.jwt]
48+
expires_next_weekend = true
49+
expires = 86400
50+
51+
[grpc.services.preferences]
52+
driver = "sql"
53+
54+
[grpc.services.preferences.drivers.sql]
55+
56+
###########
57+
# STORAGE #
58+
###########
59+
60+
[grpc.services.spacesregistry]
61+
driver = "sql"
62+
user_space = "/eos"
63+
machine_secret = "top_secret_machine_secret"
64+
resource_info_cache_ttl = 300
65+
resource_info_cache_type = "memory"
66+
67+
[grpc.services.spacesregistry.drivers.sql]
68+
69+
[grpc.services.storageregistry]
70+
driver = "static"
71+
72+
[grpc.services.storageregistry.drivers.static]
73+
home_provider = "/home"
74+
75+
[grpc.services.storageregistry.drivers.static.rules]
76+
"/eos" = {"address" = "localhost:9142"}
77+
"eos" = {"address" = "localhost:9142"}
78+
79+
[grpc.services.storageprovider]
80+
# custom_mime_types_json = "/etc/revad/custom-mimetypes.json"
81+
driver = "eoswrapper"
82+
mount_path = "/eos"
83+
mount_id = "eos"
84+
85+
minimum_allowed_path_level_for_share = 5
86+
provides_space_type = "personal"
87+
88+
[grpc.services.storageprovider.drivers.eoswrapper]
89+
namespace = "/eos/"
90+
quota_node = "/eos/"
91+
master_url = "root://localhost"
92+
master_grpc_uri = "localhost:50051"
93+
user_layout = "{{substr 0 1 .Username}}/{{.Username}}"
94+
xrdcopy_binary = "/opt/eos/xrootd/bin/xrdcopy"
95+
cache_directory = "/var/tmp/reva"
96+
write_uses_local_temp = false
97+
default_quota_files = 5000000
98+
default_secondary_quota_bytes = 20000000000
99+
grpc_auth_key = "auth_key"
100+
https_auth_key = "auth_key"
101+
use_grpc = true
102+
allow_insecure = true
103+
104+
########
105+
# AUTH #
106+
########
107+
108+
[grpc.services.authregistry]
109+
driver = "static"
110+
111+
[grpc.services.authregistry.drivers.static.rules]
112+
basic = "localhost:9142"
113+
bearer = "localhost:9142"
114+
publicshares = "localhost:9142"
115+
116+
[grpc.services.authprovider]
117+
auth_manager = "json"
118+
119+
[grpc.services.authprovider.auth_managers.json]
120+
users = "./tmp/users.json"
121+
122+
[grpc.services.userprovider]
123+
driver = "json"
124+
125+
[grpc.services.userprovider.drivers.json]
126+
users = "./tmp/users.json"
127+
128+
[grpc.services.groupprovider]
129+
driver = "json"
130+
131+
[grpc.services.groupprovider.drivers.json]
132+
groups = "./tmp/groups.json"
133+
134+
#########
135+
# SHARE #
136+
#########
137+
138+
[grpc.services.usershareprovider]
139+
driver = "sql"
140+
141+
[grpc.services.usershareprovider.drivers.sql]
142+
143+
########
144+
# HTTP #
145+
########
146+
147+
[http]
148+
address = "0.0.0.0:38001"
149+
150+
[http.services.dataprovider]
151+
driver = "local"
152+
153+
[http.services.dataprovider.drivers.local]
154+
root = "./tmp/revalocalstorage/data"
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
[
2+
{
3+
"username": "testuser",
4+
"id": {
5+
"idp": "http://localhost:20080",
6+
"opaque_id": "testuser",
7+
"type": 1
8+
},
9+
"secret": "testpass",
10+
"display_name": "Test User",
11+
"mail": "[email protected]",
12+
"mail_verified": true,
13+
"groups": ["myusers"],
14+
"uid_number": 1255,
15+
"gid_number": 123
16+
},
17+
{
18+
"username": "testreceivinguser",
19+
"id": {
20+
"idp": "http://localhost:20080",
21+
"opaque_id": "testreceivinguser",
22+
"type": 1
23+
},
24+
"secret": "testpass",
25+
"display_name": "Test User",
26+
"mail": "[email protected]",
27+
"mail_verified": true,
28+
"groups": ["myusers"],
29+
"uid_number": 1256,
30+
"gid_number": 123
31+
}
32+
]

0 commit comments

Comments
 (0)