grpc-pve-cloud 3.2.2__tar.gz → 3.2.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {grpc_pve_cloud-3.2.2/src/grpc_pve_cloud.egg-info → grpc_pve_cloud-3.2.4}/PKG-INFO +2 -2
- {grpc_pve_cloud-3.2.2 → grpc_pve_cloud-3.2.4}/requirements.txt +1 -1
- {grpc_pve_cloud-3.2.2 → grpc_pve_cloud-3.2.4/src/grpc_pve_cloud.egg-info}/PKG-INFO +2 -2
- {grpc_pve_cloud-3.2.2 → grpc_pve_cloud-3.2.4}/src/grpc_pve_cloud.egg-info/requires.txt +1 -1
- grpc_pve_cloud-3.2.4/src/pve_cloud_rpc/_version.py +1 -0
- {grpc_pve_cloud-3.2.2 → grpc_pve_cloud-3.2.4}/src/pve_cloud_rpc/protos/cloud_pb2.py +7 -3
- {grpc_pve_cloud-3.2.2 → grpc_pve_cloud-3.2.4}/src/pve_cloud_rpc/protos/cloud_pb2_grpc.py +43 -0
- {grpc_pve_cloud-3.2.2 → grpc_pve_cloud-3.2.4}/src/pve_cloud_rpc/server.py +55 -71
- grpc_pve_cloud-3.2.2/src/pve_cloud_rpc/_version.py +0 -1
- {grpc_pve_cloud-3.2.2 → grpc_pve_cloud-3.2.4}/LICENSE.md +0 -0
- {grpc_pve_cloud-3.2.2 → grpc_pve_cloud-3.2.4}/README.md +0 -0
- {grpc_pve_cloud-3.2.2 → grpc_pve_cloud-3.2.4}/pyproject.toml +0 -0
- {grpc_pve_cloud-3.2.2 → grpc_pve_cloud-3.2.4}/setup.cfg +0 -0
- {grpc_pve_cloud-3.2.2 → grpc_pve_cloud-3.2.4}/src/grpc_pve_cloud.egg-info/SOURCES.txt +0 -0
- {grpc_pve_cloud-3.2.2 → grpc_pve_cloud-3.2.4}/src/grpc_pve_cloud.egg-info/dependency_links.txt +0 -0
- {grpc_pve_cloud-3.2.2 → grpc_pve_cloud-3.2.4}/src/grpc_pve_cloud.egg-info/entry_points.txt +0 -0
- {grpc_pve_cloud-3.2.2 → grpc_pve_cloud-3.2.4}/src/grpc_pve_cloud.egg-info/top_level.txt +0 -0
- {grpc_pve_cloud-3.2.2 → grpc_pve_cloud-3.2.4}/src/pve_cloud_rpc/protos/health_pb2.py +0 -0
- {grpc_pve_cloud-3.2.2 → grpc_pve_cloud-3.2.4}/src/pve_cloud_rpc/protos/health_pb2_grpc.py +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: grpc-pve-cloud
|
|
3
|
-
Version: 3.2.
|
|
3
|
+
Version: 3.2.4
|
|
4
4
|
Author-email: Tobias Huebner <tobias.huebner@vmzberlin.com>
|
|
5
5
|
License-Expression: GPL-3.0-or-later
|
|
6
6
|
License-File: LICENSE.md
|
|
7
|
-
Requires-Dist: py-pve-cloud<3.2.0,>=3.1.
|
|
7
|
+
Requires-Dist: py-pve-cloud<3.2.0,>=3.1.4
|
|
8
8
|
Requires-Dist: grpcio==1.81.0
|
|
9
9
|
Requires-Dist: protobuf==6.33.5
|
|
10
10
|
Dynamic: license-file
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: grpc-pve-cloud
|
|
3
|
-
Version: 3.2.
|
|
3
|
+
Version: 3.2.4
|
|
4
4
|
Author-email: Tobias Huebner <tobias.huebner@vmzberlin.com>
|
|
5
5
|
License-Expression: GPL-3.0-or-later
|
|
6
6
|
License-File: LICENSE.md
|
|
7
|
-
Requires-Dist: py-pve-cloud<3.2.0,>=3.1.
|
|
7
|
+
Requires-Dist: py-pve-cloud<3.2.0,>=3.1.4
|
|
8
8
|
Requires-Dist: grpcio==1.81.0
|
|
9
9
|
Requires-Dist: protobuf==6.33.5
|
|
10
10
|
Dynamic: license-file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "3.2.4"
|
|
@@ -24,7 +24,7 @@ _sym_db = _symbol_database.Default()
|
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
|
|
27
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0b\x63loud.proto\x12\x06protos\",\n\x16GetPveInventoryRequest\x12\x12\n\ntarget_pve\x18\x01 \x01(\t\"B\n\x17GetPveInventoryResponse\x12\x11\n\tinventory\x18\x01 \x01(\t\x12\x14\n\x0c\x63loud_domain\x18\x02 \x01(\t\"+\n\x15GetProxmoxHostRequest\x12\x12\n\ntarget_pve\x18\x01 \x01(\t\"*\n\x16GetProxmoxHostResponse\x12\x10\n\x08pve_host\x18\x01 \x01(\t\"\xa9\x01\n\x14GetProxmoxApiRequest\x12\x12\n\ntarget_pve\x18\x01 \x01(\t\x12\x10\n\x08\x61pi_path\x18\x02 \x01(\t\x12;\n\x08get_args\x18\x03 \x03(\x0b\x32).protos.GetProxmoxApiRequest.GetArgsEntry\x1a.\n\x0cGetArgsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"*\n\x15GetProxmoxApiResponse\x12\x11\n\tjson_resp\x18\x01 \x01(\t\"\xb8\x01\n\x17\x43reateProxmoxApiRequest\x12\x12\n\ntarget_pve\x18\x01 \x01(\t\x12\x10\n\x08\x61pi_path\x18\x02 \x01(\t\x12\x44\n\x0b\x63reate_args\x18\x03 \x03(\x0b\x32/.protos.CreateProxmoxApiRequest.CreateArgsEntry\x1a\x31\n\x0f\x43reateArgsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"@\n\x18\x43reateProxmoxApiResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x13\n\x0b\x65rr_message\x18\x02 \x01(\t\"?\n\x17\x44\x65leteProxmoxApiRequest\x12\x12\n\ntarget_pve\x18\x01 \x01(\t\x12\x10\n\x08\x61pi_path\x18\x02 \x01(\t\"@\n\x18\x44\x65leteProxmoxApiResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x13\n\x0b\x65rr_message\x18\x02 \x01(\t\"\x87\x01\n\x10GetSshKeyRequest\x12\x12\n\ntarget_pve\x18\x01 \x01(\t\x12\x32\n\x08key_type\x18\x02 \x01(\x0e\x32 .protos.GetSshKeyRequest.KeyType\"+\n\x07KeyType\x12\x0e\n\nAUTOMATION\x10\x00\x12\x10\n\x0cPVE_HOST_RSA\x10\x01\" \n\x11GetSshKeyResponse\x12\x0b\n\x03key\x18\x01 \x01(\t\"*\n\x14GetCephAccessRequest\x12\x12\n\ntarget_pve\x18\x01 \x01(\t\"A\n\x15GetCephAccessResponse\x12\x11\n\tceph_conf\x18\x01 \x01(\t\x12\x15\n\radmin_keyring\x18\x02 \x01(\t\"`\n\x14GetKubeconfigRequest\x12\x12\n\ntarget_pve\x18\x01 \x01(\t\x12\x12\n\nstack_name\x18\x02 \x01(\t\x12 \n\x18\x65xtra_control_plane_sans\x18\x03 \x03(\t\"\'\n\x15GetKubeconfigResponse\x12\x0e\n\x06\x63onfig\x18\x01 \x01(\t\"+\n\x15GetClusterVarsRequest\x12\x12\n\ntarget_pve\x18\x01 \x01(\t\"&\n\x16GetClusterVarsResponse\x12\x0c\n\x04vars\x18\x01 \x01(\t\"T\n\x19GetCloudFileSecretRequest\x12\x12\n\ntarget_pve\x18\x01 \x01(\t\x12\x13\n\x0bsecret_name\x18\x02 \x01(\t\x12\x0e\n\x06rstrip\x18\x03 \x01(\x08\",\n\x1aGetCloudFileSecretResponse\x12\x0e\n\x06secret\x18\x01 \x01(\t\"\x83\x01\n\x18\x43reateCloudSecretRequest\x12\x14\n\x0c\x63loud_domain\x18\x01 \x01(\t\x12\x12\n\ntarget_pve\x18\x02 \x01(\t\x12\x13\n\x0bsecret_name\x18\x03 \x01(\t\x12\x13\n\x0bsecret_data\x18\x04 \x01(\t\x12\x13\n\x0bsecret_type\x18\x05 \x01(\t\"A\n\x19\x43reateCloudSecretResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x13\n\x0b\x65rr_message\x18\x02 \x01(\t\"Y\n\x18\x44\x65leteCloudSecretRequest\x12\x14\n\x0c\x63loud_domain\x18\x01 \x01(\t\x12\x12\n\ntarget_pve\x18\x02 \x01(\t\x12\x13\n\x0bsecret_name\x18\x03 \x01(\t\"A\n\x19\x44\x65leteCloudSecretResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x13\n\x0b\x65rr_message\x18\x02 \x01(\t\"V\n\x15GetCloudSecretRequest\x12\x14\n\x0c\x63loud_domain\x18\x01 \x01(\t\x12\x12\n\ntarget_pve\x18\x02 \x01(\t\x12\x13\n\x0bsecret_name\x18\x03 \x01(\t\"(\n\x16GetCloudSecretResponse\x12\x0e\n\x06secret\x18\x01 \x01(\t\"W\n\x16GetCloudSecretsRequest\x12\x14\n\x0c\x63loud_domain\x18\x01 \x01(\t\x12\x12\n\ntarget_pve\x18\x02 \x01(\t\x12\x13\n\x0bsecret_type\x18\x03 \x01(\t\"*\n\x17GetCloudSecretsResponse\x12\x0f\n\x07secrets\x18\x01 \x01(\t\"T\n\x15GetVmVarsBlakeRequest\x12\x12\n\ntarget_pve\x18\x01 \x01(\t\x12\x14\n\x0c\x63loud_domain\x18\x02 \x01(\t\x12\x11\n\tblake_ids\x18\x03 \x03(\t\"\x94\x01\n\x16GetVmVarsBlakeResponse\x12\x46\n\rblake_id_vars\x18\x01 \x03(\x0b\x32/.protos.GetVmVarsBlakeResponse.BlakeIdVarsEntry\x1a\x32\n\x10\x42lakeIdVarsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"+\n\x15GetCloudDomainRequest\x12\x12\n\ntarget_pve\x18\x01 \x01(\t\"(\n\x16GetCloudDomainResponse\x12\x0e\n\x06\x64omain\x18\x01 \x01(\
|
|
27
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0b\x63loud.proto\x12\x06protos\",\n\x16GetPveInventoryRequest\x12\x12\n\ntarget_pve\x18\x01 \x01(\t\"B\n\x17GetPveInventoryResponse\x12\x11\n\tinventory\x18\x01 \x01(\t\x12\x14\n\x0c\x63loud_domain\x18\x02 \x01(\t\"+\n\x15GetProxmoxHostRequest\x12\x12\n\ntarget_pve\x18\x01 \x01(\t\"*\n\x16GetProxmoxHostResponse\x12\x10\n\x08pve_host\x18\x01 \x01(\t\"\xa9\x01\n\x14GetProxmoxApiRequest\x12\x12\n\ntarget_pve\x18\x01 \x01(\t\x12\x10\n\x08\x61pi_path\x18\x02 \x01(\t\x12;\n\x08get_args\x18\x03 \x03(\x0b\x32).protos.GetProxmoxApiRequest.GetArgsEntry\x1a.\n\x0cGetArgsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"*\n\x15GetProxmoxApiResponse\x12\x11\n\tjson_resp\x18\x01 \x01(\t\"\xb8\x01\n\x17\x43reateProxmoxApiRequest\x12\x12\n\ntarget_pve\x18\x01 \x01(\t\x12\x10\n\x08\x61pi_path\x18\x02 \x01(\t\x12\x44\n\x0b\x63reate_args\x18\x03 \x03(\x0b\x32/.protos.CreateProxmoxApiRequest.CreateArgsEntry\x1a\x31\n\x0f\x43reateArgsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"@\n\x18\x43reateProxmoxApiResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x13\n\x0b\x65rr_message\x18\x02 \x01(\t\"?\n\x17\x44\x65leteProxmoxApiRequest\x12\x12\n\ntarget_pve\x18\x01 \x01(\t\x12\x10\n\x08\x61pi_path\x18\x02 \x01(\t\"@\n\x18\x44\x65leteProxmoxApiResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x13\n\x0b\x65rr_message\x18\x02 \x01(\t\"\x87\x01\n\x10GetSshKeyRequest\x12\x12\n\ntarget_pve\x18\x01 \x01(\t\x12\x32\n\x08key_type\x18\x02 \x01(\x0e\x32 .protos.GetSshKeyRequest.KeyType\"+\n\x07KeyType\x12\x0e\n\nAUTOMATION\x10\x00\x12\x10\n\x0cPVE_HOST_RSA\x10\x01\" \n\x11GetSshKeyResponse\x12\x0b\n\x03key\x18\x01 \x01(\t\"*\n\x14GetCephAccessRequest\x12\x12\n\ntarget_pve\x18\x01 \x01(\t\"A\n\x15GetCephAccessResponse\x12\x11\n\tceph_conf\x18\x01 \x01(\t\x12\x15\n\radmin_keyring\x18\x02 \x01(\t\"`\n\x14GetKubeconfigRequest\x12\x12\n\ntarget_pve\x18\x01 \x01(\t\x12\x12\n\nstack_name\x18\x02 \x01(\t\x12 \n\x18\x65xtra_control_plane_sans\x18\x03 \x03(\t\"\'\n\x15GetKubeconfigResponse\x12\x0e\n\x06\x63onfig\x18\x01 \x01(\t\"+\n\x15GetClusterVarsRequest\x12\x12\n\ntarget_pve\x18\x01 \x01(\t\"&\n\x16GetClusterVarsResponse\x12\x0c\n\x04vars\x18\x01 \x01(\t\"T\n\x19GetCloudFileSecretRequest\x12\x12\n\ntarget_pve\x18\x01 \x01(\t\x12\x13\n\x0bsecret_name\x18\x02 \x01(\t\x12\x0e\n\x06rstrip\x18\x03 \x01(\x08\",\n\x1aGetCloudFileSecretResponse\x12\x0e\n\x06secret\x18\x01 \x01(\t\"\x83\x01\n\x18\x43reateCloudSecretRequest\x12\x14\n\x0c\x63loud_domain\x18\x01 \x01(\t\x12\x12\n\ntarget_pve\x18\x02 \x01(\t\x12\x13\n\x0bsecret_name\x18\x03 \x01(\t\x12\x13\n\x0bsecret_data\x18\x04 \x01(\t\x12\x13\n\x0bsecret_type\x18\x05 \x01(\t\"A\n\x19\x43reateCloudSecretResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x13\n\x0b\x65rr_message\x18\x02 \x01(\t\"Y\n\x18\x44\x65leteCloudSecretRequest\x12\x14\n\x0c\x63loud_domain\x18\x01 \x01(\t\x12\x12\n\ntarget_pve\x18\x02 \x01(\t\x12\x13\n\x0bsecret_name\x18\x03 \x01(\t\"A\n\x19\x44\x65leteCloudSecretResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x13\n\x0b\x65rr_message\x18\x02 \x01(\t\"V\n\x15GetCloudSecretRequest\x12\x14\n\x0c\x63loud_domain\x18\x01 \x01(\t\x12\x12\n\ntarget_pve\x18\x02 \x01(\t\x12\x13\n\x0bsecret_name\x18\x03 \x01(\t\"(\n\x16GetCloudSecretResponse\x12\x0e\n\x06secret\x18\x01 \x01(\t\"W\n\x16GetCloudSecretsRequest\x12\x14\n\x0c\x63loud_domain\x18\x01 \x01(\t\x12\x12\n\ntarget_pve\x18\x02 \x01(\t\x12\x13\n\x0bsecret_type\x18\x03 \x01(\t\"*\n\x17GetCloudSecretsResponse\x12\x0f\n\x07secrets\x18\x01 \x01(\t\"T\n\x15GetVmVarsBlakeRequest\x12\x12\n\ntarget_pve\x18\x01 \x01(\t\x12\x14\n\x0c\x63loud_domain\x18\x02 \x01(\t\x12\x11\n\tblake_ids\x18\x03 \x03(\t\"\x94\x01\n\x16GetVmVarsBlakeResponse\x12\x46\n\rblake_id_vars\x18\x01 \x03(\x0b\x32/.protos.GetVmVarsBlakeResponse.BlakeIdVarsEntry\x1a\x32\n\x10\x42lakeIdVarsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"+\n\x15GetCloudDomainRequest\x12\x12\n\ntarget_pve\x18\x01 \x01(\t\"(\n\x16GetCloudDomainResponse\x12\x0e\n\x06\x64omain\x18\x01 \x01(\t\";\n\x17GetDnsARecordSetRequest\x12\x12\n\ntarget_pve\x18\x01 \x01(\t\x12\x0c\n\x04host\x18\x02 \x01(\t\")\n\x18GetDnsARecordSetResponse\x12\r\n\x05\x61\x64\x64rs\x18\x01 \x03(\t2\x93\x0b\n\x0c\x43loudService\x12R\n\x13GetMasterKubeconfig\x12\x1c.protos.GetKubeconfigRequest\x1a\x1d.protos.GetKubeconfigResponse\x12O\n\x0eGetClusterVars\x12\x1d.protos.GetClusterVarsRequest\x1a\x1e.protos.GetClusterVarsResponse\x12[\n\x12GetCloudFileSecret\x12!.protos.GetCloudFileSecretRequest\x1a\".protos.GetCloudFileSecretResponse\x12X\n\x11\x43reateCloudSecret\x12 .protos.CreateCloudSecretRequest\x1a!.protos.CreateCloudSecretResponse\x12X\n\x11\x44\x65leteCloudSecret\x12 .protos.DeleteCloudSecretRequest\x1a!.protos.DeleteCloudSecretResponse\x12O\n\x0eGetCloudSecret\x12\x1d.protos.GetCloudSecretRequest\x1a\x1e.protos.GetCloudSecretResponse\x12R\n\x0fGetCloudSecrets\x12\x1e.protos.GetCloudSecretsRequest\x1a\x1f.protos.GetCloudSecretsResponse\x12L\n\rGetCephAccess\x12\x1c.protos.GetCephAccessRequest\x1a\x1d.protos.GetCephAccessResponse\x12@\n\tGetSshKey\x12\x18.protos.GetSshKeyRequest\x1a\x19.protos.GetSshKeyResponse\x12L\n\rGetProxmoxApi\x12\x1c.protos.GetProxmoxApiRequest\x1a\x1d.protos.GetProxmoxApiResponse\x12U\n\x10\x43reateProxmoxApi\x12\x1f.protos.CreateProxmoxApiRequest\x1a .protos.CreateProxmoxApiResponse\x12U\n\x10\x44\x65leteProxmoxApi\x12\x1f.protos.DeleteProxmoxApiRequest\x1a .protos.DeleteProxmoxApiResponse\x12O\n\x0eGetProxmoxHost\x12\x1d.protos.GetProxmoxHostRequest\x1a\x1e.protos.GetProxmoxHostResponse\x12R\n\x0fGetPveInventory\x12\x1e.protos.GetPveInventoryRequest\x1a\x1f.protos.GetPveInventoryResponse\x12O\n\x0eGetCloudDomain\x12\x1d.protos.GetCloudDomainRequest\x1a\x1e.protos.GetCloudDomainResponse\x12O\n\x0eGetVmVarsBlake\x12\x1d.protos.GetVmVarsBlakeRequest\x1a\x1e.protos.GetVmVarsBlakeResponse\x12U\n\x10GetDnsARecordSet\x12\x1f.protos.GetDnsARecordSetRequest\x1a .protos.GetDnsARecordSetResponseBQZOgithub.com/Proxmox-Cloud/terraform-provider-pxc/internal/provider/protos;protosb\x06proto3')
|
|
28
28
|
|
|
29
29
|
_globals = globals()
|
|
30
30
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
@@ -110,6 +110,10 @@ if not _descriptor._USE_C_DESCRIPTORS:
|
|
|
110
110
|
_globals['_GETCLOUDDOMAINREQUEST']._serialized_end=2367
|
|
111
111
|
_globals['_GETCLOUDDOMAINRESPONSE']._serialized_start=2369
|
|
112
112
|
_globals['_GETCLOUDDOMAINRESPONSE']._serialized_end=2409
|
|
113
|
-
_globals['
|
|
114
|
-
_globals['
|
|
113
|
+
_globals['_GETDNSARECORDSETREQUEST']._serialized_start=2411
|
|
114
|
+
_globals['_GETDNSARECORDSETREQUEST']._serialized_end=2470
|
|
115
|
+
_globals['_GETDNSARECORDSETRESPONSE']._serialized_start=2472
|
|
116
|
+
_globals['_GETDNSARECORDSETRESPONSE']._serialized_end=2513
|
|
117
|
+
_globals['_CLOUDSERVICE']._serialized_start=2516
|
|
118
|
+
_globals['_CLOUDSERVICE']._serialized_end=3943
|
|
115
119
|
# @@protoc_insertion_point(module_scope)
|
|
@@ -114,6 +114,11 @@ class CloudServiceStub:
|
|
|
114
114
|
request_serializer=cloud__pb2.GetVmVarsBlakeRequest.SerializeToString,
|
|
115
115
|
response_deserializer=cloud__pb2.GetVmVarsBlakeResponse.FromString,
|
|
116
116
|
_registered_method=True)
|
|
117
|
+
self.GetDnsARecordSet = channel.unary_unary(
|
|
118
|
+
'/protos.CloudService/GetDnsARecordSet',
|
|
119
|
+
request_serializer=cloud__pb2.GetDnsARecordSetRequest.SerializeToString,
|
|
120
|
+
response_deserializer=cloud__pb2.GetDnsARecordSetResponse.FromString,
|
|
121
|
+
_registered_method=True)
|
|
117
122
|
|
|
118
123
|
|
|
119
124
|
class CloudServiceServicer:
|
|
@@ -215,6 +220,12 @@ class CloudServiceServicer:
|
|
|
215
220
|
context.set_details('Method not implemented!')
|
|
216
221
|
raise NotImplementedError('Method not implemented!')
|
|
217
222
|
|
|
223
|
+
def GetDnsARecordSet(self, request, context):
|
|
224
|
+
"""Missing associated documentation comment in .proto file."""
|
|
225
|
+
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
|
226
|
+
context.set_details('Method not implemented!')
|
|
227
|
+
raise NotImplementedError('Method not implemented!')
|
|
228
|
+
|
|
218
229
|
|
|
219
230
|
def add_CloudServiceServicer_to_server(servicer, server):
|
|
220
231
|
rpc_method_handlers = {
|
|
@@ -298,6 +309,11 @@ def add_CloudServiceServicer_to_server(servicer, server):
|
|
|
298
309
|
request_deserializer=cloud__pb2.GetVmVarsBlakeRequest.FromString,
|
|
299
310
|
response_serializer=cloud__pb2.GetVmVarsBlakeResponse.SerializeToString,
|
|
300
311
|
),
|
|
312
|
+
'GetDnsARecordSet': grpc.unary_unary_rpc_method_handler(
|
|
313
|
+
servicer.GetDnsARecordSet,
|
|
314
|
+
request_deserializer=cloud__pb2.GetDnsARecordSetRequest.FromString,
|
|
315
|
+
response_serializer=cloud__pb2.GetDnsARecordSetResponse.SerializeToString,
|
|
316
|
+
),
|
|
301
317
|
}
|
|
302
318
|
generic_handler = grpc.method_handlers_generic_handler(
|
|
303
319
|
'protos.CloudService', rpc_method_handlers)
|
|
@@ -740,3 +756,30 @@ class CloudService:
|
|
|
740
756
|
timeout,
|
|
741
757
|
metadata,
|
|
742
758
|
_registered_method=True)
|
|
759
|
+
|
|
760
|
+
@staticmethod
|
|
761
|
+
def GetDnsARecordSet(request,
|
|
762
|
+
target,
|
|
763
|
+
options=(),
|
|
764
|
+
channel_credentials=None,
|
|
765
|
+
call_credentials=None,
|
|
766
|
+
insecure=False,
|
|
767
|
+
compression=None,
|
|
768
|
+
wait_for_ready=None,
|
|
769
|
+
timeout=None,
|
|
770
|
+
metadata=None):
|
|
771
|
+
return grpc.experimental.unary_unary(
|
|
772
|
+
request,
|
|
773
|
+
target,
|
|
774
|
+
'/protos.CloudService/GetDnsARecordSet',
|
|
775
|
+
cloud__pb2.GetDnsARecordSetRequest.SerializeToString,
|
|
776
|
+
cloud__pb2.GetDnsARecordSetResponse.FromString,
|
|
777
|
+
options,
|
|
778
|
+
channel_credentials,
|
|
779
|
+
insecure,
|
|
780
|
+
call_credentials,
|
|
781
|
+
compression,
|
|
782
|
+
wait_for_ready,
|
|
783
|
+
timeout,
|
|
784
|
+
metadata,
|
|
785
|
+
_registered_method=True)
|
|
@@ -5,6 +5,7 @@ import sys
|
|
|
5
5
|
from contextlib import AsyncExitStack
|
|
6
6
|
|
|
7
7
|
import asyncssh
|
|
8
|
+
import dns.resolver
|
|
8
9
|
import grpc
|
|
9
10
|
import yaml
|
|
10
11
|
from pve_cloud.cli.pvclu import (get_ssh_master_kubeconfig,
|
|
@@ -13,6 +14,7 @@ from pve_cloud.cli.pxrpc import launch_pxrpc_async
|
|
|
13
14
|
from pve_cloud.lib.inventory import (get_cloud_domain, get_cluster_vars,
|
|
14
15
|
get_online_pve_host_from_target_pve,
|
|
15
16
|
get_pve_inventory)
|
|
17
|
+
from pve_cloud.lib.ssh import cleanup_jumphosts_async, get_jump_host_async
|
|
16
18
|
from pve_cloud.orm.alchemy import ProxmoxCloudSecrets, VirtualMachineVars
|
|
17
19
|
from sqlalchemy import create_engine, delete, select
|
|
18
20
|
from sqlalchemy.exc import IntegrityError
|
|
@@ -65,19 +67,6 @@ async def get_engine(online_pve_host):
|
|
|
65
67
|
return engine
|
|
66
68
|
|
|
67
69
|
|
|
68
|
-
# fabric host
|
|
69
|
-
def get_pg_conn_str(pve_host):
|
|
70
|
-
result = pve_host.run("cat /etc/pve/cloud/secrets/patroni.pass")
|
|
71
|
-
patroni_pass = result.stdout.rstrip()
|
|
72
|
-
|
|
73
|
-
result = pve_host.run("cat /etc/pve/cloud/cluster_vars.yaml")
|
|
74
|
-
cluster_vars = yaml.safe_load(result.stdout)
|
|
75
|
-
|
|
76
|
-
patroni_cstr = f"postgresql+psycopg2://postgres:{patroni_pass}@{cluster_vars['pve_haproxy_floating_ip_internal']}:5000/pve_cloud?sslmode=disable"
|
|
77
|
-
|
|
78
|
-
return patroni_cstr
|
|
79
|
-
|
|
80
|
-
|
|
81
70
|
class CloudServiceServicer(cloud_pb2_grpc.CloudServiceServicer):
|
|
82
71
|
|
|
83
72
|
def __init__(self):
|
|
@@ -94,9 +83,7 @@ class CloudServiceServicer(cloud_pb2_grpc.CloudServiceServicer):
|
|
|
94
83
|
launch_pxrpc_async(jump_host, online_pve_host)
|
|
95
84
|
)
|
|
96
85
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
return pxrpc, pve_host
|
|
86
|
+
return self.pxrpcs[pxrpc_id]
|
|
100
87
|
|
|
101
88
|
# close the pxrpc connection(s)
|
|
102
89
|
async def shutdown(self):
|
|
@@ -154,7 +141,7 @@ class CloudServiceServicer(cloud_pb2_grpc.CloudServiceServicer):
|
|
|
154
141
|
# go through jump host if defined
|
|
155
142
|
jc = None
|
|
156
143
|
if jump_host:
|
|
157
|
-
jc = await
|
|
144
|
+
jc = await get_jump_host_async(jump_host)
|
|
158
145
|
|
|
159
146
|
async with asyncssh.connect(
|
|
160
147
|
online_pve_host, username="root", known_hosts=None, tunnel=jc
|
|
@@ -169,11 +156,6 @@ class CloudServiceServicer(cloud_pb2_grpc.CloudServiceServicer):
|
|
|
169
156
|
): # defaults to true but in special cases user might want to keep newlines (e.g. certs)
|
|
170
157
|
catted_secret = catted_secret.rstrip()
|
|
171
158
|
|
|
172
|
-
# close the jumphost if it was defined
|
|
173
|
-
if jc:
|
|
174
|
-
jc.close()
|
|
175
|
-
await jc.wait_closed()
|
|
176
|
-
|
|
177
159
|
return cloud_pb2.GetCloudFileSecretResponse(secret=catted_secret)
|
|
178
160
|
|
|
179
161
|
# non file proxmox cloud secrets are stored in the patroni database
|
|
@@ -189,11 +171,9 @@ class CloudServiceServicer(cloud_pb2_grpc.CloudServiceServicer):
|
|
|
189
171
|
)
|
|
190
172
|
if jump_host:
|
|
191
173
|
# need to execute via pxrpc on jumphost
|
|
192
|
-
pxrpc
|
|
174
|
+
pxrpc = await self.get_pxrpc(online_pve_host, jump_host)
|
|
193
175
|
|
|
194
|
-
pg_conn_str = get_pg_conn_str(pve_host)
|
|
195
176
|
success = await pxrpc.inject_cloud_secret(
|
|
196
|
-
pg_conn_str,
|
|
197
177
|
cloud_domain,
|
|
198
178
|
secret_name,
|
|
199
179
|
json.dumps(secret_data),
|
|
@@ -240,10 +220,9 @@ class CloudServiceServicer(cloud_pb2_grpc.CloudServiceServicer):
|
|
|
240
220
|
)
|
|
241
221
|
|
|
242
222
|
if jump_host:
|
|
243
|
-
pxrpc
|
|
223
|
+
pxrpc = await self.get_pxrpc(online_pve_host, jump_host)
|
|
244
224
|
|
|
245
|
-
|
|
246
|
-
await pxrpc.delete_cloud_secret(pg_conn_str, cloud_domain, secret_name)
|
|
225
|
+
await pxrpc.delete_cloud_secret(cloud_domain, secret_name)
|
|
247
226
|
|
|
248
227
|
return cloud_pb2.DeleteCloudSecretResponse(success=True)
|
|
249
228
|
|
|
@@ -271,13 +250,9 @@ class CloudServiceServicer(cloud_pb2_grpc.CloudServiceServicer):
|
|
|
271
250
|
)
|
|
272
251
|
|
|
273
252
|
if jump_host:
|
|
274
|
-
pxrpc
|
|
275
|
-
|
|
276
|
-
pg_conn_str = get_pg_conn_str(pve_host)
|
|
253
|
+
pxrpc = await self.get_pxrpc(online_pve_host, jump_host)
|
|
277
254
|
|
|
278
|
-
secret_json = await pxrpc.get_cloud_secret(
|
|
279
|
-
pg_conn_str, cloud_domain, secret_name
|
|
280
|
-
)
|
|
255
|
+
secret_json = await pxrpc.get_cloud_secret(cloud_domain, secret_name)
|
|
281
256
|
|
|
282
257
|
if secret_json == "":
|
|
283
258
|
return cloud_pb2.GetCloudSecretResponse()
|
|
@@ -312,13 +287,9 @@ class CloudServiceServicer(cloud_pb2_grpc.CloudServiceServicer):
|
|
|
312
287
|
)
|
|
313
288
|
|
|
314
289
|
if jump_host:
|
|
315
|
-
pxrpc
|
|
316
|
-
|
|
317
|
-
pg_conn_str = get_pg_conn_str(pve_host)
|
|
290
|
+
pxrpc = await self.get_pxrpc(online_pve_host, jump_host)
|
|
318
291
|
|
|
319
|
-
secrets_json = await pxrpc.get_cloud_secrets(
|
|
320
|
-
pg_conn_str, cloud_domain, secret_type
|
|
321
|
-
)
|
|
292
|
+
secrets_json = await pxrpc.get_cloud_secrets(cloud_domain, secret_type)
|
|
322
293
|
|
|
323
294
|
return cloud_pb2.GetCloudSecretsResponse(secrets=secrets_json)
|
|
324
295
|
|
|
@@ -348,14 +319,10 @@ class CloudServiceServicer(cloud_pb2_grpc.CloudServiceServicer):
|
|
|
348
319
|
)
|
|
349
320
|
|
|
350
321
|
if jump_host:
|
|
351
|
-
pxrpc
|
|
352
|
-
|
|
353
|
-
pg_conn_str = get_pg_conn_str(pve_host)
|
|
322
|
+
pxrpc = await self.get_pxrpc(online_pve_host, jump_host)
|
|
354
323
|
|
|
355
324
|
blake_ids_json = json.dumps(list(blake_ids))
|
|
356
|
-
return_vars = await pxrpc.get_vm_vars_blake(
|
|
357
|
-
pg_conn_str, blake_ids_json, cloud_domain
|
|
358
|
-
)
|
|
325
|
+
return_vars = await pxrpc.get_vm_vars_blake(blake_ids_json, cloud_domain)
|
|
359
326
|
|
|
360
327
|
return cloud_pb2.GetVmVarsBlakeResponse(
|
|
361
328
|
blake_id_vars={
|
|
@@ -389,7 +356,7 @@ class CloudServiceServicer(cloud_pb2_grpc.CloudServiceServicer):
|
|
|
389
356
|
|
|
390
357
|
jc = None
|
|
391
358
|
if jump_host:
|
|
392
|
-
jc = await
|
|
359
|
+
jc = await get_jump_host_async(jump_host)
|
|
393
360
|
|
|
394
361
|
async with asyncssh.connect(
|
|
395
362
|
online_pve_host, username="root", known_hosts=None, tunnel=jc
|
|
@@ -402,10 +369,6 @@ class CloudServiceServicer(cloud_pb2_grpc.CloudServiceServicer):
|
|
|
402
369
|
)
|
|
403
370
|
catted_keyring = cmd.stdout
|
|
404
371
|
|
|
405
|
-
if jc:
|
|
406
|
-
jc.close()
|
|
407
|
-
await jc.wait_closed()
|
|
408
|
-
|
|
409
372
|
return cloud_pb2.GetCephAccessResponse(
|
|
410
373
|
ceph_conf=catted_conf, admin_keyring=catted_keyring
|
|
411
374
|
)
|
|
@@ -419,7 +382,7 @@ class CloudServiceServicer(cloud_pb2_grpc.CloudServiceServicer):
|
|
|
419
382
|
|
|
420
383
|
jc = None
|
|
421
384
|
if jump_host:
|
|
422
|
-
jc = await
|
|
385
|
+
jc = await get_jump_host_async(jump_host)
|
|
423
386
|
|
|
424
387
|
async with asyncssh.connect(
|
|
425
388
|
online_pve_host, username="root", known_hosts=None, tunnel=jc
|
|
@@ -434,10 +397,6 @@ class CloudServiceServicer(cloud_pb2_grpc.CloudServiceServicer):
|
|
|
434
397
|
)
|
|
435
398
|
catted_key = cmd.stdout
|
|
436
399
|
|
|
437
|
-
if jc:
|
|
438
|
-
jc.close()
|
|
439
|
-
await jc.wait_closed()
|
|
440
|
-
|
|
441
400
|
return cloud_pb2.GetSshKeyResponse(key=catted_key)
|
|
442
401
|
|
|
443
402
|
async def GetProxmoxApi(self, request, context):
|
|
@@ -449,7 +408,7 @@ class CloudServiceServicer(cloud_pb2_grpc.CloudServiceServicer):
|
|
|
449
408
|
|
|
450
409
|
jc = None
|
|
451
410
|
if jump_host:
|
|
452
|
-
jc = await
|
|
411
|
+
jc = await get_jump_host_async(jump_host)
|
|
453
412
|
|
|
454
413
|
async with asyncssh.connect(
|
|
455
414
|
online_pve_host, username="root", known_hosts=None, tunnel=jc
|
|
@@ -466,10 +425,6 @@ class CloudServiceServicer(cloud_pb2_grpc.CloudServiceServicer):
|
|
|
466
425
|
)
|
|
467
426
|
resp_json = cmd.stdout
|
|
468
427
|
|
|
469
|
-
if jc:
|
|
470
|
-
jc.close()
|
|
471
|
-
await jc.wait_closed()
|
|
472
|
-
|
|
473
428
|
return cloud_pb2.GetProxmoxApiResponse(json_resp=resp_json)
|
|
474
429
|
|
|
475
430
|
async def CreateProxmoxApi(self, request, context):
|
|
@@ -481,7 +436,7 @@ class CloudServiceServicer(cloud_pb2_grpc.CloudServiceServicer):
|
|
|
481
436
|
|
|
482
437
|
jc = None
|
|
483
438
|
if jump_host:
|
|
484
|
-
jc = await
|
|
439
|
+
jc = await get_jump_host_async(jump_host)
|
|
485
440
|
|
|
486
441
|
async with asyncssh.connect(
|
|
487
442
|
online_pve_host, username="root", known_hosts=None, tunnel=jc
|
|
@@ -503,10 +458,6 @@ class CloudServiceServicer(cloud_pb2_grpc.CloudServiceServicer):
|
|
|
503
458
|
success=False, err_message=f"Exit code {e.exit_status} - {e.stderr}"
|
|
504
459
|
)
|
|
505
460
|
|
|
506
|
-
if jc:
|
|
507
|
-
jc.close()
|
|
508
|
-
await jc.wait_closed()
|
|
509
|
-
|
|
510
461
|
return cloud_pb2.CreateProxmoxApiResponse(success=True)
|
|
511
462
|
|
|
512
463
|
async def DeleteProxmoxApi(self, request, context):
|
|
@@ -518,7 +469,7 @@ class CloudServiceServicer(cloud_pb2_grpc.CloudServiceServicer):
|
|
|
518
469
|
|
|
519
470
|
jc = None
|
|
520
471
|
if jump_host:
|
|
521
|
-
jc = await
|
|
472
|
+
jc = await get_jump_host_async(jump_host)
|
|
522
473
|
|
|
523
474
|
async with asyncssh.connect(
|
|
524
475
|
online_pve_host, username="root", known_hosts=None, tunnel=jc
|
|
@@ -534,10 +485,6 @@ class CloudServiceServicer(cloud_pb2_grpc.CloudServiceServicer):
|
|
|
534
485
|
success=False, err_message=f"Exit code {e.exit_status} - {e.stderr}"
|
|
535
486
|
)
|
|
536
487
|
|
|
537
|
-
if jc:
|
|
538
|
-
jc.close()
|
|
539
|
-
await jc.wait_closed()
|
|
540
|
-
|
|
541
488
|
return cloud_pb2.DeleteProxmoxApiResponse(success=True)
|
|
542
489
|
|
|
543
490
|
async def GetProxmoxHost(self, request, context):
|
|
@@ -565,8 +512,42 @@ class CloudServiceServicer(cloud_pb2_grpc.CloudServiceServicer):
|
|
|
565
512
|
inventory=yaml.safe_dump(pve_inventory), cloud_domain=cloud_domain
|
|
566
513
|
)
|
|
567
514
|
|
|
515
|
+
async def GetDnsARecordSet(self, request, context):
|
|
516
|
+
target_pve = request.target_pve
|
|
517
|
+
host = request.host
|
|
518
|
+
online_pve_host, jump_host = get_online_pve_host_from_target_pve(
|
|
519
|
+
target_pve, skip_py_cloud_check=True
|
|
520
|
+
)
|
|
521
|
+
|
|
522
|
+
if jump_host:
|
|
523
|
+
pxrpc = await self.get_pxrpc(online_pve_host, jump_host)
|
|
524
|
+
|
|
525
|
+
addresses_json = await pxrpc.get_dns_a_record(host)
|
|
526
|
+
|
|
527
|
+
return cloud_pb2.GetDnsARecordSetResponse(addrs=json.loads(addresses_json))
|
|
528
|
+
|
|
529
|
+
else:
|
|
530
|
+
cluster_vars = get_cluster_vars(online_pve_host, jump_host)
|
|
531
|
+
|
|
532
|
+
resolver = dns.resolver.Resolver()
|
|
533
|
+
resolver.nameservers = [
|
|
534
|
+
cluster_vars["bind_master_ip"],
|
|
535
|
+
cluster_vars["bind_slave_ip"],
|
|
536
|
+
]
|
|
537
|
+
|
|
538
|
+
try:
|
|
539
|
+
answers = resolver.resolve(host, "A")
|
|
540
|
+
addrs = [rdata.address for rdata in answers]
|
|
541
|
+
except (dns.resolver.NoAnswer, dns.resolver.NXDOMAIN):
|
|
542
|
+
addrs = []
|
|
543
|
+
|
|
544
|
+
return cloud_pb2.GetDnsARecordSetResponse(addrs=addrs)
|
|
545
|
+
|
|
568
546
|
|
|
569
547
|
async def serve():
|
|
548
|
+
# patch the current asyncio loop to allow pxc async ssh calls
|
|
549
|
+
asyncio.get_running_loop()._pxc_ssh_managed = True
|
|
550
|
+
|
|
570
551
|
server = grpc.aio.server()
|
|
571
552
|
servicer = CloudServiceServicer()
|
|
572
553
|
cloud_pb2_grpc.add_CloudServiceServicer_to_server(servicer, server)
|
|
@@ -588,6 +569,9 @@ async def serve():
|
|
|
588
569
|
await server.stop(grace=0)
|
|
589
570
|
print("gRPC server stopped and port released.")
|
|
590
571
|
|
|
572
|
+
# call pxc cleanup functions
|
|
573
|
+
await cleanup_jumphosts_async()
|
|
574
|
+
|
|
591
575
|
# delete unix socket file
|
|
592
576
|
if os.path.exists(socket_file):
|
|
593
577
|
os.remove(socket_file)
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "3.2.2"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{grpc_pve_cloud-3.2.2 → grpc_pve_cloud-3.2.4}/src/grpc_pve_cloud.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|