Coverage for manila/common/constants.py: 100%
142 statements
« prev ^ index » next coverage.py v7.11.0, created at 2026-02-18 22:19 +0000
« prev ^ index » next coverage.py v7.11.0, created at 2026-02-18 22:19 +0000
1# Copyright 2013 OpenStack Foundation
2# All Rights Reserved.
3#
4# Licensed under the Apache License, Version 2.0 (the "License"); you may
5# not use this file except in compliance with the License. You may obtain
6# a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations
14# under the License.
16# The maximum value a signed INT type may have
17DB_MAX_INT = 0x7FFFFFFF
19# The maximum length a display field may have
20DB_DISPLAY_FIELDS_MAX_LENGTH = 255
22# SHARE AND GENERAL STATUSES
23STATUS_CREATING = 'creating'
24STATUS_CREATING_FROM_SNAPSHOT = 'creating_from_snapshot'
25STATUS_DELETING = 'deleting'
26STATUS_DEFERRED_DELETING = 'deferred_deleting'
27STATUS_DELETED = 'deleted'
28STATUS_ERROR = 'error'
29STATUS_ERROR_DELETING = 'error_deleting'
30STATUS_ERROR_DEFERRED_DELETING = 'error_deferred_deleting'
31STATUS_AVAILABLE = 'available'
32STATUS_INACTIVE = 'inactive'
33STATUS_MANAGING = 'manage_starting'
34STATUS_MANAGE_ERROR = 'manage_error'
35STATUS_UNMANAGING = 'unmanage_starting'
36STATUS_MANAGE_ERROR_UNMANAGING = 'manage_error_unmanage_starting'
37STATUS_UNMANAGE_ERROR = 'unmanage_error'
38STATUS_UNMANAGED = 'unmanaged'
39STATUS_EXTENDING = 'extending'
40STATUS_EXTENDING_ERROR = 'extending_error'
41STATUS_SHRINKING = 'shrinking'
42STATUS_SHRINKING_ERROR = 'shrinking_error'
43STATUS_MIGRATING = 'migrating'
44STATUS_MIGRATING_TO = 'migrating_to'
45STATUS_SHRINKING_POSSIBLE_DATA_LOSS_ERROR = (
46 'shrinking_possible_data_loss_error'
47)
48STATUS_REPLICATION_CHANGE = 'replication_change'
49STATUS_RESTORING = 'restoring'
50STATUS_REVERTING = 'reverting'
51STATUS_REVERTING_ERROR = 'reverting_error'
52STATUS_AWAITING_TRANSFER = 'awaiting_transfer'
53STATUS_BACKUP_CREATING = 'backup_creating'
54STATUS_BACKUP_RESTORING = 'backup_restoring'
55STATUS_BACKUP_RESTORING_ERROR = 'backup_restoring_error'
56STATUS_ENSURING = 'ensuring'
58# Transfer resource type
59SHARE_RESOURCE_TYPE = 'share'
60SHARE_ACCESS_RESOURCE_TYPE = 'access_rule'
62# Access rule states
63ACCESS_STATE_QUEUED_TO_APPLY = 'queued_to_apply'
64ACCESS_STATE_QUEUED_TO_DENY = 'queued_to_deny'
65ACCESS_STATE_QUEUED_TO_UPDATE = 'queued_to_update'
66ACCESS_STATE_APPLYING = 'applying'
67ACCESS_STATE_DENYING = 'denying'
68ACCESS_STATE_UPDATING = 'updating'
69ACCESS_STATE_ACTIVE = 'active'
70ACCESS_STATE_ERROR = 'error'
71ACCESS_STATE_DELETED = 'deleted'
73# Share instance "access_rules_status" field values
74SHARE_INSTANCE_RULES_SYNCING = 'syncing'
75SHARE_INSTANCE_RULES_ERROR = 'error'
77# States/statuses for multiple resources
78STATUS_NEW = 'new'
79STATUS_OUT_OF_SYNC = 'out_of_sync'
80STATUS_ACTIVE = 'active'
82# Share server migration statuses
83STATUS_SERVER_MIGRATING = 'server_migrating'
84STATUS_SERVER_MIGRATING_TO = 'server_migrating_to'
86# Share server update statuses
87STATUS_SERVER_NETWORK_CHANGE = 'network_change'
89# Share network statuses
90STATUS_NETWORK_ACTIVE = 'active'
91STATUS_NETWORK_ERROR = 'error'
92STATUS_NETWORK_CHANGE = 'network_change'
94ACCESS_RULES_STATES = (
95 ACCESS_STATE_QUEUED_TO_APPLY,
96 ACCESS_STATE_QUEUED_TO_DENY,
97 ACCESS_STATE_QUEUED_TO_UPDATE,
98 ACCESS_STATE_APPLYING,
99 ACCESS_STATE_DENYING,
100 ACCESS_STATE_UPDATING,
101 ACCESS_STATE_ACTIVE,
102 ACCESS_STATE_ERROR,
103 ACCESS_STATE_DELETED,
104)
105# Share and share server migration task states
106TASK_STATE_MIGRATION_STARTING = 'migration_starting'
107TASK_STATE_MIGRATION_IN_PROGRESS = 'migration_in_progress'
108TASK_STATE_MIGRATION_COMPLETING = 'migration_completing'
109TASK_STATE_MIGRATION_SUCCESS = 'migration_success'
110TASK_STATE_MIGRATION_ERROR = 'migration_error'
111TASK_STATE_MIGRATION_CANCELLED = 'migration_cancelled'
112TASK_STATE_MIGRATION_CANCEL_IN_PROGRESS = 'migration_cancel_in_progress'
113TASK_STATE_MIGRATION_DRIVER_STARTING = 'migration_driver_starting'
114TASK_STATE_MIGRATION_DRIVER_IN_PROGRESS = 'migration_driver_in_progress'
115TASK_STATE_MIGRATION_DRIVER_PHASE1_DONE = 'migration_driver_phase1_done'
116# Share statuses used by data service and host assisted migration
117TASK_STATE_DATA_COPYING_STARTING = 'data_copying_starting'
118TASK_STATE_DATA_COPYING_IN_PROGRESS = 'data_copying_in_progress'
119TASK_STATE_DATA_COPYING_COMPLETING = 'data_copying_completing'
120TASK_STATE_DATA_COPYING_COMPLETED = 'data_copying_completed'
121TASK_STATE_DATA_COPYING_CANCELLED = 'data_copying_cancelled'
122TASK_STATE_DATA_COPYING_ERROR = 'data_copying_error'
123BACKUP_TYPE = "backup_type"
125BUSY_TASK_STATES = (
126 TASK_STATE_MIGRATION_STARTING,
127 TASK_STATE_MIGRATION_IN_PROGRESS,
128 TASK_STATE_MIGRATION_COMPLETING,
129 TASK_STATE_MIGRATION_DRIVER_STARTING,
130 TASK_STATE_MIGRATION_DRIVER_IN_PROGRESS,
131 TASK_STATE_MIGRATION_DRIVER_PHASE1_DONE,
132 TASK_STATE_DATA_COPYING_STARTING,
133 TASK_STATE_DATA_COPYING_IN_PROGRESS,
134 TASK_STATE_DATA_COPYING_COMPLETING,
135 TASK_STATE_DATA_COPYING_COMPLETED,
136)
138BUSY_COPYING_STATES = (
139 TASK_STATE_DATA_COPYING_STARTING,
140 TASK_STATE_DATA_COPYING_IN_PROGRESS,
141 TASK_STATE_DATA_COPYING_COMPLETING,
142)
144TRANSITIONAL_STATUSES = (
145 STATUS_CREATING, STATUS_DELETING,
146 STATUS_MANAGING, STATUS_UNMANAGING,
147 STATUS_EXTENDING, STATUS_SHRINKING,
148 STATUS_MIGRATING, STATUS_MIGRATING_TO,
149 STATUS_RESTORING, STATUS_REVERTING,
150 STATUS_SERVER_MIGRATING, STATUS_SERVER_MIGRATING_TO,
151 STATUS_BACKUP_RESTORING, STATUS_BACKUP_CREATING,
152 STATUS_ENSURING,
153)
155INVALID_SHARE_INSTANCE_STATUSES_FOR_ACCESS_RULE_UPDATES = (
156 TRANSITIONAL_STATUSES
157)
159SUPPORTED_ENCRYPTION_TYPES = ['share', 'share_server']
161SUPPORTED_SHARE_PROTOCOLS = (
162 'NFS', 'CIFS', 'GLUSTERFS', 'HDFS', 'CEPHFS', 'MAPRFS')
164SECURITY_SERVICES_ALLOWED_TYPES = ['active_directory', 'ldap', 'kerberos']
166LIKE_FILTER = ['name~', 'description~']
168NFS_EXPORTS_FILE = '/etc/exports'
169NFS_EXPORTS_FILE_TEMP = '/var/lib/nfs/etab'
171MOUNT_FILE = '/etc/fstab'
172MOUNT_FILE_TEMP = '/etc/mtab'
174# Below represented ports are ranges (from, to)
175CIFS_PORTS = (
176 ("tcp", (445, 445)),
177 ("tcp", (137, 139)),
178 ("udp", (137, 139)),
179 ("udp", (445, 445)),
180)
181NFS_PORTS = (
182 ("tcp", (2049, 2049)),
183 ("udp", (2049, 2049)),
184)
185SSH_PORTS = (
186 ("tcp", (22, 22)),
187)
188PING_PORTS = (
189 ("icmp", (-1, -1)),
190)
191WINRM_PORTS = (
192 ("tcp", (5985, 5986)),
193)
195SERVICE_INSTANCE_SECGROUP_DATA = (
196 CIFS_PORTS + NFS_PORTS + PING_PORTS + WINRM_PORTS)
198ACCESS_LEVEL_RW = 'rw'
199ACCESS_LEVEL_RO = 'ro'
201ACCESS_LEVELS = (
202 ACCESS_LEVEL_RW,
203 ACCESS_LEVEL_RO,
204)
206SHARE_STATUSES = (
207 STATUS_CREATING,
208 STATUS_CREATING_FROM_SNAPSHOT,
209 STATUS_DELETING,
210 STATUS_DEFERRED_DELETING,
211 STATUS_DELETED,
212 STATUS_ERROR,
213 STATUS_ERROR_DELETING,
214 STATUS_ERROR_DEFERRED_DELETING,
215 STATUS_AVAILABLE,
216 STATUS_MANAGING,
217 STATUS_MANAGE_ERROR,
218 STATUS_UNMANAGING,
219 STATUS_MANAGE_ERROR_UNMANAGING,
220 STATUS_UNMANAGE_ERROR,
221 STATUS_UNMANAGED,
222 STATUS_EXTENDING,
223 STATUS_EXTENDING_ERROR,
224 STATUS_SHRINKING,
225 STATUS_SHRINKING_ERROR,
226 STATUS_MIGRATING,
227 STATUS_MIGRATING_TO,
228 STATUS_SHRINKING_POSSIBLE_DATA_LOSS_ERROR,
229 STATUS_REPLICATION_CHANGE,
230 STATUS_RESTORING,
231 STATUS_REVERTING,
232 STATUS_REVERTING_ERROR,
233 STATUS_AWAITING_TRANSFER,
234 STATUS_BACKUP_CREATING,
235 STATUS_BACKUP_RESTORING,
236 STATUS_BACKUP_RESTORING_ERROR,
237 STATUS_ENSURING,
238 STATUS_SERVER_MIGRATING,
239 STATUS_SERVER_MIGRATING_TO,
240)
242TASK_STATE_STATUSES = (
243 TASK_STATE_MIGRATION_STARTING,
244 TASK_STATE_MIGRATION_IN_PROGRESS,
245 TASK_STATE_MIGRATION_COMPLETING,
246 TASK_STATE_MIGRATION_SUCCESS,
247 TASK_STATE_MIGRATION_ERROR,
248 TASK_STATE_MIGRATION_CANCELLED,
249 TASK_STATE_MIGRATION_DRIVER_IN_PROGRESS,
250 TASK_STATE_MIGRATION_DRIVER_PHASE1_DONE,
251 TASK_STATE_DATA_COPYING_STARTING,
252 TASK_STATE_DATA_COPYING_IN_PROGRESS,
253 TASK_STATE_DATA_COPYING_COMPLETING,
254 TASK_STATE_DATA_COPYING_COMPLETED,
255 TASK_STATE_DATA_COPYING_CANCELLED,
256 TASK_STATE_DATA_COPYING_ERROR,
257 None,
258)
260SERVER_TASK_STATE_STATUSES = (
261 TASK_STATE_MIGRATION_STARTING,
262 TASK_STATE_MIGRATION_IN_PROGRESS,
263 TASK_STATE_MIGRATION_COMPLETING,
264 TASK_STATE_MIGRATION_SUCCESS,
265 TASK_STATE_MIGRATION_ERROR,
266 TASK_STATE_MIGRATION_CANCEL_IN_PROGRESS,
267 TASK_STATE_MIGRATION_CANCELLED,
268 TASK_STATE_MIGRATION_DRIVER_IN_PROGRESS,
269 TASK_STATE_MIGRATION_DRIVER_PHASE1_DONE,
270 None,
271)
273SHARE_SERVER_STATUSES = (
274 STATUS_ACTIVE,
275 STATUS_ERROR,
276 STATUS_DELETING,
277 STATUS_CREATING,
278 STATUS_MANAGING,
279 STATUS_UNMANAGING,
280 STATUS_UNMANAGE_ERROR,
281 STATUS_MANAGE_ERROR,
282 STATUS_INACTIVE,
283 STATUS_SERVER_MIGRATING,
284 STATUS_SERVER_MIGRATING_TO,
285 STATUS_SERVER_NETWORK_CHANGE,
286)
288SHARE_NETWORK_STATUSES = (
289 STATUS_NETWORK_ACTIVE,
290 STATUS_NETWORK_ERROR,
291 STATUS_NETWORK_CHANGE,
292)
294REPLICA_STATE_ACTIVE = 'active'
295REPLICA_STATE_IN_SYNC = 'in_sync'
296REPLICA_STATE_OUT_OF_SYNC = 'out_of_sync'
298REPLICATION_TYPE_READABLE = 'readable'
299REPLICATION_TYPE_WRITABLE = 'writable'
300REPLICATION_TYPE_DR = 'dr'
303POLICY_EXTEND_BEYOND_MAX_SHARE_SIZE = 'extend_beyond_max_share_size_spec'
305RESOURCE_ACTION_DELETE = 'delete' # delete, soft-delete, unmanage
306RESOURCE_ACTION_SHOW = 'show'
308RESOURCE_LOCK_RESOURCE_TYPES = (
309 SHARE_RESOURCE_TYPE,
310 SHARE_ACCESS_RESOURCE_TYPE,
311)
313RESOURCE_LOCK_RESOURCE_ACTIONS = (
314 RESOURCE_ACTION_DELETE,
315 RESOURCE_ACTION_SHOW,
316)
318RESOURCE_LOCK_ACTIONS_MAPPING = {
319 SHARE_RESOURCE_TYPE: [RESOURCE_ACTION_DELETE],
320 SHARE_ACCESS_RESOURCE_TYPE: [RESOURCE_ACTION_DELETE, RESOURCE_ACTION_SHOW],
321}
323DISALLOWED_STATUS_WHEN_LOCKING_SHARES = (
324 STATUS_DELETING,
325 STATUS_ERROR_DELETING,
326 STATUS_UNMANAGING,
327 STATUS_MANAGE_ERROR_UNMANAGING,
328 STATUS_UNMANAGE_ERROR,
329 STATUS_UNMANAGED, # not possible, future proofing
330 STATUS_DELETED, # not possible, future proofing
331)
333DISALLOWED_STATUS_WHEN_LOCKING_ACCESS_RULES = (
334 ACCESS_STATE_QUEUED_TO_DENY,
335 ACCESS_STATE_DENYING,
336 ACCESS_STATE_ERROR,
337 ACCESS_STATE_DELETED,
338)
340SHARE_LOCKED_BY_ACCESS_LOCK_REASON = 'Locked by access lock: %(lock_id)s'
343class ExtraSpecs(object):
345 # Extra specs key names
346 DRIVER_HANDLES_SHARE_SERVERS = "driver_handles_share_servers"
347 SNAPSHOT_SUPPORT = "snapshot_support"
348 REPLICATION_TYPE_SPEC = "replication_type"
349 CREATE_SHARE_FROM_SNAPSHOT_SUPPORT = "create_share_from_snapshot_support"
350 REVERT_TO_SNAPSHOT_SUPPORT = "revert_to_snapshot_support"
351 MOUNT_SNAPSHOT_SUPPORT = "mount_snapshot_support"
352 MOUNT_POINT_NAME_SUPPORT = "mount_point_name_support"
353 AVAILABILITY_ZONES = "availability_zones"
354 ENCRYPTION_SUPPORT = "encryption_support"
355 PROVISIONING_MAX_SHARE_SIZE = "provisioning:max_share_size"
356 PROVISIONING_MIN_SHARE_SIZE = "provisioning:min_share_size"
357 PROVISIONING_MAX_SHARE_EXTEND_SIZE = "provisioning:max_share_extend_size"
358 PROVISIONING_MOUNT_POINT_PREFIX = "provisioning:mount_point_prefix"
360 # Extra specs containers
361 REQUIRED = (
362 DRIVER_HANDLES_SHARE_SERVERS,
363 )
365 OPTIONAL = (
366 SNAPSHOT_SUPPORT,
367 CREATE_SHARE_FROM_SNAPSHOT_SUPPORT,
368 REVERT_TO_SNAPSHOT_SUPPORT,
369 REPLICATION_TYPE_SPEC,
370 MOUNT_SNAPSHOT_SUPPORT,
371 MOUNT_POINT_NAME_SUPPORT,
372 AVAILABILITY_ZONES,
373 ENCRYPTION_SUPPORT,
374 PROVISIONING_MAX_SHARE_SIZE,
375 PROVISIONING_MIN_SHARE_SIZE,
376 PROVISIONING_MAX_SHARE_EXTEND_SIZE,
377 PROVISIONING_MOUNT_POINT_PREFIX,
378 )
380 # NOTE(cknight): Some extra specs are necessary parts of the Manila API and
381 # should be visible to non-admin users. REQUIRED specs are user-visible, as
382 # are a handful of community-agreed standardized OPTIONAL ones.
383 TENANT_VISIBLE = REQUIRED + OPTIONAL
385 BOOLEAN = (
386 DRIVER_HANDLES_SHARE_SERVERS,
387 SNAPSHOT_SUPPORT,
388 CREATE_SHARE_FROM_SNAPSHOT_SUPPORT,
389 REVERT_TO_SNAPSHOT_SUPPORT,
390 MOUNT_SNAPSHOT_SUPPORT,
391 )
393 # NOTE(cknight): Some extra specs are optional, but a nominal (typically
394 # False, but may be non-boolean) default value for each is still needed
395 # when creating shares.
396 INFERRED_OPTIONAL_MAP = {
397 SNAPSHOT_SUPPORT: False,
398 CREATE_SHARE_FROM_SNAPSHOT_SUPPORT: False,
399 REVERT_TO_SNAPSHOT_SUPPORT: False,
400 MOUNT_SNAPSHOT_SUPPORT: False,
401 }
403 REPLICATION_TYPES = ('writable', 'readable', 'dr')
405 ENCRYPTION_TYPES = ('share', 'share_server')
408class AdminOnlyMetadata(object):
409 AFFINITY_KEY = "__affinity_same_host"
410 ANTI_AFFINITY_KEY = "__affinity_different_host"
411 PREFERRED_KEY = "preferred"
413 SCHEDULER_FILTERS = [
414 AFFINITY_KEY,
415 ANTI_AFFINITY_KEY,
416 ]
418 EXPORT_LOCATION_KEYS = [
419 PREFERRED_KEY,
420 ]