def __init__(self, conf): super(CDNProvider, self).__init__(conf) self._conf.register_opts(FASTLY_OPTIONS, group=FASTLY_GROUP) self.fastly_conf = self._conf[FASTLY_GROUP] self.fastly_client = fastly.connect(self.fastly_conf.apikey)
def main(): parser = argparse.ArgumentParser() parser.add_argument("--action", required=True, help="valid actions are 'add' and 'delete'") parser.add_argument("--vcl", required=True, help="path to the VCL file to be uploaded") args = parser.parse_args() for loc in os.getcwd(), os.path.expanduser("~"), "/etc/fastly/", os.getcwd() + '/config/', os.getcwd(): try: with open(os.path.join(loc,"config.yml"), 'r') as f: config = yaml.load(f) service_name = config["service_name"] api_key = config["api_key"] vcl_name = config["vcl_name"] except IOError: pass client = fastly.connect(api_key) vcl_file = open(args.vcl, 'r') vcl_content = vcl_file.read() service = client.get_service_by_name(service_name) versions = client.list_versions(service.id) def get_latest(version): latest_version = version.pop() if latest_version.locked is True or latest_version.active is True: print "\n[ Cloning version {0} ]\n".format(latest_version.number) latest_version = client.clone_version(service.id, latest_version.number) print "\n[ The config version is going to be {0} ]\n".format(latest_version.number) return latest_version def upload_vcl(content): if vcl_name in latest.vcls: client.update_vcl(service.id, latest.number, vcl_name, content=vcl_content) print "\n[ Uploading VCL {0} ]\n".format(vcl_name) else: client.upload_vcl(service.id, latest.number, vcl_name, vcl_content) print "\n[ Uploading VCL {0} ]\n".format(vcl_name) client.set_main_vcl(service.id, latest.number, vcl_name) client.activate_version(service.id, latest.number) print "\n[ Activating version {0} ]\n".format(latest.number) def delete_vcl(): vcls = client.list_vcls(service.id, latest.number) for vcl in vcls: client.delete_vcl(service.id, latest.number, vcl.name) client.activate_version(service.id, latest.number) print "\n[ Activating version {0} ]\n".format(latest.number) latest = get_latest(versions) if 'add' in args.action: upload_vcl(vcl_content) else: print "\n[ Deleting VCL {0} ]\n".format(vcl_name) delete_vcl()
def __init__(self, api_key, email, password, serialize_format="json", deserialize_format="json"): super(FastlyClient, self).__init__(serialize_format, deserialize_format) self.client = fastly.connect(api_key) self.client.login(email, password) self.serialize = serialize_format self.deserialize_format = deserialize_format
def __init__(self, conf): super(CDNProvider, self).__init__(conf) self._conf.register_opts(FASTLY_OPTIONS, group=FASTLY_GROUP) self.fastly_conf = self._conf[FASTLY_GROUP] # Override the hardcoded values in the fastly client with # values defined in poppy.conf. module_name = 'fastly' fastly_host = 'FASTLY_HOST' fastly_scheme = 'FASTLY_SCHEME' obj = globals()[module_name] setattr(obj, fastly_host, self.fastly_conf.host) setattr(obj, fastly_scheme, self.fastly_conf.scheme) self.fastly_client = fastly.connect(self.fastly_conf.apikey)
def main(): """ Purge a single fastly url """ parser = OptionParser(description= "Purge a single url from fastly.") parser.add_option("-k", "--key", dest="apikey", default="", help="fastly api key") parser.add_option("-H", "--host", dest="host", help="host to purge from") parser.add_option("-p", "--path", dest="path", help="path to purge") (options, args) = parser.parse_args() for val in options.__dict__.values(): if val is None: print "Missing required options" parser.print_help() sys.exit(1) client = fastly.connect(options.apikey) purge = client.purge_url(options.host, options.path) print purge
import ConfigParser import os import re import fastly # get apikey configParser = ConfigParser.RawConfigParser() configFilePath = os.path.expanduser('~/.poppy/poppy.conf') configParser.read(configFilePath) apikey = configParser.get('drivers:provider:fastly', 'apikey') # replace any single or double quotes from apikey apikey = re.sub(r'^"|"$', '', apikey) apikey = re.sub(r"^'|'$", '', apikey) # Connects to Fastly using API key. client = fastly.connect(apikey) # List all services. services = client.list_services() for service in services: service_details = client.get_service_details(service.id) # if there is an active version, deactive it if service_details.active_version: client.deactivate_version(service.id, service_details.active_version['number']) client.delete_service(service.id)
def purge_fastly(args): api = fastly.connect(args.api_key) print(api.purge_service_by_key(args.service_key, args.purge_key))
def main(): """ Upload a vcl file to a fastly service, cloning the current version if necessary. The uploaded vcl is set as main unless --include is given. All existing vcl files will be deleted first if --delete is given. """ parser = OptionParser( description= "Upload a vcl file (set as main) to a given fastly service. All arguments are required." ) parser.add_option("-k", "--key", dest="apikey", help="fastly api key") parser.add_option("-u", "--user", dest="user", help="fastly user name") parser.add_option("-p", "--password", dest="password", help="fastly password") parser.add_option("-f", "--file", dest="filename", help="vcl file to upload") parser.add_option("-s", "--service", dest="service_name", help="service to update") parser.add_option("-d", "--delete_vcl", action="store_true", dest="delete_vcl", default=False, help="delete existing vcl files from service\ before uploading") parser.add_option("-i", "--include", action="store_true", dest="include_vcl", default=False, help="do not set uploaded vcl as main,\ to be included only") (options, args) = parser.parse_args() for val in options.__dict__.values(): if val is None: print "Missing required options:" parser.print_help() sys.exit(1) vcl_name = options.filename.split('/').pop() service_name = options.service_name vcl_file = open(options.filename, 'r') vcl_content = vcl_file.read() # Need to fully authenticate to access all features. client = fastly.connect(options.apikey) client.login(options.user, options.password) service = client.get_service_by_name(service_name) versions = client.list_versions(service.id) latest = versions.pop() if latest.locked is True or latest.active is True: print "\n[ Cloning version %d ]\n"\ % (latest.number) latest = client.clone_version(service.id, latest.number) if options.delete_vcl: vcls = client.list_vcls(service.id, latest.number) for vcl in vcls: print "\n[ Deleting vcl file %s from version %d ]\n" %\ (service_name, latest.number) client.delete_vcl(service.id, latest.number, vcl.name) if vcl_name in latest.vcls: print "\n[ Updating vcl file %s on service %s version %d ]\n"\ % (vcl_name, service_name, latest.number) client.update_vcl(service.id, latest.number, vcl_name, content=vcl_content) else: print "\n[ Uploading new vcl file %s on service %s version %d ]\n"\ % (vcl_name, service_name, latest.number) client.upload_vcl(service.id, latest.number, vcl_name, vcl_content) if options.include_vcl is False: print "\n[ Setting vcl %s as main ]\n" % (vcl_name) client.set_main_vcl(service.id, latest.number, vcl_name) client.activate_version(service.id, latest.number) print "\n[ Activing configuration version %d ]\n" % (latest.number)
def purge(api_key): api = fastly.connect(api_key) print(api.purge_service_by_key('1bUC7xOWcgbVWpBPqPqHp', 'web'))
def main(): """ Upload a vcl file to a fastly service, cloning the current version if necessary. The uploaded vcl is set as main unless --include is given. All existing vcl files will be deleted first if --delete is given. """ parser = OptionParser(description= "Upload a vcl file (set as main) to a given fastly service. All arguments are required.") parser.add_option("-k", "--key", dest="apikey", help="fastly api key") parser.add_option("-u", "--user", dest="user", help="fastly user name") parser.add_option("-p", "--password", dest="password", help="fastly password") parser.add_option("-f", "--file", dest="filename", help="vcl file to upload") parser.add_option("-s", "--service", dest="service_name", help="service to update") parser.add_option("-d", "--delete_vcl", action="store_true", dest="delete_vcl", default=False, help="delete existing vcl files from service\ before uploading") parser.add_option("-i", "--include", action="store_true", dest="include_vcl", default=False, help="do not set uploaded vcl as main,\ to be included only") (options, args) = parser.parse_args() for val in options.__dict__.values(): if val is None: print "Missing required options:" parser.print_help() sys.exit(1) vcl_name = options.filename.split('/').pop() service_name = options.service_name vcl_file = open(options.filename, 'r') vcl_content = vcl_file.read() # Need to fully authenticate to access all features. client = fastly.connect(options.apikey) client.login(options.user, options.password) service = client.get_service_by_name(service_name) versions = client.list_versions(service.id) latest = versions.pop() if latest.locked is True or latest.active is True: print "\n[ Cloning version %d ]\n"\ % (latest.number) latest = client.clone_version(service.id, latest.number) if options.delete_vcl: vcls = client.list_vcls(service.id, latest.number) for vcl in vcls: print "\n[ Deleting vcl file %s from version %d ]\n" %\ (service_name, latest.number) client.delete_vcl(service.id, latest.number, vcl.name) if vcl_name in latest.vcls: print "\n[ Updating vcl file %s on service %s version %d ]\n"\ % (vcl_name, service_name, latest.number) client.update_vcl(service.id, latest.number, vcl_name, content=vcl_content) else: print "\n[ Uploading new vcl file %s on service %s version %d ]\n"\ % (vcl_name, service_name, latest.number) client.upload_vcl(service.id, latest.number, vcl_name, vcl_content) if options.include_vcl is False: print "\n[ Setting vcl %s as main ]\n" % (vcl_name) client.set_main_vcl(service.id, latest.number, vcl_name) client.activate_version(service.id, latest.number) print "\n[ Activing configuration version %d ]\n" % (latest.number)