[
https://issues.apache.org/jira/browse/CLOUDSTACK-9012?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15132143#comment-15132143
]
ASF GitHub Bot commented on CLOUDSTACK-9012:
--------------------------------------------
Github user shwetaag commented on a diff in the pull request:
https://github.com/apache/cloudstack/pull/1011#discussion_r51857877
--- Diff: test/integration/component/test_coreos.py ---
@@ -0,0 +1,291 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+""" P1 tests for coreos template and vm
+"""
+
+from marvin.lib.base import (
+ VirtualMachine,
+ ServiceOffering,
+ Account,
+ SSHKeyPair,
+ Host, Template)
+from marvin.lib.common import (
+ get_zone,
+ get_template,
+ list_routers)
+from marvin.lib.utils import (
+ cleanup_resources,
+ get_hypervisor_type,
+ get_process_status)
+from marvin.cloudstackTestCase import cloudstackTestCase
+# Import System modules
+import tempfile
+import time
+import os
+import base64
+from nose.plugins.attrib import attr
+from marvin.sshClient import SshClient
+
+
+class TestDeployVmWithCoreosTemplate(cloudstackTestCase):
+ """Tests for deploying VM using coreos template
+ """
+
+ @classmethod
+ def setUpClass(cls):
+ cls._cleanup = []
+ cls.testClient = super(
+ TestDeployVmWithCoreosTemplate,
+ cls).getClsTestClient()
+ cls.api_client = cls.testClient.getApiClient()
+ cls.services = cls.testClient.getParsedTestDataConfig()
+ cls.zone = get_zone(cls.api_client,
cls.testClient.getZoneForTests())
+ cls.service_offering = ServiceOffering.create(
+ cls.api_client,
services=cls.services["service_offerings"]["medium"])
+ cls.account = Account.create(
+ cls.api_client, services=cls.services["account"])
+ cls.cleanup = [cls.account]
+ cls.template = get_template(
+ cls.api_client,
+ cls.zone.id,
+ cls.services["ostype"]
+ )
+ cls.services["coreos"][
+ "hypervisor"] = cls.testClient.getHypervisorInfo()
+ cls.userdata = '#cloud-config\n\ncoreos:\n units:\n - name:
docker.service\n command: start\n ' \
+ '- name: web.service\n command: start\n
content: |\n [Unit]\n ' \
+ 'After=docker.service\n
Requires=docker.service\n Description=Starts web server ' \
+ 'container\n [Service]\n
TimeoutStartSec=0\n ' \
+ 'ExecStartPre=/usr/bin/docker pull httpd:2.4\n
' \
+ 'ExecStart=/usr/bin/docker run -d -p 8000:80
httpd:2.4'
+ cls.services["virtual_machine"]["userdata"] = cls.userdata
+
+ cls.keypair = SSHKeyPair.create(
+ cls.api_client,
+ name="coreos",
+ account=cls.account.name,
+ domainid=cls.account.domainid
+ )
+ cls.debug("Created a new keypair with name: %s" % cls.keypair.name)
+
+ cls.debug("Writing the private key to local file")
+ cls.keyPairFilePath = tempfile.gettempdir() + os.sep +
cls.keypair.name
+ # Clenaup at end of execution
+ cls.cleanup.append(cls.keyPairFilePath)
+
+ cls.debug("File path: %s" % cls.keyPairFilePath)
+
+ f = open(cls.keyPairFilePath, "w+")
+ f.write(cls.keypair.privatekey)
+ f.close()
+ os.system("chmod 400 " + cls.keyPairFilePath)
+ cls.mgtSvrDetails = cls.config.__dict__["mgtSvr"][0].__dict__
+ return
+
+ def setUp(self):
+ self.api_client = self.testClient.getApiClient()
+ return
+
+ def tearDown(self):
+ # Clean up, terminate the created volumes
+ cleanup_resources(self.api_client, self.cleanup)
+ return
+
+ @classmethod
+ def tearDownClass(cls):
+ try:
+ cleanup_resources(cls.api_client, cls._cleanup)
+ except Exception as e:
+ raise Exception("Warning: Exception during cleanup : %s" % e)
+ return
+
+ @attr(tags=["advanced"], required_hardware="true")
+ def test1_coreos_VM_creation(self):
+
+ self.hypervisor = str(get_hypervisor_type(self.api_client)).lower()
+ self.services["virtual_machine"][
+ "hypervisor"] = self.hypervisor.upper()
+ if self.hypervisor == "vmware":
+ self.services["coreos"][
+ "url"] = self.services["coreos"]["urlvmware"]
+ self.services["coreos"]["format"] = "OVA"
+ elif self.hypervisor == "xenserver":
+ self.services["coreos"][
+ "url"] = self.services["coreos"]["urlxen"]
+ self.services["coreos"]["format"] = "VHD"
+ elif self.hypervisor == "kvm":
+ self.services["coreos"][
+ "url"] = self.services["coreos"]["urlkvm"]
+ self.services["coreos"]["format"] = "QCOW2"
+ elif self.hypervisor == "hyperv":
+ self.services["coreos"][
+ "url"] = self.services["coreos"]["urlxen"]
+ self.services["coreos"]["format"] = "VHD"
+
+ template_created = Template.register(
+ self.api_client,
+ self.services["coreos"],
+ self.zone.id,
+ account=self.account.name,
+ domainid=self.account.domainid)
+ self.assertIsNotNone(template_created, "Template creation failed")
+ # Wait for template to download
+ template_created.download(self.api_client)
+ self.cleanup.append(template_created)
+ # Wait for template status to be changed across
+ time.sleep(self.services["sleep"])
+
+ self.debug("Deploying instance in the account: %s" %
self.account.name)
+
+ virtual_machine = VirtualMachine.create(
+ self.api_client,
+ self.services["virtual_machine"],
+ templateid=template_created.id,
+ accountid=self.account.name,
+ domainid=self.account.domainid,
+ zoneid=self.zone.id,
+ serviceofferingid=self.service_offering.id,
+ keypair=self.keypair.name,
+ hypervisor=self.hypervisor,
+ mode=self.zone.networktype,
+ method="POST"
+
+ )
+
+ self.debug("Check if the VM is properly deployed or not?")
+ vms = VirtualMachine.list(
+ self.api_client,
+ id=virtual_machine.id,
+ listall=True
+ )
+ self.assertEqual(
+ isinstance(vms, list),
+ True,
+ "List VMs should return the valid list"
+ )
+ vm = vms[0]
+ self.assertEqual(
+ vm.state,
+ "Running",
+ "VM state should be running after deployment"
+ )
+ virtual_machine.stop(self.api_client)
+ virtual_machine.update(
+ self.api_client,
+ userdata=base64.b64encode(
+ self.userdata))
+ virtual_machine.start(self.api_client)
+ self.assertEqual(
+ vm.state,
+ "Running",
+ "VM state should be running"
+ )
+ # Wait for docker service to start
+ time.sleep(300)
+
+ # Should be able to SSH VM
+ try:
+
+ self.debug("SSH into VM: %s" % virtual_machine.ssh_ip)
+ cmd = "docker ps"
+ ssh = SshClient(virtual_machine.ssh_ip, 22, "core",
+ "", keyPairFiles=self.keyPairFilePath)
+ result = ssh.execute(cmd)
+
+ except Exception as e:
+ self.fail(
+ "SSH Access failed for %s: %s" %
+ (virtual_machine.ssh_ip, e)
+ )
+
+ res = str(result)
+ self.assertEqual(
+ res.__contains__("httpd"),
+ True,
+ "docker web service not started in coreos vm ")
+
+ if self.zone.networktype == "Basic":
+ list_router_response = list_routers(
+ self.api_client,
+ listall="true"
+ )
+ else:
+ list_router_response = list_routers(
+ self.api_Client,
--- End diff --
Will make these changes and send a new PR
> coreos test case automation
> ---------------------------
>
> Key: CLOUDSTACK-9012
> URL: https://issues.apache.org/jira/browse/CLOUDSTACK-9012
> Project: CloudStack
> Issue Type: Test
> Security Level: Public(Anyone can view this level - this is the
> default.)
> Components: Automation
> Reporter: shweta agarwal
>
> Automated a full scenario of coreos guest OS support:
> it includes registering coreos templates present at
> http://dl.openvm.eu/cloudstack/coreos/x86_64/
> 1. based on hypervisor types of zone
> 2. creating ssh key pair
> 3. creating a sample user data
> 4. creating a coreos virtual machine using this ssh keypair and userdata
> 5. verifying ssh access to coreo os machine using keypair and core username
> 6. verifying userdata is applied on virtual machine and the service asked in
> sample data is actually running
> 7. Verifying userdata in router vm as well
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)