Skip to content

Commit dcc6f91

Browse files
committed
feat: add admin_create_bucket API
1 parent f895eb4 commit dcc6f91

File tree

11 files changed

+313
-55
lines changed

11 files changed

+313
-55
lines changed

Cargo.lock

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ strip = true
1717
opt-level = 's'
1818

1919
[workspace.package]
20-
version = "0.9.8"
20+
version = "0.9.9"
2121
edition = "2021"
2222
repository = "https://github.com/ldclabs/ic-oss"
2323
keywords = ["file", "storage", "oss", "s3", "icp"]

src/ic_oss_bucket/src/api_query.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ fn get_bucket_info(_access_token: Option<ByteBuf>) -> Result<BucketInfo, String>
5555
auditors: r.auditors.clone(),
5656
trusted_ecdsa_pub_keys: r.trusted_ecdsa_pub_keys.clone(),
5757
trusted_eddsa_pub_keys: r.trusted_eddsa_pub_keys.clone(),
58-
governance_canister: r.governance_canister.clone(),
58+
governance_canister: r.governance_canister,
5959
}))
6060
}
6161

src/ic_oss_bucket/src/store.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1351,7 +1351,7 @@ pub mod fs {
13511351
let mut folders = r.borrow_mut();
13521352
let folder = folders.parent_to_update(id)?;
13531353
let files = folder.files.clone();
1354-
checker(&folder)?;
1354+
checker(folder)?;
13551355

13561356
FS_METADATA_STORE.with(|r| {
13571357
let mut fs_metadata = r.borrow_mut();

src/ic_oss_cluster/README.md

Lines changed: 46 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,42 +17,57 @@
1717

1818
```shell
1919
access_token : (principal) -> (Result);
20+
admin_add_committers : (vec principal) -> (Result_1);
2021
admin_add_managers : (vec principal) -> (Result_1);
2122
admin_add_wasm : (AddWasmInput, opt blob) -> (Result_1);
2223
admin_attach_policies : (Token) -> (Result_1);
2324
admin_batch_call_buckets : (vec principal, text, opt blob) -> (Result_2);
25+
admin_create_bucket : (opt CanisterSettings, opt blob) -> (Result_3);
2426
admin_deploy_bucket : (DeployWasmInput, opt blob) -> (Result_1);
2527
admin_detach_policies : (Token) -> (Result_1);
2628
admin_ed25519_access_token : (Token) -> (Result);
29+
admin_remove_committers : (vec principal) -> (Result_1);
2730
admin_remove_managers : (vec principal) -> (Result_1);
2831
admin_set_managers : (vec principal) -> (Result_1);
2932
admin_sign_access_token : (Token) -> (Result);
30-
admin_topup_all_buckets : () -> (Result_3);
33+
admin_topup_all_buckets : () -> (Result_4);
34+
admin_update_bucket_canister_settings : (UpdateSettingsArgument) -> (
35+
Result_1,
36+
);
3137
admin_upgrade_all_buckets : (opt blob) -> (Result_1);
3238
admin_weak_access_token : (Token, nat64, nat64) -> (Result) query;
33-
bucket_deployment_logs : (opt nat, opt nat) -> (Result_4) query;
39+
bucket_deployment_logs : (opt nat, opt nat) -> (Result_5) query;
3440
ed25519_access_token : (principal) -> (Result);
35-
get_bucket_wasm : (blob) -> (Result_5) query;
36-
get_buckets : () -> (Result_6) query;
37-
get_cluster_info : () -> (Result_7) query;
38-
get_deployed_buckets : () -> (Result_4) query;
39-
get_subject_policies : (principal) -> (Result_8) query;
40-
get_subject_policies_for : (principal, principal) -> (Result_9) query;
41-
validate2_admin_add_wasm : (AddWasmInput, opt blob) -> (Result_9);
41+
get_bucket_wasm : (blob) -> (Result_6) query;
42+
get_buckets : () -> (Result_7) query;
43+
get_canister_status : (opt principal) -> (Result_8);
44+
get_cluster_info : () -> (Result_9) query;
45+
get_deployed_buckets : () -> (Result_5) query;
46+
get_subject_policies : (principal) -> (Result_10) query;
47+
get_subject_policies_for : (principal, principal) -> (Result_11) query;
48+
validate2_admin_add_wasm : (AddWasmInput, opt blob) -> (Result_11);
4249
validate2_admin_batch_call_buckets : (vec principal, text, opt blob) -> (
43-
Result_9,
50+
Result_11,
4451
);
45-
validate2_admin_deploy_bucket : (DeployWasmInput, opt blob) -> (Result_9);
46-
validate2_admin_set_managers : (vec principal) -> (Result_9);
47-
validate2_admin_upgrade_all_buckets : (opt blob) -> (Result_9);
48-
validate_admin_add_managers : (vec principal) -> (Result_9);
52+
validate2_admin_deploy_bucket : (DeployWasmInput, opt blob) -> (Result_11);
53+
validate2_admin_set_managers : (vec principal) -> (Result_11);
54+
validate2_admin_upgrade_all_buckets : (opt blob) -> (Result_11);
55+
validate_admin_add_committers : (vec principal) -> (Result_11);
56+
validate_admin_add_managers : (vec principal) -> (Result_11);
4957
validate_admin_add_wasm : (AddWasmInput, opt blob) -> (Result_1);
5058
validate_admin_batch_call_buckets : (vec principal, text, opt blob) -> (
5159
Result_2,
5260
);
61+
validate_admin_create_bucket : (opt CanisterSettings, opt blob) -> (
62+
Result_11,
63+
);
5364
validate_admin_deploy_bucket : (DeployWasmInput, opt blob) -> (Result_1);
54-
validate_admin_remove_managers : (vec principal) -> (Result_9);
65+
validate_admin_remove_committers : (vec principal) -> (Result_11);
66+
validate_admin_remove_managers : (vec principal) -> (Result_11);
5567
validate_admin_set_managers : (vec principal) -> (Result_1);
68+
validate_admin_update_bucket_canister_settings : (UpdateSettingsArgument) -> (
69+
Result_11,
70+
);
5671
validate_admin_upgrade_all_buckets : (opt blob) -> (Result_1);
5772
```
5873

@@ -108,6 +123,22 @@ dfx canister call ic_oss_cluster admin_detach_policies '(record {
108123

109124
# get access token for a audience
110125
dfx canister call ic_oss_cluster access_token '(principal "mmrxu-fqaaa-aaaap-ahhna-cai")'
126+
127+
128+
# Add a wasm file to the cluster:
129+
ic-oss-cli -i debug/uploader.pem cluster-add-wasm -c x5573-nqaaa-aaaap-ahopq-cai --path debug/ic_oss_bucket.wasm.gz --description "ic_oss_bucket v0.9.8"
130+
131+
# get wasm file
132+
shasum -a 256 debug/ic_oss_bucket.wasm.gz
133+
dfx canister call ic_oss_cluster get_bucket_wasm '(blob "\2d\f4\25\d7\ed\ea\ba\3c\27\39\f0\f5\66\73\90\66\69\5c\f1\8c\53\fd\38\cf\9b\ef\cb\14\e9\f6\22\57")'
134+
135+
# create a bucket with default settings
136+
dfx canister call ic_oss_cluster admin_create_bucket '(null, null)'
137+
# (variant { Ok = principal "ctiya-peaaa-aaaaa-qaaja-cai" })
138+
139+
# get canister status
140+
dfx canister call ic_oss_cluster get_canister_status '(null)'
141+
dfx canister call ic_oss_cluster get_canister_status '(opt principal "ctiya-peaaa-aaaaa-qaaja-cai")'
111142
```
112143

113144
## License

src/ic_oss_cluster/ic_oss_cluster.did

Lines changed: 80 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,26 @@ type BucketDeploymentInfo = record {
77
canister : principal;
88
wasm_hash : blob;
99
};
10+
type CanisterSettings = record {
11+
freezing_threshold : opt nat;
12+
controllers : opt vec principal;
13+
reserved_cycles_limit : opt nat;
14+
log_visibility : opt LogVisibility;
15+
wasm_memory_limit : opt nat;
16+
memory_allocation : opt nat;
17+
compute_allocation : opt nat;
18+
};
19+
type CanisterStatusResponse = record {
20+
status : CanisterStatusType;
21+
memory_size : nat;
22+
cycles : nat;
23+
settings : DefiniteCanisterSettings;
24+
query_stats : QueryStats;
25+
idle_cycles_burned_per_day : nat;
26+
module_hash : opt blob;
27+
reserved_cycles : nat;
28+
};
29+
type CanisterStatusType = variant { stopped; stopping; running };
1030
type ChainArgs = variant { Upgrade : UpgradeArgs; Init : InitArgs };
1131
type ClusterInfo = record {
1232
ecdsa_token_public_key : text;
@@ -23,6 +43,16 @@ type ClusterInfo = record {
2343
schnorr_key_name : text;
2444
bucket_deployment_logs : nat64;
2545
subject_authz_total : nat64;
46+
committers : vec principal;
47+
};
48+
type DefiniteCanisterSettings = record {
49+
freezing_threshold : nat;
50+
controllers : vec principal;
51+
reserved_cycles_limit : nat;
52+
log_visibility : LogVisibility;
53+
wasm_memory_limit : nat;
54+
memory_allocation : nat;
55+
compute_allocation : nat;
2656
};
2757
type DeployWasmInput = record { args : opt blob; canister : principal };
2858
type InitArgs = record {
@@ -34,21 +64,34 @@ type InitArgs = record {
3464
bucket_topup_amount : nat;
3565
schnorr_key_name : text;
3666
};
67+
type LogVisibility = variant { controllers; public };
68+
type QueryStats = record {
69+
response_payload_bytes_total : nat;
70+
num_instructions_total : nat;
71+
num_calls_total : nat;
72+
request_payload_bytes_total : nat;
73+
};
3774
type Result = variant { Ok : blob; Err : text };
3875
type Result_1 = variant { Ok; Err : text };
76+
type Result_10 = variant { Ok : vec record { principal; text }; Err : text };
77+
type Result_11 = variant { Ok : text; Err : text };
3978
type Result_2 = variant { Ok : vec blob; Err : text };
40-
type Result_3 = variant { Ok : nat; Err : text };
41-
type Result_4 = variant { Ok : vec BucketDeploymentInfo; Err : text };
42-
type Result_5 = variant { Ok : WasmInfo; Err : text };
43-
type Result_6 = variant { Ok : vec principal; Err : text };
44-
type Result_7 = variant { Ok : ClusterInfo; Err : text };
45-
type Result_8 = variant { Ok : vec record { principal; text }; Err : text };
46-
type Result_9 = variant { Ok : text; Err : text };
79+
type Result_3 = variant { Ok : principal; Err : text };
80+
type Result_4 = variant { Ok : nat; Err : text };
81+
type Result_5 = variant { Ok : vec BucketDeploymentInfo; Err : text };
82+
type Result_6 = variant { Ok : WasmInfo; Err : text };
83+
type Result_7 = variant { Ok : vec principal; Err : text };
84+
type Result_8 = variant { Ok : CanisterStatusResponse; Err : text };
85+
type Result_9 = variant { Ok : ClusterInfo; Err : text };
4786
type Token = record {
4887
subject : principal;
4988
audience : principal;
5089
policies : text;
5190
};
91+
type UpdateSettingsArgument = record {
92+
canister_id : principal;
93+
settings : CanisterSettings;
94+
};
5295
type UpgradeArgs = record {
5396
governance_canister : opt principal;
5497
name : opt text;
@@ -65,41 +108,56 @@ type WasmInfo = record {
65108
};
66109
service : (opt ChainArgs) -> {
67110
access_token : (principal) -> (Result);
111+
admin_add_committers : (vec principal) -> (Result_1);
68112
admin_add_managers : (vec principal) -> (Result_1);
69113
admin_add_wasm : (AddWasmInput, opt blob) -> (Result_1);
70114
admin_attach_policies : (Token) -> (Result_1);
71115
admin_batch_call_buckets : (vec principal, text, opt blob) -> (Result_2);
116+
admin_create_bucket : (opt CanisterSettings, opt blob) -> (Result_3);
72117
admin_deploy_bucket : (DeployWasmInput, opt blob) -> (Result_1);
73118
admin_detach_policies : (Token) -> (Result_1);
74119
admin_ed25519_access_token : (Token) -> (Result);
120+
admin_remove_committers : (vec principal) -> (Result_1);
75121
admin_remove_managers : (vec principal) -> (Result_1);
76122
admin_set_managers : (vec principal) -> (Result_1);
77123
admin_sign_access_token : (Token) -> (Result);
78-
admin_topup_all_buckets : () -> (Result_3);
124+
admin_topup_all_buckets : () -> (Result_4);
125+
admin_update_bucket_canister_settings : (UpdateSettingsArgument) -> (
126+
Result_1,
127+
);
79128
admin_upgrade_all_buckets : (opt blob) -> (Result_1);
80129
admin_weak_access_token : (Token, nat64, nat64) -> (Result) query;
81-
bucket_deployment_logs : (opt nat, opt nat) -> (Result_4) query;
130+
bucket_deployment_logs : (opt nat, opt nat) -> (Result_5) query;
82131
ed25519_access_token : (principal) -> (Result);
83-
get_bucket_wasm : (blob) -> (Result_5) query;
84-
get_buckets : () -> (Result_6) query;
85-
get_cluster_info : () -> (Result_7) query;
86-
get_deployed_buckets : () -> (Result_4) query;
87-
get_subject_policies : (principal) -> (Result_8) query;
88-
get_subject_policies_for : (principal, principal) -> (Result_9) query;
89-
validate2_admin_add_wasm : (AddWasmInput, opt blob) -> (Result_9);
132+
get_bucket_wasm : (blob) -> (Result_6) query;
133+
get_buckets : () -> (Result_7) query;
134+
get_canister_status : (opt principal) -> (Result_8);
135+
get_cluster_info : () -> (Result_9) query;
136+
get_deployed_buckets : () -> (Result_5) query;
137+
get_subject_policies : (principal) -> (Result_10) query;
138+
get_subject_policies_for : (principal, principal) -> (Result_11) query;
139+
validate2_admin_add_wasm : (AddWasmInput, opt blob) -> (Result_11);
90140
validate2_admin_batch_call_buckets : (vec principal, text, opt blob) -> (
91-
Result_9,
141+
Result_11,
92142
);
93-
validate2_admin_deploy_bucket : (DeployWasmInput, opt blob) -> (Result_9);
94-
validate2_admin_set_managers : (vec principal) -> (Result_9);
95-
validate2_admin_upgrade_all_buckets : (opt blob) -> (Result_9);
96-
validate_admin_add_managers : (vec principal) -> (Result_9);
143+
validate2_admin_deploy_bucket : (DeployWasmInput, opt blob) -> (Result_11);
144+
validate2_admin_set_managers : (vec principal) -> (Result_11);
145+
validate2_admin_upgrade_all_buckets : (opt blob) -> (Result_11);
146+
validate_admin_add_committers : (vec principal) -> (Result_11);
147+
validate_admin_add_managers : (vec principal) -> (Result_11);
97148
validate_admin_add_wasm : (AddWasmInput, opt blob) -> (Result_1);
98149
validate_admin_batch_call_buckets : (vec principal, text, opt blob) -> (
99150
Result_2,
100151
);
152+
validate_admin_create_bucket : (opt CanisterSettings, opt blob) -> (
153+
Result_11,
154+
);
101155
validate_admin_deploy_bucket : (DeployWasmInput, opt blob) -> (Result_1);
102-
validate_admin_remove_managers : (vec principal) -> (Result_9);
156+
validate_admin_remove_committers : (vec principal) -> (Result_11);
157+
validate_admin_remove_managers : (vec principal) -> (Result_11);
103158
validate_admin_set_managers : (vec principal) -> (Result_1);
159+
validate_admin_update_bucket_canister_settings : (UpdateSettingsArgument) -> (
160+
Result_11,
161+
);
104162
validate_admin_upgrade_all_buckets : (opt blob) -> (Result_1);
105163
}

0 commit comments

Comments
 (0)