1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
use ;
pub use NetworkVolume;
/// List of network volumes.
///
/// A collection type representing multiple network volumes, typically returned
/// from API endpoints that list volumes for an account or data center.
pub type NetworkVolumes = ;
/// Input parameters for creating a new network volume.
///
/// This struct contains all the required configuration options for creating a network volume.
/// All fields are mandatory as they define the fundamental characteristics of the volume
/// that cannot be changed after creation (except size, which can only be increased).
///
/// # Validation Requirements
///
/// - **name**: Must be 1-255 characters long. Can contain letters, numbers, spaces, hyphens, and underscores
/// - **size**: Must be between 1 and 4,000 GB. Choose based on your storage needs and budget
/// - **data_center_id**: Must be a valid RunPod data center identifier (format: XX-XX-N)
///
/// # Examples
///
/// ```rust
/// use runpod_sdk::model::NetworkVolumeCreateInput;
///
/// // Create a small development volume
/// let dev_volume = NetworkVolumeCreateInput {
/// name: "dev-workspace".to_string(),
/// size: 10,
/// data_center_id: "US-CA-1".to_string(),
/// };
///
/// // Create a large production dataset volume
/// let prod_volume = NetworkVolumeCreateInput {
/// name: "production-ml-datasets".to_string(),
/// size: 1000,
/// data_center_id: "EU-RO-1".to_string(),
/// };
/// ```
/// Input parameters for updating an existing network volume.
///
/// This struct allows you to modify the name and/or size of an existing network volume.
/// Both fields are optional, allowing you to update only the properties you want to change.
///
/// # Important Notes
///
/// - **Size expansion only**: You can increase the volume size but never decrease it
/// - **Live expansion**: Size changes can be performed while Pods are using the volume
/// - **Billing impact**: Size increases affect billing immediately
/// - **No downtime**: Name changes are instantaneous with no service interruption
///
/// # Validation Requirements
///
/// - **name**: If provided, must be 1-255 characters long
/// - **size**: If provided, must be larger than current size and ≤4,000 GB
///
/// # Examples
///
/// ```rust
/// use runpod_sdk::model::NetworkVolumeUpdateInput;
///
/// // Only change the name
/// let rename_only = NetworkVolumeUpdateInput {
/// name: Some("renamed-volume".to_string()),
/// size: None,
/// };
///
/// // Only expand the size from current to 500GB
/// let expand_only = NetworkVolumeUpdateInput {
/// name: None,
/// size: Some(500),
/// };
///
/// // Change both name and size
/// let full_update = NetworkVolumeUpdateInput {
/// name: Some("production-storage-v2".to_string()),
/// size: Some(1000),
/// };
///
/// // No changes (useful for testing API connectivity)
/// let no_change = NetworkVolumeUpdateInput::default();
/// ```