PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : //proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/gcp_addon.py |
""" A route is a rule that specifies how certain packets should be handled by the virtual network. Routes are associated with virtual machine instances by tag, and the set of routes for a particular VM is called its routing table. For each packet leaving a virtual machine, the system searches that machine's routing table for a single best matching route. .. versionadded:: 2018.3.0 This module will create a route to send traffic destined to the Internet through your gateway instance. :codeauthor: `Pratik Bandarkar <pratik.bandarkar@gmail.com>` :maturity: new :depends: google-api-python-client :platform: Linux """ import logging try: import googleapiclient.discovery import oauth2client.service_account HAS_LIB = True except ImportError: HAS_LIB = False log = logging.getLogger(__name__) __virtualname__ = "gcp" def __virtual__(): """ Check for googleapiclient api """ if HAS_LIB is False: return ( False, "Required dependencies 'googleapiclient' and/or 'oauth2client' were not" " found.", ) return __virtualname__ def _get_network(project_id, network_name, service): """ Fetch network selfLink from network name. """ return service.networks().get(project=project_id, network=network_name).execute() def _get_instance(project_id, instance_zone, name, service): """ Get instance details """ return ( service.instances() .get(project=project_id, zone=instance_zone, instance=name) .execute() ) def route_create( credential_file=None, project_id=None, name=None, dest_range=None, next_hop_instance=None, instance_zone=None, tags=None, network=None, priority=None, ): """ Create a route to send traffic destined to the Internet through your gateway instance credential_file : string File location of application default credential. For more information, refer: https://developers.google.com/identity/protocols/application-default-credentials project_id : string Project ID where instance and network resides. name : string name of the route to create next_hop_instance : string the name of an instance that should handle traffic matching this route. instance_zone : string zone where instance("next_hop_instance") resides network : string Specifies the network to which the route will be applied. dest_range : string The destination range of outgoing packets that the route will apply to. tags : list (optional) Identifies the set of instances that this route will apply to. priority : int (optional) Specifies the priority of this route relative to other routes. default=1000 CLI Example: .. code-block:: bash salt 'salt-master.novalocal' gcp.route_create credential_file=/root/secret_key.json project_id=cp100-170315 name=derby-db-route1 next_hop_instance=instance-1 instance_zone=us-central1-a network=default dest_range=0.0.0.0/0 tags=['no-ip'] priority=700 In above example, the instances which are having tag "no-ip" will route the packet to instance "instance-1"(if packet is intended to other network) """ credentials = ( oauth2client.service_account.ServiceAccountCredentials.from_json_keyfile_name( credential_file ) ) service = googleapiclient.discovery.build("compute", "v1", credentials=credentials) routes = service.routes() routes_config = { "name": str(name), "network": _get_network(project_id, str(network), service=service)["selfLink"], "destRange": str(dest_range), "nextHopInstance": _get_instance( project_id, instance_zone, next_hop_instance, service=service )["selfLink"], "tags": tags, "priority": priority, } route_create_request = routes.insert(project=project_id, body=routes_config) return route_create_request.execute()