domino-cli 2.2.0__tar.gz → 2.3.0__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 (90) hide show
  1. {domino_cli-2.2.0 → domino_cli-2.3.0}/PKG-INFO +9 -1
  2. {domino_cli-2.2.0 → domino_cli-2.3.0}/README.md +8 -0
  3. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/__init__.py +1 -10
  4. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/ApplicationContext.py +3 -0
  5. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/client/DominoClient.py +9 -2
  6. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/command/DeployApplicationCommand.py +5 -2
  7. domino_cli-2.3.0/domino_cli/core/command/ImportCommand.py +29 -0
  8. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/domain/DominoCommand.py +1 -0
  9. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/domain/DominoRequest.py +2 -1
  10. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/DominoService.py +39 -1
  11. {domino_cli-2.2.0 → domino_cli-2.3.0}/.gitignore +0 -0
  12. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/__main__.py +0 -0
  13. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/__init__.py +0 -0
  14. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/cli/CLI.py +0 -0
  15. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/cli/Logging.py +0 -0
  16. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/cli/RuntimeHelper.py +0 -0
  17. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/cli/__init__.py +0 -0
  18. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/client/OAuthAuthorizationClient.py +0 -0
  19. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/client/__init__.py +0 -0
  20. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/command/AbstractCommand.py +0 -0
  21. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/command/AbstractLifecycleCommand.py +0 -0
  22. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/command/AuthCommand.py +0 -0
  23. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/command/ExitCommand.py +0 -0
  24. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/command/HelpCommand.py +0 -0
  25. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/command/InfoCommand.py +0 -0
  26. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/command/RestartApplicationCommand.py +0 -0
  27. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/command/StartApplicationCommand.py +0 -0
  28. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/command/StopApplicationCommand.py +0 -0
  29. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/command/WizardCommand.py +0 -0
  30. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/command/__init__.py +0 -0
  31. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/domain/AuthMode.py +0 -0
  32. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/domain/AuthRequest.py +0 -0
  33. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/domain/CommandDescriptor.py +0 -0
  34. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/domain/HTTPMethod.py +0 -0
  35. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/domain/OAuthConfig.py +0 -0
  36. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/domain/SessionContext.py +0 -0
  37. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/domain/__init__.py +0 -0
  38. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/AuthenticationService.py +0 -0
  39. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/CommandProcessor.py +0 -0
  40. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/ConfigurationWizardService.py +0 -0
  41. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/SessionContextHolder.py +0 -0
  42. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/__init__.py +0 -0
  43. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/auth/AbstractAuthHandler.py +0 -0
  44. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/auth/AuthUtils.py +0 -0
  45. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/auth/DirectAuthHandler.py +0 -0
  46. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/auth/OAuthAuthHandler.py +0 -0
  47. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/auth/__init__.py +0 -0
  48. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/utility/BCryptUtil.py +0 -0
  49. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/utility/__init__.py +0 -0
  50. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/AbstractAgentConfigWizard.py +0 -0
  51. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/AbstractWizard.py +0 -0
  52. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/BinaryExecutableAgentConfigWizard.py +0 -0
  53. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/CoordinatorConfigWizard.py +0 -0
  54. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/DeploymentConfigWizard.py +0 -0
  55. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/DockerAgentConfigWizard.py +0 -0
  56. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/InstallerWizard.py +0 -0
  57. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/__init__.py +0 -0
  58. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/installer/BinaryExecutablePlatformComponentInstaller.py +0 -0
  59. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/installer/DockerPlatformComponentInstaller.py +0 -0
  60. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/installer/DockerVersionResolver.py +0 -0
  61. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/installer/GitHubReleaseVersionResolver.py +0 -0
  62. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/installer/PlatformComponentInstaller.py +0 -0
  63. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/installer/__init__.py +0 -0
  64. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/mapping/BinaryExecutableAgentConfigWizardDataMapping.py +0 -0
  65. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/mapping/CommonAgentConfigWizardDataMapping.py +0 -0
  66. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/mapping/CoordinatorConfigWizardDataMapping.py +0 -0
  67. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/mapping/DeploymentConfigWizardDataMapping.py +0 -0
  68. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/mapping/DockerAgentConfigWizardDataMapping.py +0 -0
  69. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/mapping/InstallerWizardDataMapping.py +0 -0
  70. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/mapping/WizardDataMappingBaseEnum.py +0 -0
  71. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/mapping/__init__.py +0 -0
  72. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/render/WizardResultConsoleRenderer.py +0 -0
  73. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/render/WizardResultFileRenderer.py +0 -0
  74. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/render/__init__.py +0 -0
  75. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/step/BaseWizardStep.py +0 -0
  76. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/step/KeyValuePairAnswerWizardStep.py +0 -0
  77. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/step/MultiAnswerWizardStep.py +0 -0
  78. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/step/OptionSelectorWizardStep.py +0 -0
  79. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/step/WizardStep.py +0 -0
  80. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/step/__init__.py +0 -0
  81. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/transformer/AbstractWizardResultTransformer.py +0 -0
  82. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/transformer/BinaryExecutableAgentConfigWizardResultTransformer.py +0 -0
  83. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/transformer/CoordinatorConfigWizardResultTransformer.py +0 -0
  84. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/transformer/DeploymentConfigWizardResultTransformer.py +0 -0
  85. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/transformer/DockerAgentConfigWizardResultTransformer.py +0 -0
  86. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/service/wizard/transformer/__init__.py +0 -0
  87. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/util/ArrayStream.py +0 -0
  88. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/core/util/__init__.py +0 -0
  89. {domino_cli-2.2.0 → domino_cli-2.3.0}/domino_cli/installer_config.py +0 -0
  90. {domino_cli-2.2.0 → domino_cli-2.3.0}/pyproject.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: domino-cli
3
- Version: 2.2.0
3
+ Version: 2.3.0
4
4
  Summary: Domino Platform CLI tool, providing utilities to install, configure and control your Domino Platform insfrastructure
5
5
  Project-URL: Maintainer's website, https://psprog.hu
6
6
  Classifier: Development Status :: 5 - Production/Stable
@@ -184,6 +184,14 @@ info <app>
184
184
  ```
185
185
  Instructs Domino to query the application's info endpoint and returns the results.
186
186
 
187
+ ### Deployment definition management commands
188
+
189
+ ```
190
+ import <optional/path/to/deployment-definition.yml>
191
+ ```
192
+ Imports a YAML formatted deployment definition. Without providing an absolute or relative path to your deployment
193
+ definition file, defaults to `.domino/deployment.yml`.
194
+
187
195
  ### Configuration wizards
188
196
 
189
197
  Domino CLI also provides configuration wizards which help to properly create Domino configuration files.
@@ -166,6 +166,14 @@ info <app>
166
166
  ```
167
167
  Instructs Domino to query the application's info endpoint and returns the results.
168
168
 
169
+ ### Deployment definition management commands
170
+
171
+ ```
172
+ import <optional/path/to/deployment-definition.yml>
173
+ ```
174
+ Imports a YAML formatted deployment definition. Without providing an absolute or relative path to your deployment
175
+ definition file, defaults to `.domino/deployment.yml`.
176
+
169
177
  ### Configuration wizards
170
178
 
171
179
  Domino CLI also provides configuration wizards which help to properly create Domino configuration files.
@@ -2,19 +2,10 @@
2
2
  domino_cli.py :: Main entry point for Domino CLI application.
3
3
  """
4
4
 
5
- __version__ = "2.2.0"
6
-
7
- import os
5
+ __version__ = "2.3.0"
8
6
 
9
7
  from domino_cli.core.ApplicationContext import ApplicationContext
10
8
 
11
9
 
12
- def _set_work_dir() -> None:
13
- script_path: str = os.path.realpath(__file__)
14
- script_dir: str = os.path.dirname(script_path)
15
- os.chdir(script_dir)
16
-
17
-
18
10
  def main() -> None:
19
- _set_work_dir()
20
11
  ApplicationContext.init_cli(__version__).run_loop()
@@ -8,6 +8,7 @@ from domino_cli.core.command.AuthCommand import AuthCommand
8
8
  from domino_cli.core.command.DeployApplicationCommand import DeployApplicationCommand
9
9
  from domino_cli.core.command.ExitCommand import ExitCommand
10
10
  from domino_cli.core.command.HelpCommand import HelpCommand
11
+ from domino_cli.core.command.ImportCommand import ImportCommand
11
12
  from domino_cli.core.command.InfoCommand import InfoCommand
12
13
  from domino_cli.core.command.RestartApplicationCommand import RestartApplicationCommand
13
14
  from domino_cli.core.command.StartApplicationCommand import StartApplicationCommand
@@ -111,6 +112,7 @@ class ApplicationContext:
111
112
  _command_stop_app = StopApplicationCommand(_domino_service)
112
113
  _command_restart_app = RestartApplicationCommand(_domino_service)
113
114
  _command_deploy_app = DeployApplicationCommand(_domino_service)
115
+ _command_import = ImportCommand(_domino_service)
114
116
  _command_auth = AuthCommand(_auth_service)
115
117
  _command_wizard = WizardCommand(_config_wizard_service)
116
118
  _command_info = InfoCommand(_domino_service)
@@ -124,6 +126,7 @@ class ApplicationContext:
124
126
  _command_restart_app,
125
127
  _command_start_app,
126
128
  _command_stop_app,
129
+ _command_import,
127
130
  _command_wizard,
128
131
  _command_info
129
132
  ])
@@ -26,7 +26,14 @@ class DominoClient:
26
26
  :return: Response object
27
27
  """
28
28
  resolved_path = urllib.parse.urljoin(self._domino_base_url, domino_request.path)
29
- json_body = domino_request.body
29
+ headers = {"Content-Type": "text/plain"} \
30
+ if domino_request.as_text \
31
+ else {"Content-Type": "application/json"}
30
32
  auth = self._session_context_holder.get_bearer_auth() if domino_request.authenticated else None
31
33
 
32
- return requests.request(domino_request.method.value, resolved_path, json=json_body, headers=auth)
34
+ if auth:
35
+ headers.update(auth)
36
+
37
+ return requests.request(domino_request.method.value, resolved_path, headers=headers,
38
+ json=None if domino_request.as_text else domino_request.body,
39
+ data=domino_request.body if domino_request.as_text else None)
@@ -1,4 +1,5 @@
1
- from domino_cli.core.cli.Logging import warning
1
+ from domino_cli.core.cli.Logging import error
2
+ from domino_cli.core.cli.RuntimeHelper import RuntimeHelper
2
3
  from domino_cli.core.command.AbstractCommand import AbstractCommand
3
4
  from domino_cli.core.domain.CommandDescriptor import CommandDescriptor
4
5
  from domino_cli.core.domain.DominoCommand import DominoCommand
@@ -26,7 +27,9 @@ class DeployApplicationCommand(AbstractCommand):
26
27
  :param command_descriptor: CommandDescriptor object containing the command arguments
27
28
  """
28
29
  if not len(command_descriptor.arguments) == 2:
29
- warning("Application name and 'latest' keyword or explicit version is required")
30
+ error("Application name and 'latest' keyword or explicit version is required")
31
+ RuntimeHelper.exit_with_error_in_cicd_mode()
32
+
30
33
  else:
31
34
  application: str = command_descriptor.arguments[0]
32
35
  version: str = command_descriptor.arguments[1]
@@ -0,0 +1,29 @@
1
+ from domino_cli.core.cli.Logging import error
2
+ from domino_cli.core.cli.RuntimeHelper import RuntimeHelper
3
+ from domino_cli.core.command.AbstractCommand import AbstractCommand
4
+ from domino_cli.core.domain.CommandDescriptor import CommandDescriptor
5
+ from domino_cli.core.service.DominoService import DominoService
6
+
7
+ _COMMAND_NAME = "import"
8
+
9
+
10
+ class ImportCommand(AbstractCommand):
11
+ """
12
+ Command implementation to import a deployment definition from static YAML configuration file.
13
+ """
14
+ def __init__(self, domino_service: DominoService):
15
+ super().__init__(_COMMAND_NAME)
16
+ self._domino_service = domino_service
17
+
18
+ def execute_command(self, command_descriptor: CommandDescriptor) -> None:
19
+
20
+ if len(command_descriptor.arguments) > 1:
21
+ error("Too many arguments, expected command usage is 'import optional/path/to/deployment.yml' (defaults to '.domino/deployment.yml' without argument)")
22
+ RuntimeHelper.exit_with_error_in_cicd_mode()
23
+ return
24
+
25
+ definition_path = command_descriptor.arguments[0] \
26
+ if len(command_descriptor.arguments) == 1 \
27
+ else None
28
+
29
+ self._domino_service.import_definition(definition_path)
@@ -24,3 +24,4 @@ class DominoCommand(Enum):
24
24
  DEPLOY_LATEST = DominoRequestDescriptor(HTTPMethod.PUT, "/lifecycle/{0}/deploy")
25
25
  DEPLOY_VERSION = DominoRequestDescriptor(HTTPMethod.PUT, "/lifecycle/{0}/deploy/{1}")
26
26
  INFO = DominoRequestDescriptor(HTTPMethod.GET, "/lifecycle/{0}/info")
27
+ IMPORT = DominoRequestDescriptor(HTTPMethod.POST, "/deployments/import")
@@ -5,10 +5,11 @@ class DominoRequest:
5
5
  """
6
6
  REST request parameter wrapper.
7
7
  """
8
- def __init__(self, method: HTTPMethod, path: str, body=None, authenticated: bool = False):
8
+ def __init__(self, method: HTTPMethod, path: str, body=None, as_text: bool = False, authenticated: bool = False):
9
9
  self.method = method
10
10
  self.path = path
11
11
  self.body = body
12
+ self.as_text = as_text
12
13
  self.authenticated = authenticated
13
14
 
14
15
  def __repr__(self):
@@ -42,7 +42,39 @@ class DominoService:
42
42
  DominoService._render_response(response)
43
43
 
44
44
  except Exception as exc:
45
- error("Failed to execute HTTP request {0} - reason {1}".format(domino_request, str(exc)))
45
+ error("Failed to execute HTTP request {0} - reason: {1}".format(domino_request, str(exc)))
46
+ RuntimeHelper.exit_with_error_in_cicd_mode()
47
+
48
+ def import_definition(self, optional_definition_path: str | None = None) -> None:
49
+ """
50
+ Imports the given deployment definition. If path is not provided, defaults to ".domino/deployment.yml".
51
+
52
+ :param optional_definition_path: optional path to a deployment definition
53
+ """
54
+ definition_path = optional_definition_path \
55
+ if optional_definition_path \
56
+ else ".domino/deployment.yml"
57
+ info(f"Requesting Domino to import deployment definition from={definition_path}")
58
+
59
+ try:
60
+
61
+ with open(definition_path, "r") as definition_file:
62
+ definition = definition_file.read()
63
+ domino_request_descriptor: DominoRequestDescriptor = DominoCommand.IMPORT.value
64
+ domino_request = DominoRequest(domino_request_descriptor.method, domino_request_descriptor.path_template,
65
+ body=definition, authenticated=True, as_text=True)
66
+ response = self._domino_client.send_command(domino_request)
67
+
68
+ if DominoService._is_successful(response):
69
+ info(f"Successfully imported definition {definition_path}")
70
+ else:
71
+ error(f"Failed to import deployment definition {definition_path} - Domino responded with {response.status_code}")
72
+ RuntimeHelper.exit_with_error_in_cicd_mode()
73
+
74
+ DominoService._render_response(response)
75
+
76
+ except Exception as exc:
77
+ error("Failed to import definition from {0} - reason: {1}".format(definition_path, str(exc)))
46
78
  RuntimeHelper.exit_with_error_in_cicd_mode()
47
79
 
48
80
  @staticmethod
@@ -51,6 +83,12 @@ class DominoService:
51
83
 
52
84
  @staticmethod
53
85
  def _render_response(response: Response):
86
+
87
+ if len(response.content) == 0:
88
+ info("No further response received from Domino")
89
+ print()
90
+ return
91
+
54
92
  response_dict = response.json()
55
93
  info(" --- Response details ---")
56
94
  [info("{:>20}: {}".format(field, response_dict[field])) for field in response_dict]
File without changes
File without changes