mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-17 23:34:24 +01:00
new: pve ctrl (#307)
This commit is contained in:
@@ -58,12 +58,20 @@ sealed class PveResIface {
|
||||
}
|
||||
}
|
||||
|
||||
final class PveLxc extends PveResIface {
|
||||
abstract interface class PveCtrlIface {
|
||||
String get node;
|
||||
String get id;
|
||||
bool get isRunning;
|
||||
String get summary;
|
||||
}
|
||||
|
||||
final class PveLxc extends PveResIface implements PveCtrlIface {
|
||||
@override
|
||||
final String id;
|
||||
@override
|
||||
final PveResType type;
|
||||
final int vmid;
|
||||
@override
|
||||
final String node;
|
||||
final String name;
|
||||
@override
|
||||
@@ -122,9 +130,11 @@ final class PveLxc extends PveResIface {
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
bool get isRunning => status == 'running';
|
||||
|
||||
String get topRight {
|
||||
@override
|
||||
String get summary {
|
||||
if (isRunning) {
|
||||
return uptime.secondsToDuration().toStr;
|
||||
}
|
||||
@@ -132,12 +142,13 @@ final class PveLxc extends PveResIface {
|
||||
}
|
||||
}
|
||||
|
||||
final class PveQemu extends PveResIface {
|
||||
final class PveQemu extends PveResIface implements PveCtrlIface {
|
||||
@override
|
||||
final String id;
|
||||
@override
|
||||
final PveResType type;
|
||||
final int vmid;
|
||||
@override
|
||||
final String node;
|
||||
final String name;
|
||||
@override
|
||||
@@ -196,9 +207,11 @@ final class PveQemu extends PveResIface {
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
bool get isRunning => status == 'running';
|
||||
|
||||
String get topRight {
|
||||
@override
|
||||
String get summary {
|
||||
if (isRunning) {
|
||||
return uptime.secondsToDuration().toStr;
|
||||
}
|
||||
|
||||
@@ -135,4 +135,36 @@ final class PveProvider extends ChangeNotifier {
|
||||
data.value = res;
|
||||
return res;
|
||||
}
|
||||
|
||||
Future<bool> reboot(String node, String id) async {
|
||||
await connected.future;
|
||||
final resp =
|
||||
await session.post('$addr/api2/json/nodes/$node/$id/status/reboot');
|
||||
return _isCtrlSuc(resp);
|
||||
}
|
||||
|
||||
Future<bool> start(String node, String id) async {
|
||||
await connected.future;
|
||||
final resp =
|
||||
await session.post('$addr/api2/json/nodes/$node/$id/status/start');
|
||||
return _isCtrlSuc(resp);
|
||||
}
|
||||
|
||||
Future<bool> stop(String node, String id) async {
|
||||
await connected.future;
|
||||
final resp =
|
||||
await session.post('$addr/api2/json/nodes/$node/$id/status/stop');
|
||||
return _isCtrlSuc(resp);
|
||||
}
|
||||
|
||||
Future<bool> shutdown(String node, String id) async {
|
||||
await connected.future;
|
||||
final resp =
|
||||
await session.post('$addr/api2/json/nodes/$node/$id/status/shutdown');
|
||||
return _isCtrlSuc(resp);
|
||||
}
|
||||
|
||||
bool _isCtrlSuc(Response resp) {
|
||||
return resp.statusCode == 200;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user