ic-code 1.0.2__tar.gz → 1.0.5__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 (204) hide show
  1. ic_code-1.0.5/PKG-INFO +879 -0
  2. ic_code-1.0.5/README.md +821 -0
  3. {ic_code-1.0.2 → ic_code-1.0.5}/aws/cloudfront/info.py +10 -25
  4. {ic_code-1.0.2 → ic_code-1.0.5}/aws/codepipeline/build.py +42 -20
  5. {ic_code-1.0.2 → ic_code-1.0.5}/aws/codepipeline/deploy.py +42 -20
  6. {ic_code-1.0.2 → ic_code-1.0.5}/aws/ec2/info.py +53 -15
  7. {ic_code-1.0.2 → ic_code-1.0.5}/aws/ecs/info.py +42 -20
  8. {ic_code-1.0.2 → ic_code-1.0.5}/aws/eks/addons.py +3 -0
  9. {ic_code-1.0.2 → ic_code-1.0.5}/aws/eks/fargate.py +3 -0
  10. {ic_code-1.0.2 → ic_code-1.0.5}/aws/eks/info.py +3 -0
  11. {ic_code-1.0.2 → ic_code-1.0.5}/aws/eks/nodes.py +3 -0
  12. {ic_code-1.0.2 → ic_code-1.0.5}/aws/eks/pods.py +5 -0
  13. {ic_code-1.0.2 → ic_code-1.0.5}/aws/eks/update_config.py +4 -0
  14. {ic_code-1.0.2 → ic_code-1.0.5}/aws/fargate/info.py +53 -29
  15. {ic_code-1.0.2 → ic_code-1.0.5}/aws/lb/info.py +34 -8
  16. {ic_code-1.0.2 → ic_code-1.0.5}/aws/msk/info.py +42 -20
  17. {ic_code-1.0.2 → ic_code-1.0.5}/aws/nat/list_tags.py +37 -20
  18. {ic_code-1.0.2 → ic_code-1.0.5}/aws/nat/tag_check.py +40 -23
  19. {ic_code-1.0.2 → ic_code-1.0.5}/aws/profile/info.py +1 -1
  20. {ic_code-1.0.2 → ic_code-1.0.5}/aws/rds/info.py +35 -8
  21. {ic_code-1.0.2 → ic_code-1.0.5}/aws/s3/info.py +34 -7
  22. {ic_code-1.0.2 → ic_code-1.0.5}/aws/sg/info.py +26 -11
  23. {ic_code-1.0.2 → ic_code-1.0.5}/aws/vpc/info.py +34 -8
  24. {ic_code-1.0.2 → ic_code-1.0.5}/aws/vpn/info.py +34 -8
  25. {ic_code-1.0.2 → ic_code-1.0.5}/cf/dns/list_info.py +74 -46
  26. ic_code-1.0.5/common/__init__.py +44 -0
  27. ic_code-1.0.5/common/progress_decorator.py +476 -0
  28. ic_code-1.0.5/docs/dependency_management.md +281 -0
  29. ic_code-1.0.5/oci_module/compartment/info.py +229 -0
  30. ic_code-1.0.5/oci_module/cost/credit.py +156 -0
  31. ic_code-1.0.5/oci_module/cost/usage.py +146 -0
  32. {ic_code-1.0.2 → ic_code-1.0.5}/oci_module/lb/info.py +4 -0
  33. {ic_code-1.0.2 → ic_code-1.0.5}/oci_module/nsg/info.py +4 -0
  34. {ic_code-1.0.2 → ic_code-1.0.5}/oci_module/obj/info.py +21 -8
  35. {ic_code-1.0.2 → ic_code-1.0.5}/oci_module/policy/info.py +25 -12
  36. {ic_code-1.0.2 → ic_code-1.0.5}/oci_module/policy/search.py +53 -40
  37. {ic_code-1.0.2 → ic_code-1.0.5}/oci_module/vcn/info.py +4 -0
  38. {ic_code-1.0.2 → ic_code-1.0.5}/oci_module/vm/info.py +66 -29
  39. {ic_code-1.0.2 → ic_code-1.0.5}/oci_module/volume/info.py +21 -9
  40. {ic_code-1.0.2 → ic_code-1.0.5}/pyproject.toml +30 -16
  41. ic_code-1.0.5/requirements.txt +77 -0
  42. ic_code-1.0.5/scripts/validate_dependencies.py +233 -0
  43. {ic_code-1.0.2 → ic_code-1.0.5}/setup.py +27 -56
  44. {ic_code-1.0.2 → ic_code-1.0.5}/src/ic/cli.py +234 -38
  45. {ic_code-1.0.2 → ic_code-1.0.5}/src/ic/commands/config.py +520 -25
  46. {ic_code-1.0.2 → ic_code-1.0.5}/src/ic/config/installer.py +2 -2
  47. {ic_code-1.0.2 → ic_code-1.0.5}/src/ic/config/manager.py +15 -36
  48. {ic_code-1.0.2 → ic_code-1.0.5}/src/ic/config/schema.py +1 -1
  49. {ic_code-1.0.2 → ic_code-1.0.5}/src/ic/config/secrets.py +2 -2
  50. {ic_code-1.0.2 → ic_code-1.0.5}/src/ic/config/security.py +35 -1
  51. ic_code-1.0.5/src/ic/core/dependency_validator.py +415 -0
  52. ic_code-1.0.5/src/ic_code.egg-info/PKG-INFO +879 -0
  53. {ic_code-1.0.2 → ic_code-1.0.5}/src/ic_code.egg-info/SOURCES.txt +4 -2
  54. ic_code-1.0.5/src/ic_code.egg-info/requires.txt +25 -0
  55. {ic_code-1.0.2 → ic_code-1.0.5}/ssh/auto_ssh.py +5 -11
  56. {ic_code-1.0.2 → ic_code-1.0.5}/ssh/server_info.py +123 -48
  57. ic_code-1.0.2/PKG-INFO +0 -358
  58. ic_code-1.0.2/README.md +0 -309
  59. ic_code-1.0.2/config/default.yaml +0 -140
  60. ic_code-1.0.2/config/secrets.yaml.example +0 -38
  61. ic_code-1.0.2/oci_module/compartment/info.py +0 -195
  62. ic_code-1.0.2/oci_module/cost/credit.py +0 -114
  63. ic_code-1.0.2/oci_module/cost/usage.py +0 -113
  64. ic_code-1.0.2/oci_module/info/__init__.py +0 -0
  65. ic_code-1.0.2/requirements.txt +0 -72
  66. ic_code-1.0.2/src/ic_code.egg-info/PKG-INFO +0 -358
  67. ic_code-1.0.2/src/ic_code.egg-info/requires.txt +0 -18
  68. {ic_code-1.0.2 → ic_code-1.0.5}/CHANGELOG.md +0 -0
  69. {ic_code-1.0.2 → ic_code-1.0.5}/LICENSE +0 -0
  70. {ic_code-1.0.2 → ic_code-1.0.5}/MANIFEST.in +0 -0
  71. {ic_code-1.0.2 → ic_code-1.0.5}/SECURITY.md +0 -0
  72. {ic_code-1.0.2 → ic_code-1.0.5}/aws/__init__.py +0 -0
  73. {ic_code-1.0.2 → ic_code-1.0.5}/aws/cloudfront/__init__.py +0 -0
  74. {ic_code-1.0.2 → ic_code-1.0.5}/aws/codepipeline/__init__.py +0 -0
  75. {ic_code-1.0.2 → ic_code-1.0.5}/aws/ec2/__init__.py +0 -0
  76. {ic_code-1.0.2 → ic_code-1.0.5}/aws/ec2/list_tags.py +0 -0
  77. {ic_code-1.0.2 → ic_code-1.0.5}/aws/ec2/tag_check.py +0 -0
  78. {ic_code-1.0.2 → ic_code-1.0.5}/aws/ecs/__init__.py +0 -0
  79. {ic_code-1.0.2 → ic_code-1.0.5}/aws/ecs/service.py +0 -0
  80. {ic_code-1.0.2 → ic_code-1.0.5}/aws/ecs/task.py +0 -0
  81. {ic_code-1.0.2 → ic_code-1.0.5}/aws/eks/__init__.py +0 -0
  82. {ic_code-1.0.2 → ic_code-1.0.5}/aws/fargate/__init__.py +0 -0
  83. {ic_code-1.0.2 → ic_code-1.0.5}/aws/lb/__init__.py +0 -0
  84. {ic_code-1.0.2 → ic_code-1.0.5}/aws/lb/list_tags.py +0 -0
  85. {ic_code-1.0.2 → ic_code-1.0.5}/aws/lb/tag_check.py +0 -0
  86. {ic_code-1.0.2 → ic_code-1.0.5}/aws/msk/__init__.py +0 -0
  87. {ic_code-1.0.2 → ic_code-1.0.5}/aws/msk/broker.py +0 -0
  88. {ic_code-1.0.2 → ic_code-1.0.5}/aws/nat/__init__.py +0 -0
  89. {ic_code-1.0.2 → ic_code-1.0.5}/aws/profile/__init__.py +0 -0
  90. {ic_code-1.0.2 → ic_code-1.0.5}/aws/rds/__init__.py +0 -0
  91. {ic_code-1.0.2 → ic_code-1.0.5}/aws/rds/list_tags.py +0 -0
  92. {ic_code-1.0.2 → ic_code-1.0.5}/aws/rds/tag_check.py +0 -0
  93. {ic_code-1.0.2 → ic_code-1.0.5}/aws/s3/__init__.py +0 -0
  94. {ic_code-1.0.2 → ic_code-1.0.5}/aws/s3/list_tags.py +0 -0
  95. {ic_code-1.0.2 → ic_code-1.0.5}/aws/s3/tag_check.py +0 -0
  96. {ic_code-1.0.2 → ic_code-1.0.5}/aws/sg/__init__.py +0 -0
  97. {ic_code-1.0.2 → ic_code-1.0.5}/aws/vpc/__init__.py +0 -0
  98. {ic_code-1.0.2 → ic_code-1.0.5}/aws/vpc/list_tags.py +0 -0
  99. {ic_code-1.0.2 → ic_code-1.0.5}/aws/vpc/tag_check.py +0 -0
  100. {ic_code-1.0.2 → ic_code-1.0.5}/aws/vpn/__init__.py +0 -0
  101. {ic_code-1.0.2 → ic_code-1.0.5}/azure_module/__init__.py +0 -0
  102. {ic_code-1.0.2 → ic_code-1.0.5}/azure_module/aci/info.py +0 -0
  103. {ic_code-1.0.2 → ic_code-1.0.5}/azure_module/aks/info.py +0 -0
  104. {ic_code-1.0.2 → ic_code-1.0.5}/azure_module/lb/info.py +0 -0
  105. {ic_code-1.0.2 → ic_code-1.0.5}/azure_module/nsg/info.py +0 -0
  106. {ic_code-1.0.2 → ic_code-1.0.5}/azure_module/storage/info.py +0 -0
  107. {ic_code-1.0.2 → ic_code-1.0.5}/azure_module/vm/info.py +0 -0
  108. {ic_code-1.0.2 → ic_code-1.0.5}/azure_module/vnet/info.py +0 -0
  109. {ic_code-1.0.2 → ic_code-1.0.5}/cf/__init__.py +0 -0
  110. {ic_code-1.0.2 → ic_code-1.0.5}/cf/dns/__init__.py +0 -0
  111. {ic_code-1.0.2 → ic_code-1.0.5}/common/azure_utils.py +0 -0
  112. {ic_code-1.0.2 → ic_code-1.0.5}/common/gather_env.py +0 -0
  113. {ic_code-1.0.2 → ic_code-1.0.5}/common/gcp_config_validator.py +0 -0
  114. {ic_code-1.0.2 → ic_code-1.0.5}/common/gcp_monitoring.py +0 -0
  115. {ic_code-1.0.2 → ic_code-1.0.5}/common/gcp_utils.py +0 -0
  116. {ic_code-1.0.2 → ic_code-1.0.5}/common/log.py +0 -0
  117. {ic_code-1.0.2 → ic_code-1.0.5}/common/slack.py +0 -0
  118. {ic_code-1.0.2 → ic_code-1.0.5}/common/utils.py +0 -0
  119. {ic_code-1.0.2 → ic_code-1.0.5}/docs/PYPI_DEPLOYMENT.md +0 -0
  120. {ic_code-1.0.2 → ic_code-1.0.5}/docs/README.md +0 -0
  121. {ic_code-1.0.2 → ic_code-1.0.5}/docs/aws/AWS_IMPLEMENTATION_SUMMARY.md +0 -0
  122. {ic_code-1.0.2 → ic_code-1.0.5}/docs/aws/README.md +0 -0
  123. {ic_code-1.0.2 → ic_code-1.0.5}/docs/aws/aws_cli_prd.md +0 -0
  124. {ic_code-1.0.2 → ic_code-1.0.5}/docs/config_migration.md +0 -0
  125. {ic_code-1.0.2 → ic_code-1.0.5}/docs/configuration.md +0 -0
  126. {ic_code-1.0.2 → ic_code-1.0.5}/docs/deployment.md +0 -0
  127. {ic_code-1.0.2 → ic_code-1.0.5}/docs/final_validation_report.md +0 -0
  128. {ic_code-1.0.2 → ic_code-1.0.5}/docs/gcp/GCP_CONFIGURATION_GUIDE.md +0 -0
  129. {ic_code-1.0.2 → ic_code-1.0.5}/docs/gcp/GCP_SECURITY_BEST_PRACTICES.md +0 -0
  130. {ic_code-1.0.2 → ic_code-1.0.5}/docs/installation.md +0 -0
  131. {ic_code-1.0.2 → ic_code-1.0.5}/docs/mcp_integration.md +0 -0
  132. {ic_code-1.0.2 → ic_code-1.0.5}/docs/migration.md +0 -0
  133. {ic_code-1.0.2 → ic_code-1.0.5}/docs/migration_guide.md +0 -0
  134. {ic_code-1.0.2 → ic_code-1.0.5}/docs/migration_history.md +0 -0
  135. {ic_code-1.0.2 → ic_code-1.0.5}/docs/security.md +0 -0
  136. {ic_code-1.0.2 → ic_code-1.0.5}/docs/troubleshooting.md +0 -0
  137. {ic_code-1.0.2 → ic_code-1.0.5}/docs/user_guide.md +0 -0
  138. {ic_code-1.0.2 → ic_code-1.0.5}/gcp/__init__.py +0 -0
  139. {ic_code-1.0.2 → ic_code-1.0.5}/gcp/billing/__init__.py +0 -0
  140. {ic_code-1.0.2 → ic_code-1.0.5}/gcp/billing/info.py +0 -0
  141. {ic_code-1.0.2 → ic_code-1.0.5}/gcp/compute/__init__.py +0 -0
  142. {ic_code-1.0.2 → ic_code-1.0.5}/gcp/compute/info.py +0 -0
  143. {ic_code-1.0.2 → ic_code-1.0.5}/gcp/firewall/__init__.py +0 -0
  144. {ic_code-1.0.2 → ic_code-1.0.5}/gcp/firewall/info.py +0 -0
  145. {ic_code-1.0.2 → ic_code-1.0.5}/gcp/functions/__init__.py +0 -0
  146. {ic_code-1.0.2 → ic_code-1.0.5}/gcp/functions/info.py +0 -0
  147. {ic_code-1.0.2 → ic_code-1.0.5}/gcp/gke/__init__.py +0 -0
  148. {ic_code-1.0.2 → ic_code-1.0.5}/gcp/gke/info.py +0 -0
  149. {ic_code-1.0.2 → ic_code-1.0.5}/gcp/lb/__init__.py +0 -0
  150. {ic_code-1.0.2 → ic_code-1.0.5}/gcp/lb/info.py +0 -0
  151. {ic_code-1.0.2 → ic_code-1.0.5}/gcp/run/__init__.py +0 -0
  152. {ic_code-1.0.2 → ic_code-1.0.5}/gcp/run/info.py +0 -0
  153. {ic_code-1.0.2 → ic_code-1.0.5}/gcp/sql/__init__.py +0 -0
  154. {ic_code-1.0.2 → ic_code-1.0.5}/gcp/sql/info.py +0 -0
  155. {ic_code-1.0.2 → ic_code-1.0.5}/gcp/storage/__init__.py +0 -0
  156. {ic_code-1.0.2 → ic_code-1.0.5}/gcp/storage/info.py +0 -0
  157. {ic_code-1.0.2 → ic_code-1.0.5}/gcp/vpc/__init__.py +0 -0
  158. {ic_code-1.0.2 → ic_code-1.0.5}/gcp/vpc/info.py +0 -0
  159. {ic_code-1.0.2 → ic_code-1.0.5}/mcp/__init__.py +0 -0
  160. {ic_code-1.0.2 → ic_code-1.0.5}/mcp/gcp_connector.py +0 -0
  161. {ic_code-1.0.2/common → ic_code-1.0.5/oci_module}/__init__.py +0 -0
  162. {ic_code-1.0.2 → ic_code-1.0.5}/oci_module/common/__init__.py +0 -0
  163. {ic_code-1.0.2 → ic_code-1.0.5}/oci_module/common/utils.py +0 -0
  164. {ic_code-1.0.2 → ic_code-1.0.5}/oci_module/compartment/__init__.py +0 -0
  165. {ic_code-1.0.2 → ic_code-1.0.5}/oci_module/cost/__init__.py +0 -0
  166. {ic_code-1.0.2/oci_module → ic_code-1.0.5/oci_module/info}/__init__.py +0 -0
  167. {ic_code-1.0.2 → ic_code-1.0.5}/oci_module/info/oci_info.py +0 -0
  168. {ic_code-1.0.2 → ic_code-1.0.5}/oci_module/lb/__init__.py +0 -0
  169. {ic_code-1.0.2 → ic_code-1.0.5}/oci_module/nsg/__init__.py +0 -0
  170. {ic_code-1.0.2 → ic_code-1.0.5}/oci_module/obj/__init__.py +0 -0
  171. {ic_code-1.0.2 → ic_code-1.0.5}/oci_module/policy/__init__.py +0 -0
  172. {ic_code-1.0.2 → ic_code-1.0.5}/oci_module/vcn/__init__.py +0 -0
  173. {ic_code-1.0.2 → ic_code-1.0.5}/oci_module/vm/__init__.py +0 -0
  174. {ic_code-1.0.2 → ic_code-1.0.5}/oci_module/volume/__init__.py +0 -0
  175. {ic_code-1.0.2 → ic_code-1.0.5}/scripts/bump-version.sh +0 -0
  176. {ic_code-1.0.2 → ic_code-1.0.5}/scripts/cf_edge_nsg_make/cf_edge_nsg_make.py +0 -0
  177. {ic_code-1.0.2 → ic_code-1.0.5}/scripts/deploy.sh +0 -0
  178. {ic_code-1.0.2 → ic_code-1.0.5}/scripts/final_validation_and_documentation.py +0 -0
  179. {ic_code-1.0.2 → ic_code-1.0.5}/scripts/migration_execution_and_validation.py +0 -0
  180. {ic_code-1.0.2 → ic_code-1.0.5}/scripts/oracle-policy/user_policy.py +0 -0
  181. {ic_code-1.0.2 → ic_code-1.0.5}/scripts/performance_optimization.py +0 -0
  182. {ic_code-1.0.2 → ic_code-1.0.5}/scripts/setup_venv.py +0 -0
  183. {ic_code-1.0.2 → ic_code-1.0.5}/scripts/unset_env.sh +0 -0
  184. {ic_code-1.0.2 → ic_code-1.0.5}/scripts/validate_config.py +0 -0
  185. {ic_code-1.0.2 → ic_code-1.0.5}/setup.cfg +0 -0
  186. {ic_code-1.0.2 → ic_code-1.0.5}/src/ic/__init__.py +0 -0
  187. {ic_code-1.0.2 → ic_code-1.0.5}/src/ic/commands/__init__.py +0 -0
  188. {ic_code-1.0.2 → ic_code-1.0.5}/src/ic/compat/__init__.py +0 -0
  189. {ic_code-1.0.2 → ic_code-1.0.5}/src/ic/compat/cli.py +0 -0
  190. {ic_code-1.0.2 → ic_code-1.0.5}/src/ic/compat/common.py +0 -0
  191. {ic_code-1.0.2 → ic_code-1.0.5}/src/ic/config/__init__.py +0 -0
  192. {ic_code-1.0.2 → ic_code-1.0.5}/src/ic/config/cleanup.py +0 -0
  193. {ic_code-1.0.2 → ic_code-1.0.5}/src/ic/config/docs_organizer.py +0 -0
  194. {ic_code-1.0.2 → ic_code-1.0.5}/src/ic/config/external.py +0 -0
  195. {ic_code-1.0.2 → ic_code-1.0.5}/src/ic/config/migration.py +0 -0
  196. {ic_code-1.0.2 → ic_code-1.0.5}/src/ic/core/__init__.py +0 -0
  197. {ic_code-1.0.2 → ic_code-1.0.5}/src/ic/core/logging.py +0 -0
  198. {ic_code-1.0.2 → ic_code-1.0.5}/src/ic/core/mcp_manager.py +0 -0
  199. {ic_code-1.0.2 → ic_code-1.0.5}/src/ic/core/session.py +0 -0
  200. {ic_code-1.0.2 → ic_code-1.0.5}/src/ic/core/silence_logging.py +0 -0
  201. {ic_code-1.0.2 → ic_code-1.0.5}/src/ic_code.egg-info/dependency_links.txt +0 -0
  202. {ic_code-1.0.2 → ic_code-1.0.5}/src/ic_code.egg-info/entry_points.txt +0 -0
  203. {ic_code-1.0.2 → ic_code-1.0.5}/src/ic_code.egg-info/top_level.txt +0 -0
  204. {ic_code-1.0.2 → ic_code-1.0.5}/ssh/__init__.py +0 -0
ic_code-1.0.5/PKG-INFO ADDED
@@ -0,0 +1,879 @@
1
+ Metadata-Version: 2.4
2
+ Name: ic-code
3
+ Version: 1.0.5
4
+ Summary: Infrastructure CLI tool for managing AWS, CloudFlare, SSH, and more
5
+ Home-page: https://github.com/dgr009/ic
6
+ Author: SangYun Kim
7
+ Author-email: sykim <cruiser594@gmail.com>
8
+ Project-URL: Homepage, https://github.com/dgr009/ic
9
+ Project-URL: Bug Reports, https://github.com/dgr009/ic/issues
10
+ Project-URL: Source, https://github.com/dgr009/ic
11
+ Project-URL: Documentation, https://github.com/dgr009/ic#readme
12
+ Keywords: cli,infrastructure,aws,oci,gcp,azure,cloudflare,ssh,devops,multi-cloud
13
+ Classifier: Development Status :: 5 - Production/Stable
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Intended Audience :: System Administrators
16
+ Classifier: License :: OSI Approved :: MIT License
17
+ Classifier: Operating System :: OS Independent
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.9
20
+ Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Topic :: System :: Systems Administration
24
+ Classifier: Topic :: Utilities
25
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
26
+ Classifier: Environment :: Console
27
+ Requires-Python: >=3.9,<3.13
28
+ Description-Content-Type: text/markdown
29
+ License-File: LICENSE
30
+ Requires-Dist: boto3<2.0.0,>=1.26.0
31
+ Requires-Dist: botocore<2.0.0,>=1.29.0
32
+ Requires-Dist: requests<3.0.0,>=2.28.0
33
+ Requires-Dist: rich<15.0.0,>=12.0.0
34
+ Requires-Dist: PyYAML<=6.0.2,>=6.0
35
+ Requires-Dist: paramiko<5.0.0,>=2.11.0
36
+ Requires-Dist: python-dotenv<2.0.0,>=0.19.0
37
+ Requires-Dist: cryptography<46.0.0,>=3.4.8
38
+ Requires-Dist: netifaces<1.0.0,>=0.11.0
39
+ Requires-Dist: tqdm<5.0.0,>=4.67.0
40
+ Requires-Dist: jsonschema<5.0.0,>=4.23.0
41
+ Requires-Dist: python-dateutil<3.0.0,>=2.8.0
42
+ Requires-Dist: click<9.0.0,>=8.0.0
43
+ Requires-Dist: packaging<25.0,>=21.0
44
+ Requires-Dist: setuptools<71.0,>=61.0
45
+ Requires-Dist: watchdog<4.0.0,>=3.0.0
46
+ Requires-Dist: cerberus<2.0.0,>=1.3.4
47
+ Requires-Dist: pydantic<3.0.0,>=2.0.0
48
+ Provides-Extra: dev
49
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
50
+ Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
51
+ Requires-Dist: black>=22.0.0; extra == "dev"
52
+ Requires-Dist: flake8>=5.0.0; extra == "dev"
53
+ Requires-Dist: mypy>=0.991; extra == "dev"
54
+ Dynamic: author
55
+ Dynamic: home-page
56
+ Dynamic: license-file
57
+ Dynamic: requires-python
58
+
59
+ # IC CLI Tool
60
+
61
+ [![Tests](https://github.com/dgr009/ic/workflows/Tests/badge.svg)](https://github.com/dgr009/ic/actions)
62
+ [![PyPI version](https://badge.fury.io/py/ic-code.svg)](https://badge.fury.io/py/ic-code)
63
+ [![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/)
64
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
65
+
66
+ A comprehensive Infrastructure Command Line Interface tool for managing cloud services and infrastructure components across multiple platforms. IC CLI provides unified access to AWS, Oracle Cloud Infrastructure (OCI), CloudFlare, and SSH server management with rich progress indicators and secure configuration management.
67
+
68
+ ## ✨ Features
69
+
70
+ - **🚀 Multi-Cloud Support**: AWS, OCI, CloudFlare, SSH server management
71
+ - **📊 Rich Progress Bars**: Real-time progress indicators for all long-running operations
72
+ - **🔒 Secure Configuration**: YAML-based configuration with separate secrets management
73
+ - **🌍 Multi-Account/Multi-Region**: Support for multiple cloud accounts and regions
74
+ - **🎨 Beautiful Output**: Rich terminal output with tables, colors, and formatting
75
+ - **⚡ High Performance**: Optimized for speed with concurrent operations
76
+ - **🛡️ Security First**: Built-in security validation and credential protection
77
+
78
+ ### Supported Services
79
+
80
+ #### AWS Services (Production Ready)
81
+ - **Compute**: EC2 instances, ECS services, EKS clusters, Fargate
82
+ - **Storage**: S3 buckets, RDS databases
83
+ - **Networking**: VPC, Load Balancers, Security Groups, VPN
84
+ - **Other**: CloudFront distributions, MSK clusters, CodePipeline
85
+
86
+ #### Oracle Cloud Infrastructure (Production Ready)
87
+ - **Compute**: VM instances, Container Instances
88
+ - **Networking**: VCN, Load Balancers, Network Security Groups
89
+ - **Storage**: Block volumes, Object storage
90
+ - **Management**: Compartments, Policies, Cost analysis
91
+
92
+ #### CloudFlare (Production Ready)
93
+ - **DNS**: Zone and record management with filtering
94
+
95
+ #### SSH Management (Production Ready)
96
+ - **Server Discovery**: Automatic server registration and information gathering
97
+ - **Security**: Built-in security filtering and connection management
98
+
99
+ #### Development Status
100
+ - **⚠️ Azure**: In development - usable but may contain bugs
101
+ - **⚠️ GCP**: In development - usable but may contain bugs
102
+
103
+ ## 📦 Installation
104
+
105
+ ### Prerequisites
106
+
107
+ - **Python**: 3.9 or higher (3.11.13 recommended)
108
+ - **Operating System**: macOS, Linux, or Windows
109
+ - **Dependencies**: All dependencies are automatically installed via pip
110
+
111
+ ### From PyPI (Recommended)
112
+
113
+ ```bash
114
+ # Install the latest stable version
115
+ pip install ic-code
116
+
117
+ # Verify installation
118
+ ic --help
119
+ ```
120
+
121
+ ### From Source (Development)
122
+
123
+ ```bash
124
+ # Clone the repository
125
+ git clone https://github.com/dgr009/ic.git
126
+ cd ic
127
+
128
+ # Create and activate virtual environment
129
+ python -m venv ic-env
130
+ source ic-env/bin/activate # On Windows: ic-env\Scripts\activate
131
+
132
+ # Install dependencies
133
+ pip install -r requirements.txt
134
+
135
+ # Install in development mode
136
+ pip install -e .
137
+
138
+ # Verify installation
139
+ ic --help
140
+ ```
141
+
142
+ ### Dependency Validation
143
+
144
+ IC CLI automatically validates all required dependencies on startup and provides clear error messages for missing packages. The tool supports **Python 3.9-3.12** with **Python 3.11.13** recommended for optimal performance.
145
+
146
+ #### Automatic Validation
147
+ ```bash
148
+ # IC CLI validates dependencies automatically
149
+ ic --help # Will show dependency errors if any exist
150
+
151
+ # Manual dependency validation
152
+ python scripts/validate_dependencies.py
153
+
154
+ # Comprehensive compatibility testing
155
+ python scripts/test_dependency_compatibility.py --report
156
+ ```
157
+
158
+ #### Troubleshooting Dependencies
159
+ ```bash
160
+ # Check Python version compatibility
161
+ python --version # Should be 3.9+ to 3.12
162
+
163
+ # Install/update all dependencies
164
+ pip install --upgrade -r requirements.txt
165
+
166
+ # Install missing dependencies automatically
167
+ python scripts/validate_dependencies.py --install-missing
168
+
169
+ # Test requirements.txt installation
170
+ python scripts/validate_dependencies.py --test-requirements
171
+
172
+ # Validate specific platform dependencies
173
+ python scripts/validate_dependencies.py --platforms aws oci
174
+ ```
175
+
176
+ #### Supported Python Versions
177
+ - **Python 3.9**: Minimum supported version
178
+ - **Python 3.10**: Fully supported
179
+ - **Python 3.11**: Recommended (tested with 3.11.13)
180
+ - **Python 3.12**: Fully supported
181
+ - **Python 3.13+**: Not yet tested (may work but not guaranteed)
182
+
183
+ ## ⚙️ Configuration
184
+
185
+ IC CLI uses a modern, secure YAML-based configuration system that separates default settings from sensitive credentials.
186
+
187
+ ### Quick Setup
188
+
189
+ The fastest way to get started is using the built-in configuration initializer:
190
+
191
+ ```bash
192
+ # Initialize configuration with guided setup
193
+ ic config init
194
+
195
+ # This creates:
196
+ # - ~/.ic/config/default.yaml (default settings)
197
+ # - ~/.ic/config/secrets.yaml.example (template for secrets)
198
+ # - Updates .gitignore for security
199
+ ```
200
+
201
+ ### Configuration Structure
202
+
203
+ IC CLI uses a two-file configuration system for security:
204
+
205
+ ```
206
+ ~/.ic/config/
207
+ ├── default.yaml # Non-sensitive default settings
208
+ └── secrets.yaml # Your sensitive credentials (create from example)
209
+ ```
210
+
211
+ ### Step-by-Step Configuration
212
+
213
+ #### 1. Initialize Configuration
214
+
215
+ ```bash
216
+ # Create configuration directory and files
217
+ ic config init
218
+
219
+ # For specific cloud platforms
220
+ ic config init --template aws # AWS-focused setup
221
+ ic config init --template multi-cloud # All platforms
222
+ ```
223
+
224
+ #### 2. Configure Credentials
225
+
226
+ Copy the example secrets file and add your credentials:
227
+
228
+ ```bash
229
+ # Copy the example file
230
+ cp ~/.ic/config/secrets.yaml.example ~/.ic/config/secrets.yaml
231
+
232
+ # Edit with your actual credentials
233
+ vim ~/.ic/config/secrets.yaml
234
+ ```
235
+
236
+ #### 3. Example Secrets Configuration
237
+
238
+ ```yaml
239
+ # ~/.ic/config/secrets.yaml
240
+ # AWS Configuration
241
+ aws:
242
+ accounts:
243
+ - "123456789012" # Your AWS account IDs
244
+ - "987654321098"
245
+ profiles:
246
+ default: "your-aws-profile-name"
247
+ regions:
248
+ - "ap-northeast-2"
249
+ - "us-east-1"
250
+
251
+ # Oracle Cloud Infrastructure
252
+ oci:
253
+ config_file: "~/.oci/config"
254
+ profile: "DEFAULT"
255
+ compartments:
256
+ - "ocid1.compartment.oc1..example"
257
+
258
+ # CloudFlare Configuration
259
+ cloudflare:
260
+ email: "your-email@example.com"
261
+ api_token: "your-cloudflare-api-token"
262
+ accounts: ["account1", "account2"] # Filter specific accounts
263
+ zones: ["example.com", "test.com"] # Filter specific zones
264
+
265
+ # SSH Configuration
266
+ ssh:
267
+ key_dir: "~/aws-keys"
268
+ timeout: 30
269
+ skip_prefixes: # Skip servers with these prefixes for security
270
+ - "git"
271
+ - "bastion"
272
+ - "jump"
273
+ - "proxy"
274
+ ```
275
+
276
+ #### 4. Platform-Specific Setup
277
+
278
+ **AWS Credentials:**
279
+ ```bash
280
+ # Configure AWS CLI (if not already done)
281
+ aws configure
282
+
283
+ # Or use specific profiles
284
+ aws configure --profile production
285
+ aws configure --profile development
286
+ ```
287
+
288
+ **OCI Configuration:**
289
+ ```bash
290
+ # Install OCI CLI and configure
291
+ oci setup config
292
+
293
+ # Verify configuration
294
+ oci iam user get --user-id $(oci iam user list --query 'data[0].id' --raw-output)
295
+ ```
296
+
297
+ **CloudFlare API Token:**
298
+ 1. Go to CloudFlare Dashboard → My Profile → API Tokens
299
+ 2. Create token with Zone:Read permissions
300
+ 3. Add token to secrets.yaml
301
+
302
+ ### Configuration Management Commands
303
+
304
+ ```bash
305
+ # Validate configuration
306
+ ic config validate
307
+
308
+ # Show current configuration (sensitive data masked)
309
+ ic config show
310
+
311
+ # Show only AWS configuration
312
+ ic config show --aws
313
+
314
+ # Get specific configuration value
315
+ ic config get aws.regions
316
+
317
+ # Set configuration value
318
+ ic config set aws.regions '["us-east-1", "ap-northeast-2"]'
319
+
320
+ # Migrate from old .env configuration
321
+ ic config migrate
322
+ ```
323
+
324
+ ## 🚀 Usage
325
+
326
+ All IC CLI commands feature rich progress bars that show real-time progress for long-running operations, making it easy to monitor multi-region and multi-account queries.
327
+
328
+ ### AWS Services
329
+
330
+ #### Compute Services
331
+ ```bash
332
+ # EC2 instances with progress tracking
333
+ ic aws ec2 info
334
+ ic aws ec2 info --account 123456789012 --regions us-east-1,ap-northeast-2
335
+
336
+ # ECS services and tasks
337
+ ic aws ecs info # List all ECS clusters and services
338
+ ic aws ecs service # Detailed service information
339
+ ic aws ecs task # Running task information
340
+
341
+ # EKS clusters and workloads
342
+ ic aws eks info # Cluster information
343
+ ic aws eks nodes # Node group details
344
+ ic aws eks pods # Pod status across clusters
345
+ ic aws eks addons # EKS add-on information
346
+ ic aws eks fargate # Fargate profile details
347
+
348
+ # Fargate services
349
+ ic aws fargate info # Fargate service information
350
+ ```
351
+
352
+ #### Storage Services
353
+ ```bash
354
+ # S3 buckets with tag management
355
+ ic aws s3 list_tags # List all S3 buckets with tags
356
+ ic aws s3 tag_check # Validate S3 bucket tagging compliance
357
+ ic aws s3 info # Detailed S3 bucket information
358
+
359
+ # RDS databases
360
+ ic aws rds info # RDS instance and cluster information
361
+ ic aws rds list_tags # RDS resource tags
362
+ ic aws rds tag_check # RDS tagging compliance
363
+ ```
364
+
365
+ #### Networking Services
366
+ ```bash
367
+ # VPC and networking
368
+ ic aws vpc info # VPC, subnet, and gateway information
369
+ ic aws vpc list_tags # VPC resource tags
370
+ ic aws vpc tag_check # VPC tagging compliance
371
+
372
+ # Load Balancers
373
+ ic aws lb info # Load balancer details
374
+ ic aws lb list_tags # Load balancer tags
375
+ ic aws lb tag_check # Load balancer tagging compliance
376
+
377
+ # Security Groups
378
+ ic aws sg info # Security group rules and associations
379
+
380
+ # VPN connections
381
+ ic aws vpn info # VPN gateway and connection information
382
+ ```
383
+
384
+ #### Other AWS Services
385
+ ```bash
386
+ # CloudFront distributions
387
+ ic aws cloudfront info # CloudFront distribution details
388
+
389
+ # MSK (Managed Streaming for Kafka)
390
+ ic aws msk info # MSK cluster information
391
+ ic aws msk broker # Kafka broker details
392
+
393
+ # CodePipeline
394
+ ic aws codepipeline build # Build pipeline status
395
+ ic aws codepipeline deploy # Deployment pipeline information
396
+ ```
397
+
398
+ ### Oracle Cloud Infrastructure (OCI)
399
+
400
+ #### Compute and Containers
401
+ ```bash
402
+ # VM instances across compartments
403
+ ic oci vm info # VM instances with detailed information
404
+ ic oci vm info --compartment-name "Production"
405
+
406
+ # Container instances
407
+ ic oci aci info # Container instance details
408
+ ```
409
+
410
+ #### Networking
411
+ ```bash
412
+ # Virtual Cloud Networks
413
+ ic oci vcn info # VCN, subnet, and routing information
414
+
415
+ # Load Balancers
416
+ ic oci lb info # Load balancer configurations
417
+
418
+ # Network Security Groups
419
+ ic oci nsg info # NSG rules and associations
420
+ ```
421
+
422
+ #### Storage and Management
423
+ ```bash
424
+ # Block and object storage
425
+ ic oci volume info # Block volume details
426
+ ic oci obj info # Object storage bucket information
427
+
428
+ # Identity and policies
429
+ ic oci policy info # IAM policies and permissions
430
+ ic oci policy search # Search policies by criteria
431
+
432
+ # Cost management
433
+ ic oci cost usage # Usage and cost analysis
434
+ ic oci cost credit # Credit and billing information
435
+
436
+ # Compartment management
437
+ ic oci compartment info # Compartment hierarchy and details
438
+ ```
439
+
440
+ ### CloudFlare DNS Management
441
+
442
+ ```bash
443
+ # DNS records (automatically filtered by configured accounts/zones)
444
+ ic cf dns info # All DNS records
445
+ ic cf dns info --account prod # Specific account
446
+ ic cf dns info --zone example.com # Specific zone
447
+
448
+ # The command respects your configuration filters for security
449
+ ```
450
+
451
+ ### SSH Server Management
452
+
453
+ ```bash
454
+ # Server information with security filtering
455
+ ic ssh info # Information about all registered servers
456
+
457
+ # Auto-discovery (respects skip_prefixes in configuration)
458
+ ic ssh reg # Discover and register new SSH servers
459
+ ```
460
+
461
+ ### Configuration Management
462
+
463
+ ```bash
464
+ # Configuration setup and validation
465
+ ic config init # Initialize configuration
466
+ ic config validate # Validate current configuration
467
+ ic config show # Display current configuration (masked)
468
+ ic config show --aws # Show only AWS configuration
469
+
470
+ # Configuration migration
471
+ ic config migrate # Migrate from .env to YAML configuration
472
+
473
+ # Configuration management
474
+ ic config get aws.regions # Get specific value
475
+ ic config set aws.regions '["us-east-1"]' # Set specific value
476
+ ```
477
+
478
+ ### Multi-Account and Multi-Region Examples
479
+
480
+ ```bash
481
+ # Query multiple AWS accounts and regions
482
+ ic aws ec2 info --account 123456789012,987654321098 --regions us-east-1,ap-northeast-2,eu-west-1
483
+
484
+ # OCI multi-compartment queries
485
+ ic oci vm info --compartment-name "Production,Development,Testing"
486
+
487
+ # All commands show progress bars for long-running operations
488
+ ```
489
+
490
+ ## 📋 Command Structure
491
+
492
+ IC CLI follows a consistent, intuitive command structure across all platforms:
493
+
494
+ ```
495
+ ic <platform> <service> <command> [options]
496
+ ```
497
+
498
+ ### Command Components
499
+
500
+ - **platform**: `aws`, `oci`, `cf` (CloudFlare), `ssh`, `config`
501
+ - **service**: `ec2`, `s3`, `ecs`, `eks`, `rds`, `vm`, `lb`, `dns`, etc.
502
+ - **command**: `info`, `list_tags`, `tag_check`, etc.
503
+ - **options**: `--account`, `--regions`, `--compartment-name`, etc.
504
+
505
+ ### Common Options
506
+
507
+ Most commands support these common options:
508
+
509
+ ```bash
510
+ # AWS-specific options
511
+ --account ACCOUNT_ID # Target specific AWS account(s)
512
+ --regions REGION_LIST # Target specific AWS region(s)
513
+ --profile PROFILE_NAME # Use specific AWS profile
514
+
515
+ # OCI-specific options
516
+ --compartment-name NAME # Target specific OCI compartment(s)
517
+ --region REGION_NAME # Target specific OCI region
518
+
519
+ # CloudFlare-specific options
520
+ --account ACCOUNT_NAME # Target specific CloudFlare account
521
+ --zone ZONE_NAME # Target specific DNS zone
522
+
523
+ # Output options (available on most commands)
524
+ --output json # JSON output format
525
+ --output table # Table output format (default)
526
+ --verbose # Detailed output
527
+ --quiet # Minimal output
528
+ ```
529
+
530
+ ## 💡 Advanced Examples
531
+
532
+ ### Multi-Cloud Infrastructure Audit
533
+
534
+ ```bash
535
+ # AWS infrastructure overview
536
+ ic aws ec2 info --regions us-east-1,ap-northeast-2
537
+ ic aws rds info --account 123456789012
538
+ ic aws s3 tag_check
539
+
540
+ # OCI infrastructure overview
541
+ ic oci vm info --compartment-name "Production"
542
+ ic oci lb info
543
+ ic oci cost usage
544
+
545
+ # CloudFlare DNS audit
546
+ ic cf dns info --zone production-domain.com
547
+ ```
548
+
549
+ ### Security and Compliance Checks
550
+
551
+ ```bash
552
+ # AWS tagging compliance
553
+ ic aws ec2 tag_check # Check EC2 instance tagging
554
+ ic aws s3 tag_check # Check S3 bucket tagging
555
+ ic aws rds tag_check # Check RDS tagging
556
+ ic aws lb tag_check # Check Load Balancer tagging
557
+ ic aws vpc tag_check # Check VPC resource tagging
558
+
559
+ # OCI policy and security review
560
+ ic oci policy info # Review IAM policies
561
+ ic oci nsg info # Review network security groups
562
+ ```
563
+
564
+ ### Cost and Resource Management
565
+
566
+ ```bash
567
+ # AWS resource inventory
568
+ ic aws ec2 info --regions all # All EC2 instances across regions
569
+ ic aws rds info --account all # All RDS instances across accounts
570
+ ic aws s3 info # All S3 buckets
571
+
572
+ # OCI cost analysis
573
+ ic oci cost usage # Usage and cost breakdown
574
+ ic oci cost credit # Credit and billing status
575
+ ic oci compartment info # Resource organization
576
+ ```
577
+
578
+ ### Development Status Examples
579
+
580
+ ⚠️ **Note**: Azure and GCP features are in development. While usable, they may contain bugs:
581
+
582
+ ```bash
583
+ # Azure (Development - may have issues)
584
+ ic azure --help # Shows development warning
585
+ ic azure vm info # Basic VM information
586
+ ic azure aks info # AKS cluster details
587
+
588
+ # GCP (Development - may have issues)
589
+ ic gcp --help # Shows development warning
590
+ ic gcp compute info # Compute Engine instances
591
+ ic gcp gke info # GKE cluster information
592
+ ```
593
+
594
+ ## 🔧 Troubleshooting
595
+
596
+ ### Common Issues and Solutions
597
+
598
+ #### Installation Issues
599
+
600
+ **Problem**: `pip install ic-code` fails with dependency conflicts
601
+ ```bash
602
+ # Solution: Use a virtual environment
603
+ python -m venv ic-env
604
+ source ic-env/bin/activate # On Windows: ic-env\Scripts\activate
605
+ pip install --upgrade pip
606
+ pip install ic-code
607
+ ```
608
+
609
+ **Problem**: Python version compatibility issues
610
+ ```bash
611
+ # Check Python version (3.9+ required, 3.11.13 recommended)
612
+ python --version
613
+
614
+ # Install compatible Python version using pyenv (recommended)
615
+ pyenv install 3.11.13
616
+ pyenv local 3.11.13
617
+ ```
618
+
619
+ #### Configuration Issues
620
+
621
+ **Problem**: `ic config validate` shows validation errors
622
+ ```bash
623
+ # Check configuration file syntax
624
+ ic config show --verbose
625
+
626
+ # Reinitialize configuration
627
+ ic config init --force
628
+
629
+ # Migrate from old .env configuration
630
+ ic config migrate
631
+ ```
632
+
633
+ **Problem**: AWS credentials not found
634
+ ```bash
635
+ # Configure AWS CLI
636
+ aws configure
637
+
638
+ # Verify AWS credentials
639
+ aws sts get-caller-identity
640
+
641
+ # Check IC configuration
642
+ ic config show --aws
643
+ ```
644
+
645
+ **Problem**: OCI configuration issues
646
+ ```bash
647
+ # Verify OCI CLI configuration
648
+ oci setup config
649
+
650
+ # Test OCI connectivity
651
+ oci iam user get --user-id $(oci iam user list --query 'data[0].id' --raw-output)
652
+
653
+ # Check IC OCI configuration
654
+ ic config get oci.config_file
655
+ ```
656
+
657
+ #### Runtime Issues
658
+
659
+ **Problem**: Commands hang or timeout
660
+ ```bash
661
+ # Check network connectivity
662
+ ping aws.amazon.com
663
+ ping oracle.com
664
+
665
+ # Increase timeout in configuration
666
+ ic config set aws.timeout 60
667
+ ic config set oci.timeout 60
668
+ ```
669
+
670
+ **Problem**: Permission denied errors
671
+ ```bash
672
+ # Check file permissions
673
+ ls -la ~/.ic/config/
674
+
675
+ # Fix permissions
676
+ chmod 600 ~/.ic/config/secrets.yaml
677
+ chmod 755 ~/.ic/config/
678
+ ```
679
+
680
+ **Problem**: Progress bars not displaying correctly
681
+ ```bash
682
+ # Check terminal compatibility
683
+ echo $TERM
684
+
685
+ # Force simple output if needed
686
+ export IC_SIMPLE_OUTPUT=1
687
+ ic aws ec2 info
688
+ ```
689
+
690
+ #### Platform-Specific Issues
691
+
692
+ **AWS Issues:**
693
+ - Ensure AWS CLI is configured: `aws configure`
694
+ - Check account access: `aws sts get-caller-identity`
695
+ - Verify region availability: `aws ec2 describe-regions`
696
+
697
+ **OCI Issues:**
698
+ - Verify OCI CLI setup: `oci setup config`
699
+ - Check compartment access: `oci iam compartment list`
700
+ - Validate API key: `oci iam user get --user-id <user-id>`
701
+
702
+ **CloudFlare Issues:**
703
+ - Verify API token permissions in CloudFlare dashboard
704
+ - Check zone access: Test with CloudFlare API directly
705
+ - Ensure account/zone filters are correct in configuration
706
+
707
+ ### Getting Help
708
+
709
+ ```bash
710
+ # General help
711
+ ic --help
712
+
713
+ # Platform-specific help
714
+ ic aws --help
715
+ ic oci --help
716
+ ic cf --help
717
+
718
+ # Service-specific help
719
+ ic aws ec2 --help
720
+ ic oci vm --help
721
+
722
+ # Configuration help
723
+ ic config --help
724
+ ```
725
+
726
+ ### Debug Mode
727
+
728
+ Enable verbose logging for troubleshooting:
729
+
730
+ ```bash
731
+ # Set debug logging level
732
+ ic config set logging.level DEBUG
733
+
734
+ # Run command with verbose output
735
+ ic aws ec2 info --verbose
736
+
737
+ # Check log files
738
+ tail -f ~/.ic/logs/ic.log
739
+ ```
740
+
741
+ ## 🚧 Development Status
742
+
743
+ ### Production Ready Platforms
744
+ - ✅ **AWS**: Fully tested and production ready
745
+ - ✅ **OCI**: Fully tested and production ready
746
+ - ✅ **CloudFlare**: Fully tested and production ready
747
+ - ✅ **SSH**: Fully tested and production ready
748
+
749
+ ### Development Platforms
750
+ - ⚠️ **Azure**: In active development
751
+ - Basic functionality implemented
752
+ - May contain bugs or incomplete features
753
+ - Use with caution in production environments
754
+ - Help shows development status warning: `ic azure --help`
755
+
756
+ - ⚠️ **GCP**: In active development
757
+ - Basic functionality implemented
758
+ - May contain bugs or incomplete features
759
+ - Use with caution in production environments
760
+ - Help shows development status warning: `ic gcp --help`
761
+
762
+ ### Reporting Issues
763
+
764
+ If you encounter issues with development platforms:
765
+
766
+ 1. Check the help output for known limitations: `ic azure --help` or `ic gcp --help`
767
+ 2. Enable debug logging: `ic config set logging.level DEBUG`
768
+ 3. Report issues with detailed logs on [GitHub Issues](https://github.com/dgr009/ic/issues)
769
+ 4. Include platform, service, and command details in your report
770
+
771
+ ## 🏗️ Development
772
+
773
+ ### Project Structure
774
+
775
+ ```
776
+ ic/
777
+ ├── src/ic/ # Main package
778
+ │ ├── cli.py # CLI entry point and argument parsing
779
+ │ ├── config/ # Configuration management system
780
+ │ ├── core/ # Core utilities and logging
781
+ │ └── commands/ # Command implementations
782
+ ├── aws/ # AWS service modules
783
+ ├── oci_module/ # Oracle Cloud Infrastructure modules
784
+ ├── cf/ # CloudFlare modules
785
+ ├── ssh/ # SSH management modules
786
+ ├── azure_module/ # Azure modules (development)
787
+ ├── gcp/ # Google Cloud Platform modules (development)
788
+ ├── common/ # Shared utilities and progress decorators
789
+ ├── tests/ # Test suite
790
+ │ ├── unit/ # Unit tests
791
+ │ ├── integration/ # Integration tests
792
+ │ └── security/ # Security tests
793
+ ├── docs/ # Documentation
794
+ ├── requirements.txt # Python dependencies
795
+ └── pyproject.toml # Package configuration
796
+ ```
797
+
798
+ ### Setting Up Development Environment
799
+
800
+ ```bash
801
+ # Clone repository
802
+ git clone https://github.com/dgr009/ic.git
803
+ cd ic
804
+
805
+ # Create virtual environment
806
+ python -m venv ic-dev
807
+ source ic-dev/bin/activate # On Windows: ic-dev\Scripts\activate
808
+
809
+ # Install development dependencies
810
+ pip install -r requirements.txt
811
+ pip install -e .[dev]
812
+
813
+ # Run tests
814
+ pytest
815
+
816
+ # Run with coverage
817
+ pytest --cov=src --cov-report=html
818
+ ```
819
+
820
+ ### Adding New Services
821
+
822
+ 1. **Create service module**: Add new module in appropriate platform directory
823
+ 2. **Implement progress decorators**: Use `@progress_bar_decorator` for long operations
824
+ 3. **Add CLI integration**: Update `src/ic/cli.py` with new commands
825
+ 4. **Add tests**: Create unit and integration tests
826
+ 5. **Update documentation**: Add usage examples to README
827
+
828
+ ### Testing
829
+
830
+ ```bash
831
+ # Run all tests
832
+ pytest
833
+
834
+ # Run specific test categories
835
+ pytest -m unit # Unit tests only
836
+ pytest -m integration # Integration tests only
837
+ pytest -m security # Security tests only
838
+
839
+ # Run with coverage
840
+ pytest --cov=src --cov-report=html --cov-report=term
841
+
842
+ # Run performance tests
843
+ pytest -m performance
844
+ ```
845
+
846
+ ## 🤝 Contributing
847
+
848
+ We welcome contributions! Please see our contribution guidelines:
849
+
850
+ 1. **Fork the repository** on GitHub
851
+ 2. **Create a feature branch**: `git checkout -b feature/amazing-feature`
852
+ 3. **Make your changes** with appropriate tests
853
+ 4. **Run the test suite**: `pytest`
854
+ 5. **Update documentation** as needed
855
+ 6. **Submit a pull request** with a clear description
856
+
857
+ ### Code Standards
858
+
859
+ - Follow PEP 8 style guidelines
860
+ - Add type hints for new functions
861
+ - Include docstrings for public methods
862
+ - Add progress bar decorators for long-running operations
863
+ - Ensure security best practices for credential handling
864
+
865
+ ## 📄 License
866
+
867
+ MIT License - see [LICENSE](LICENSE) file for details.
868
+
869
+ ## 🆘 Support
870
+
871
+ - **Documentation**: This README and inline help (`ic --help`)
872
+ - **Issues**: [GitHub Issues](https://github.com/dgr009/ic/issues)
873
+ - **Discussions**: [GitHub Discussions](https://github.com/dgr009/ic/discussions)
874
+ - **Security**: Report security issues privately via GitHub Security Advisories
875
+
876
+ ---
877
+
878
+ **Made with ❤️ for infrastructure engineers and cloud administrators**$`
879
+