Use Block Storage API v3 instead of API v2
Block Storage API v2 was deprecated during Pike cycle and is being removed during Xena cycle, and current v3 API should be used instead. Unused volume_client and network_client in integration test code are also removed by this change. Note: granade tests is made non-voting temporally until the same issue is fixed in stable/victoria. Also, changes to use fedora 33 for tests. Depends-on: https://review.opendev.org/802150/ Change-Id: I6a2b5afa13480791971bbd8bba1f43b9f2db8294 (cherry picked from commit1828df32fa
) Move testing to Fedora 33 Now that the gate is unblocked, we can also test F33 for gating purposes here. Change-Id: Ie1c9075623d85b27aaf1ac67a3063e219726bc6f (cherry picked from commit6a9c35d898
)
This commit is contained in:
parent
b9a3395978
commit
c0d82c5e31
|
@ -79,7 +79,7 @@
|
|||
minimal_image_ref: ${DEFAULT_IMAGE_NAME:-cirros-0.3.6-x86_64-disk}
|
||||
instance_type: m1.heat_int
|
||||
minimal_instance_type: m1.heat_micro
|
||||
image_ref: Fedora-Cloud-Base-32-1.6.x86_64
|
||||
image_ref: Fedora-Cloud-Base-33-1.2.x86_64
|
||||
hidden_stack_tag: hidden
|
||||
heat_config_notify_script: /opt/stack/heat-agents/heat-config/bin/heat-config-notify
|
||||
boot_config_env: /opt/stack/heat-templates/hot/software-config/boot-config/test_image_env.yaml
|
||||
|
@ -140,6 +140,7 @@
|
|||
- job:
|
||||
name: grenade-heat
|
||||
parent: grenade
|
||||
voting: false
|
||||
required-projects:
|
||||
- opendev.org/openstack/heat
|
||||
- opendev.org/openstack/heat-tempest-plugin
|
||||
|
|
|
@ -478,9 +478,9 @@ function configure_tempest_for_heat {
|
|||
if [[ -e /etc/ci/mirror_info.sh ]]; then
|
||||
source /etc/ci/mirror_info.sh
|
||||
fi
|
||||
export HEAT_TEST_FEDORA_IMAGE=${NODEPOOL_FEDORA_MIRROR:-https://download.fedoraproject.org/pub/fedora/linux}/releases/32/Cloud/x86_64/images/Fedora-Cloud-Base-32-1.6.x86_64.qcow2
|
||||
export HEAT_TEST_FEDORA_IMAGE=${NODEPOOL_FEDORA_MIRROR:-https://download.fedoraproject.org/pub/fedora/linux}/releases/33/Cloud/x86_64/images/Fedora-Cloud-Base-33-1.2.x86_64.qcow2
|
||||
TOKEN=$(openstack token issue -c id -f value)
|
||||
local image_exists=$( openstack image list | grep "Fedora-Cloud-Base-32-1.6.x86_64" )
|
||||
local image_exists=$( openstack image list | grep "Fedora-Cloud-Base-33-1.2.x86_64" )
|
||||
if [[ -z $image_exists ]]; then
|
||||
if is_service_enabled g-api; then
|
||||
upload_image $HEAT_TEST_FEDORA_IMAGE $TOKEN
|
||||
|
|
|
@ -51,8 +51,8 @@ a VM image that heat can launch. To do that add the following to
|
|||
`[[local|localrc]]` section of `local.conf`::
|
||||
|
||||
IMAGE_URL_SITE="https://download.fedoraproject.org"
|
||||
IMAGE_URL_PATH="/pub/fedora/linux/releases/32/Cloud/x86_64/images/"
|
||||
IMAGE_URL_FILE="Fedora-Cloud-Base-32-1.6.x86_64.qcow2"
|
||||
IMAGE_URL_PATH="/pub/fedora/linux/releases/33/Cloud/x86_64/images/"
|
||||
IMAGE_URL_FILE="Fedora-Cloud-Base-33-1.2.x86_64.qcow2"
|
||||
IMAGE_URLS+=","$IMAGE_URL_SITE$IMAGE_URL_PATH$IMAGE_URL_FILE
|
||||
|
||||
URLs for any cloud image may be specified, but fedora images from F20 contain
|
||||
|
|
|
@ -163,14 +163,6 @@ class CinderClientAPIVersionTest(common.HeatTestCase):
|
|||
client = ctx.clients.client('cinder')
|
||||
self.assertEqual('3.0', client.version)
|
||||
|
||||
def test_cinder_api_v2(self):
|
||||
ctx = utils.dummy_context()
|
||||
self.patchobject(ctx.keystone_session, 'get_endpoint',
|
||||
side_effect=[ks_exceptions.EndpointNotFound,
|
||||
None])
|
||||
client = ctx.clients.client('cinder')
|
||||
self.assertEqual('2.0', client.version)
|
||||
|
||||
def test_cinder_api_not_supported(self):
|
||||
ctx = utils.dummy_context()
|
||||
self.patchobject(ctx.keystone_session, 'get_endpoint',
|
||||
|
|
|
@ -1253,7 +1253,7 @@ class CinderVolumeTest(vt_base.VolumeTestCase):
|
|||
vol.to_dict.return_value = vol_resp
|
||||
rsrc.client().volumes = mock.MagicMock()
|
||||
rsrc.client().volumes.get = mock.MagicMock(return_value=vol)
|
||||
rsrc.client().volume_api_version = 2
|
||||
rsrc.client().volume_api_version = 3
|
||||
rsrc.data = mock.MagicMock(return_value={'volume_type': 'lvmdriver-1'})
|
||||
|
||||
reality = rsrc.get_live_state(rsrc.properties)
|
||||
|
|
|
@ -93,7 +93,7 @@ class CinderVolumeTypeTest(common.HeatTestCase):
|
|||
self._test_handle_create(is_public=False)
|
||||
|
||||
def test_volume_type_with_projects(self):
|
||||
self.cinderclient.volume_api_version = 2
|
||||
self.cinderclient.volume_api_version = 3
|
||||
self._test_handle_create(projects=['id1', 'id2'])
|
||||
|
||||
def _test_update(self, update_args, is_update_metadata=False):
|
||||
|
@ -179,7 +179,7 @@ class CinderVolumeTypeTest(common.HeatTestCase):
|
|||
props['projects'] = ['id1']
|
||||
self.my_volume_type.t = self.my_volume_type.t.freeze(properties=props)
|
||||
self.my_volume_type.reparse()
|
||||
self.cinderclient.volume_api_version = 2
|
||||
self.cinderclient.volume_api_version = 3
|
||||
self.stub_KeystoneProjectConstraint()
|
||||
ex = self.assertRaises(exception.StackValidationFailed,
|
||||
self.my_volume_type.validate)
|
||||
|
@ -194,7 +194,7 @@ class CinderVolumeTypeTest(common.HeatTestCase):
|
|||
props['projects'] = ['id1']
|
||||
self.my_volume_type.t = self.my_volume_type.t.freeze(properties=props)
|
||||
self.my_volume_type.reparse()
|
||||
self.cinderclient.volume_api_version = 2
|
||||
self.cinderclient.volume_api_version = 3
|
||||
self.stub_KeystoneProjectConstraint()
|
||||
self.assertIsNone(self.my_volume_type.validate())
|
||||
|
||||
|
|
|
@ -10,11 +10,12 @@
|
|||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from cinderclient.v2 import client as cinderclient
|
||||
import mock
|
||||
import six
|
||||
|
||||
from unittest import mock
|
||||
|
||||
from cinderclient.v3 import client as cinderclient
|
||||
|
||||
from heat.engine.clients.os import cinder
|
||||
from heat.engine.clients.os import nova
|
||||
from heat.engine.resources.aws.ec2 import volume as aws_vol
|
||||
|
@ -31,7 +32,7 @@ class VolumeTestCase(common.HeatTestCase):
|
|||
super(VolumeTestCase, self).setUp()
|
||||
self.fc = fakes_nova.FakeClient()
|
||||
self.cinder_fc = cinderclient.Client('username', 'password')
|
||||
self.cinder_fc.volume_api_version = 2
|
||||
self.cinder_fc.volume_api_version = 3
|
||||
self.patchobject(cinder.CinderClientPlugin, '_create',
|
||||
return_value=self.cinder_fc)
|
||||
self.patchobject(nova.NovaClientPlugin, 'client',
|
||||
|
|
|
@ -30,4 +30,4 @@ openstack flavor delete m1.heat_int
|
|||
openstack flavor delete m1.heat_micro
|
||||
|
||||
# delete the image created
|
||||
openstack image delete Fedora-Cloud-Base-32-1.6.x86_64
|
||||
openstack image delete Fedora-Cloud-Base-33-1.2.x86_64
|
||||
|
|
|
@ -12,12 +12,10 @@
|
|||
|
||||
import os
|
||||
|
||||
from cinderclient import client as cinder_client
|
||||
from heat.common.i18n import _
|
||||
from heatclient import client as heat_client
|
||||
from keystoneauth1.identity.generic import password
|
||||
from keystoneauth1 import session
|
||||
from neutronclient.v2_0 import client as neutron_client
|
||||
from novaclient import client as nova_client
|
||||
from swiftclient import client as swift_client
|
||||
|
||||
|
@ -60,7 +58,6 @@ class ClientManager(object):
|
|||
calling various OpenStack APIs.
|
||||
"""
|
||||
|
||||
CINDERCLIENT_VERSION = '2'
|
||||
HEATCLIENT_VERSION = '1'
|
||||
NOVA_API_VERSION = '2.1'
|
||||
|
||||
|
@ -81,8 +78,6 @@ class ClientManager(object):
|
|||
self.identity_client = self._get_identity_client()
|
||||
self.orchestration_client = self._get_orchestration_client()
|
||||
self.compute_client = self._get_compute_client()
|
||||
self.network_client = self._get_network_client()
|
||||
self.volume_client = self._get_volume_client()
|
||||
self.object_client = self._get_object_client()
|
||||
|
||||
def _username(self):
|
||||
|
@ -154,22 +149,6 @@ class ClientManager(object):
|
|||
os_cache=False,
|
||||
http_log_debug=True)
|
||||
|
||||
def _get_network_client(self):
|
||||
|
||||
return neutron_client.Client(
|
||||
session=self.identity_client.session,
|
||||
service_type='network',
|
||||
region_name=self.conf.region,
|
||||
endpoint_type='publicURL')
|
||||
|
||||
def _get_volume_client(self):
|
||||
return cinder_client.Client(
|
||||
self.CINDERCLIENT_VERSION,
|
||||
session=self.identity_client.session,
|
||||
endpoint_type='publicURL',
|
||||
region_name=self.conf.region,
|
||||
http_log_debug=True)
|
||||
|
||||
def _get_object_client(self):
|
||||
args = {
|
||||
'auth_version': self.auth_version,
|
||||
|
|
|
@ -104,8 +104,6 @@ class HeatIntegrationTest(testscenarios.WithScenarios,
|
|||
self.identity_client = self.manager.identity_client
|
||||
self.orchestration_client = self.manager.orchestration_client
|
||||
self.compute_client = self.manager.compute_client
|
||||
self.network_client = self.manager.network_client
|
||||
self.volume_client = self.manager.volume_client
|
||||
self.object_client = self.manager.object_client
|
||||
|
||||
self.client = self.orchestration_client
|
||||
|
@ -169,14 +167,6 @@ class HeatIntegrationTest(testscenarios.WithScenarios,
|
|||
def _stack_rand_name(cls):
|
||||
return rand_name(cls.__name__)
|
||||
|
||||
def _get_network(self, net_name=None):
|
||||
if net_name is None:
|
||||
net_name = self.conf.fixed_network_name
|
||||
networks = self.network_client.list_networks()
|
||||
for net in networks['networks']:
|
||||
if net['name'] == net_name:
|
||||
return net
|
||||
|
||||
def is_service_available(self, service_type):
|
||||
try:
|
||||
self.identity_client.get_endpoint_url(
|
||||
|
|
|
@ -46,7 +46,7 @@ function _config_iniset {
|
|||
iniset $conf_file heat_plugin instance_type m1.heat_int
|
||||
iniset $conf_file heat_plugin minimal_instance_type m1.heat_micro
|
||||
|
||||
iniset $conf_file heat_plugin image_ref Fedora-Cloud-Base-32-1.6.x86_64
|
||||
iniset $conf_file heat_plugin image_ref Fedora-Cloud-Base-33-1.2.x86_64
|
||||
iniset $conf_file heat_plugin minimal_image_ref $default_image_name
|
||||
iniset $conf_file heat_plugin hidden_stack_tag hidden
|
||||
|
||||
|
|
Loading…
Reference in New Issue