From 092cc7d494433226bab999965e595f82ec2e9352 Mon Sep 17 00:00:00 2001 From: Feodor Tersin Date: Wed, 28 Dec 2016 18:03:00 +0300 Subject: [PATCH] Switch to Nova v2.32 API At v2.33 new bdm field 'tag' was introduced. This field is automatically created by snapshot operation for volume backed instance (ebs). The result of the operation - bdm - is stored in metadata of the snapshot image. When ec2api user requires to run an instance with this image changing some attributes of the attached volume (e.g. delete_on_termination), this bdm is merged with user defined parameters and sent to Nova. As the result the new 'tag' field is sent to Nova since v2.32. However the used API version is v2.10, which does not support 'tag' field. This did not lead to faults (until I56348dc2) because Nova verified the first bdm only, but the first bdm for ebs instances was a bdm for the image. With the noted fix this no more works. This patch swithes ec2api to use v2.32 to get 'tag' field supported. Change-Id: I68329bbffeeff5d460f3fca1a212ba20b35fc284 (cherry picked from commit 480dc02de0d8413aa518a23b22a0140013df1350) (cherry picked from commit 4deceadc272b212003bc9cee8161a82757c6ef64) --- ec2api/clients.py | 5 ++++- ec2api/tests/unit/test_clients.py | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/ec2api/clients.py b/ec2api/clients.py index 6373f0d4..dd98fa83 100644 --- a/ec2api/clients.py +++ b/ec2api/clients.py @@ -68,7 +68,10 @@ LEGACY_NOVA_API_VERSION = '2' # properties # Nova API's 2.10 microversion provides admin access to users keypairs, # which allows metadata service to expose openssh part of an instance key -REQUIRED_NOVA_API_MICROVERSION = '2.10' +# Nova API's 2.32 microversion allows 'tag' field of bdm v2, which may be +# contained in image bdms, defined by users or autocreated with instance +# snapshot +REQUIRED_NOVA_API_MICROVERSION = '2.32' _nova_api_version = None diff --git a/ec2api/tests/unit/test_clients.py b/ec2api/tests/unit/test_clients.py index ca7c428e..82265c7f 100644 --- a/ec2api/tests/unit/test_clients.py +++ b/ec2api/tests/unit/test_clients.py @@ -54,7 +54,7 @@ class ClientsTestCase(base.BaseTestCase): links=[{'href': 'http://host:port/path/v2/'}]) v2_1 = mock.NonCallableMock() v2_1.configure_mock(id='v2.1', - version='2.11', + version='2.40', links=[{'href': 'http://host:port/path/v2.1/'}]) # test normal flow