Exemplo n.º 1
0
    def get_static_ip_address(self, project: str, name: str,
                              region: str) -> (str, str):
        print(f"{datetime.now()} - Getting the {name} static IP...")

        service = build('compute',
                        'v1',
                        credentials=self._get_credentials(),
                        cache_discovery=False)
        try:
            count = 0
            while count < int(os.environ.get("STATIC_ADDRESS_RETRIES")):
                static_ip = service.addresses().get(project=project,
                                                    region=region,
                                                    address=name).execute()

                if 'address' in static_ip and 'selfLink' in static_ip:
                    return static_ip['address'], static_ip['selfLink']
                count += 1
                sleep(5)
            raise Exception("Not able to get IP address")
        except Exception as exc:
            print(
                f"{datetime.now()} - Error while getting static IP - {exc.__str__()}"
            )
            raise ComputeEngineException(
                status_code=500, message='Error while getting static IP')
Exemplo n.º 2
0
 def create_compute_engine_instance(self, project: str, zone: str,
                                    body: dict) -> dict:
     service = build('compute',
                     'v1',
                     credentials=self._get_credentials(),
                     cache_discovery=False)
     try:
         return service.instances().insert(project=project,
                                           zone=zone,
                                           body=body).execute()
     except Exception as exc:
         print(
             f"{datetime.now()} - Error while creating the VM {body['name']} - {exc.__str__()}"
         )
         raise ComputeEngineException(status_code=500,
                                      message='Error while creating the VM')
Exemplo n.º 3
0
    def delete_static_ip_address(self, project: str, region: str,
                                 address: str) -> dict:
        print(f"{datetime.now()} - Deleting static IP {address}...")

        service = build('compute',
                        'v1',
                        credentials=self._get_credentials(),
                        cache_discovery=False)
        try:
            return service.addresses().delete(project=project,
                                              region=region,
                                              address=address).execute()
        except Exception as exc:
            print(
                f"{datetime.now()} - Error while deleting static IP {address} - {exc.__str__()}"
            )
            raise ComputeEngineException(
                status_code=500, message='Error while deleting static IP')
Exemplo n.º 4
0
    def delete_compute_engine_virtual_machine(self, project: str, zone: str,
                                              name: str) -> dict:
        print(f"{datetime.now()} - Deleting the {name} VM...")

        service = build('compute',
                        'v1',
                        credentials=self._get_credentials(),
                        cache_discovery=False)
        try:
            return service.instances().delete(project=project,
                                              zone=zone,
                                              instance=name).execute()
        except Exception as exc:
            print(
                f"{datetime.now()} - Error while deleting the VM {name} - {exc.__str__()}"
            )
            raise ComputeEngineException(status_code=500,
                                         message='Error while deleting the VM')
Exemplo n.º 5
0
    def delete_cloud_router(self, project: str, region: str,
                            router_name: str) -> dict:
        print(f"{datetime.now()} - Deleting the Cloud Router {router_name}...")

        service = build('compute',
                        'v1',
                        credentials=self._get_credentials(),
                        cache_discovery=False)
        try:
            return service.routers().delete(project=project,
                                            region=region,
                                            router=router_name).execute()
        except Exception as exc:
            print(
                f"{datetime.now()} - Error while deleting the cloud router {router_name} - {exc.__str__()}"
            )
            raise ComputeEngineException(
                status_code=500,
                message='Error while creating the cloud router')
Exemplo n.º 6
0
    def reserve_static_ip_address(self, project: str, name: str,
                                  region: str) -> dict:
        print(f"{datetime.now()} - Reserving static IP...")

        service = build('compute',
                        'v1',
                        credentials=self._get_credentials(),
                        cache_discovery=False)
        try:
            return service.addresses().insert(project=project,
                                              region=region,
                                              body={
                                                  "name": name
                                              }).execute()
        except Exception as exc:
            print(
                f"{datetime.now()} - Error while reserving static IP - {exc.__str__()}"
            )
            raise ComputeEngineException(
                status_code=500, message='Error while reserving static IP')
Exemplo n.º 7
0
    def create_cloud_router_with_nat(self, project: str, name: str,
                                     region: str, static_ip: str,
                                     subnetwork: str) -> dict:
        print(f"{datetime.now()} - Creating the Cloud Router...")

        service = build('compute',
                        'v1',
                        credentials=self._get_credentials(),
                        cache_discovery=False)
        try:
            return service.routers().insert(
                project=project,
                region=region,
                body={
                    "name":
                    name,
                    "nats": [{
                        "name":
                        name,
                        "natIpAllocateOption":
                        "MANUAL_ONLY",
                        "natIps": [static_ip],
                        "sourceSubnetworkIpRangesToNat":
                        "LIST_OF_SUBNETWORKS",
                        "subnetworks": [{
                            "name":
                            f"regions/{region}/subnetworks/{subnetwork}"
                        }]
                    }],
                    "network":
                    f"https://www.googleapis.com/compute/v1/projects/{project}/global/networks/abstractio"
                }).execute()
        except Exception as exc:
            print(
                f"{datetime.now()} - Error while creating Cloud Router - {exc.__str__()}"
            )
            raise ComputeEngineException(
                status_code=500, message='Error while creating Cloud Router')