Esempio n. 1
0
    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)
Esempio n. 2
0
    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)
Esempio n. 3
0
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()
Esempio n. 4
0
    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
Esempio n. 5
0
    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)
Esempio n. 6
0
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
Esempio n. 7
0
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)
Esempio n. 8
0
def purge_fastly(args):
    api = fastly.connect(args.api_key)
    print(api.purge_service_by_key(args.service_key, args.purge_key))
Esempio n. 9
0
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)
Esempio n. 10
0
def purge(api_key):
    api = fastly.connect(api_key)
    print(api.purge_service_by_key('1bUC7xOWcgbVWpBPqPqHp', 'web'))
Esempio n. 11
0
def purge_fastly(args):
    api = fastly.connect(args.api_key)
    print(api.purge_service_by_key(args.service_key, args.purge_key))
Esempio n. 12
0
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 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)