rucio 37.3.0__py3-none-any.whl → 37.5.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of rucio might be problematic. Click here for more details.

Files changed (128) hide show
  1. rucio/cli/rule.py +1 -1
  2. rucio/client/accountclient.py +205 -60
  3. rucio/client/accountlimitclient.py +84 -25
  4. rucio/client/baseclient.py +85 -48
  5. rucio/client/client.py +49 -41
  6. rucio/client/configclient.py +36 -13
  7. rucio/client/credentialclient.py +16 -6
  8. rucio/client/didclient.py +321 -133
  9. rucio/client/diracclient.py +13 -6
  10. rucio/client/downloadclient.py +435 -165
  11. rucio/client/exportclient.py +8 -2
  12. rucio/client/fileclient.py +10 -3
  13. rucio/client/importclient.py +4 -1
  14. rucio/client/lifetimeclient.py +48 -31
  15. rucio/client/lockclient.py +22 -7
  16. rucio/client/metaconventionsclient.py +59 -21
  17. rucio/client/pingclient.py +3 -1
  18. rucio/client/replicaclient.py +213 -96
  19. rucio/client/requestclient.py +124 -16
  20. rucio/client/rseclient.py +385 -160
  21. rucio/client/ruleclient.py +147 -51
  22. rucio/client/scopeclient.py +35 -10
  23. rucio/client/subscriptionclient.py +60 -27
  24. rucio/client/touchclient.py +16 -7
  25. rucio/common/constants.py +14 -17
  26. rucio/common/utils.py +18 -2
  27. rucio/core/permission/generic.py +40 -1
  28. rucio/core/replica.py +6 -6
  29. rucio/core/request.py +2 -2
  30. rucio/core/rule.py +5 -3
  31. rucio/core/transfer.py +4 -5
  32. rucio/daemons/conveyor/throttler.py +2 -1
  33. rucio/daemons/judge/evaluator.py +1 -1
  34. rucio/db/sqla/constants.py +3 -3
  35. rucio/db/sqla/migrate_repo/versions/13d4f70c66a9_introduce_transfer_limits.py +1 -1
  36. rucio/db/sqla/models.py +1 -1
  37. rucio/gateway/replica.py +129 -41
  38. rucio/gateway/request.py +177 -103
  39. rucio/gateway/subscription.py +90 -108
  40. rucio/rse/rsemanager.py +2 -2
  41. rucio/vcsversion.py +3 -3
  42. rucio/web/rest/flaskapi/v1/accountlimits.py +22 -22
  43. rucio/web/rest/flaskapi/v1/accounts.py +157 -157
  44. rucio/web/rest/flaskapi/v1/archives.py +10 -10
  45. rucio/web/rest/flaskapi/v1/auth.py +106 -106
  46. rucio/web/rest/flaskapi/v1/config.py +37 -37
  47. rucio/web/rest/flaskapi/v1/credentials.py +25 -25
  48. rucio/web/rest/flaskapi/v1/dids.py +381 -381
  49. rucio/web/rest/flaskapi/v1/dirac.py +8 -8
  50. rucio/web/rest/flaskapi/v1/export.py +6 -6
  51. rucio/web/rest/flaskapi/v1/heartbeats.py +14 -14
  52. rucio/web/rest/flaskapi/v1/identities.py +25 -25
  53. rucio/web/rest/flaskapi/v1/import.py +19 -19
  54. rucio/web/rest/flaskapi/v1/lifetime_exceptions.py +54 -54
  55. rucio/web/rest/flaskapi/v1/locks.py +60 -60
  56. rucio/web/rest/flaskapi/v1/meta_conventions.py +29 -29
  57. rucio/web/rest/flaskapi/v1/nongrid_traces.py +4 -4
  58. rucio/web/rest/flaskapi/v1/ping.py +4 -4
  59. rucio/web/rest/flaskapi/v1/redirect.py +17 -17
  60. rucio/web/rest/flaskapi/v1/replicas.py +282 -282
  61. rucio/web/rest/flaskapi/v1/requests.py +424 -229
  62. rucio/web/rest/flaskapi/v1/rses.py +427 -427
  63. rucio/web/rest/flaskapi/v1/rules.py +129 -129
  64. rucio/web/rest/flaskapi/v1/scopes.py +21 -21
  65. rucio/web/rest/flaskapi/v1/subscriptions.py +122 -122
  66. rucio/web/rest/flaskapi/v1/traces.py +18 -18
  67. rucio/web/rest/flaskapi/v1/vos.py +32 -32
  68. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/etc/rucio.cfg.template +0 -1
  69. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/etc/rucio_multi_vo.cfg.template +0 -1
  70. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/requirements.server.txt +1 -1
  71. {rucio-37.3.0.dist-info → rucio-37.5.0.dist-info}/METADATA +1 -1
  72. {rucio-37.3.0.dist-info → rucio-37.5.0.dist-info}/RECORD +128 -128
  73. {rucio-37.3.0.dist-info → rucio-37.5.0.dist-info}/WHEEL +1 -1
  74. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/etc/alembic.ini.template +0 -0
  75. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/etc/alembic_offline.ini.template +0 -0
  76. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/etc/globus-config.yml.template +0 -0
  77. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/etc/ldap.cfg.template +0 -0
  78. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/etc/mail_templates/rule_approval_request.tmpl +0 -0
  79. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/etc/mail_templates/rule_approved_admin.tmpl +0 -0
  80. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/etc/mail_templates/rule_approved_user.tmpl +0 -0
  81. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/etc/mail_templates/rule_denied_admin.tmpl +0 -0
  82. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/etc/mail_templates/rule_denied_user.tmpl +0 -0
  83. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/etc/mail_templates/rule_ok_notification.tmpl +0 -0
  84. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/etc/rse-accounts.cfg.template +0 -0
  85. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/etc/rucio.cfg.atlas.client.template +0 -0
  86. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/tools/bootstrap.py +0 -0
  87. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/tools/merge_rucio_configs.py +0 -0
  88. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/tools/reset_database.py +0 -0
  89. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio +0 -0
  90. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-abacus-account +0 -0
  91. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-abacus-collection-replica +0 -0
  92. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-abacus-rse +0 -0
  93. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-admin +0 -0
  94. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-atropos +0 -0
  95. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-auditor +0 -0
  96. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-automatix +0 -0
  97. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-bb8 +0 -0
  98. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-cache-client +0 -0
  99. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-cache-consumer +0 -0
  100. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-conveyor-finisher +0 -0
  101. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-conveyor-poller +0 -0
  102. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-conveyor-preparer +0 -0
  103. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-conveyor-receiver +0 -0
  104. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-conveyor-stager +0 -0
  105. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-conveyor-submitter +0 -0
  106. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-conveyor-throttler +0 -0
  107. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-dark-reaper +0 -0
  108. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-dumper +0 -0
  109. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-follower +0 -0
  110. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-hermes +0 -0
  111. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-judge-cleaner +0 -0
  112. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-judge-evaluator +0 -0
  113. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-judge-injector +0 -0
  114. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-judge-repairer +0 -0
  115. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-kronos +0 -0
  116. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-minos +0 -0
  117. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-minos-temporary-expiration +0 -0
  118. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-necromancer +0 -0
  119. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-oauth-manager +0 -0
  120. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-reaper +0 -0
  121. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-replica-recoverer +0 -0
  122. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-rse-decommissioner +0 -0
  123. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-storage-consistency-actions +0 -0
  124. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-transmogrifier +0 -0
  125. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-undertaker +0 -0
  126. {rucio-37.3.0.dist-info → rucio-37.5.0.dist-info}/licenses/AUTHORS.rst +0 -0
  127. {rucio-37.3.0.dist-info → rucio-37.5.0.dist-info}/licenses/LICENSE +0 -0
  128. {rucio-37.3.0.dist-info → rucio-37.5.0.dist-info}/top_level.txt +0 -0
@@ -49,31 +49,31 @@ class AddFiles(ErrorHandlingMethodView):
49
49
  items:
50
50
  type: object
51
51
  ignore_availability:
52
- description: If the availability should be ignored.
52
+ description: "If the availability should be ignored."
53
53
  type: boolean
54
54
  parents_metadata:
55
55
  description: "Metadata for selected hierarchy DIDs."
56
56
  type: object
57
57
  responses:
58
58
  201:
59
- description: OK
59
+ description: "OK"
60
60
  content:
61
61
  application/json:
62
62
  schema:
63
63
  type: string
64
64
  enum: ["Created"]
65
65
  400:
66
- description: Cannot decode json parameter list.
66
+ description: "Cannot decode json parameter list."
67
67
  401:
68
- description: Invalid Auth Token
68
+ description: "Invalid Auth Token"
69
69
  404:
70
- description: DID not found
70
+ description: "DID not found"
71
71
  405:
72
- description: Unsupported Operation
72
+ description: "Unsupported Operation"
73
73
  409:
74
- description: Duplicate
74
+ description: "Duplicate"
75
75
  503:
76
- description: Temporary error.
76
+ description: "Temporary error."
77
77
  """
78
78
  parameters = json_parameters(parse_response)
79
79
  lfns = param_get(parameters, 'lfns')
@@ -28,28 +28,28 @@ class Export(ErrorHandlingMethodView):
28
28
  """
29
29
  ---
30
30
  summary: Export data
31
- description: Export data from rucio.
31
+ description: "Export data from rucio."
32
32
  tags:
33
33
  - Export
34
34
  parameters:
35
35
  - name: distance
36
36
  in: query
37
- description: Should the distance be enabled?
37
+ description: "Should the distance be enabled?"
38
38
  schema:
39
39
  type: boolean
40
40
  required: false
41
41
  responses:
42
42
  200:
43
- description: OK
43
+ description: "OK"
44
44
  content:
45
45
  application/json:
46
46
  schema:
47
47
  type: object
48
- description: Dictionary with rucio data.
48
+ description: "Dictionary with rucio data."
49
49
  401:
50
- description: Invalid Auth Token
50
+ description: "Invalid Auth Token"
51
51
  406:
52
- description: Not acceptable
52
+ description: "Not acceptable"
53
53
  """
54
54
  distance = request.args.get('distance', default='True') == 'True'
55
55
  return Response(render_json(**export_data(issuer=request.environ['issuer'], distance=distance, vo=request.environ['vo'])), content_type='application/json')
@@ -31,23 +31,23 @@ class Heartbeat(ErrorHandlingMethodView):
31
31
  """
32
32
  ---
33
33
  summary: List
34
- description: List all heartbeats.
34
+ description: "List all heartbeats."
35
35
  tags:
36
36
  - Heartbeat
37
37
  responses:
38
38
  200:
39
- description: OK
39
+ description: "OK"
40
40
  content:
41
41
  application/json:
42
42
  schema:
43
43
  type: array
44
44
  items:
45
45
  type: object
46
- description: List of tuples [('Executable', 'Hostname', ...), ...]
46
+ description: "List of tuples [('Executable', 'Hostname', ...), ...]"
47
47
  401:
48
- description: Invalid Auth Token
48
+ description: "Invalid Auth Token"
49
49
  406:
50
- description: Not acceptable
50
+ description: "Not acceptable"
51
51
  """
52
52
  return Response(json.dumps(list_heartbeats(issuer=request.environ['issuer'], vo=request.environ['vo']), cls=APIEncoder), content_type='application/json')
53
53
 
@@ -66,29 +66,29 @@ class Heartbeat(ErrorHandlingMethodView):
66
66
  - bytes
67
67
  properties:
68
68
  executable:
69
- description: Name of the executable.
69
+ description: "Name of the executable."
70
70
  type: string
71
71
  hostname:
72
- description: Name of the host.
72
+ description: "Name of the host."
73
73
  type: string
74
74
  pid:
75
- description: UNIX Process ID as a number, e.g., 1234.
75
+ description: "UNIX Process ID as a number, e.g., 1234."
76
76
  type: integer
77
77
  older_than:
78
- description: Ignore specified heartbeats older than specified nr of seconds.
78
+ description: "Ignore specified heartbeats older than specified nr of seconds."
79
79
  type: integer
80
80
  payload:
81
- description: Payload identifier which can be further used to identify the work a certain thread is executing.
81
+ description: "Payload identifier which can be further used to identify the work a certain thread is executing."
82
82
  type: string
83
83
  responses:
84
84
  200:
85
- description: OK
85
+ description: "OK"
86
86
  400:
87
- description: Cannot decode json parameter list.
87
+ description: "Cannot decode json parameter list."
88
88
  401:
89
- description: Invalid Auth Token
89
+ description: "Invalid Auth Token"
90
90
  404:
91
- description: Key not found.
91
+ description: "Key not found."
92
92
  """
93
93
  parameters = json_parameters()
94
94
  try:
@@ -26,49 +26,49 @@ class UserPass(ErrorHandlingMethodView):
26
26
  """
27
27
  ---
28
28
  summary: Create UserPass identity
29
- description: Creates a new UserPass identity and maps it to an account.
29
+ description: "Creates a new UserPass identity and maps it to an account."
30
30
  tags:
31
31
  - Identity
32
32
  parameters:
33
33
  - name: account
34
34
  in: path
35
- description: The account for the identity.
35
+ description: "The account for the identity."
36
36
  schema:
37
37
  type: string
38
38
  style: simple
39
39
  - name: X-Rucio-Username
40
40
  in: query
41
- description: Username for the identity.
41
+ description: "Username for the identity."
42
42
  schema:
43
43
  type: string
44
44
  style: simple
45
45
  required: true
46
46
  - name: X-Rucio-Password
47
47
  in: query
48
- description: The password for the identity.
48
+ description: "The password for the identity."
49
49
  schema:
50
50
  type: string
51
51
  style: simple
52
52
  required: true
53
53
  - name: X-Rucio-Email
54
54
  in: query
55
- description: The email for the identity.
55
+ description: "The email for the identity."
56
56
  schema:
57
57
  type: string
58
58
  style: simple
59
59
  required: false
60
60
  responses:
61
61
  201:
62
- description: OK
62
+ description: "OK"
63
63
  content:
64
64
  application/json:
65
65
  schema:
66
66
  type: string
67
67
  enum: ['Created']
68
68
  401:
69
- description: Invalid Auth Token
69
+ description: "Invalid Auth Token"
70
70
  400:
71
- description: Missing username or password.
71
+ description: "Missing username or password."
72
72
  """
73
73
  username = request.headers.get('X-Rucio-Username', default=None)
74
74
  password = request.headers.get('X-Rucio-Password', default=None)
@@ -105,33 +105,33 @@ class X509(ErrorHandlingMethodView):
105
105
  """
106
106
  ---
107
107
  summary: Create X509 identity
108
- description: Creates a new X509 identity and maps it to an account.
108
+ description: "Creates a new X509 identity and maps it to an account."
109
109
  tags:
110
110
  - Identity
111
111
  parameters:
112
112
  - name: account
113
113
  in: path
114
- description: The account for the identity.
114
+ description: "The account for the identity."
115
115
  schema:
116
116
  type: string
117
117
  style: simple
118
118
  - name: X-Rucio-Email
119
119
  in: query
120
- description: The email for the identity.
120
+ description: "The email for the identity."
121
121
  schema:
122
122
  type: string
123
123
  style: simple
124
124
  required: false
125
125
  responses:
126
126
  201:
127
- description: OK
127
+ description: "OK"
128
128
  content:
129
129
  application/json:
130
130
  schema:
131
131
  type: string
132
132
  enum: ['Created']
133
133
  401:
134
- description: Invalid Auth Token
134
+ description: "Invalid Auth Token"
135
135
  """
136
136
  dn = request.environ.get('SSL_CLIENT_S_DN')
137
137
  email = request.headers.get('X-Rucio-Email', default=None)
@@ -165,33 +165,33 @@ class GSS(ErrorHandlingMethodView):
165
165
  """
166
166
  ---
167
167
  summary: Create GSS identity
168
- description: Creates a new GSS identity and maps it to an account.
168
+ description: "Creates a new GSS identity and maps it to an account."
169
169
  tags:
170
170
  - Identity
171
171
  parameters:
172
172
  - name: account
173
173
  in: path
174
- description: The account for the identity.
174
+ description: "The account for the identity."
175
175
  schema:
176
176
  type: string
177
177
  style: simple
178
178
  - name: X-Rucio-Email
179
179
  in: query
180
- description: The email for the identity.
180
+ description: "The email for the identity."
181
181
  schema:
182
182
  type: string
183
183
  style: simple
184
184
  required: false
185
185
  responses:
186
186
  201:
187
- description: OK
187
+ description: "OK"
188
188
  content:
189
189
  application/json:
190
190
  schema:
191
191
  type: string
192
192
  enum: ['Created']
193
193
  401:
194
- description: Invalid Auth Token
194
+ description: "Invalid Auth Token"
195
195
  """
196
196
  gsscred = request.environ.get('REMOTE_USER')
197
197
  email = request.headers.get('X-Rucio-Email', default=None)
@@ -226,37 +226,37 @@ class Accounts(ErrorHandlingMethodView):
226
226
  """
227
227
  ---
228
228
  summary: List
229
- description: List all identities mapped to an account.
229
+ description: "List all identities mapped to an account."
230
230
  tags:
231
231
  - Identity
232
232
  parameters:
233
233
  - name: identity_key
234
234
  in: path
235
- description: Identity string.
235
+ description: "Identity string."
236
236
  schema:
237
237
  type: string
238
238
  style: simple
239
239
  - name: type
240
240
  in: path
241
- description: Identity type.
241
+ description: "Identity type."
242
242
  schema:
243
243
  type: string
244
244
  style: simple
245
245
  required: false
246
246
  responses:
247
247
  200:
248
- description: OK
248
+ description: "OK"
249
249
  content:
250
250
  application/json:
251
251
  schema:
252
252
  type: array
253
253
  items:
254
254
  type: object
255
- description: Account for the identity.
255
+ description: "Account for the identity."
256
256
  401:
257
- description: Invalid Auth Token
257
+ description: "Invalid Auth Token"
258
258
  401:
259
- description: Not acceptable
259
+ description: "Not acceptable"
260
260
  """
261
261
  accounts = list_accounts_for_identity(identity_key, type_)
262
262
  return jsonify(accounts)
@@ -27,7 +27,7 @@ class Import(ErrorHandlingMethodView):
27
27
  """
28
28
  ---
29
29
  summary: Import data
30
- description: Import data into rucio
30
+ description: "Import data into rucio"
31
31
  tags:
32
32
  - Import
33
33
  requestBody:
@@ -37,75 +37,75 @@ class Import(ErrorHandlingMethodView):
37
37
  type: object
38
38
  properties:
39
39
  rses:
40
- description: Rse data with rse name as key.
40
+ description: "Rse data with rse name as key."
41
41
  type: object
42
42
  additionalProperties:
43
43
  x-additionalPropertiesName: rse name
44
44
  type: object
45
45
  properties:
46
46
  rse_type:
47
- description: The type of an rse.
47
+ description: "The type of an rse."
48
48
  type: string
49
49
  enum: ['DISK', 'TAPE']
50
50
  distances:
51
- description: Distances data with src rse name as key.
51
+ description: "Distances data with src rse name as key."
52
52
  type: object
53
53
  additionalProperties:
54
54
  x-additionalPropertiesName: src rse
55
- description: Distances with dest rse as key.
55
+ description: "Distances with dest rse as key."
56
56
  type: object
57
57
  additionalProperties:
58
58
  x-additionalPropertiesName: dest rse
59
- description: Distance for two rses.
59
+ description: "Distance for two rses."
60
60
  type: object
61
61
  properties:
62
62
  distance:
63
- description: The distance between the rses.
63
+ description: "The distance between the rses."
64
64
  type: integer
65
65
  ranking:
66
66
  deprecated: true
67
- description: Same as distance
67
+ description: "Same as distance"
68
68
  type: integer
69
69
  accounts:
70
- description: Account data.
70
+ description: "Account data."
71
71
  type: array
72
72
  items:
73
- description: An account.
73
+ description: "An account."
74
74
  type: object
75
75
  properties:
76
76
  account:
77
- description: The account identifier.
77
+ description: "The account identifier."
78
78
  type: string
79
79
  email:
80
- description: The email of an account.
80
+ description: "The email of an account."
81
81
  type: string
82
82
  identities:
83
- description: The identities associated with an account. Deletes old identities and adds the newly defined ones.
83
+ description: "The identities associated with an account. Deletes old identities and adds the newly defined ones."
84
84
  type: array
85
85
  items:
86
- description: One identity associated with an account.
86
+ description: "One identity associated with an account."
87
87
  type: object
88
88
  properties:
89
89
  type:
90
- description: The type of the identity.
90
+ description: "The type of the identity."
91
91
  type: string
92
92
  enum: ['X509', 'GSS', 'USERPASS', 'SSH', 'SAML', 'OIDC']
93
93
  identity:
94
- description: Identifier of the identity.
94
+ description: "Identifier of the identity."
95
95
  type: string
96
96
  password:
97
- description: The password if the type is USERPASS.
97
+ description: "The password if the type is USERPASS."
98
98
  type: string
99
99
  responses:
100
100
  201:
101
- description: OK
101
+ description: "OK"
102
102
  content:
103
103
  application/json:
104
104
  schema:
105
105
  type: string
106
106
  enum: ['Created']
107
107
  401:
108
- description: Invalid Auth Token
108
+ description: "Invalid Auth Token"
109
109
  """
110
110
  data = json_parameters(parse_response)
111
111
  import_data(data=data, issuer=request.environ['issuer'], vo=request.environ['vo'])