def setup_continuous_delivery(self, swap_with_slot, app_type_details, cd_project_url, create_account,
                                  vsts_app_auth_token, test, webapp_list):
        """
        Use this method to setup Continuous Delivery of an Azure web site from a source control repository.
        :param swap_with_slot: the slot to use for deployment
        :param app_type_details: the details of app that will be deployed. i.e. app_type = Python, python_framework = Django etc.
        :param cd_project_url: CD Project url in the format of https://<accountname>.visualstudio.com/<projectname> 
        :param create_account: Boolean value to decide if account need to be created or not
        :param vsts_app_auth_token: Authentication token for vsts app
        :param test: Load test webapp name
        :param webapp_list: Existing webapp list
        :return: a message indicating final status and instructions for the user
        """

        branch = self._repo_info.branch or 'refs/heads/master'
        self._validate_cd_project_url(cd_project_url)
        vsts_account_name = self._get_vsts_account_name(cd_project_url)

        # Verify inputs before we start generating tokens
        source_repository, account_name, team_project_name = self._get_source_repository(self._repo_info.url,
            self._repo_info.git_token, branch, self._azure_info.credentials, 
            self._repo_info._private_repo_username, self._repo_info._private_repo_password)
        self._verify_vsts_parameters(vsts_account_name, source_repository)
        vsts_account_name = vsts_account_name or account_name
        cd_project_name = team_project_name or self._azure_info.website_name
        account_url = 'https://{}.visualstudio.com'.format(quote(vsts_account_name))
        portalext_account_url = 'https://{}.portalext.visualstudio.com'.format(quote(vsts_account_name))

        # VSTS Account using AEX APIs
        account_created = False
        if create_account:
            self.create_vsts_account(self._azure_info.credentials, vsts_account_name)
            account_created = True
        
        # Create ContinuousDelivery client
        cd = ContinuousDelivery('3.2-preview.1', portalext_account_url, self._azure_info.credentials)

        # Construct the config body of the continuous delivery call
        build_configuration = self._get_build_configuration(app_type_details)
        source = ProvisioningConfigurationSource('codeRepository', source_repository, build_configuration)
        auth_info = AuthorizationInfo('Headers', AuthorizationInfoParameters('Bearer ' + vsts_app_auth_token))
        target = self.get_provisioning_configuration_target(auth_info, swap_with_slot, test, webapp_list)
        ci_config = CiConfiguration(CiArtifact(name=cd_project_name))
        config = ProvisioningConfiguration(None, source, target, ci_config)

        # Configure the continuous deliver using VSTS as a backend
        response = cd.provisioning_configuration(config)
        if response.ci_configuration.result.status == 'queued':
            final_status = self._wait_for_cd_completion(cd, response)
            return self._get_summary(final_status, account_url, vsts_account_name, account_created, self._azure_info.subscription_id,
                                     self._azure_info.resource_group_name, self._azure_info.website_name)
        else:
            raise RuntimeError('Unknown status returned from provisioning_configuration: ' + response.ci_configuration.result.status)