2022-11-16 00:24:40 +00:00
|
|
|
part of 'server_api.dart';
|
2022-08-26 19:28:01 +00:00
|
|
|
|
2023-06-19 18:15:24 +00:00
|
|
|
mixin VolumeApi on GraphQLApiMap {
|
2022-08-26 19:28:01 +00:00
|
|
|
Future<List<ServerDiskVolume>> getServerDiskVolumes() async {
|
|
|
|
QueryResult response;
|
|
|
|
List<ServerDiskVolume> volumes = [];
|
|
|
|
|
|
|
|
try {
|
|
|
|
final GraphQLClient client = await getClient();
|
|
|
|
response = await client.query$GetServerDiskVolumes();
|
|
|
|
if (response.hasException) {
|
|
|
|
print(response.exception.toString());
|
|
|
|
}
|
|
|
|
volumes = response.data!['storage']['volumes']
|
|
|
|
.map<ServerDiskVolume>((final e) => ServerDiskVolume.fromJson(e))
|
|
|
|
.toList();
|
|
|
|
} catch (e) {
|
|
|
|
print(e);
|
|
|
|
}
|
|
|
|
|
|
|
|
return volumes;
|
|
|
|
}
|
|
|
|
|
|
|
|
Future<void> mountVolume(final String volumeName) async {
|
|
|
|
try {
|
|
|
|
final GraphQLClient client = await getClient();
|
|
|
|
final variables = Variables$Mutation$MountVolume(name: volumeName);
|
|
|
|
final mountVolumeMutation =
|
|
|
|
Options$Mutation$MountVolume(variables: variables);
|
|
|
|
await client.mutate$MountVolume(mountVolumeMutation);
|
|
|
|
} catch (e) {
|
|
|
|
print(e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Future<void> unmountVolume(final String volumeName) async {
|
|
|
|
try {
|
|
|
|
final GraphQLClient client = await getClient();
|
|
|
|
final variables = Variables$Mutation$UnmountVolume(name: volumeName);
|
|
|
|
final unmountVolumeMutation =
|
|
|
|
Options$Mutation$UnmountVolume(variables: variables);
|
|
|
|
await client.mutate$UnmountVolume(unmountVolumeMutation);
|
|
|
|
} catch (e) {
|
|
|
|
print(e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Future<void> resizeVolume(final String volumeName) async {
|
|
|
|
try {
|
|
|
|
final GraphQLClient client = await getClient();
|
|
|
|
final variables = Variables$Mutation$ResizeVolume(name: volumeName);
|
|
|
|
final resizeVolumeMutation =
|
|
|
|
Options$Mutation$ResizeVolume(variables: variables);
|
|
|
|
await client.mutate$ResizeVolume(resizeVolumeMutation);
|
|
|
|
} catch (e) {
|
|
|
|
print(e);
|
|
|
|
}
|
|
|
|
}
|
2022-09-16 09:08:31 +00:00
|
|
|
|
2023-02-13 14:13:32 +00:00
|
|
|
Future<GenericResult<String?>> migrateToBinds(
|
2022-09-18 14:05:41 +00:00
|
|
|
final Map<String, String> serviceToDisk,
|
|
|
|
) async {
|
2023-02-13 14:13:32 +00:00
|
|
|
GenericResult<String?>? mutation;
|
2022-09-18 14:29:00 +00:00
|
|
|
|
2022-09-16 09:08:31 +00:00
|
|
|
try {
|
|
|
|
final GraphQLClient client = await getClient();
|
|
|
|
final input = Input$MigrateToBindsInput(
|
|
|
|
bitwardenBlockDevice: serviceToDisk['bitwarden']!,
|
|
|
|
emailBlockDevice: serviceToDisk['mailserver']!,
|
|
|
|
giteaBlockDevice: serviceToDisk['gitea']!,
|
|
|
|
nextcloudBlockDevice: serviceToDisk['nextcloud']!,
|
|
|
|
pleromaBlockDevice: serviceToDisk['pleroma']!,
|
|
|
|
);
|
|
|
|
final variables = Variables$Mutation$MigrateToBinds(input: input);
|
|
|
|
final migrateMutation =
|
|
|
|
Options$Mutation$MigrateToBinds(variables: variables);
|
2022-09-18 14:05:41 +00:00
|
|
|
final QueryResult<Mutation$MigrateToBinds> result =
|
|
|
|
await client.mutate$MigrateToBinds(
|
|
|
|
migrateMutation,
|
|
|
|
);
|
2023-02-13 14:13:32 +00:00
|
|
|
mutation = mutation = GenericResult(
|
2022-10-28 08:17:08 +00:00
|
|
|
success: true,
|
2022-09-18 14:29:00 +00:00
|
|
|
code: result.parsedData!.migrateToBinds.code,
|
|
|
|
message: result.parsedData!.migrateToBinds.message,
|
2022-10-28 08:17:08 +00:00
|
|
|
data: result.parsedData!.migrateToBinds.job?.uid,
|
2022-09-18 14:29:00 +00:00
|
|
|
);
|
2022-09-16 09:08:31 +00:00
|
|
|
} catch (e) {
|
|
|
|
print(e);
|
2023-02-13 14:13:32 +00:00
|
|
|
mutation = GenericResult(
|
2022-09-18 14:29:00 +00:00
|
|
|
success: false,
|
|
|
|
code: 0,
|
|
|
|
message: e.toString(),
|
2022-10-28 08:17:08 +00:00
|
|
|
data: null,
|
2022-09-18 14:29:00 +00:00
|
|
|
);
|
2022-09-16 09:08:31 +00:00
|
|
|
}
|
2022-09-18 14:05:41 +00:00
|
|
|
|
2022-09-18 14:29:00 +00:00
|
|
|
return mutation;
|
2022-09-16 09:08:31 +00:00
|
|
|
}
|
2022-08-26 19:28:01 +00:00
|
|
|
}
|