lm-cloud-sync 2.0.2__tar.gz → 2.0.3__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.
Files changed (72) hide show
  1. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/.env.example +2 -1
  2. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/PKG-INFO +1 -1
  3. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/pyproject.toml +1 -1
  4. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/src/lm_cloud_sync/providers/azure/discovery.py +1 -1
  5. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/src/lm_cloud_sync/providers/azure/groups.py +45 -1
  6. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/uv.lock +1 -1
  7. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/.gitignore +0 -0
  8. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/.python-version +0 -0
  9. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/CHANGELOG.md +0 -0
  10. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/LICENSE +0 -0
  11. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/README.md +0 -0
  12. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/docs/cli-guide.md +0 -0
  13. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/docs/gcp-spec.md +0 -0
  14. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/docs/lm-cloud-sync-v2-spec.md +0 -0
  15. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/docs/publishing.md +0 -0
  16. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/src/lm_cloud_sync/__init__.py +0 -0
  17. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/src/lm_cloud_sync/cli/__init__.py +0 -0
  18. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/src/lm_cloud_sync/cli/aws.py +0 -0
  19. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/src/lm_cloud_sync/cli/azure.py +0 -0
  20. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/src/lm_cloud_sync/cli/gcp.py +0 -0
  21. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/src/lm_cloud_sync/cli/main.py +0 -0
  22. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/src/lm_cloud_sync/core/__init__.py +0 -0
  23. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/src/lm_cloud_sync/core/config.py +0 -0
  24. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/src/lm_cloud_sync/core/exceptions.py +0 -0
  25. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/src/lm_cloud_sync/core/lm_client.py +0 -0
  26. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/src/lm_cloud_sync/core/models.py +0 -0
  27. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/src/lm_cloud_sync/providers/__init__.py +0 -0
  28. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/src/lm_cloud_sync/providers/aws/__init__.py +0 -0
  29. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/src/lm_cloud_sync/providers/aws/auth.py +0 -0
  30. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/src/lm_cloud_sync/providers/aws/discovery.py +0 -0
  31. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/src/lm_cloud_sync/providers/aws/groups.py +0 -0
  32. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/src/lm_cloud_sync/providers/aws/provider.py +0 -0
  33. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/src/lm_cloud_sync/providers/azure/__init__.py +0 -0
  34. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/src/lm_cloud_sync/providers/azure/provider.py +0 -0
  35. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/src/lm_cloud_sync/providers/base.py +0 -0
  36. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/src/lm_cloud_sync/providers/gcp/__init__.py +0 -0
  37. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/src/lm_cloud_sync/providers/gcp/discovery.py +0 -0
  38. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/src/lm_cloud_sync/providers/gcp/groups.py +0 -0
  39. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/src/lm_cloud_sync/providers/gcp/provider.py +0 -0
  40. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/src/lm_cloud_sync/py.typed +0 -0
  41. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/terraform/README.md +0 -0
  42. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/terraform/examples/gcp-only/main.tf +0 -0
  43. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/terraform/examples/gcp-only/projects.yaml.example +0 -0
  44. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/terraform/examples/gcp-only/terraform.tfvars.example +0 -0
  45. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/terraform/examples/gcp-only/variables.tf +0 -0
  46. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/terraform/modules/aws/main.tf +0 -0
  47. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/terraform/modules/aws/outputs.tf +0 -0
  48. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/terraform/modules/aws/scripts/create_integration.py +0 -0
  49. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/terraform/modules/aws/scripts/delete_integration.py +0 -0
  50. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/terraform/modules/aws/variables.tf +0 -0
  51. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/terraform/modules/azure/README.md +0 -0
  52. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/terraform/modules/azure/main.tf +0 -0
  53. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/terraform/modules/azure/outputs.tf +0 -0
  54. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/terraform/modules/azure/scripts/export-credentials.sh +0 -0
  55. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/terraform/modules/azure/variables.tf +0 -0
  56. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/terraform/modules/gcp/main.tf +0 -0
  57. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/terraform/modules/gcp/outputs.tf +0 -0
  58. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/terraform/modules/gcp/scripts/create_integration.py +0 -0
  59. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/terraform/modules/gcp/scripts/delete_integration.py +0 -0
  60. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/terraform/modules/gcp/variables.tf +0 -0
  61. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/tests/__init__.py +0 -0
  62. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/tests/conftest.py +0 -0
  63. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/tests/integration/__init__.py +0 -0
  64. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/tests/unit/__init__.py +0 -0
  65. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/tests/unit/test_aws_auth.py +0 -0
  66. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/tests/unit/test_aws_discovery.py +0 -0
  67. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/tests/unit/test_aws_groups.py +0 -0
  68. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/tests/unit/test_azure_discovery.py +0 -0
  69. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/tests/unit/test_azure_groups.py +0 -0
  70. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/tests/unit/test_cli.py +0 -0
  71. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/tests/unit/test_lm_client.py +0 -0
  72. {lm_cloud_sync-2.0.2 → lm_cloud_sync-2.0.3}/tests/unit/test_models.py +0 -0
@@ -46,9 +46,10 @@ AWS_SECRET_ACCESS_KEY=your_aws_secret_access_key
46
46
 
47
47
  # Azure Service Principal credentials
48
48
  # The service principal needs 'Reader' role at subscription or management group level
49
+ # Create via: Azure Portal > App registrations > Certificates & secrets > New client secret
49
50
  AZURE_TENANT_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
50
51
  AZURE_CLIENT_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
51
- AZURE_CLIENT_SECRET=your_azure_client_secret
52
+ AZURE_CLIENT_SECRET=your_client_secret_value
52
53
 
53
54
  # Optional: Specific subscription ID (if not using auto-discovery)
54
55
  # AZURE_SUBSCRIPTION_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lm-cloud-sync
3
- Version: 2.0.2
3
+ Version: 2.0.3
4
4
  Summary: Multi-cloud automation tool for LogicMonitor integrations. GCP support in v2.0, AWS/Azure coming soon.
5
5
  Project-URL: Homepage, https://github.com/ryanmat/lm-cloud-sync
6
6
  Project-URL: Repository, https://github.com/ryanmat/lm-cloud-sync
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "lm-cloud-sync"
3
- version = "2.0.2"
3
+ version = "2.0.3"
4
4
  description = "Multi-cloud automation tool for LogicMonitor integrations. GCP support in v2.0, AWS/Azure coming soon."
5
5
  readme = "README.md"
6
6
  license = { text = "MIT" }
@@ -151,7 +151,7 @@ class AzureSubscriptionDiscovery:
151
151
  resource_id=sub.subscription_id,
152
152
  display_name=sub.display_name or sub.subscription_id,
153
153
  status=state,
154
- tenant_id=sub.tenant_id,
154
+ tenant_id=self._tenant_id or "",
155
155
  metadata={"subscription_policies": policies},
156
156
  )
157
157
  subscriptions.append(subscription)
@@ -155,7 +155,51 @@ def _build_azure_group_payload(
155
155
  ) -> dict[str, Any]:
156
156
  """Build the API payload for creating an Azure device group."""
157
157
  regions = regions or ["eastus", "westus2"]
158
- services = services or ["VIRTUALMACHINE", "SQLDATABASE"]
158
+ # Enable all Azure services by default for comprehensive monitoring
159
+ services = services or [
160
+ "APIMANAGEMENT",
161
+ "APPLICATIONGATEWAY",
162
+ "APPSERVICE",
163
+ "AUTOMATIONACCOUNT",
164
+ "BATCHACCOUNT",
165
+ "CDNPROFILE",
166
+ "COGNITIVESERVICES",
167
+ "CONTAINERINSTANCE",
168
+ "CONTAINERREGISTRY",
169
+ "COSMOSDB",
170
+ "DATABRICKS",
171
+ "DATAFACTORY",
172
+ "DATALAKEANALYTICS",
173
+ "DATALAKESTORE",
174
+ "EVENTGRID",
175
+ "EVENTHUB",
176
+ "EXPRESSROUTE",
177
+ "FIREWALL",
178
+ "FRONTDOOR",
179
+ "FUNCTIONS",
180
+ "HDINSIGHT",
181
+ "IOTHUB",
182
+ "KEYVAULT",
183
+ "KUSTO",
184
+ "LOADBALANCER",
185
+ "LOGICAPPS",
186
+ "MARIADB",
187
+ "MYSQL",
188
+ "NOTIFICATIONHUB",
189
+ "POSTGRESQL",
190
+ "REDISCACHE",
191
+ "SEARCHSERVICE",
192
+ "SERVICEBUS",
193
+ "SIGNALR",
194
+ "SQLDATABASE",
195
+ "SQLMANAGEDINSTANCE",
196
+ "STORAGEACCOUNT",
197
+ "STREAMANALYTICS",
198
+ "SYNAPSE",
199
+ "VIRTUALMACHINE",
200
+ "VIRTUALMACHINESCALESET",
201
+ "VPNGATEWAY",
202
+ ]
159
203
  custom_properties = custom_properties or {}
160
204
 
161
205
  name = name_template.format(
@@ -790,7 +790,7 @@ wheels = [
790
790
 
791
791
  [[package]]
792
792
  name = "lm-cloud-sync"
793
- version = "2.0.1"
793
+ version = "2.0.2"
794
794
  source = { editable = "." }
795
795
  dependencies = [
796
796
  { name = "azure-identity" },
File without changes
File without changes
File without changes