gcpdiag.queries.vpn

Queries related to VPN tunnel.
class Vpn(gcpdiag.models.Resource):
27class Vpn(models.Resource):
28  """
29  Represents a Vpn Tunnel.
30  https://cloud.google.com/compute/docs/reference/rest/v1/vpnTunnels
31  """
32
33  _resource_data: dict
34
35  def __init__(self, project_id, resource_data):
36    super().__init__(project_id=project_id)
37    self._resource_data = resource_data
38
39  @property
40  def name(self) -> str:
41    return self._resource_data['name']
42
43  @property
44  def under_maintenance(self) -> bool:
45    return self._resource_data.get('status') == 'UNDER_MAINTENANCE'
46
47  @property
48  def peer_ip(self) -> str:
49    return self._resource_data['peerIp']
50
51  @property
52  def status(self) -> str:
53    return self._resource_data['status']
54
55  @property
56  def router(self) -> str:
57    return self._resource_data['router']
58
59  @property
60  def id(self) -> str:
61    return self._resource_data['id']
62
63  @property
64  def local_traffic_selector(self) -> List[str]:
65    return self._resource_data.get('localTrafficSelector', [])
66
67  @property
68  def remote_traffic_selector(self) -> List[str]:
69    return self._resource_data.get('remoteTrafficSelector', [])
70
71  @property
72  def self_link(self) -> str:
73    return self._resource_data['selfLink']
74
75  @property
76  def full_path(self) -> str:
77    result = re.match(r'https://www.googleapis.com/compute/v1/(.*)', self.self_link)
78    if result:
79      return result.group(1)
80    else:
81      return f'>> {self.self_link}'
82
83  @property
84  def short_path(self) -> str:
85    path = self.project_id + '/' + self.name
86    return path
Vpn(project_id, resource_data)
35  def __init__(self, project_id, resource_data):
36    super().__init__(project_id=project_id)
37    self._resource_data = resource_data
name: str
39  @property
40  def name(self) -> str:
41    return self._resource_data['name']
under_maintenance: bool
43  @property
44  def under_maintenance(self) -> bool:
45    return self._resource_data.get('status') == 'UNDER_MAINTENANCE'
peer_ip: str
47  @property
48  def peer_ip(self) -> str:
49    return self._resource_data['peerIp']
status: str
51  @property
52  def status(self) -> str:
53    return self._resource_data['status']
router: str
55  @property
56  def router(self) -> str:
57    return self._resource_data['router']
id: str
59  @property
60  def id(self) -> str:
61    return self._resource_data['id']
local_traffic_selector: List[str]
63  @property
64  def local_traffic_selector(self) -> List[str]:
65    return self._resource_data.get('localTrafficSelector', [])
remote_traffic_selector: List[str]
67  @property
68  def remote_traffic_selector(self) -> List[str]:
69    return self._resource_data.get('remoteTrafficSelector', [])
full_path: str
75  @property
76  def full_path(self) -> str:
77    result = re.match(r'https://www.googleapis.com/compute/v1/(.*)', self.self_link)
78    if result:
79      return result.group(1)
80    else:
81      return f'>> {self.self_link}'

Returns the full path of this resource.

Example: 'projects/gcpdiag-gke-1-9b90/zones/europe-west4-a/clusters/gke1'

short_path: str
83  @property
84  def short_path(self) -> str:
85    path = self.project_id + '/' + self.name
86    return path

Returns the short name for this resource.

Note that it isn't clear from this name what kind of resource it is.

Example: 'gke1'

@caching.cached_api_call(in_memory=True)
def get_vpn(project_id: str, vpn_name: str, region: str) -> Vpn:
89@caching.cached_api_call(in_memory=True)
90def get_vpn(project_id: str, vpn_name: str, region: str) -> Vpn:
91  logging.debug('fetching VPN: %s', vpn_name)
92  compute = apis.get_api('compute', 'v1', project_id)
93
94  request = compute.vpnTunnels().get(project=project_id, vpnTunnel=vpn_name, region=region)
95  try:
96    response = request.execute(num_retries=config.API_RETRIES)
97  except googleapiclient_errors.HttpError as err:
98    raise utils.GcpApiError(err)
99  return Vpn(project_id, response)