21
21
MemberModelEntries ,
22
22
ModelGroup ,
23
23
ModelGroupDetails ,
24
+ ModelGroupSummary ,
24
25
UpdateModelGroupDetails ,
25
26
)
26
- except ModuleNotFoundError :
27
+ except ModuleNotFoundError as err :
27
28
raise ModuleNotFoundError (
28
29
"The oci model group module was not found. Please run `pip install oci` "
29
30
"to install the latest oci sdk."
30
- )
31
+ ) from err
31
32
32
33
DEFAULT_WAIT_TIME = 1200
33
34
DEFAULT_POLL_INTERVAL = 10
34
35
ALLOWED_CREATE_TYPES = ["CREATE" , "CLONE" ]
36
+ MODEL_GROUP_KIND = "datascienceModelGroup"
35
37
36
38
37
39
class DataScienceModelGroup (Builder ):
38
- """Represents a Data Science Model.
40
+ """Represents a Data Science Model Group .
39
41
40
42
Attributes
41
43
----------
@@ -198,6 +200,11 @@ def __init__(self, spec=None, **kwargs):
198
200
super ().__init__ (spec , ** kwargs )
199
201
self .dsc_model_group = OCIDataScienceModelGroup ()
200
202
203
+ @property
204
+ def kind (self ) -> str :
205
+ """The kind of the model group as showing in a YAML."""
206
+ return MODEL_GROUP_KIND
207
+
201
208
@property
202
209
def id (self ) -> str :
203
210
"""The model group OCID."""
@@ -503,6 +510,7 @@ def create(
503
510
return self ._update_from_oci_model (response )
504
511
505
512
def _build_model_group_details (self ) -> dict :
513
+ """Builds model group details dict for creating or updating oci model group."""
506
514
model_group_details = HomogeneousModelGroupDetails (
507
515
custom_metadata_list = [
508
516
CustomMetadata (
@@ -537,8 +545,21 @@ def _build_model_group_details(self) -> dict:
537
545
return build_model_group_details
538
546
539
547
def _update_from_oci_model (
540
- self , oci_model_group_instance : ModelGroup
548
+ self , oci_model_group_instance : Union [ ModelGroup , ModelGroupSummary ]
541
549
) -> "DataScienceModelGroup" :
550
+ """Updates self spec from oci model group instance.
551
+
552
+ Parameters
553
+ ----------
554
+ oci_model_group_instance: Union[ModelGroup, ModelGroupSummary]
555
+ The oci model group instance, could be an instance of oci.data_science.models.ModelGroup
556
+ or oci.data_science.models.ModelGroupSummary.
557
+
558
+ Returns
559
+ -------
560
+ DataScienceModelGroup
561
+ The instance of DataScienceModelGroup.
562
+ """
542
563
self .dsc_model_group = oci_model_group_instance
543
564
for key , value in self .attribute_map .items ():
544
565
if hasattr (oci_model_group_instance , value ):
@@ -560,23 +581,27 @@ def _update_from_oci_model(
560
581
)
561
582
self .set_spec (self .CONST_CUSTOM_METADATA_LIST , model_custom_metadata )
562
583
563
- member_model_entries : MemberModelEntries = (
564
- oci_model_group_instance .member_model_entries
565
- )
566
- member_model_details : List [MemberModelDetails ] = (
567
- member_model_entries .member_model_details
568
- )
584
+ # only updates member_models when oci_model_group_instance is an instance of
585
+ # oci.data_science.models.ModelGroup as oci.data_science.models.ModelGroupSummary
586
+ # doesn't have member_model_entries property.
587
+ if isinstance (oci_model_group_instance , ModelGroup ):
588
+ member_model_entries : MemberModelEntries = (
589
+ oci_model_group_instance .member_model_entries
590
+ )
591
+ member_model_details : List [MemberModelDetails ] = (
592
+ member_model_entries .member_model_details
593
+ )
569
594
570
- self .set_spec (
571
- self .CONST_MEMBER_MODELS ,
572
- [
573
- {
574
- "inference_key" : member_model_detail .inference_key ,
575
- "model_id" : member_model_detail .model_id ,
576
- }
577
- for member_model_detail in member_model_details
578
- ],
579
- )
595
+ self .set_spec (
596
+ self .CONST_MEMBER_MODELS ,
597
+ [
598
+ {
599
+ "inference_key" : member_model_detail .inference_key ,
600
+ "model_id" : member_model_detail .model_id ,
601
+ }
602
+ for member_model_detail in member_model_details
603
+ ],
604
+ )
580
605
581
606
return self
582
607
@@ -729,18 +754,18 @@ def sync(self) -> "DataScienceModelGroup":
729
754
@classmethod
730
755
def list (
731
756
cls ,
757
+ status : str = None ,
732
758
compartment_id : str = None ,
733
- project_id : str = None ,
734
759
** kwargs ,
735
760
) -> List ["DataScienceModelGroup" ]:
736
761
"""Lists datascience model groups in a given compartment.
737
762
738
763
Parameters
739
764
----------
765
+ status: (str, optional). Defaults to `None`.
766
+ The status of model group. Allowed values: `ACTIVE`, `CREATING`, `DELETED`, `DELETING`, `FAILED` and `INACTIVE`.
740
767
compartment_id: (str, optional). Defaults to `None`.
741
768
The compartment OCID.
742
- project_id: (str, optional). Defaults to `None`.
743
- The project OCID.
744
769
kwargs
745
770
Additional keyword arguments for filtering model groups.
746
771
@@ -750,9 +775,11 @@ def list(
750
775
The list of the datascience model groups.
751
776
"""
752
777
return [
753
- cls ()._update_from_oci_model (model_group )
754
- for model_group in OCIDataScienceModelGroup .list_resource (
755
- compartment_id , project_id = project_id , ** kwargs
778
+ cls ()._update_from_oci_model (model_group_summary )
779
+ for model_group_summary in OCIDataScienceModelGroup .list (
780
+ status = status ,
781
+ compartment_id = compartment_id ,
782
+ ** kwargs ,
756
783
)
757
784
]
758
785
0 commit comments