From 6b68d940797a6889466cc95af4e3c1585d0d8b07 Mon Sep 17 00:00:00 2001 From: Nicholas Kuechler Date: Tue, 11 Jun 2013 21:43:23 -0500 Subject: [PATCH] Adds Rackspace Cloud Files support to quickstart and fabfile --- pelican/tools/pelican_quickstart.py | 7 +++++++ pelican/tools/templates/Makefile.in | 10 +++++++++- pelican/tools/templates/fabfile.py.in | 15 ++++++++++++++- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/pelican/tools/pelican_quickstart.py b/pelican/tools/pelican_quickstart.py index 3f02355a..ba11d968 100755 --- a/pelican/tools/pelican_quickstart.py +++ b/pelican/tools/pelican_quickstart.py @@ -27,6 +27,9 @@ CONF = { 'ssh_user': 'root', 'ssh_target_dir': '/var/www', 's3_bucket': 'my_s3_bucket', + 'cloudfiles_username': 'my_rackspace_username', + 'cloudfiles_api_key': 'my_rackspace_api_key', + 'cloudfiles_container': 'my_cloudfiles_container', 'dropbox_dir': '~/Dropbox/Public/', 'default_pagination': 10, 'siteurl': '', @@ -210,6 +213,10 @@ needed by Pelican. CONF['dropbox_dir'] = ask('Where is your Dropbox directory?', str_compat, CONF['dropbox_dir']) if ask('Do you want to upload your website using S3?', answer=bool, default=False): CONF['s3_bucket'] = ask('What is the name of your S3 bucket?', str_compat, CONF['s3_bucket']) + if ask('Do you want to upload your website using Rackspace Cloud Files?', answer=bool, default=False): + CONF['cloudfiles_username'] = ask('What is your Rackspace Cloud username?', str_compat, CONF['cloudfiles_username']) + CONF['cloudfiles_api_key'] = ask('What is your Rackspace Cloud API key?', str_compat, CONF['cloudfiles_api_key']) + CONF['cloudfiles_container'] = ask('What is the name of your Cloud Files container?', str_compat, CONF['cloudfiles_container']) try: os.makedirs(os.path.join(CONF['basedir'], 'content')) diff --git a/pelican/tools/templates/Makefile.in b/pelican/tools/templates/Makefile.in index f68694e3..4ca0af6a 100644 --- a/pelican/tools/templates/Makefile.in +++ b/pelican/tools/templates/Makefile.in @@ -18,6 +18,10 @@ SSH_TARGET_DIR=$ssh_target_dir S3_BUCKET=$s3_bucket +CLOUDFILES_USERNAME=$cloudfiles_username +CLOUDFILES_API_KEY=$cloudfiles_api_key +CLOUDFILES_CONTAINER=$cloudfiles_container + DROPBOX_DIR=$dropbox_dir DEBUG ?= 0 @@ -41,6 +45,7 @@ help: @echo ' dropbox_upload upload the web site via Dropbox ' @echo ' ftp_upload upload the web site via FTP ' @echo ' s3_upload upload the web site via S3 ' + @echo ' cf_upload upload the web site via Cloud Files' @echo ' github upload the web site via gh-pages ' @echo ' ' @echo 'Set the DEBUG variable to 1 to enable debugging, e.g. make DEBUG=1 html' @@ -92,8 +97,11 @@ ftp_upload: publish s3_upload: publish s3cmd sync $(OUTPUTDIR)/ s3://$(S3_BUCKET) --acl-public --delete-removed +cf_upload: publish + cd $(OUTPUTDIR) && swift -v -A https://auth.api.rackspacecloud.com/v1.0 -U $(CLOUDFILES_USERNAME) -K $(CLOUDFILES_API_KEY) upload -c $(CLOUDFILES_CONTAINER) . + github: publish ghp-import $$(OUTPUTDIR) git push origin gh-pages -.PHONY: html help clean regenerate serve devserver publish ssh_upload rsync_upload dropbox_upload ftp_upload s3_upload github +.PHONY: html help clean regenerate serve devserver publish ssh_upload rsync_upload dropbox_upload ftp_upload s3_upload cf_upload github diff --git a/pelican/tools/templates/fabfile.py.in b/pelican/tools/templates/fabfile.py.in index e991b763..73c64ac8 100644 --- a/pelican/tools/templates/fabfile.py.in +++ b/pelican/tools/templates/fabfile.py.in @@ -4,12 +4,17 @@ import os # Local path configuration (can be absolute or relative to fabfile) env.deploy_path = 'output' +DEPLOY_PATH = env.deploy_path # Remote server configuration production = '$ssh_user@$ssh_host:$ssh_port' dest_path = '$ssh_target_dir' -DEPLOY_PATH = env.deploy_path +# Rackspace Cloud Files configuration settings +env.cloudfiles_username = '$cloudfiles_username' +env.cloudfiles_api_key = '$cloudfiles_api_key' +env.cloudfiles_container = '$cloudfiles_container' + def clean(): if os.path.isdir(DEPLOY_PATH): @@ -36,6 +41,14 @@ def reserve(): def preview(): local('pelican -s publishconf.py') +def cf_upload(): + rebuild() + local('cd {deploy_path} && ' + 'swift -v -A https://auth.api.rackspacecloud.com/v1.0 ' + '-U {cloudfiles_username} ' + '-K {cloudfiles_api_key} ' + 'upload -c {cloudfiles_container} .'.format(**env)) + @hosts(production) def publish(): local('pelican -s publishconf.py')