Switch cloud.compute.get_server_by_id to use proxy
Consume proxy layer in cloud.ompute.get_server_by_id Change-Id: Ie6d1776d3bc641e4fbab7c73ca05017cd429d12f
This commit is contained in:
parent
db4324d7d9
commit
e94fda9e2c
|
@ -513,14 +513,11 @@ class ComputeCloudMixin(_normalize.Normalizer):
|
|||
|
||||
:param id: ID of the server.
|
||||
|
||||
:returns: A server dict or None if no matching server is found.
|
||||
:returns: A server object or None if no matching server is found.
|
||||
"""
|
||||
try:
|
||||
data = proxy._json_response(
|
||||
self.compute.get('/servers/{id}'.format(id=id)))
|
||||
server = self._get_and_munchify('server', data)
|
||||
return meta.add_server_interfaces(
|
||||
self, self._normalize_server(server))
|
||||
server = self.compute.get_server(id)
|
||||
return meta.add_server_interfaces(self, server)
|
||||
except exceptions.ResourceNotFound:
|
||||
return None
|
||||
|
||||
|
@ -905,7 +902,7 @@ class ComputeCloudMixin(_normalize.Normalizer):
|
|||
nat_destination=nat_destination,
|
||||
)
|
||||
|
||||
server.adminPass = admin_pass
|
||||
server.admin_password = admin_pass
|
||||
return server
|
||||
|
||||
def _get_boot_from_volume_kwargs(
|
||||
|
|
|
@ -462,11 +462,11 @@ def add_server_interfaces(cloud, server):
|
|||
# server record. Since we know them, go ahead and set them. In the case
|
||||
# where they were set previous, we use the values, so this will not break
|
||||
# clouds that provide the information
|
||||
if cloud.private and server['private_v4']:
|
||||
server['accessIPv4'] = server['private_v4']
|
||||
if cloud.private and server.private_v4:
|
||||
server.access_ipv4 = server.private_v4
|
||||
else:
|
||||
server['accessIPv4'] = server['public_v4']
|
||||
server['accessIPv6'] = server['public_v6']
|
||||
server.access_ipv4 = server.public_v4
|
||||
server.access_ipv6 = server.public_v6
|
||||
|
||||
return server
|
||||
|
||||
|
@ -487,7 +487,8 @@ def get_hostvars_from_server(cloud, server, mounts=None):
|
|||
expand_server_vars if caching is not set up. If caching is set up,
|
||||
the extra cost should be minimal.
|
||||
"""
|
||||
server_vars = add_server_interfaces(cloud, server)
|
||||
server_vars = obj_to_munch(
|
||||
add_server_interfaces(cloud, server))
|
||||
|
||||
flavor_id = server['flavor'].get('id')
|
||||
if flavor_id:
|
||||
|
@ -514,6 +515,11 @@ def get_hostvars_from_server(cloud, server, mounts=None):
|
|||
if image_name:
|
||||
server_vars['image']['name'] = image_name
|
||||
|
||||
# During the switch to returning sdk resource objects we need temporarily
|
||||
# to force convertion to dict. This will be dropped soon.
|
||||
if hasattr(server_vars['image'], 'to_dict'):
|
||||
server_vars['image'] = server_vars['image'].to_dict(computed=False)
|
||||
|
||||
volumes = []
|
||||
if cloud.has_service('volume'):
|
||||
try:
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
# under the License.
|
||||
from openstack.common import metadata
|
||||
from openstack.common import tag
|
||||
from openstack.compute.v2 import volume_attachment
|
||||
from openstack import exceptions
|
||||
from openstack.image.v2 import image
|
||||
from openstack import resource
|
||||
|
@ -82,7 +83,11 @@ class Server(resource.Resource, metadata.MetadataMixin, tag.TagMixin):
|
|||
#: A list of an attached volumes. Each item in the list contains at least
|
||||
#: an "id" key to identify the specific volumes.
|
||||
attached_volumes = resource.Body(
|
||||
'os-extended-volumes:volumes_attached')
|
||||
'os-extended-volumes:volumes_attached',
|
||||
aka='volumes',
|
||||
type=list,
|
||||
list_type=volume_attachment.VolumeAttachment,
|
||||
default=[])
|
||||
#: The name of the availability zone this server is a part of.
|
||||
availability_zone = resource.Body('OS-EXT-AZ:availability_zone')
|
||||
#: Enables fine grained control of the block device mapping for an
|
||||
|
@ -128,6 +133,12 @@ class Server(resource.Resource, metadata.MetadataMixin, tag.TagMixin):
|
|||
#: instance name template. Appears in the response for administrative users
|
||||
#: only.
|
||||
instance_name = resource.Body('OS-EXT-SRV-ATTR:instance_name')
|
||||
#: The address to use to connect to this server from the current calling
|
||||
#: context. This will be set to public_ipv6 if the calling host has
|
||||
#: routable ipv6 addresses, and to private_ipv4 if the Connection was
|
||||
#: created with private=True. Otherwise it will be set to public_ipv4.
|
||||
interface_ip = resource.Computed('interface_ip', default='')
|
||||
|
||||
# The locked status of the server
|
||||
is_locked = resource.Body('locked', type=bool)
|
||||
#: The UUID of the kernel image when using an AMI. Will be null if not.
|
||||
|
@ -157,6 +168,17 @@ class Server(resource.Resource, metadata.MetadataMixin, tag.TagMixin):
|
|||
progress = resource.Body('progress', type=int)
|
||||
#: The ID of the project this server is associated with.
|
||||
project_id = resource.Body('tenant_id')
|
||||
|
||||
#: The private IPv4 address of this server
|
||||
private_v4 = resource.Computed('private_v4', default='')
|
||||
#: The private IPv6 address of this server
|
||||
private_v6 = resource.Computed('private_v6', default='')
|
||||
|
||||
#: The public IPv4 address of this server
|
||||
public_v4 = resource.Computed('public_v4', default='')
|
||||
#: The public IPv6 address of this server
|
||||
public_v6 = resource.Computed('public_v6', default='')
|
||||
|
||||
#: The UUID of the ramdisk image when using an AMI. Will be null if not.
|
||||
#: By default, it appears in the response for administrative users only.
|
||||
ramdisk_id = resource.Body('OS-EXT-SRV-ATTR:ramdisk_id')
|
||||
|
|
|
@ -76,7 +76,7 @@ class TestCompute(base.BaseFunctionalTest):
|
|||
wait=True)
|
||||
self.assertEqual(self.server_name, server['name'])
|
||||
self.assertEqual(self.image.id, server['image']['id'])
|
||||
self.assertEqual(self.flavor.id, server['flavor']['id'])
|
||||
self.assertEqual(self.flavor.name, server['flavor']['original_name'])
|
||||
self.assertIsNotNone(server['adminPass'])
|
||||
self.assertTrue(
|
||||
self.user_cloud.delete_server(self.server_name, wait=True))
|
||||
|
@ -92,7 +92,7 @@ class TestCompute(base.BaseFunctionalTest):
|
|||
wait=True)
|
||||
self.assertEqual(self.server_name, server['name'])
|
||||
self.assertEqual(self.image.id, server['image']['id'])
|
||||
self.assertEqual(self.flavor.id, server['flavor']['id'])
|
||||
self.assertEqual(self.flavor.name, server['flavor']['original_name'])
|
||||
self.assertIsNotNone(server['adminPass'])
|
||||
self.assertTrue(
|
||||
self.user_cloud.delete_server(
|
||||
|
@ -123,7 +123,7 @@ class TestCompute(base.BaseFunctionalTest):
|
|||
wait=True)
|
||||
self.assertEqual(self.server_name, server['name'])
|
||||
self.assertEqual(self.image.id, server['image']['id'])
|
||||
self.assertEqual(self.flavor.id, server['flavor']['id'])
|
||||
self.assertEqual(self.flavor.name, server['flavor']['original_name'])
|
||||
self.assertTrue(server['has_config_drive'])
|
||||
self.assertIsNotNone(server['adminPass'])
|
||||
self.assertTrue(
|
||||
|
@ -143,7 +143,7 @@ class TestCompute(base.BaseFunctionalTest):
|
|||
wait=True)
|
||||
self.assertEqual(self.server_name, server['name'])
|
||||
self.assertEqual(self.image.id, server['image']['id'])
|
||||
self.assertEqual(self.flavor.id, server['flavor']['id'])
|
||||
self.assertEqual(self.flavor.name, server['flavor']['original_name'])
|
||||
self.assertFalse(server['has_config_drive'])
|
||||
self.assertIsNotNone(server['adminPass'])
|
||||
self.assertTrue(
|
||||
|
@ -182,7 +182,7 @@ class TestCompute(base.BaseFunctionalTest):
|
|||
wait=True)
|
||||
self.assertEqual(self.server_name, server['name'])
|
||||
self.assertEqual(self.image.id, server['image']['id'])
|
||||
self.assertEqual(self.flavor.id, server['flavor']['id'])
|
||||
self.assertEqual(self.flavor.name, server['flavor']['original_name'])
|
||||
self.assertIsNotNone(server['adminPass'])
|
||||
self.assertTrue(
|
||||
self.user_cloud.delete_server(self.server_name, wait=True))
|
||||
|
@ -231,7 +231,7 @@ class TestCompute(base.BaseFunctionalTest):
|
|||
wait=True)
|
||||
self.assertEqual(self.server_name, server['name'])
|
||||
self.assertEqual(self.image.id, server['image']['id'])
|
||||
self.assertEqual(self.flavor.id, server['flavor']['id'])
|
||||
self.assertEqual(self.flavor.name, server['flavor']['original_name'])
|
||||
self.assertEqual(server['adminPass'], 'sheiqu9loegahSh')
|
||||
self.assertTrue(
|
||||
self.user_cloud.delete_server(self.server_name, wait=True))
|
||||
|
|
|
@ -23,6 +23,7 @@ import uuid
|
|||
|
||||
from openstack.cloud import exc
|
||||
from openstack.cloud import meta
|
||||
from openstack.compute.v2 import server
|
||||
from openstack import connection
|
||||
from openstack.tests import fakes
|
||||
from openstack.tests.unit import base
|
||||
|
@ -52,6 +53,7 @@ class TestCreateServer(base.TestCase):
|
|||
u'max_count': 1,
|
||||
u'min_count': 1,
|
||||
u'name': u'server-name'}})),
|
||||
self.get_nova_discovery_mock_dict(),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', '1234']),
|
||||
|
@ -85,6 +87,7 @@ class TestCreateServer(base.TestCase):
|
|||
u'max_count': 1,
|
||||
u'min_count': 1,
|
||||
u'name': u'server-name'}})),
|
||||
self.get_nova_discovery_mock_dict(),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', '1234']),
|
||||
|
@ -195,19 +198,19 @@ class TestCreateServer(base.TestCase):
|
|||
u'max_count': 1,
|
||||
u'min_count': 1,
|
||||
u'name': u'server-name'}})),
|
||||
self.get_nova_discovery_mock_dict(),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', '1234']),
|
||||
json={'server': fake_server}),
|
||||
])
|
||||
normalized = self.cloud._expand_server(
|
||||
self.cloud._normalize_server(fake_server), False, False)
|
||||
self.assertEqual(
|
||||
normalized,
|
||||
self.assertDictEqual(
|
||||
server.Server(**fake_server).to_dict(computed=False),
|
||||
self.cloud.create_server(
|
||||
name='server-name',
|
||||
image=dict(id='image-id'),
|
||||
flavor=dict(id='flavor-id')))
|
||||
flavor=dict(id='flavor-id')).to_dict(computed=False)
|
||||
)
|
||||
|
||||
self.assert_calls()
|
||||
|
||||
|
@ -233,20 +236,19 @@ class TestCreateServer(base.TestCase):
|
|||
u'max_count': 1,
|
||||
u'min_count': 1,
|
||||
u'name': u'server-name'}})),
|
||||
self.get_nova_discovery_mock_dict(),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', '1234']),
|
||||
json={'server': fake_server}),
|
||||
])
|
||||
normalized = self.cloud._expand_server(
|
||||
self.cloud._normalize_server(fake_server), False, False)
|
||||
self.assertEqual(
|
||||
normalized,
|
||||
self.assertDictEqual(
|
||||
server.Server(**fake_server).to_dict(computed=False),
|
||||
self.cloud.create_server(
|
||||
name='server-name',
|
||||
image=dict(id='image-id'),
|
||||
flavor=dict(id='flavor-id'),
|
||||
config_drive=True))
|
||||
config_drive=True).to_dict(computed=False))
|
||||
|
||||
self.assert_calls()
|
||||
|
||||
|
@ -271,20 +273,20 @@ class TestCreateServer(base.TestCase):
|
|||
u'max_count': 1,
|
||||
u'min_count': 1,
|
||||
u'name': u'server-name'}})),
|
||||
self.get_nova_discovery_mock_dict(),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', '1234']),
|
||||
json={'server': fake_server}),
|
||||
])
|
||||
normalized = self.cloud._expand_server(
|
||||
self.cloud._normalize_server(fake_server), False, False)
|
||||
self.assertEqual(
|
||||
normalized,
|
||||
server.Server(**fake_server).to_dict(computed=False),
|
||||
self.cloud.create_server(
|
||||
name='server-name',
|
||||
image=dict(id='image-id'),
|
||||
flavor=dict(id='flavor-id'),
|
||||
config_drive=None))
|
||||
config_drive=None).to_dict(computed=False)
|
||||
)
|
||||
|
||||
self.assert_calls()
|
||||
|
||||
|
@ -313,6 +315,7 @@ class TestCreateServer(base.TestCase):
|
|||
u'max_count': 1,
|
||||
u'min_count': 1,
|
||||
u'name': u'server-name'}})),
|
||||
self.get_nova_discovery_mock_dict(),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', '1234']),
|
||||
|
@ -323,7 +326,7 @@ class TestCreateServer(base.TestCase):
|
|||
self.cloud.create_server(
|
||||
name='server-name', image=dict(id='image-id'),
|
||||
flavor=dict(id='flavor-id'),
|
||||
admin_pass=admin_pass)['adminPass'])
|
||||
admin_pass=admin_pass)['admin_password'])
|
||||
|
||||
self.assert_calls()
|
||||
|
||||
|
@ -368,7 +371,7 @@ class TestCreateServer(base.TestCase):
|
|||
|
||||
# Even with the wait, we should still get back a passworded server
|
||||
self.assertEqual(
|
||||
server['adminPass'],
|
||||
server['admin_password'],
|
||||
self.cloud._normalize_server(fake_server_with_pass)['adminPass']
|
||||
)
|
||||
self.assert_calls()
|
||||
|
@ -400,6 +403,7 @@ class TestCreateServer(base.TestCase):
|
|||
u'min_count': 1,
|
||||
u'user_data': user_data_b64,
|
||||
u'name': u'server-name'}})),
|
||||
self.get_nova_discovery_mock_dict(),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', '1234']),
|
||||
|
@ -577,6 +581,7 @@ class TestCreateServer(base.TestCase):
|
|||
u'min_count': 1,
|
||||
u'networks': [{u'uuid': u'network-id'}],
|
||||
u'name': u'server-name'}})),
|
||||
self.get_nova_discovery_mock_dict(),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', '1234']),
|
||||
|
@ -629,6 +634,7 @@ class TestCreateServer(base.TestCase):
|
|||
u'min_count': 1,
|
||||
u'networks': [{u'uuid': u'network-id'}],
|
||||
u'name': u'server-name'}})),
|
||||
self.get_nova_discovery_mock_dict(),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', '1234']),
|
||||
|
@ -671,6 +677,7 @@ class TestCreateServer(base.TestCase):
|
|||
u'min_count': 1,
|
||||
u'networks': [{'fixed_ip': fixed_ip}],
|
||||
u'name': u'server-name'}})),
|
||||
self.get_nova_discovery_mock_dict(),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', '1234']),
|
||||
|
@ -713,6 +720,7 @@ class TestCreateServer(base.TestCase):
|
|||
u'min_count': 1,
|
||||
u'networks': [{'fixed_ip': fixed_ip}],
|
||||
u'name': u'server-name'}})),
|
||||
self.get_nova_discovery_mock_dict(),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', '1234']),
|
||||
|
@ -757,6 +765,7 @@ class TestCreateServer(base.TestCase):
|
|||
u'min_count': 1,
|
||||
u'networks': [{'fixed_ip': fixed_ip}],
|
||||
u'name': u'server-name'}})),
|
||||
self.get_nova_discovery_mock_dict(),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', '1234']),
|
||||
|
@ -860,6 +869,7 @@ class TestCreateServer(base.TestCase):
|
|||
u'min_count': 1,
|
||||
u'networks': [{u'port': port_id}],
|
||||
u'name': u'server-name'}})),
|
||||
self.get_nova_discovery_mock_dict(),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', '1234']),
|
||||
|
@ -916,6 +926,7 @@ class TestCreateServer(base.TestCase):
|
|||
}
|
||||
],
|
||||
u'name': u'server-name'}})),
|
||||
self.get_nova_discovery_mock_dict(),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', '1234']),
|
||||
|
@ -959,6 +970,7 @@ class TestCreateServer(base.TestCase):
|
|||
u'uuid': u'image-id',
|
||||
u'volume_size': u'1'}],
|
||||
u'name': u'server-name'}})),
|
||||
self.get_nova_discovery_mock_dict(),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', '1234']),
|
||||
|
|
|
@ -22,6 +22,7 @@ Tests floating IP resource methods for Neutron and Nova-network.
|
|||
from unittest.mock import patch
|
||||
|
||||
from openstack.cloud import meta
|
||||
from openstack.compute.v2 import server as _server
|
||||
from openstack import connection
|
||||
from openstack.tests import fakes
|
||||
from openstack.tests.unit import base
|
||||
|
@ -96,7 +97,10 @@ class TestFloatingIP(base.TestCase):
|
|||
}]
|
||||
}
|
||||
)
|
||||
server_dict = meta.add_server_interfaces(self.cloud, server)
|
||||
server_dict = meta.add_server_interfaces(
|
||||
self.cloud,
|
||||
_server.Server(**server)
|
||||
)
|
||||
|
||||
new_server = self.cloud.add_ips_to_server(server=server_dict)
|
||||
mock_get_floating_ip.assert_not_called()
|
||||
|
@ -136,7 +140,9 @@ class TestFloatingIP(base.TestCase):
|
|||
}]
|
||||
}
|
||||
)
|
||||
server_dict = meta.add_server_interfaces(self.cloud, server)
|
||||
server_dict = meta.add_server_interfaces(
|
||||
self.cloud,
|
||||
_server.Server(**server))
|
||||
|
||||
new_server = self.cloud.add_ips_to_server(server=server_dict)
|
||||
mock_get_floating_ip.assert_not_called()
|
||||
|
@ -172,7 +178,9 @@ class TestFloatingIP(base.TestCase):
|
|||
}]
|
||||
}
|
||||
)
|
||||
server_dict = meta.add_server_interfaces(self.cloud, server)
|
||||
server_dict = meta.add_server_interfaces(
|
||||
self.cloud,
|
||||
_server.Server(**server))
|
||||
|
||||
new_server = self.cloud.add_ips_to_server(server=server_dict)
|
||||
mock_get_floating_ip.assert_not_called()
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
from unittest import mock
|
||||
|
||||
from openstack.cloud import meta
|
||||
from openstack.compute.v2 import server as _server
|
||||
from openstack import connection
|
||||
from openstack.tests import fakes
|
||||
from openstack.tests.unit import base
|
||||
|
@ -424,7 +425,8 @@ class TestMeta(base.TestCase):
|
|||
json={'security_groups': []})
|
||||
])
|
||||
|
||||
srv = self.cloud.get_openstack_vars(fake_server)
|
||||
srv = self.cloud.get_openstack_vars(
|
||||
_server.Server(**fake_server))
|
||||
|
||||
self.assertEqual(PRIVATE_V4, srv['private_v4'])
|
||||
self.assert_calls()
|
||||
|
@ -482,7 +484,8 @@ class TestMeta(base.TestCase):
|
|||
json={'security_groups': []})
|
||||
])
|
||||
|
||||
srv = self.cloud.get_openstack_vars(fake_server)
|
||||
srv = self.cloud.get_openstack_vars(
|
||||
_server.Server(**fake_server))
|
||||
|
||||
self.assertEqual(PRIVATE_V4, srv['private_v4'])
|
||||
self.assert_calls()
|
||||
|
@ -539,7 +542,8 @@ class TestMeta(base.TestCase):
|
|||
json={'security_groups': []})
|
||||
])
|
||||
|
||||
srv = self.cloud.get_openstack_vars(fake_server)
|
||||
srv = self.cloud.get_openstack_vars(
|
||||
_server.Server(**fake_server))
|
||||
|
||||
self.assertEqual(PRIVATE_V4, srv['private_v4'])
|
||||
self.assert_calls()
|
||||
|
@ -617,7 +621,8 @@ class TestMeta(base.TestCase):
|
|||
json={'security_groups': []})
|
||||
])
|
||||
|
||||
srv = self.cloud.get_openstack_vars(fake_server)
|
||||
srv = self.cloud.get_openstack_vars(
|
||||
_server.Server(**fake_server))
|
||||
|
||||
self.assertEqual(PUBLIC_V4, srv['public_v4'])
|
||||
self.assert_calls()
|
||||
|
@ -669,7 +674,8 @@ class TestMeta(base.TestCase):
|
|||
json={'security_groups': []})
|
||||
])
|
||||
|
||||
srv = self.cloud.get_openstack_vars(fake_server)
|
||||
srv = self.cloud.get_openstack_vars(
|
||||
_server.Server(**fake_server))
|
||||
|
||||
self.assertEqual("10.223.160.141", srv['private_v4'])
|
||||
self.assertEqual("104.130.246.91", srv['public_v4'])
|
||||
|
@ -736,7 +742,8 @@ class TestMeta(base.TestCase):
|
|||
json={'security_groups': []})
|
||||
])
|
||||
|
||||
srv = self.cloud.get_openstack_vars(fake_server)
|
||||
srv = self.cloud.get_openstack_vars(
|
||||
_server.Server(**fake_server))
|
||||
|
||||
self.assertEqual("10.223.160.141", srv['private_v4'])
|
||||
self.assertEqual("104.130.246.91", srv['public_v4'])
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from openstack.compute.v2 import server as server_resource
|
||||
from openstack.image.v2 import image as image_resource
|
||||
from openstack.tests.unit import base
|
||||
|
||||
|
@ -521,141 +520,6 @@ class TestNormalize(base.TestCase):
|
|||
retval = self.cloud._normalize_image(image)
|
||||
self.assertDictEqual(expected, retval)
|
||||
|
||||
def test_normalize_servers_normal(self):
|
||||
res = server_resource.Server(
|
||||
connection=self.cloud,
|
||||
**RAW_SERVER_DICT)
|
||||
expected = {
|
||||
'OS-DCF:diskConfig': u'MANUAL',
|
||||
'OS-EXT-AZ:availability_zone': u'ca-ymq-2',
|
||||
'OS-EXT-SRV-ATTR:host': None,
|
||||
'OS-EXT-SRV-ATTR:hostname': None,
|
||||
'OS-EXT-SRV-ATTR:hypervisor_hostname': None,
|
||||
'OS-EXT-SRV-ATTR:instance_name': None,
|
||||
'OS-EXT-SRV-ATTR:kernel_id': None,
|
||||
'OS-EXT-SRV-ATTR:launch_index': None,
|
||||
'OS-EXT-SRV-ATTR:ramdisk_id': None,
|
||||
'OS-EXT-SRV-ATTR:reservation_id': None,
|
||||
'OS-EXT-SRV-ATTR:root_device_name': None,
|
||||
'OS-EXT-SRV-ATTR:user_data': None,
|
||||
'OS-EXT-STS:power_state': 1,
|
||||
'OS-EXT-STS:task_state': None,
|
||||
'OS-EXT-STS:vm_state': u'active',
|
||||
'OS-SCH-HNT:scheduler_hints': None,
|
||||
'OS-SRV-USG:launched_at': u'2015-08-01T19:52:02.000000',
|
||||
'OS-SRV-USG:terminated_at': None,
|
||||
'accessIPv4': u'',
|
||||
'accessIPv6': u'',
|
||||
'addresses': {
|
||||
u'public': [{
|
||||
u'OS-EXT-IPS-MAC:mac_addr': u'fa:16:3e:9f:46:3e',
|
||||
u'OS-EXT-IPS:type': u'fixed',
|
||||
u'addr': u'2604:e100:1:0:f816:3eff:fe9f:463e',
|
||||
u'version': 6
|
||||
}, {
|
||||
u'OS-EXT-IPS-MAC:mac_addr': u'fa:16:3e:9f:46:3e',
|
||||
u'OS-EXT-IPS:type': u'fixed',
|
||||
u'addr': u'162.253.54.192',
|
||||
u'version': 4}]},
|
||||
'adminPass': None,
|
||||
'az': u'ca-ymq-2',
|
||||
'block_device_mapping': None,
|
||||
'cloud': '_test_cloud_',
|
||||
'config_drive': u'True',
|
||||
'created': u'2015-08-01T19:52:16Z',
|
||||
'created_at': u'2015-08-01T19:52:16Z',
|
||||
'description': None,
|
||||
'disk_config': u'MANUAL',
|
||||
'flavor': {u'id': u'bbcb7eb5-5c8d-498f-9d7e-307c575d3566'},
|
||||
'has_config_drive': True,
|
||||
'host': None,
|
||||
'hostId': u'bd37',
|
||||
'host_id': u'bd37',
|
||||
'host_status': None,
|
||||
'hostname': None,
|
||||
'hypervisor_hostname': None,
|
||||
'id': u'811c5197-dba7-4d3a-a3f6-68ca5328b9a7',
|
||||
'image': {u'id': u'69c99b45-cd53-49de-afdc-f24789eb8f83'},
|
||||
'instance_name': None,
|
||||
'interface_ip': '',
|
||||
'kernel_id': None,
|
||||
'key_name': u'mordred',
|
||||
'launch_index': None,
|
||||
'launched_at': u'2015-08-01T19:52:02.000000',
|
||||
'location': {
|
||||
'cloud': '_test_cloud_',
|
||||
'project': {
|
||||
'domain_id': None,
|
||||
'domain_name': None,
|
||||
'id': u'db92b20496ae4fbda850a689ea9d563f',
|
||||
'name': None},
|
||||
'region_name': u'RegionOne',
|
||||
'zone': u'ca-ymq-2'},
|
||||
'locked': True,
|
||||
'max_count': None,
|
||||
'metadata': {u'group': u'irc', u'groups': u'irc,enabled'},
|
||||
'min_count': None,
|
||||
'name': u'mordred-irc',
|
||||
'networks': {
|
||||
u'public': [
|
||||
u'2604:e100:1:0:f816:3eff:fe9f:463e',
|
||||
u'162.253.54.192']},
|
||||
'os-extended-volumes:volumes_attached': [],
|
||||
'personality': None,
|
||||
'power_state': 1,
|
||||
'private_v4': None,
|
||||
'progress': 0,
|
||||
'project_id': u'db92b20496ae4fbda850a689ea9d563f',
|
||||
'properties': {
|
||||
'OS-DCF:diskConfig': u'MANUAL',
|
||||
'OS-EXT-AZ:availability_zone': u'ca-ymq-2',
|
||||
'OS-EXT-SRV-ATTR:host': None,
|
||||
'OS-EXT-SRV-ATTR:hostname': None,
|
||||
'OS-EXT-SRV-ATTR:hypervisor_hostname': None,
|
||||
'OS-EXT-SRV-ATTR:instance_name': None,
|
||||
'OS-EXT-SRV-ATTR:kernel_id': None,
|
||||
'OS-EXT-SRV-ATTR:launch_index': None,
|
||||
'OS-EXT-SRV-ATTR:ramdisk_id': None,
|
||||
'OS-EXT-SRV-ATTR:reservation_id': None,
|
||||
'OS-EXT-SRV-ATTR:root_device_name': None,
|
||||
'OS-EXT-SRV-ATTR:user_data': None,
|
||||
'OS-EXT-STS:power_state': 1,
|
||||
'OS-EXT-STS:task_state': None,
|
||||
'OS-EXT-STS:vm_state': u'active',
|
||||
'OS-SCH-HNT:scheduler_hints': None,
|
||||
'OS-SRV-USG:launched_at': u'2015-08-01T19:52:02.000000',
|
||||
'OS-SRV-USG:terminated_at': None,
|
||||
'host_status': None,
|
||||
'locked': True,
|
||||
'max_count': None,
|
||||
'min_count': None,
|
||||
'os-extended-volumes:volumes_attached': [],
|
||||
'trusted_image_certificates': None},
|
||||
'public_v4': None,
|
||||
'public_v6': None,
|
||||
'ramdisk_id': None,
|
||||
'region': u'RegionOne',
|
||||
'reservation_id': None,
|
||||
'root_device_name': None,
|
||||
'scheduler_hints': None,
|
||||
'security_groups': [{u'name': u'default'}],
|
||||
'server_groups': None,
|
||||
'status': u'ACTIVE',
|
||||
'locked': True,
|
||||
'tags': [],
|
||||
'task_state': None,
|
||||
'tenant_id': u'db92b20496ae4fbda850a689ea9d563f',
|
||||
'terminated_at': None,
|
||||
'trusted_image_certificates': None,
|
||||
'updated': u'2016-10-15T15:49:29Z',
|
||||
'user_data': None,
|
||||
'user_id': u'e9b21dc437d149858faee0898fb08e92',
|
||||
'vm_state': u'active',
|
||||
'volumes': []}
|
||||
retval = self.cloud._normalize_server(res._to_munch())
|
||||
_assert_server_munch_attributes(self, res, retval)
|
||||
self.assertEqual(expected, retval)
|
||||
|
||||
def test_normalize_secgroups(self):
|
||||
nova_secgroup = dict(
|
||||
id='abc123',
|
||||
|
@ -1114,97 +978,6 @@ class TestStrictNormalize(base.TestCase):
|
|||
self.assertEqual(sorted(expected.keys()), sorted(retval.keys()))
|
||||
self.assertEqual(expected, retval)
|
||||
|
||||
def test_normalize_servers(self):
|
||||
|
||||
self.register_uris([
|
||||
self.get_nova_discovery_mock_dict(),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', 'detail']),
|
||||
json={'servers': [RAW_SERVER_DICT]}),
|
||||
])
|
||||
expected = {
|
||||
'accessIPv4': u'',
|
||||
'accessIPv6': u'',
|
||||
'addresses': {
|
||||
u'public': [{
|
||||
u'OS-EXT-IPS-MAC:mac_addr': u'fa:16:3e:9f:46:3e',
|
||||
u'OS-EXT-IPS:type': u'fixed',
|
||||
u'addr': u'2604:e100:1:0:f816:3eff:fe9f:463e',
|
||||
u'version': 6
|
||||
}, {
|
||||
u'OS-EXT-IPS-MAC:mac_addr': u'fa:16:3e:9f:46:3e',
|
||||
u'OS-EXT-IPS:type': u'fixed',
|
||||
u'addr': u'162.253.54.192',
|
||||
u'version': 4}]},
|
||||
'adminPass': None,
|
||||
'block_device_mapping': None,
|
||||
'created': u'2015-08-01T19:52:16Z',
|
||||
'created_at': u'2015-08-01T19:52:16Z',
|
||||
'description': None,
|
||||
'disk_config': u'MANUAL',
|
||||
'flavor': {u'id': u'bbcb7eb5-5c8d-498f-9d7e-307c575d3566'},
|
||||
'has_config_drive': True,
|
||||
'host': None,
|
||||
'host_id': u'bd37',
|
||||
'hostname': None,
|
||||
'hypervisor_hostname': None,
|
||||
'id': u'811c5197-dba7-4d3a-a3f6-68ca5328b9a7',
|
||||
'image': {u'id': u'69c99b45-cd53-49de-afdc-f24789eb8f83'},
|
||||
'interface_ip': u'',
|
||||
'instance_name': None,
|
||||
'kernel_id': None,
|
||||
'key_name': u'mordred',
|
||||
'launch_index': None,
|
||||
'launched_at': u'2015-08-01T19:52:02.000000',
|
||||
'location': {
|
||||
'cloud': '_test_cloud_',
|
||||
'project': {
|
||||
'domain_id': None,
|
||||
'domain_name': None,
|
||||
'id': u'db92b20496ae4fbda850a689ea9d563f',
|
||||
'name': None},
|
||||
'region_name': u'RegionOne',
|
||||
'zone': u'ca-ymq-2'},
|
||||
'metadata': {u'group': u'irc', u'groups': u'irc,enabled'},
|
||||
'name': u'mordred-irc',
|
||||
'networks': {
|
||||
u'public': [
|
||||
u'2604:e100:1:0:f816:3eff:fe9f:463e',
|
||||
u'162.253.54.192']},
|
||||
'personality': None,
|
||||
'power_state': 1,
|
||||
'private_v4': None,
|
||||
'progress': 0,
|
||||
'properties': {
|
||||
'host_status': None,
|
||||
'locked': True,
|
||||
'max_count': None,
|
||||
'min_count': None,
|
||||
'trusted_image_certificates': None
|
||||
},
|
||||
'public_v4': None,
|
||||
'public_v6': None,
|
||||
'ramdisk_id': None,
|
||||
'reservation_id': None,
|
||||
'root_device_name': None,
|
||||
'scheduler_hints': None,
|
||||
'security_groups': [{u'name': u'default'}],
|
||||
'server_groups': None,
|
||||
'status': u'ACTIVE',
|
||||
'tags': [],
|
||||
'task_state': None,
|
||||
'terminated_at': None,
|
||||
'updated': u'2016-10-15T15:49:29Z',
|
||||
'user_data': None,
|
||||
'user_id': u'e9b21dc437d149858faee0898fb08e92',
|
||||
'vm_state': u'active',
|
||||
'volumes': []}
|
||||
self.cloud.strict_mode = True
|
||||
retval = self.cloud.list_servers(bare=True)[0]
|
||||
_assert_server_munch_attributes(self, expected, retval)
|
||||
self.assertEqual(expected, retval)
|
||||
|
||||
def test_normalize_secgroups(self):
|
||||
nova_secgroup = dict(
|
||||
id='abc123',
|
||||
|
|
Loading…
Reference in New Issue