Source code for SoftLayer.managers.cdn

"""
    SoftLayer.cdn
    ~~~~~~~~~~~~~
    CDN Manager/helpers

    :license: MIT, see LICENSE for more details.
"""
from SoftLayer import utils

import six


MAX_URLS_PER_LOAD = 5
MAX_URLS_PER_PURGE = 5


[docs]class CDNManager(utils.IdentifierMixin, object): """ Manage CDN accounts """ def __init__(self, client): self.client = client self.account = self.client['Network_ContentDelivery_Account']
[docs] def list_accounts(self): """ Lists CDN accounts for the active user. """ account = self.client['Account'] mask = 'cdnAccounts[%s]' % ', '.join(['id', 'createDate', 'cdnAccountName', 'cdnSolutionName', 'cdnAccountNote', 'status']) return account.getObject(mask=mask).get('cdnAccounts', [])
[docs] def get_account(self, account_id, **kwargs): """ Retrieves a CDN account with the specified account ID. :param account_id int: the numeric ID associated with the CDN account. :param dict \\*\\*kwargs: additional arguments to include in the object mask. """ if 'mask' not in kwargs: kwargs['mask'] = 'status' return self.account.getObject(id=account_id, **kwargs)
[docs] def get_origins(self, account_id, **kwargs): """ Retrieves a list of origin pull mappings for a specified CDN account. :param account_id int: the numeric ID associated with the CDN account. :param dict \\*\\*kwargs: additional arguments to include in the object mask. """ return self.account.getOriginPullMappingInformation(id=account_id, **kwargs)
[docs] def add_origin(self, account_id, media_type, origin_url, cname=None, secure=False): """ Adds an original pull mapping to an origin-pull based CDN account with the options provided. :param int account_id: the numeric ID associated with the CDN account. :param string media_type: the media type/protocol associated with this origin pull mapping; valid values are HTTP, FLASH, and WM. :param string origin_url: the base URL from which content should be pulled. :param string cname: an optional CNAME that should be associated with this origin pull rule; only the hostname should be included (i.e., no 'http://', directories, etc.). :param boolean secure: specifies whether this is an SSL origin pull rule, if SSL is enabled on your account (defaults to false). """ config = {'mediaType': media_type, 'originUrl': origin_url, 'isSecureContent': secure} if cname: config['cname'] = cname return self.account.createOriginPullMapping(config, id=account_id)
[docs] def remove_origin(self, account_id, origin_id): """ Removes an origin pull mapping with the given origin pull ID under the provided CDN account ID. :param int account_id: the CDN account ID from which the mapping should be deleted. :param int origin_id: the origin pull mapping ID to delete. """ return self.account.deleteOriginPullRule(origin_id, id=account_id)
[docs] def load_content(self, account_id, urls): """ Prefetches one or more URLs to the CDN edge nodes. :param int account_id: the CDN account ID into which content should be preloaded. :param urls: a string or a list of strings representing the CDN URLs that should be pre-loaded. :returns: true if all load requests were successfully submitted; otherwise, returns the first error encountered. """ if isinstance(urls, six.string_types): urls = [urls] for i in range(0, len(urls), MAX_URLS_PER_LOAD): result = self.account.loadContent(urls[i:i + MAX_URLS_PER_LOAD], id=account_id) if not result: return result return True
[docs] def purge_content(self, account_id, urls): """ Purges one or more URLs from the CDN edge nodes. :param int account_id: the CDN account ID from which content should be purged. :param urls: a string or a list of strings representing the CDN URLs that should be purged. :returns: true if all purge requests were successfully submitted; otherwise, returns the first error encountered. """ if isinstance(urls, six.string_types): urls = [urls] for i in range(0, len(urls), MAX_URLS_PER_PURGE): result = self.account.purgeContent(urls[i:i + MAX_URLS_PER_PURGE], id=account_id) if not result: return result return True