Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Unified Diff: third_party/gsutil/third_party/boto/boto/vpc/vpnconnection.py

Issue 1377933002: [catapult] - Copy Telemetry's gsutilz over to third_party. (Closed) Base URL: https://github.com/catapult-project/catapult.git@master
Patch Set: Rename to gsutil. Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/gsutil/third_party/boto/boto/vpc/vpnconnection.py
diff --git a/third_party/gsutil/third_party/boto/boto/vpc/vpnconnection.py b/third_party/gsutil/third_party/boto/boto/vpc/vpnconnection.py
new file mode 100644
index 0000000000000000000000000000000000000000..cd8b11a62b7e775aeda5b410c996b9ada674c947
--- /dev/null
+++ b/third_party/gsutil/third_party/boto/boto/vpc/vpnconnection.py
@@ -0,0 +1,204 @@
+# Copyright (c) 2009-2010 Mitch Garnaat http://garnaat.org/
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish, dis-
+# tribute, sublicense, and/or sell copies of the Software, and to permit
+# persons to whom the Software is furnished to do so, subject to the fol-
+# lowing conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
+# ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+# SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+# IN THE SOFTWARE.
+import boto
+from datetime import datetime
+from boto.resultset import ResultSet
+
+"""
+Represents a VPN Connectionn
+"""
+
+from boto.ec2.ec2object import TaggedEC2Object
+
+class VpnConnectionOptions(object):
+ """
+ Represents VPN connection options
+
+ :ivar static_routes_only: Indicates whether the VPN connection uses static
+ routes only. Static routes must be used for devices that don't support
+ BGP.
+
+ """
+ def __init__(self, static_routes_only=None):
+ self.static_routes_only = static_routes_only
+
+ def __repr__(self):
+ return 'VpnConnectionOptions'
+
+ def startElement(self, name, attrs, connection):
+ pass
+
+ def endElement(self, name, value, connection):
+ if name == 'staticRoutesOnly':
+ self.static_routes_only = True if value == 'true' else False
+ else:
+ setattr(self, name, value)
+
+class VpnStaticRoute(object):
+ """
+ Represents a static route for a VPN connection.
+
+ :ivar destination_cidr_block: The CIDR block associated with the local
+ subnet of the customer data center.
+ :ivar source: Indicates how the routes were provided.
+ :ivar state: The current state of the static route.
+ """
+ def __init__(self, destination_cidr_block=None, source=None, state=None):
+ self.destination_cidr_block = destination_cidr_block
+ self.source = source
+ self.available = state
+
+ def __repr__(self):
+ return 'VpnStaticRoute: %s' % self.destination_cidr_block
+
+ def startElement(self, name, attrs, connection):
+ pass
+
+ def endElement(self, name, value, connection):
+ if name == 'destinationCidrBlock':
+ self.destination_cidr_block = value
+ elif name == 'source':
+ self.source = value
+ elif name == 'state':
+ self.state = value
+ else:
+ setattr(self, name, value)
+
+class VpnTunnel(object):
+ """
+ Represents telemetry for a VPN tunnel
+
+ :ivar outside_ip_address: The Internet-routable IP address of the
+ virtual private gateway's outside interface.
+ :ivar status: The status of the VPN tunnel. Valid values: UP | DOWN
+ :ivar last_status_change: The date and time of the last change in status.
+ :ivar status_message: If an error occurs, a description of the error.
+ :ivar accepted_route_count: The number of accepted routes.
+ """
+ def __init__(self, outside_ip_address=None, status=None, last_status_change=None,
+ status_message=None, accepted_route_count=None):
+ self.outside_ip_address = outside_ip_address
+ self.status = status
+ self.last_status_change = last_status_change
+ self.status_message = status_message
+ self.accepted_route_count = accepted_route_count
+
+ def __repr__(self):
+ return 'VpnTunnel: %s' % self.outside_ip_address
+
+ def startElement(self, name, attrs, connection):
+ pass
+
+ def endElement(self, name, value, connection):
+ if name == 'outsideIpAddress':
+ self.outside_ip_address = value
+ elif name == 'status':
+ self.status = value
+ elif name == 'lastStatusChange':
+ self.last_status_change = datetime.strptime(value,
+ '%Y-%m-%dT%H:%M:%S.%fZ')
+ elif name == 'statusMessage':
+ self.status_message = value
+ elif name == 'acceptedRouteCount':
+ try:
+ value = int(value)
+ except ValueError:
+ boto.log.warning('Error converting code (%s) to int' % value)
+ self.accepted_route_count = value
+ else:
+ setattr(self, name, value)
+
+class VpnConnection(TaggedEC2Object):
+ """
+ Represents a VPN Connection
+
+ :ivar id: The ID of the VPN connection.
+ :ivar state: The current state of the VPN connection.
+ Valid values: pending | available | deleting | deleted
+ :ivar customer_gateway_configuration: The configuration information for the
+ VPN connection's customer gateway (in the native XML format). This
+ element is always present in the
+ :class:`boto.vpc.VPCConnection.create_vpn_connection` response;
+ however, it's present in the
+ :class:`boto.vpc.VPCConnection.get_all_vpn_connections` response only
+ if the VPN connection is in the pending or available state.
+ :ivar type: The type of VPN connection (ipsec.1).
+ :ivar customer_gateway_id: The ID of the customer gateway at your end of
+ the VPN connection.
+ :ivar vpn_gateway_id: The ID of the virtual private gateway
+ at the AWS side of the VPN connection.
+ :ivar tunnels: A list of the vpn tunnels (always 2)
+ :ivar options: The option set describing the VPN connection.
+ :ivar static_routes: A list of static routes associated with a VPN
+ connection.
+
+ """
+ def __init__(self, connection=None):
+ super(VpnConnection, self).__init__(connection)
+ self.id = None
+ self.state = None
+ self.customer_gateway_configuration = None
+ self.type = None
+ self.customer_gateway_id = None
+ self.vpn_gateway_id = None
+ self.tunnels = []
+ self.options = None
+ self.static_routes = []
+
+ def __repr__(self):
+ return 'VpnConnection:%s' % self.id
+
+ def startElement(self, name, attrs, connection):
+ retval = super(VpnConnection, self).startElement(name, attrs, connection)
+ if retval is not None:
+ return retval
+ if name == 'vgwTelemetry':
+ self.tunnels = ResultSet([('item', VpnTunnel)])
+ return self.tunnels
+ elif name == 'routes':
+ self.static_routes = ResultSet([('item', VpnStaticRoute)])
+ return self.static_routes
+ elif name == 'options':
+ self.options = VpnConnectionOptions()
+ return self.options
+ return None
+
+ def endElement(self, name, value, connection):
+ if name == 'vpnConnectionId':
+ self.id = value
+ elif name == 'state':
+ self.state = value
+ elif name == 'customerGatewayConfiguration':
+ self.customer_gateway_configuration = value
+ elif name == 'type':
+ self.type = value
+ elif name == 'customerGatewayId':
+ self.customer_gateway_id = value
+ elif name == 'vpnGatewayId':
+ self.vpn_gateway_id = value
+ else:
+ setattr(self, name, value)
+
+ def delete(self, dry_run=False):
+ return self.connection.delete_vpn_connection(
+ self.id,
+ dry_run=dry_run
+ )

Powered by Google App Engine
This is Rietveld 408576698