createRoomVolume method

Future<StorageVolume> createRoomVolume({
  1. required String projectId,
  2. required String roomName,
  3. required String name,
  4. String description = '',
  5. Map<String, dynamic>? metadata,
  6. String storageClass = 'standard',
  7. int? maxSizeMb,
  8. Map<String, String>? annotations,
})

Implementation

Future<StorageVolume> createRoomVolume({
  required String projectId,
  required String roomName,
  required String name,
  String description = '',
  Map<String, dynamic>? metadata,
  String storageClass = 'standard',
  int? maxSizeMb,
  Map<String, String>? annotations,
}) async {
  final encodedProjectId = Uri.encodeComponent(projectId);
  final encodedRoomName = Uri.encodeComponent(roomName);
  final uri = Uri.parse('$baseUrl/accounts/projects/$encodedProjectId/rooms/$encodedRoomName/volumes');
  final response = await httpClient.post(
    uri,
    body: jsonEncode(
      _jsonMapWithoutNulls({
        'name': name,
        'description': description,
        'metadata': metadata,
        'storage_class': storageClass,
        'max_size_mb': maxSizeMb,
        'annotations': annotations,
      }),
    ),
  );
  if (response.statusCode == 409) {
    throw NameInUseException('The storage volume name is already in use');
  }
  if (response.statusCode >= 400) {
    throw MeshagentException(
      'Failed to create room volume. '
      'Status code: ${response.statusCode}, body: ${response.body}',
    );
  }
  return StorageVolume.fromJson(jsonDecode(response.body) as Map<String, dynamic>);
}