def setUpClass(cls):
        testClient = super(TestXDCCPInterop, cls).getClsTestClient()
        cls.apiclient = testClient.getApiClient()
        cls.services = testClient.getParsedTestDataConfig()
        cls.hypervisor = cls.testClient.getHypervisorInfo()
        # Get Zone, Domain and templates
        cls.domain = get_domain(cls.apiclient)
        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
        cls.services['mode'] = cls.zone.networktype

        hosts = list_hosts(cls.apiclient, type="Routing")

        if hosts is None:
            raise unittest.SkipTest(
                "There are no hypervisor's available.Check list hosts response"
            )
        for hypervisorhost in hosts:
            if hypervisorhost.hypervisor == "XenServer":
                cls.uploadtemplateformat = "VHD"
                break
            elif hypervisorhost.hypervisor == "VMware":
                cls.uploadtemplateformat = "OVA"
                break
            elif hypervisorhost.hypervisor == "KVM":
                cls.uploadtemplateformat = "KVM"
            break

        if cls.uploadtemplateformat == "KVM":
            raise unittest.SkipTest("Interop is not supported on KVM")

        cls.uploadurl = cls.services["interop"][
            cls.uploadtemplateformat]["url"]

        cls.xtemplate = get_template(cls.apiclient, cls.zone.id,
                                     cls.services["ostype"])
        if cls.xtemplate == FAILED:
            assert False, "get_template() failed to return template with description %s" % cls.services[
                "ostype"]

        cls.account = Account.create(cls.apiclient,
                                     cls.services["account"],
                                     domainid=cls.domain.id,
                                     admin=False)
        cls.debug(cls.account.id)

        cls.service_offering = ServiceOffering.create(
            cls.apiclient, cls.services["service_offerings"]["large"])

        cls.template = get_windows_template(cls.apiclient,
                                            cls.zone.id,
                                            ostype_desc="Windows 8 (64-bit)")
        #cls.template = get_windows_template(cls.apiclient, cls.zone.id ,ostype_desc="Windows Server 2012 (64-bit)")

        if cls.template == FAILED:
            if "http://pleaseupdateURL/" in cls.uploadurl:
                raise unittest.SkipTest(
                    "Check Test Data file if it has the valid template URL")
            cls.template = Template.register(
                cls.apiclient,
                cls.services["interop"][cls.uploadtemplateformat],
                zoneid=cls.zone.id,
                domainid=cls.account.domainid,
                account=cls.account.name)
            timeout = cls.services["vgpu"]["timeout"]

            while True:
                time.sleep(cls.services["vgpu"]["sleep"])
                list_template_response = Template.list(
                    cls.apiclient,
                    templatefilter=cls.services["templatefilter"],
                    id=cls.template.id)
                if (isinstance(list_template_response, list)) is not True:
                    raise unittest.SkipTest(
                        "Check list template api response returns a valid list"
                    )

                if len(list_template_response) is None:
                    raise unittest.SkipTest(
                        "Check template registered is in List Templates")

                template_response = list_template_response[0]
                if template_response.isready:
                    break

                if timeout == 0:
                    raise unittest.SkipTest(
                        "Failed to download template(ID: %s). " %
                        template_response.id)

                timeout = timeout - 1
        cls.volume = []

        # Set Zones and disk offerings
        cls.services["small"]["zoneid"] = cls.zone.id
        cls.services["small"]["template"] = cls.template.id

        user_data = ''.join(
            random.choice(string.ascii_uppercase + string.digits)
            for x in range(2500))
        cls.services["virtual_machine"]["userdata"] = user_data

        #        cls.services["large"]["zoneid"] = cls.zone.id
        #        cls.services["large"]["template"] = cls.template.id

        cls.virtual_machine = VirtualMachine.create(
            cls.apiclient,
            cls.services["small"],
            accountid=cls.account.name,
            domainid=cls.account.domainid,
            serviceofferingid=cls.service_offering.id,
            mode=cls.services['mode'],
            startvm="false")
        cls.user_api_client = cls.testClient.getUserApiClient(
            UserName=cls.account.name, DomainName=cls.account.domain)

        cls.cleanup = [cls.service_offering, cls.account]
    def setUpClass(cls):
        testClient = super(TestvGPUWindowsVm, cls).getClsTestClient()
        cls.testdata = cls.testClient.getParsedTestDataConfig()
        cls.apiclient = cls.testClient.getApiClient()
        cls._cleanup = []
        hosts = list_hosts(
               cls.apiclient,
               hypervisor="XenServer"
               )
        if hosts is None:
            raise unittest.SkipTest("There are no XenServers available. GPU feature is supported only on XenServer.Check listhosts response")
        else:
             cls.k140qgpuhosts=0
             cls.k120qgpuhosts=0
             cls.k100gpuhosts=0
             cls.k260qgpuhosts=0
             cls.k240qgpuhosts=0
             cls.k220qgpuhosts=0
             cls.k200gpuhosts=0
             cls.k1passthroughgpuhosts=0
             cls.k2passthroughgpuhosts=0
             k2hosts=0
             k1hosts=0

             for ghost in hosts :
                 if ghost.hypervisorversion >= "6.2.0":
                    sshClient = SshClient(host=ghost.ipaddress, port=22, user='******',passwd="host_password")

                    if ghost.hypervisorversion == "6.2.0":
                       res = sshClient.execute("xe patch-list uuid=0850b186-4d47-11e3-a720-001b2151a503")
                       if len(res) == 0:
                           continue
                    k1card= sshClient.execute("lspci | grep \"GRID K1\"")
                    k2card= sshClient.execute("lspci | grep \"GRID K2\"")

                    if len(k2card) !=0:
                          k2hosts=k2hosts+1
                          k260q = sshClient.execute("xe vgpu-type-list model-name=\"GRID K260Q\"")
                          k240q = sshClient.execute("xe vgpu-type-list model-name=\"GRID K240Q\"")
                          k220q = sshClient.execute("xe vgpu-type-list model-name=\"GRID K220Q\"")
                          k200 = sshClient.execute("xe vgpu-type-list model-name=\"GRID K200\"")
                          k2passthrough = sshClient.execute("xe vgpu-type-list model-name='passthrough'")
                          if (len(k260q) == 0) and len(k240q) == 0  and len(k220q) == 0 and len(k200) == 0 and len(k2passthrough) == 0: 
                              continue
                          else:
                               if len(k260q) != 0 :
                                  cls.k260qgpuhosts=cls.k260qgpuhosts+1
                               if len(k240q) != 0 :
                                  cls.k240qgpuhosts=cls.k240qgpuhosts+1
                               if len(k220q) != 0 :
                                  cls.k220qgpuhosts=cls.k220qgpuhosts+1
                               if len(k200) != 0 :
                                  cls.k200gpuhosts=cls.k200gpuhosts+1
                               if len(k2passthrough) != 0:
                                  cls.k2passthroughgpuhosts=cls.k2passthroughgpuhosts+1

                    if len(k1card) != 0:
                            k1hosts=k1hosts+1
                            k100 = sshClient.execute("xe vgpu-type-list model-name=\"GRID K100\"")
                            k120q = sshClient.execute("xe vgpu-type-list model-name=\"GRID K120Q\"")
                            k140q = sshClient.execute("xe vgpu-type-list model-name=\"GRID K140Q\"")
                            k1passthrough = sshClient.execute("xe vgpu-type-list model-name='passthrough'")
                            if len(k100) == 0 and len(k120q) == 0 and len(k140q) == 0 and len(k1passthrough) == 0:
                                continue
                            else:
                                if len(k140q) != 0 :
                                   cls.k140qgpuhosts=cls.k140qgpuhosts+1
                                if len(k120q) != 0 :
                                   cls.k120qgpuhosts=cls.k120qgpuhosts+1
                                if len(k100) != 0 :
                                   cls.k100gpuhosts=cls.k100gpuhosts+1
                                if len(k1passthrough) != 0 :
                                   cls.k1passthroughgpuhosts=cls.k1passthroughgpuhosts+1

        if (k1hosts == 0) and (k2hosts == 0):
           raise unittest.SkipTest("No XenServer available with GPU Drivers installed")

        cls.zone = get_zone(cls.apiclient, cls.testClient.getZoneForTests())
        cls.domain = get_domain(cls.apiclient)
        cls.account = Account.create(
               cls.apiclient,
               cls.testdata["account"],
               domainid=cls.domain.id
               )

        cls.template = get_windows_template(cls.apiclient, cls.zone.id ,ostype_desc="Windows 8 (64-bit)")

        if  cls.template == FAILED:
            cls.template = Template.register(
                   cls.apiclient,
                   cls.testdata["vgpu"] ["templateregister1"],
                   hypervisor = "XenServer",
                   zoneid=cls.zone.id,
                   domainid=cls.account.domainid,
                   account=cls.account.name
                   )
            timeout = cls.testdata["vgpu"]["timeout"]

            while True:
                  time.sleep(cls.testdata["vgpu"]["sleep"])
                  list_template_response = Template.list(
                       cls.apiclient,
                       templatefilter=\
                       cls.testdata["templatefilter"],
                       id=cls.template.id
                        )
                  if (isinstance(list_template_response, list)) is not True:
                      raise unittest.SkipTest("Check list template api response returns a valid list")

                  if len(list_template_response) is None :
                      raise unittest.SkipTest("Check template registered is in List Templates")

                  template_response = list_template_response[0]
                  if template_response.isready == True:
                      break

                  if timeout == 0:
                      raise unittest.SkipTest("Failed to download template(ID: %s)" % template_response.id)

                  timeout = timeout - 1

        cls._cleanup = [
                         cls.account
                        ]
    def setUpClass(cls):
        testClient = super(TestXDCCPInterop, cls).getClsTestClient()
        cls.apiclient = testClient.getApiClient()
        cls.services = testClient.getParsedTestDataConfig()
        cls.hypervisor = cls.testClient.getHypervisorInfo()
        # Get Zone, Domain and templates
        cls.domain = get_domain(cls.apiclient)
        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
        cls.services['mode'] = cls.zone.networktype

        hosts = list_hosts(
               cls.apiclient,
               type="Routing"
           )
   
        if hosts is None:
               raise unittest.SkipTest(
                   "There are no hypervisor's available.Check list hosts response")
        for hypervisorhost in hosts :
                    if hypervisorhost.hypervisor == "XenServer":
                        cls.uploadtemplateformat="VHD"
                        break
                    elif hypervisorhost.hypervisor== "VMware":
                        cls.uploadtemplateformat="OVA"
                        break
                    elif hypervisorhost.hypervisor== "KVM":
                       cls.uploadtemplateformat="KVM"
                    break

        if cls.uploadtemplateformat=="KVM":
            assert False, "Interop is not supported on KVM"

        cls.uploadurl=cls.services["interop"][cls.uploadtemplateformat]["url"]
  
        cls.xtemplate = get_template(
            cls.apiclient,
            cls.zone.id,
            cls.services["ostype"]
        )
        if cls.xtemplate == FAILED:
            assert False, "get_template() failed to return template with description %s" % cls.services["ostype"]

        cls.account = Account.create(
            cls.apiclient,
            cls.services["account"],
            domainid=cls.domain.id,
            admin=False
        )
        cls.debug(cls.account.id)

        cls.service_offering = ServiceOffering.create(
            cls.apiclient,
            cls.services["service_offerings"]["large"]
        )

        cls.template = get_windows_template(
            cls.apiclient,
            cls.zone.id,
            ostype_desc="Windows 8 (64-bit)")
        #cls.template = get_windows_template(cls.apiclient, cls.zone.id ,ostype_desc="Windows Server 2012 (64-bit)")

        if cls.template == FAILED:
            if "http://pleaseupdateURL/" in cls.uploadurl:
                raise unittest.SkipTest(
                    "Check Test Data file if it has the valid template URL")
            cls.template = Template.register(
                cls.apiclient,
                cls.services["interop"][cls.uploadtemplateformat],
                zoneid=cls.zone.id,
                domainid=cls.account.domainid,
                account=cls.account.name
            )
            timeout = cls.services["vgpu"]["timeout"]

            while True:
                time.sleep(cls.services["vgpu"]["sleep"]) 
                list_template_response = Template.list(
                    cls.apiclient,
                    templatefilter=cls.services["templatefilter"],
                    id=cls.template.id
                )
                if (isinstance(list_template_response, list)) is not True:
                    raise unittest.SkipTest(
                        "Check list template api response returns a valid list")

                if len(list_template_response) is None:
                    raise unittest.SkipTest(
                        "Check template registered is in List Templates")

                template_response = list_template_response[0]
                if template_response.isready:
                    break

                if timeout == 0:
                    raise unittest.SkipTest(
                        "Failed to download template(ID: %s). " %
                        template_response.id)

                timeout = timeout - 1
        cls.volume=[]

        # Set Zones and disk offerings
        cls.services["small"]["zoneid"] = cls.zone.id
        cls.services["small"]["template"] = cls.template.id

        user_data = ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(2500))
        cls.services["virtual_machine"]["userdata"] = user_data


#        cls.services["large"]["zoneid"] = cls.zone.id
#        cls.services["large"]["template"] = cls.template.id

        cls.virtual_machine = VirtualMachine.create(
            cls.apiclient,
            cls.services["small"],
            accountid=cls.account.name,
            domainid=cls.account.domainid,
            serviceofferingid=cls.service_offering.id,  
            mode=cls.services['mode'],
            startvm="false"
        )
        cls.user_api_client = cls.testClient.getUserApiClient(
            UserName=cls.account.name,
            DomainName=cls.account.domain
        )


        cls.cleanup = [
            cls.service_offering,
            cls.account
        ]
    def setUpClass(cls):
        testClient = super(TestvGPUWindowsVm, cls).getClsTestClient()
        cls.testdata = cls.testClient.getParsedTestDataConfig()
        cls.apiclient = cls.testClient.getApiClient()
        cls._cleanup = []
        hosts = list_hosts(cls.apiclient, hypervisor="XenServer")
        if hosts is None:
            raise unittest.SkipTest(
                "There are no XenServers available. GPU feature is supported only on XenServer.Check listhosts response"
            )
        else:
            cls.k140qgpuhosts = 0
            cls.k120qgpuhosts = 0
            cls.k100gpuhosts = 0
            cls.k260qgpuhosts = 0
            cls.k240qgpuhosts = 0
            cls.k220qgpuhosts = 0
            cls.k200gpuhosts = 0
            cls.k1passthroughgpuhosts = 0
            cls.k2passthroughgpuhosts = 0
            k2hosts = 0
            k1hosts = 0

            for ghost in hosts:
                if ghost.hypervisorversion >= "6.2.0":
                    sshClient = SshClient(host=ghost.ipaddress,
                                          port=22,
                                          user='******',
                                          passwd="host_password")

                    if ghost.hypervisorversion == "6.2.0":
                        res = sshClient.execute(
                            "xe patch-list uuid=0850b186-4d47-11e3-a720-001b2151a503"
                        )
                        if len(res) == 0:
                            continue
                    k1card = sshClient.execute("lspci | grep \"GRID K1\"")
                    k2card = sshClient.execute("lspci | grep \"GRID K2\"")

                    if len(k2card) != 0:
                        k2hosts = k2hosts + 1
                        k260q = sshClient.execute(
                            "xe vgpu-type-list model-name=\"GRID K260Q\"")
                        k240q = sshClient.execute(
                            "xe vgpu-type-list model-name=\"GRID K240Q\"")
                        k220q = sshClient.execute(
                            "xe vgpu-type-list model-name=\"GRID K220Q\"")
                        k200 = sshClient.execute(
                            "xe vgpu-type-list model-name=\"GRID K200\"")
                        k2passthrough = sshClient.execute(
                            "xe vgpu-type-list model-name='passthrough'")
                        if (len(k260q) == 0
                            ) and len(k240q) == 0 and len(k220q) == 0 and len(
                                k200) == 0 and len(k2passthrough) == 0:
                            continue
                        else:
                            if len(k260q) != 0:
                                cls.k260qgpuhosts = cls.k260qgpuhosts + 1
                            if len(k240q) != 0:
                                cls.k240qgpuhosts = cls.k240qgpuhosts + 1
                            if len(k220q) != 0:
                                cls.k220qgpuhosts = cls.k220qgpuhosts + 1
                            if len(k200) != 0:
                                cls.k200gpuhosts = cls.k200gpuhosts + 1
                            if len(k2passthrough) != 0:
                                cls.k2passthroughgpuhosts = cls.k2passthroughgpuhosts + 1

                    if len(k1card) != 0:
                        k1hosts = k1hosts + 1
                        k100 = sshClient.execute(
                            "xe vgpu-type-list model-name=\"GRID K100\"")
                        k120q = sshClient.execute(
                            "xe vgpu-type-list model-name=\"GRID K120Q\"")
                        k140q = sshClient.execute(
                            "xe vgpu-type-list model-name=\"GRID K140Q\"")
                        k1passthrough = sshClient.execute(
                            "xe vgpu-type-list model-name='passthrough'")
                        if len(k100) == 0 and len(k120q) == 0 and len(
                                k140q) == 0 and len(k1passthrough) == 0:
                            continue
                        else:
                            if len(k140q) != 0:
                                cls.k140qgpuhosts = cls.k140qgpuhosts + 1
                            if len(k120q) != 0:
                                cls.k120qgpuhosts = cls.k120qgpuhosts + 1
                            if len(k100) != 0:
                                cls.k100gpuhosts = cls.k100gpuhosts + 1
                            if len(k1passthrough) != 0:
                                cls.k1passthroughgpuhosts = cls.k1passthroughgpuhosts + 1

        if (k1hosts == 0) and (k2hosts == 0):
            raise unittest.SkipTest(
                "No XenServer available with GPU Drivers installed")

        cls.zone = get_zone(cls.apiclient, cls.testClient.getZoneForTests())
        cls.domain = get_domain(cls.apiclient)
        cls.account = Account.create(cls.apiclient,
                                     cls.testdata["account"],
                                     domainid=cls.domain.id)

        cls.template = get_windows_template(cls.apiclient,
                                            cls.zone.id,
                                            ostype_desc="Windows 8 (64-bit)")

        if cls.template == FAILED:
            cls.template = Template.register(
                cls.apiclient,
                cls.testdata["vgpu"]["templateregister1"],
                hypervisor="XenServer",
                zoneid=cls.zone.id,
                domainid=cls.account.domainid,
                account=cls.account.name)
            timeout = cls.testdata["vgpu"]["timeout"]

            while True:
                time.sleep(cls.testdata["vgpu"]["sleep"])
                list_template_response = Template.list(
                     cls.apiclient,
                     templatefilter=\
                     cls.testdata["templatefilter"],
                     id=cls.template.id
                      )
                if (isinstance(list_template_response, list)) is not True:
                    raise unittest.SkipTest(
                        "Check list template api response returns a valid list"
                    )

                if len(list_template_response) is None:
                    raise unittest.SkipTest(
                        "Check template registered is in List Templates")

                template_response = list_template_response[0]
                if template_response.isready == True:
                    break

                if timeout == 0:
                    raise unittest.SkipTest(
                        "Failed to download template(ID: %s)" %
                        template_response.id)

                timeout = timeout - 1

        cls._cleanup = [cls.account]