@@ -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