88import odtp .helpers .parse as odtp_parse
99import odtp .mongodb .utils as db_utils
1010import odtp .helpers .utils as odtp_utils
11+ import odtp .helpers .git as odtp_git
1112
1213
1314## Adding listing so we can have multiple flags
@@ -36,31 +37,23 @@ def odtp_component_entry(
3637 help = "Specify the repository"
3738 )],
3839 component_version : Annotated [str , typer .Option (
39- help = "Specify the component version"
40- )],
41- odtp_version : Annotated [str , typer .Option (
42- help = "Specify the version of odtp"
43- )] = None ,
44- commit : Annotated [str , typer .Option (
45- help = """You may specify the commit of the repository. If not provided
46- the latest commit will be fetched"""
47- )] = None ,
40+ help = "Specify the tagged component version. It needs to be available on the github repo"
41+ )],
4842 type : Annotated [str , typer .Option (
4943 help = """You may specify the type of the component as either 'ephemeral or persistent'"""
5044 )] = db_utils .COMPONENT_TYPE_EPHERMAL ,
5145 ports : Annotated [str , typer .Option (
5246 help = "Specify ports seperated by a comma i.e. 8501,8201"
5347 )] = None ,
54- ):
48+ ):
5549 try :
5650 ports = odtp_parse .parse_component_ports (ports )
51+ repo_info = odtp_git .get_github_repo_info (repository )
5752 component_id , version_id = \
5853 db .add_component_version (
5954 component_name = name ,
60- repository = repository ,
61- odtp_version = odtp_version ,
55+ repo_info = repo_info ,
6256 component_version = component_version ,
63- commit_hash = commit ,
6457 type = type ,
6558 ports = ports ,
6659 )
@@ -76,21 +69,32 @@ def odtp_component_entry(
7669
7770@app .command ()
7871def digital_twin_entry (
79- user_id : str = typer .Option (..., "--user-id" , help = "Specify the user ID" ),
80- name : str = typer .Option (..., "--name" , help = "Specify the name" ),
72+ user_id : str = typer .Option (None , "--user-id" , help = "Specify the user ID" ),
73+ user_email : str = typer .Option (None , "--user-email" , help = "Specify the email" ),
74+ name : str = typer .Option (..., "--name" , help = "Specify the digital twin name" ),
8175):
76+ if user_id is None and user_email is None :
77+ raise typer .Exit ("Please provide either --user-id or --user-email" )
78+
79+ if user_email :
80+ user_id = db .get_document_id_by_field_value ("user_email" , user_email , "users" )
81+
8282 dt_id = db .add_digital_twin (userRef = user_id , name = name )
8383 print (f"Digital Twin added with ID { dt_id } " )
8484
8585
8686@app .command ()
8787def execution_entry (
88+ execution_name : str = typer .Option (..., "--name" , help = "Specify the name of the execution" ),
89+ dt_name : str = typer .Option (None , "--digital-twin-name" , help = "Specify the digital twin name" ),
8890 dt_id : str = typer .Option (
89- ..., "--digital-twin-id" , help = "Specify the digital twin ID"
91+ None , "--digital-twin-id" , help = "Specify the digital twin ID"
92+ ),
93+ component_tags : str = typer .Option (
94+ None , "--component-tags" , help = "Specify the components-tags (component-name:version) separated by commas"
9095 ),
91- execution_name : str = typer .Option (..., "--name" , help = "Specify the name of the execution" ),
9296 component_versions : str = typer .Option (
93- ... , "--component-versions" , help = "Specify the version_ids separated by commas"
97+ None , "--component-versions" , help = "Specify the version_ids separated by commas"
9498 ),
9599 parameter_files : Annotated [str , typer .Option (
96100 help = "List the files containing the parameters by step separated by commas"
@@ -101,11 +105,23 @@ def execution_entry(
101105 )] = None ,
102106):
103107 try :
108+ if dt_name is None and dt_id is None :
109+ raise typer .Exit ("Please provide either --digital-twin-name or --digital-twin-id" )
110+
111+ if component_tags is None and component_versions is None :
112+ raise typer .Exit ("Please provide either --component-tags or --component-versions" )
113+
114+ if dt_name :
115+ dt_id = db .get_document_id_by_field_value ("name" , dt_name , "digitalTwins" )
116+
117+ if component_tags :
118+ component_versions = "," .join (odtp_parse .parse_component_tags (component_tags ))
119+
104120 versions = odtp_parse .parse_versions (component_versions )
105121 step_count = len (versions )
106122 ports = odtp_parse .parse_port_mappings_for_multiple_components (
107123 ports = ports , step_count = step_count )
108- parameters = odtp_parse .parse_paramters_for_multiple_files (
124+ parameters = odtp_parse .parse_parameters_for_multiple_files (
109125 parameter_files = parameter_files , step_count = step_count )
110126 execution_id , step_ids = db .add_execution (
111127 dt_id = dt_id ,
0 commit comments