OLD | NEW |
(Empty) | |
| 1 # Copyright (c) 2006-2010 Mitch Garnaat http://garnaat.org/ |
| 2 # Copyright (c) 2010, Eucalyptus Systems, Inc. |
| 3 # |
| 4 # Permission is hereby granted, free of charge, to any person obtaining a |
| 5 # copy of this software and associated documentation files (the |
| 6 # "Software"), to deal in the Software without restriction, including |
| 7 # without limitation the rights to use, copy, modify, merge, publish, dis- |
| 8 # tribute, sublicense, and/or sell copies of the Software, and to permit |
| 9 # persons to whom the Software is furnished to do so, subject to the fol- |
| 10 # lowing conditions: |
| 11 # |
| 12 # The above copyright notice and this permission notice shall be included |
| 13 # in all copies or substantial portions of the Software. |
| 14 # |
| 15 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
| 16 # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- |
| 17 # ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT |
| 18 # SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, |
| 19 # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
| 20 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS |
| 21 # IN THE SOFTWARE. |
| 22 |
| 23 from identity import OriginAccessIdentity |
| 24 |
| 25 def get_oai_value(origin_access_identity): |
| 26 if isinstance(origin_access_identity, OriginAccessIdentity): |
| 27 return origin_access_identity.uri() |
| 28 else: |
| 29 return origin_access_identity |
| 30 |
| 31 class S3Origin(object): |
| 32 """ |
| 33 Origin information to associate with the distribution. |
| 34 If your distribution will use an Amazon S3 origin, |
| 35 then you use the S3Origin element. |
| 36 """ |
| 37 |
| 38 def __init__(self, dns_name=None, origin_access_identity=None): |
| 39 """ |
| 40 :param dns_name: The DNS name of your Amazon S3 bucket to |
| 41 associate with the distribution. |
| 42 For example: mybucket.s3.amazonaws.com. |
| 43 :type dns_name: str |
| 44 |
| 45 :param origin_access_identity: The CloudFront origin access |
| 46 identity to associate with the |
| 47 distribution. If you want the |
| 48 distribution to serve private content, |
| 49 include this element; if you want the |
| 50 distribution to serve public content, |
| 51 remove this element. |
| 52 :type origin_access_identity: str |
| 53 |
| 54 """ |
| 55 self.dns_name = dns_name |
| 56 self.origin_access_identity = origin_access_identity |
| 57 |
| 58 def __repr__(self): |
| 59 return '<S3Origin: %s>' % self.dns_name |
| 60 |
| 61 def startElement(self, name, attrs, connection): |
| 62 return None |
| 63 |
| 64 def endElement(self, name, value, connection): |
| 65 if name == 'DNSName': |
| 66 self.dns_name = value |
| 67 elif name == 'OriginAccessIdentity': |
| 68 self.origin_access_identity = value |
| 69 else: |
| 70 setattr(self, name, value) |
| 71 |
| 72 def to_xml(self): |
| 73 s = ' <S3Origin>\n' |
| 74 s += ' <DNSName>%s</DNSName>\n' % self.dns_name |
| 75 if self.origin_access_identity: |
| 76 val = get_oai_value(self.origin_access_identity) |
| 77 s += ' <OriginAccessIdentity>%s</OriginAccessIdentity>\n' % val |
| 78 s += ' </S3Origin>\n' |
| 79 return s |
| 80 |
| 81 class CustomOrigin(object): |
| 82 """ |
| 83 Origin information to associate with the distribution. |
| 84 If your distribution will use a non-Amazon S3 origin, |
| 85 then you use the CustomOrigin element. |
| 86 """ |
| 87 |
| 88 def __init__(self, dns_name=None, http_port=80, https_port=443, |
| 89 origin_protocol_policy=None): |
| 90 """ |
| 91 :param dns_name: The DNS name of your Amazon S3 bucket to |
| 92 associate with the distribution. |
| 93 For example: mybucket.s3.amazonaws.com. |
| 94 :type dns_name: str |
| 95 |
| 96 :param http_port: The HTTP port the custom origin listens on. |
| 97 :type http_port: int |
| 98 |
| 99 :param https_port: The HTTPS port the custom origin listens on. |
| 100 :type http_port: int |
| 101 |
| 102 :param origin_protocol_policy: The origin protocol policy to |
| 103 apply to your origin. If you |
| 104 specify http-only, CloudFront |
| 105 will use HTTP only to access the origin. |
| 106 If you specify match-viewer, CloudFront |
| 107 will fetch from your origin using HTTP |
| 108 or HTTPS, based on the protocol of the |
| 109 viewer request. |
| 110 :type origin_protocol_policy: str |
| 111 |
| 112 """ |
| 113 self.dns_name = dns_name |
| 114 self.http_port = http_port |
| 115 self.https_port = https_port |
| 116 self.origin_protocol_policy = origin_protocol_policy |
| 117 |
| 118 def __repr__(self): |
| 119 return '<CustomOrigin: %s>' % self.dns_name |
| 120 |
| 121 def startElement(self, name, attrs, connection): |
| 122 return None |
| 123 |
| 124 def endElement(self, name, value, connection): |
| 125 if name == 'DNSName': |
| 126 self.dns_name = value |
| 127 elif name == 'HTTPPort': |
| 128 try: |
| 129 self.http_port = int(value) |
| 130 except ValueError: |
| 131 self.http_port = value |
| 132 elif name == 'HTTPSPort': |
| 133 try: |
| 134 self.https_port = int(value) |
| 135 except ValueError: |
| 136 self.https_port = value |
| 137 elif name == 'OriginProtocolPolicy': |
| 138 self.origin_protocol_policy = value |
| 139 else: |
| 140 setattr(self, name, value) |
| 141 |
| 142 def to_xml(self): |
| 143 s = ' <CustomOrigin>\n' |
| 144 s += ' <DNSName>%s</DNSName>\n' % self.dns_name |
| 145 s += ' <HTTPPort>%d</HTTPPort>\n' % self.http_port |
| 146 s += ' <HTTPSPort>%d</HTTPSPort>\n' % self.https_port |
| 147 s += ' <OriginProtocolPolicy>%s</OriginProtocolPolicy>\n' % self.orig
in_protocol_policy |
| 148 s += ' </CustomOrigin>\n' |
| 149 return s |
| 150 |
OLD | NEW |