Browse Source

Update Neutron-Neutron Interconnections

- Move specification for Neutron-Neutron Interconnections RFE for
  implementation in Stein release,
- Remove redundant states from lifecycle FSM,
- Add remote_interconnection_id attribute to interconnection resource,
- Minor update in API exchange example.

Signed-off-by: Thomas Morin <thomas.morin@orange.com>
Submitted on behalf of a third-party: Orange

Change-Id: I30a886813cdca4ed47507bbff38aff2d4137b434
Related-Bug: 1750368
ythomas1 7 months ago
parent
commit
c97f096695
2 changed files with 89 additions and 130 deletions
  1. 89
    99
      specs/stein/neutron-interconnection.rst
  2. 0
    31
      specs/stein/placeholder.rst

specs/rocky/neutron-inter.rst → specs/stein/neutron-interconnection.rst View File

@@ -163,7 +163,7 @@ Note that only the API calls to the 'interconnection' resources at steps A1/A2
163 163
 require write access to the "interconnection" resources by tenant users (but
164 164
 not to the attributes related to the network mechanism to use).
165 165
 
166
-The calls at steps B1/B2, only require read-only access to these resources;
166
+The calls at steps B1/B2/B3, only require read-only access to these resources;
167 167
 this can be achieved by introducing an "interconnection" role with read-only
168 168
 access to all "interconnection" resources, and having each OpenStack deployment
169 169
 having credentials for a user with this role in other OpenStack deployments.
@@ -278,18 +278,13 @@ TO_VALIDATE
278 278
   symmetric interconnection hasn't been validated yet
279 279
 
280 280
 VALIDATED
281
-  the existence of the symmetric interconnection has been validated
282
-
283
-ALLOCATED
284
-  local interconnection parameters have been defined (remote parameters are
281
+  the existence of the symmetric interconnection has been validated and local
282
+  interconnection parameters have been allocated (remote parameters are
285 283
   still unknown)
286 284
 
287
-CONFIGURED
288
-  both local parameters and remote parameters are known, interconnection is
289
-  being built
290
-
291 285
 ACTIVE
292
-  interconnection has been setup, it should work
286
+  both local parameters and remote parameters are known, interconnection has
287
+  been setup, it should work
293 288
 
294 289
 TEARDOWN
295 290
   local action taken to delete this interconnection, action
@@ -306,8 +301,6 @@ TEARDOWN
306 301
        BEFORE_CREATION [shape = beginpoint, label=""]
307 302
        TO_VALIDATE
308 303
        VALIDATED
309
-       ALLOCATED
310
-       CONFIGURED
311 304
        ACTIVE
312 305
        TEARDOWN
313 306
        DELETED [shape = endpoint, label=""]
@@ -315,12 +308,8 @@ TEARDOWN
315 308
        BEFORE_CREATION -> TO_VALIDATE [folded]
316 309
        TO_VALIDATE -> VALIDATED
317 310
        TO_VALIDATE -> TEARDOWN [folded]
318
-       VALIDATED -> ALLOCATED
311
+       VALIDATED -> ACTIVE
319 312
        VALIDATED -> TEARDOWN [folded]
320
-       ALLOCATED -> CONFIGURED
321
-       ALLOCATED -> TEARDOWN [folded]
322
-       CONFIGURED -> ACTIVE
323
-       CONFIGURED -> TEARDOWN [folded]
324 313
        ACTIVE -> TEARDOWN [folded]
325 314
        TEARDOWN -> DELETED [folded]
326 315
        ACTIVE -> TO_VALIDATE
@@ -329,66 +318,66 @@ TEARDOWN
329 318
 REST API Impact
330 319
 ---------------
331 320
 
332
-The proposal is to introduce an API extension ``inter``, with a new
333
-``interconnection`` resource.
321
+The proposal is to introduce an API extension ``interconnection``, exposing a
322
+new ``interconnection`` resource.
334 323
 
335 324
 Interconnection resource
336 325
 ~~~~~~~~~~~~~~~~~~~~~~~~
337 326
 
338
-The new ``interconnection`` API resource will be introduce under the
339
-``inter`` API prefix, and having the following attributes:
340
-
341
-+------------------+--------+----------------+--------------------------------+
342
-|Attribute Name    |Type    |Access          | Comment                        |
343
-+==================+========+================+================================+
344
-|id                | uuid   | RO             |                                |
345
-+------------------+--------+----------------+--------------------------------+
346
-|project_id        | uuid   | RO             |                                |
347
-+------------------+--------+----------------+--------------------------------+
348
-|type              | enum   | RO             | ``router``, ``network_l2``,    |
349
-|                  |        |                | ``network_l3``                 |
350
-+------------------+--------+----------------+--------------------------------+
351
-|state             | enum   | RO             | see states in :ref:`lifecycle` |
352
-|                  |        | will be updated|                                |
353
-|                  |        | by Neutron     |                                |
354
-|                  |        | along the life |                                |
355
-|                  |        | of the resource|                                |
356
-+------------------+--------+----------------+--------------------------------+
357
-|name              | string | RW             |                                |
358
-+------------------+--------+----------------+--------------------------------+
359
-|local_resource_id | uuid   | RO             | router or network UUID         |
360
-+------------------+--------+----------------+--------------------------------+
361
-|remote_resource_id| uuid   | RO             | router or network UUID         |
362
-+------------------+--------+----------------+--------------------------------+
363
-|remote_keystone   | string | RO             | AUTH_URL of remote             |
364
-|                  |        |                | keystone                       |
365
-+------------------+--------+----------------+--------------------------------+
366
-|remote_region     | string | RO             | region in remote keystone      |
367
-+------------------+--------+----------------+--------------------------------+
368
-|local_parameters  | dict   | RO             |                                |
369
-+------------------+--------+                |                                |
370
-|remote_parameters | dict   | will be updated|                                |
371
-|                  |        | by Neutron     |                                |
372
-|                  |        | along the life |                                |
373
-|                  |        | of the resource|                                |
374
-+------------------+--------+----------------+--------------------------------+
327
+The new ``interconnection`` API resource will be introduced under the
328
+``interconnection`` API prefix, and having the following attributes:
329
+
330
++-------------------------+--------+----------------+--------------------------------+
331
+|Attribute Name           |Type    |Access          | Comment                        |
332
++=========================+========+================+================================+
333
+|id                       | uuid   | RO             |                                |
334
++-------------------------+--------+----------------+--------------------------------+
335
+|project_id               | uuid   | RO             |                                |
336
++-------------------------+--------+----------------+--------------------------------+
337
+|type                     | enum   | RO             | ``router``, ``network_l2``,    |
338
+|                         |        |                | ``network_l3``                 |
339
++-------------------------+--------+----------------+--------------------------------+
340
+|state                    | enum   | RO             | see states in :ref:`lifecycle` |
341
+|                         |        | will be updated|                                |
342
+|                         |        | by Neutron     |                                |
343
+|                         |        | along the life |                                |
344
+|                         |        | of the resource|                                |
345
++-------------------------+--------+----------------+--------------------------------+
346
+|name                     | string | RW             |                                |
347
++-------------------------+--------+----------------+--------------------------------+
348
+|local_resource_id        | uuid   | RO             | router or network UUID         |
349
++-------------------------+--------+----------------+--------------------------------+
350
+|remote_resource_id       | uuid   | RO             | router or network UUID         |
351
++-------------------------+--------+----------------+--------------------------------+
352
+|remote_keystone          | string | RO             | AUTH_URL of remote             |
353
+|                         |        |                | keystone                       |
354
++-------------------------+--------+----------------+--------------------------------+
355
+|remote_region            | string | RO             | region in remote keystone      |
356
++-------------------------+--------+----------------+--------------------------------+
357
+|remote_interconnection_id| uuid   | RO             | uuid of remote interconnection |
358
++-------------------------+--------+                +--------------------------------+
359
+|local_parameters         | dict   | will be updated|                                |
360
++-------------------------+--------+ by Neutron     |                                |
361
+|remote_parameters        | dict   | along the life |                                |
362
+|                         |        | of the resource|                                |
363
++-------------------------+--------+----------------+--------------------------------+
375 364
 
376 365
 This resource will be used with typical CRUD operations:
377 366
 
378
-* ``POST /v2.0/inter/interconnections``
367
+* ``POST /v2.0/interconnection/interconnections``
379 368
 
380
-* ``GET /v2.0/inter/interconnections``
369
+* ``GET /v2.0/interconnection/interconnections``
381 370
 
382
-* ``GET /v2.0/inter/interconnections/<uuid>``
371
+* ``GET /v2.0/interconnection/interconnections/<uuid>``
383 372
 
384
-* ``PUT /v2.0/inter/interconnections/<uuid>``
373
+* ``PUT /v2.0/interconnection/interconnections/<uuid>``
385 374
 
386
-* ``DELETE /v2.0/inter/interconnections/<uuid>``
375
+* ``DELETE /v2.0/interconnection/interconnections/<uuid>``
387 376
 
388 377
 Additionally, an additional REST operation is introduced to trigger a
389 378
 ``refresh`` action on an ``interconnection`` resource:
390 379
 
391
-* ``PUT /v2.0/inter/interconnections/<uuid>/refresh``
380
+* ``PUT /v2.0/interconnection/interconnections/<uuid>/refresh``
392 381
 
393 382
 When this action is triggered the neutron instance on which the call is made
394 383
 will try to retrieve (``GET``) an ``interconnection`` resource on the remote
@@ -406,97 +395,98 @@ between two Networks.
406 395
 
407 396
 API Call A1, from tenant user to Neutron A::
408 397
 
409
-    POST /v2.0/inter/interconnections
410
-         {'interconnection':
411
-             'type': 'network'
412
-             'local_resource_id': <uuid of network X>
413
-             'remote_keystone': "http//<keystone-B>/identity",
398
+    POST /v2.0/interconnection/interconnections
399
+         {'interconnection': {
400
+             'type': 'network_l3',
401
+             'local_resource_id': <uuid of network X>,
402
+             'remote_keystone': 'http//<keystone-B>/identity',
414 403
              'remote_region': 'RegionOne',
415 404
              'remote_resource_id': <uuid of network Y>
416
-             }
417
-         }
405
+          }}
418 406
 
419 407
     Response: 200 OK
420 408
 
421 409
     {'interconnection': {
422
-         'id': <uuid 1>
410
+         'id': <uuid 1>,
423 411
          ...
424 412
      }}
425 413
 
426 414
 API Call B1, from Neutron A to Neutron B::
427 415
 
428
-    GET /v2.0/inter/interconnections?local_resource_id=<uuid of network Y>&remote_resource_id=<uuid of network X>
416
+    GET /v2.0/interconnection/interconnections?local_resource_id=<uuid of network Y>&remote_resource_id=<uuid of network X>
429 417
 
430
-    Response: 404
418
+    Response: 404 Not Found
431 419
 
432 420
 API Call A2, from tenant user to Neutron B::
433 421
 
434
-    POST /v2.0/inter/interconnections
435
-         {'interconnection':
436
-             'type': 'network'
437
-             'local_resource_id': <uuid of network Y>
438
-             'remote_keystone': "http//<keystone-A>/identity",
422
+    POST /v2.0/interconnection/interconnections
423
+         {'interconnection': {
424
+             'type': 'network_l3',
425
+             'local_resource_id': <uuid of network Y>,
426
+             'remote_keystone': 'http//<keystone-A>/identity',
439 427
              'remote_region': 'RegionOne',
440 428
              'remote_resource_id': <uuid of network X>
441
-             }
442
-         }
429
+          }}
443 430
 
444 431
     Response: 200 OK
445 432
 
446 433
     {'interconnection': {
447
-         'id': <uuid 2>
434
+         'id': <uuid 2>,
448 435
          ...
449 436
      }}
450 437
 
451 438
 API Call B2, from Neutron B to Neutron A::
452 439
 
453
-    GET /v2.0/inter/interconnections/local_resource_id=<uuid of network X>&remote_resource_id=<uuid of network Y>
440
+    GET /v2.0/interconnection/interconnections/local_resource_id=<uuid of network X>&remote_resource_id=<uuid of network Y>
454 441
 
455 442
     Response: 200 OK
456 443
 
457 444
     {'interconnection': {
458
-         'id': <uuid 1>
459
-         ...
460
-         'local_parameters": {}
445
+         'id': <uuid 1>,
446
+         ...,
447
+         'local_parameters': {}
461 448
      }}
462 449
 
463 450
 API Call B3' from Neutron B to Neutron A::
464 451
 
465
-    PUT /v2.0/inter/interconnections/<uuid 1>/refresh
466
-
467
-    {'interconnection': {
468
-         'id': <uuid 2>
469
-         'local_parameters": {}
470
-     }}
452
+    PUT /v2.0/interconnection/interconnections/<uuid 1>/refresh
471 453
 
472 454
     Response: 200 OK
473 455
 
474
-
475 456
 API Call B3'', from Neutron A to Neutron B ::
476 457
 
477
-    PUT /v2.0/inter/interconnections/<uuid 2>/refresh
458
+    GET /v2.0/interconnection/interconnections/local_resource_id=<uuid of network Y>&remote_resource_id=<uuid of network X>
478 459
 
479 460
     Response: 200 OK
480 461
 
481 462
     {'interconnection': {
482
-         'id': <uuid 2>
483
-         'local_parameters": {
463
+         'id': <uuid 2>,
464
+         ...,
465
+         'local_parameters': {
484 466
              'foo': '42'
485 467
          }
486 468
      }}
487 469
 
488
-API Call B3''', from Neutron B to Neutron A ::
470
+API Call B3''', from Neutron A to Neutron B ::
489 471
 
490
-    PUT /v2.0/inter/interconnections/<uuid 1>/refresh
472
+    PUT /v2.0/interconnection/interconnections/<uuid 2>/refresh
473
+
474
+    Response: 200 OK
475
+
476
+API Call B3'''', from Neutron B to Neutron A ::
477
+
478
+    GET /v2.0/interconnection/interconnections/<uuid 1>
491 479
 
492 480
     Response: 200 OK
493 481
 
494 482
     {'interconnection': {
495
-         'id': <uuid 1>
483
+         'id': <uuid 1>,
484
+         ...,
485
+         'remote_interconnection_id': <uuid 2>,
496 486
          'remote_parameters': {
497 487
              'foo': '42'
498
-         }
499
-         'local_parameters": {
488
+         },
489
+         'local_parameters': {
500 490
              'bar': '43'
501 491
          }
502 492
      }}

+ 0
- 31
specs/stein/placeholder.rst View File

@@ -1,31 +0,0 @@
1
-..
2
- This work is licensed under a Creative Commons Attribution 3.0 Unported
3
- License.
4
-
5
- http://creativecommons.org/licenses/by/3.0/legalcode
6
-
7
-==================
8
-(Placeholder Spec)
9
-==================
10
-
11
-This file is just a placeholder for the specs directory.
12
-It will be removed soon after some spec is merged.
13
-
14
-The latest spec template is found at ``specs/template.rst``
15
-in the ``neutron-specs`` repository.
16
-
17
-Problem Description
18
-===================
19
-
20
-Sphinx toctree complains if no file exists in a directory
21
-specified in toctree glob.
22
-
23
-Proposed Change
24
-===============
25
-
26
-Add this file.
27
-
28
-References
29
-==========
30
-
31
-None.

Loading…
Cancel
Save