Merge "Disassociate fip before reuse it" into mcp/epoxy
diff --git a/tempest/scenario/test_server_basic_ops.py b/tempest/scenario/test_server_basic_ops.py
index f2249f2..ce1f43b 100644
--- a/tempest/scenario/test_server_basic_ops.py
+++ b/tempest/scenario/test_server_basic_ops.py
@@ -13,6 +13,10 @@
# License for the specific language governing permissions and limitations
# under the License.
+import base64
+import gzip
+import testtools
+
from oslo_serialization import jsonutils as json
from tempest.common import utils
@@ -141,6 +145,52 @@
waiters.wait_for_server_termination(
self.servers_client, self.instance['id'], ignore_error=False)
+ @decorators.idempotent_id('372939d1-2a96-4985-9360-7b222373107b')
+ @testtools.skipIf(
+ not CONF.compute_feature_enabled.metadata_service,
+ 'Metadata service is disabled')
+ @utils.services('compute', 'network')
+ def test_gzipped_user_data(self):
+ """Create a server with gzipped user data.
+
+ Verifies that a server with gzipped user data can be
+ successfully created and the user_data can be obtained from Neutron
+ metadata agent.
+
+ """
+ # Prepare user_data shell script to be executed in the instance
+ # upon boot
+ user_data_script = "#!/bin/sh\necho 'gzipped user data' > /tmp/test"
+ gzipped_data = gzip.compress(user_data_script.encode('utf-8'))
+ encoded_user_data = base64.b64encode(gzipped_data).decode('utf-8')
+
+ # Create a test server
+ keypair = self.create_keypair()
+ security_group = self.create_security_group()
+ self.instance = self.create_server(
+ keypair=keypair,
+ wait_until='SSHABLE',
+ security_groups=[{'name': security_group['name']}],
+ user_data=encoded_user_data)
+
+ server_ip = self.get_server_ip(self.instance)
+ ssh_client = self.get_remote_client(
+ ip_address=server_ip,
+ username=self.ssh_user,
+ private_key=keypair['private_key'],
+ server=self.instance)
+
+ # Check test data and user_data script created upon instance boot
+ output = ssh_client.exec_command(
+ 'cat /tmp/test'
+ )
+ self.assertEqual('gzipped user data\n', output,
+ 'Failed to check gzipped user data')
+ curl_request = ssh_client.exec_command(
+ 'curl http://169.254.169.254/openstack/latest/user_data')
+ self.assertEqual(user_data_script, curl_request,
+ 'Failed to check user_data script')
+
class TestServerBasicOpsRaw(TestServerBasicOpsBase):