@@ -67,7 +67,7 @@ type ModelStatus struct {
6767	ModelGwReason        string 
6868	AvailableReplicas    uint32 
6969	UnavailableReplicas  uint32 
70- 	DrainingReplicas     uint32 
70+ 	DrainingReplicas     uint32   //this field is never used and was never added to proto 
7171	Timestamp            time.Time 
7272}
7373
@@ -90,6 +90,66 @@ func NewDefaultModelVersion(model *pb.Model, version uint32) *ModelVersion {
9090	}
9191}
9292
93+ func  NewModelSnapshot (model  * pb.Model ) * pb.ModelSnapshot  {
94+ 
95+ 	generation  :=  model .GetMeta ().GetKubernetesMeta ().GetGeneration ()
96+ 	version  :=  max (uint32 (1 ), uint32 (generation ))
97+ 
98+ 	var  versions  []* pb.ModelVersionStatus 
99+ 	versions  =  append (versions , & pb.ModelVersionStatus {
100+ 		Version :           version ,
101+ 		ServerName :        "" ,
102+ 		KubernetesMeta :    nil ,
103+ 		ModelReplicaState : make (map [int32 ]* pb.ModelReplicaStatus ),
104+ 		State : & pb.ModelStatus {
105+ 			State :               pb .ModelStatus_ModelStateUnknown ,
106+ 			Reason :              "" ,
107+ 			AvailableReplicas :   0 ,
108+ 			UnavailableReplicas : 0 ,
109+ 			LastChangeTimestamp : nil ,
110+ 			ModelGwState :        pb .ModelStatus_ModelCreate ,
111+ 			ModelGwReason :       "" ,
112+ 		},
113+ 		ModelDefn : model ,
114+ 	})
115+ 
116+ 	return  & pb.ModelSnapshot {
117+ 		Versions : versions ,
118+ 		Deleted :  false ,
119+ 	}
120+ }
121+ 
122+ func  CreateNextModelVersion (snapshot  * pb.ModelSnapshot , model  * pb.Model ) * pb.ModelSnapshot  {
123+ 	if  snapshot  ==  nil  {
124+ 		return  NewModelSnapshot (model )
125+ 	}
126+ 
127+ 	if  len (snapshot .Versions ) <  1  {
128+ 		return  NewModelSnapshot (model )
129+ 	}
130+ 
131+ 	version  :=  snapshot .Versions [len (snapshot .Versions )- 1 ].Version 
132+ 
133+ 	snapshot .Versions  =  append (snapshot .Versions , & pb.ModelVersionStatus {
134+ 		Version :           version ,
135+ 		ServerName :        "" ,
136+ 		KubernetesMeta :    nil ,
137+ 		ModelReplicaState : make (map [int32 ]* pb.ModelReplicaStatus ),
138+ 		State : & pb.ModelStatus {
139+ 			State :               pb .ModelStatus_ModelStateUnknown ,
140+ 			Reason :              "" ,
141+ 			AvailableReplicas :   0 ,
142+ 			UnavailableReplicas : 0 ,
143+ 			LastChangeTimestamp : nil ,
144+ 			ModelGwState :        pb .ModelStatus_ModelCreate ,
145+ 			ModelGwReason :       "" ,
146+ 		},
147+ 		ModelDefn : model ,
148+ 	})
149+ 
150+ 	return  snapshot 
151+ }
152+ 
93153// TODO: remove deleted from here and reflect in callers 
94154// This is only used in tests, thus we don't need to worry about modelGWState 
95155func  NewModelVersion (model  * pb.Model , version  uint32 , server  string , replicas  map [int ]ReplicaStatus , deleted  bool , state  ModelState ) * ModelVersion  {
@@ -396,6 +456,18 @@ func (m *Model) Inactive() bool {
396456	return  m .Latest ().Inactive ()
397457}
398458
459+ func  ModelInactive (snap  * pb.ModelSnapshot ) bool  {
460+ 
461+ }
462+ 
463+ func  ModelLatest (snap  * pb.ModelSnapshot ) * pb.ModelVersionStatus  {
464+ 	if  len (snap .Versions ) >  0  {
465+ 		return  snap .Versions [len (snap .Versions )- 1 ]
466+ 	} else  {
467+ 		return  nil 
468+ 	}
469+ }
470+ 
399471func  (m  * Model ) IsDeleted () bool  {
400472	return  m .deleted .Load ()
401473}
0 commit comments