Esempio n. 1
0
def deploy(version):
    """ For docs, see https://github.com/pkimber/cloud_docs """
    env.user = '******'
    folder_info = FolderInfo(env.site_info, version)
    # validate
    if exists(folder_info.install()):
        raise Exception(
            'Install folder {} already exists'.format(folder_info.install())
        )
    print(green(folder_info.install()))
    # create folders
    if not exists(folder_info.deploy()):
        run('mkdir {}'.format(folder_info.deploy()))
    run('mkdir {}'.format(folder_info.install()))
    run('mkdir {}'.format(folder_info.install_temp()))
    if env.site_info.is_php:
        deploy_php(folder_info, env.site_info)
    else:
        deploy_django(folder_info, env.site_info, version)
    # symbolic link
    link_install_to_live_folder(folder_info.install(), folder_info.live())
    if env.site_info.is_django():
        django_post_deploy(folder_info)
    # Post deploy
    run_post_deploy_test(env.site_info)
Esempio n. 2
0
def reindex():
    """ For docs, see https://github.com/pkimber/cloud_docs """
    env.user = '******'
    print(green("Haystack - reindex: '{}' on '{}' ").format(
        env.site_name, env.hosts
    ))
    folder_info = FolderInfo(env.site_info)
    command = DjangoCommand(
        folder_info.live(),
        folder_info.live_venv(),
        env.site_info
    )
    command.haystack_index()
Esempio n. 3
0
def haystack_index_clear(prefix, name):
    """
    e.g:
    fab -H [email protected] haystack_index:prefix=pkimber,name=csw_web
    """
    print(green("Haystack - reindex: '{}' on '{}' ").format(
        name, env.host_string)
    )
    confirm = ''
    while confirm not in ('Y', 'N'):
        confirm = prompt("Are you sure you want to clear the Haystack index (Y/N)?")
        confirm = confirm.strip().upper()
    if not confirm == 'Y':
        abort("exit")
    folder_info = FolderInfo(name)
    command = DjangoCommand(
        folder_info.live(),
        folder_info.live_venv(),
        env.site_info
    )
    command.haystack_index_clear()
Esempio n. 4
0
class TestFolderInfo(unittest.TestCase):

    def _site_info(self):
        module_folder = os.path.dirname(os.path.realpath(__file__))
        folder = os.path.join(module_folder, 'data', 'sites', 'data')
        folder = os.path.abspath(folder)
        return SiteInfo('drop-temp', 'csw_web', folder)

    def _site_info_testing(self):
        module_folder = os.path.dirname(os.path.realpath(__file__))
        folder = os.path.join(module_folder, 'data', 'sites', 'data_testing')
        folder = os.path.abspath(folder)
        return SiteInfo('drop-test', 'kb_couk', folder)

    def setUp(self):
        self.folder = FolderInfo(self._site_info())

    def test_folder_deploy(self):
        self.assertEquals(
            '/home/web/repo/project/csw_web/deploy',
            self.folder.deploy()
        )

    def test_folder_install(self):
        folder = FolderInfo(self._site_info(), '1.2.34')
        self.assertIn(
            '/home/web/repo/project/csw_web/deploy',
            folder.install()
        )

    def test_folder_install_temp(self):
        folder = FolderInfo(self._site_info(), '1.2.34')
        temp_folder = folder.install_temp()
        self.assertIn('/home/web/repo/project/csw_web/deploy', temp_folder)
        self.assertIn('temp', temp_folder)

    def test_folder_install_venv(self):
        folder = FolderInfo(self._site_info(), '1.2.34')
        folder_name = folder.install_venv()
        self.assertIn('/home/web/repo/project/csw_web/deploy', folder_name)
        self.assertIn('venv', folder_name)

    def test_folder_live(self):
        self.assertEquals(
            '/home/web/repo/project/csw_web/live',
            self.folder.live()
        )

    def test_folder_site(self):
        self.assertEquals(
            '/home/web/repo/project/csw_web',
            self.folder.site()
        )

    def test_folder_vassals(self):
        self.assertSequenceEqual(
            ('/home/web/repo/uwsgi/vassals/csw_web.ini',),
            self.folder.vassals()
        )

    def test_invalid_folder_version(self):
        with self.assertRaises(TaskError) as cm:
            self.folder.install()
        self.assertIn(
            "class wasn't constructed with a version number",
            cm.exception.value
        )

    def test_srv_folder(self):
        self.assertEquals(
            '/srv',
            self.folder.srv_folder()
        )
Esempio n. 5
0
 def test_folder_install_venv(self):
     folder = FolderInfo(self._site_info(), '1.2.34')
     folder_name = folder.install_venv()
     self.assertIn('/home/web/repo/project/csw_web/deploy', folder_name)
     self.assertIn('venv', folder_name)
Esempio n. 6
0
 def test_folder_install_temp(self):
     folder = FolderInfo(self._site_info(), '1.2.34')
     temp_folder = folder.install_temp()
     self.assertIn('/home/web/repo/project/csw_web/deploy', temp_folder)
     self.assertIn('temp', temp_folder)
Esempio n. 7
0
 def test_folder_install(self):
     folder = FolderInfo(self._site_info(), '1.2.34')
     self.assertIn(
         '/home/web/repo/project/csw_web/deploy',
         folder.install()
     )
Esempio n. 8
0
 def setUp(self):
     self.folder = FolderInfo(self._site_info())
Esempio n. 9
0
def ssl():
    """ For docs, see https://github.com/pkimber/docs."""
    if not env.site_info.ssl:
        abort("'{}' is not set-up for SSL in the Salt pillar".format(env.site_info.domain))
    folder_info = FolderInfo(env.site_info)
    if not exists(folder_info.srv_folder(), use_sudo=True):
        abort("{} folder does not exist on the server".format(folder_info.srv_folder()))
    if exists(folder_info.ssl_folder(), use_sudo=True):
        print(green("SSL folder exists: {}".format(folder_info.ssl_folder())))
    else:
        print(green("Create SSL folder: {}".format(folder_info.ssl_folder())))
        sudo('mkdir {}'.format(folder_info.ssl_folder()))
        sudo('chown www-data:www-data {}'.format(folder_info.ssl_folder()))
        sudo('chmod 0400 {}'.format(folder_info.ssl_folder()))
    if exists(folder_info.ssl_cert_folder(), use_sudo=True):
        print(green("Certificate folder exists: {}".format(folder_info.ssl_cert_folder())))
    else:
        print(green("Create certificate folder: {}".format(folder_info.ssl_cert_folder())))
        sudo('mkdir {}'.format(folder_info.ssl_cert_folder()))
        sudo('chown www-data:www-data {}'.format(folder_info.ssl_cert_folder()))
        sudo('chmod 0400 {}'.format(folder_info.ssl_cert_folder()))
    put(
        env.site_info.ssl_cert(),
        folder_info.ssl_cert(),
        use_sudo=True,
        mode=0400,
    )
    sudo('chown www-data:www-data {}'.format(folder_info.ssl_cert()))
    print(green(folder_info.ssl_cert()))
    put(
        env.site_info.ssl_server_key(),
        folder_info.ssl_server_key(),
        use_sudo=True,
        mode=0400,
    )
    sudo('chown www-data:www-data {}'.format(folder_info.ssl_server_key()))
    print(green(folder_info.ssl_server_key()))
    print(yellow("Complete"))