@@ -23,6 +23,7 @@ import (
2323	"strings" 
2424
2525	"github.com/containerd/nri/pkg/api" 
26+ 	"google.golang.org/protobuf/proto" 
2627)
2728
2829type  result  struct  {
@@ -622,124 +623,132 @@ func (r *result) adjustHooks(hooks *Hooks, plugin string) error {
622623	return  nil 
623624}
624625
625- func  (r  * result ) adjustResources ( resources   * LinuxResources , plugin  string ) error  {
626- 	if  resources  ==  nil  {
626+ func  (r  * result ) adjustMemoryResource ( mem ,  targetContainer   * LinuxMemory ,  id , plugin  string ) error  {
627+ 	if  mem  ==  nil  {
627628		return  nil 
628629	}
629630
630- 	create , id  :=  r .request .create , r .request .create .Container .Id 
631- 	container  :=  create .Container .Linux .Resources 
632- 	reply  :=  r .reply .adjust .Linux .Resources 
633- 
634- 	if  mem  :=  resources .Memory ; mem  !=  nil  {
635- 		if  v  :=  mem .GetLimit (); v  !=  nil  {
636- 			if  err  :=  r .owners .ClaimMemLimit (id , plugin ); err  !=  nil  {
637- 				return  err 
638- 			}
639- 			container .Memory .Limit  =  Int64 (v .GetValue ())
640- 			reply .Memory .Limit  =  Int64 (v .GetValue ())
631+ 	if  v  :=  mem .GetLimit (); v  !=  nil  {
632+ 		if  err  :=  r .owners .ClaimMemLimit (id , plugin ); err  !=  nil  {
633+ 			return  err 
641634		}
642- 		if  v  :=  mem .GetReservation (); v  !=  nil  {
643- 			if  err  :=  r .owners .ClaimMemReservation (id , plugin ); err  !=  nil  {
644- 				return  err 
645- 			}
646- 			container .Memory .Reservation  =  Int64 (v .GetValue ())
647- 			reply .Memory .Reservation  =  Int64 (v .GetValue ())
635+ 		targetContainer .Limit  =  Int64 (v .GetValue ())
636+ 	}
637+ 	if  v  :=  mem .GetReservation (); v  !=  nil  {
638+ 		if  err  :=  r .owners .ClaimMemReservation (id , plugin ); err  !=  nil  {
639+ 			return  err 
648640		}
649- 		if  v  :=  mem .GetSwap (); v  !=  nil  {
650- 			if  err  :=  r .owners .ClaimMemSwapLimit (id , plugin ); err  !=  nil  {
651- 				return  err 
652- 			}
653- 			container .Memory .Swap  =  Int64 (v .GetValue ())
654- 			reply .Memory .Swap  =  Int64 (v .GetValue ())
641+ 		targetContainer .Reservation  =  Int64 (v .GetValue ())
642+ 	}
643+ 	if  v  :=  mem .GetSwap (); v  !=  nil  {
644+ 		if  err  :=  r .owners .ClaimMemSwapLimit (id , plugin ); err  !=  nil  {
645+ 			return  err 
655646		}
656- 		if  v  :=  mem .GetKernel (); v  !=  nil  {
657- 			if  err  :=  r .owners .ClaimMemKernelLimit (id , plugin ); err  !=  nil  {
658- 				return  err 
659- 			}
660- 			container .Memory .Kernel  =  Int64 (v .GetValue ())
661- 			reply .Memory .Kernel  =  Int64 (v .GetValue ())
647+ 		targetContainer .Swap  =  Int64 (v .GetValue ())
648+ 	}
649+ 	if  v  :=  mem .GetKernel (); v  !=  nil  {
650+ 		if  err  :=  r .owners .ClaimMemKernelLimit (id , plugin ); err  !=  nil  {
651+ 			return  err 
662652		}
663- 		if  v  :=  mem .GetKernelTcp (); v  !=  nil  {
664- 			if  err  :=  r .owners .ClaimMemTCPLimit (id , plugin ); err  !=  nil  {
665- 				return  err 
666- 			}
667- 			container .Memory .KernelTcp  =  Int64 (v .GetValue ())
668- 			reply .Memory .KernelTcp  =  Int64 (v .GetValue ())
653+ 		targetContainer .Kernel  =  Int64 (v .GetValue ())
654+ 	}
655+ 	if  v  :=  mem .GetKernelTcp (); v  !=  nil  {
656+ 		if  err  :=  r .owners .ClaimMemTCPLimit (id , plugin ); err  !=  nil  {
657+ 			return  err 
669658		}
670- 		if  v  :=  mem .GetSwappiness (); v  !=  nil  {
671- 			if  err  :=  r .owners .ClaimMemSwappiness (id , plugin ); err  !=  nil  {
672- 				return  err 
673- 			}
674- 			container .Memory .Swappiness  =  UInt64 (v .GetValue ())
675- 			reply .Memory .Swappiness  =  UInt64 (v .GetValue ())
659+ 		targetContainer .KernelTcp  =  Int64 (v .GetValue ())
660+ 	}
661+ 	if  v  :=  mem .GetSwappiness (); v  !=  nil  {
662+ 		if  err  :=  r .owners .ClaimMemSwappiness (id , plugin ); err  !=  nil  {
663+ 			return  err 
676664		}
677- 		if  v  :=  mem .GetDisableOomKiller (); v  !=  nil  {
678- 			if  err  :=  r .owners .ClaimMemDisableOomKiller (id , plugin ); err  !=  nil  {
679- 				return  err 
680- 			}
681- 			container .Memory .DisableOomKiller  =  Bool (v .GetValue ())
682- 			reply .Memory .DisableOomKiller  =  Bool (v .GetValue ())
665+ 		targetContainer .Swappiness  =  UInt64 (v .GetValue ())
666+ 	}
667+ 	if  v  :=  mem .GetDisableOomKiller (); v  !=  nil  {
668+ 		if  err  :=  r .owners .ClaimMemDisableOomKiller (id , plugin ); err  !=  nil  {
669+ 			return  err 
683670		}
684- 		if  v  :=  mem .GetUseHierarchy (); v  !=  nil  {
685- 			if  err  :=  r .owners .ClaimMemUseHierarchy (id , plugin ); err  !=  nil  {
686- 				return  err 
687- 			}
688- 			container .Memory .UseHierarchy  =  Bool (v .GetValue ())
689- 			reply .Memory .UseHierarchy  =  Bool (v .GetValue ())
671+ 		targetContainer .DisableOomKiller  =  Bool (v .GetValue ())
672+ 	}
673+ 	if  v  :=  mem .GetUseHierarchy (); v  !=  nil  {
674+ 		if  err  :=  r .owners .ClaimMemUseHierarchy (id , plugin ); err  !=  nil  {
675+ 			return  err 
690676		}
677+ 		targetContainer .UseHierarchy  =  Bool (v .GetValue ())
691678	}
692- 	if  cpu  :=  resources .Cpu ; cpu  !=  nil  {
693- 		if  v  :=  cpu .GetShares (); v  !=  nil  {
694- 			if  err  :=  r .owners .ClaimCPUShares (id , plugin ); err  !=  nil  {
695- 				return  err 
696- 			}
697- 			container .Cpu .Shares  =  UInt64 (v .GetValue ())
698- 			reply .Cpu .Shares  =  UInt64 (v .GetValue ())
679+ 
680+ 	return  nil 
681+ }
682+ 
683+ func  (r  * result ) adjustCPUResource (cpu , targetContainer  * LinuxCPU , id , plugin  string ) error  {
684+ 	if  cpu  ==  nil  {
685+ 		return  nil 
686+ 	}
687+ 
688+ 	if  v  :=  cpu .GetShares (); v  !=  nil  {
689+ 		if  err  :=  r .owners .ClaimCPUShares (id , plugin ); err  !=  nil  {
690+ 			return  err 
699691		}
700- 		if  v  :=  cpu .GetQuota (); v  !=  nil  {
701- 			if  err  :=  r .owners .ClaimCPUQuota (id , plugin ); err  !=  nil  {
702- 				return  err 
703- 			}
704- 			container .Cpu .Quota  =  Int64 (v .GetValue ())
705- 			reply .Cpu .Quota  =  Int64 (v .GetValue ())
692+ 		targetContainer .Shares  =  UInt64 (v .GetValue ())
693+ 	}
694+ 	if  v  :=  cpu .GetQuota (); v  !=  nil  {
695+ 		if  err  :=  r .owners .ClaimCPUQuota (id , plugin ); err  !=  nil  {
696+ 			return  err 
706697		}
707- 		if  v  :=  cpu .GetPeriod (); v  !=  nil  {
708- 			if  err  :=  r .owners .ClaimCPUPeriod (id , plugin ); err  !=  nil  {
709- 				return  err 
710- 			}
711- 			container .Cpu .Period  =  UInt64 (v .GetValue ())
712- 			reply .Cpu .Period  =  UInt64 (v .GetValue ())
698+ 		targetContainer .Quota  =  Int64 (v .GetValue ())
699+ 	}
700+ 	if  v  :=  cpu .GetPeriod (); v  !=  nil  {
701+ 		if  err  :=  r .owners .ClaimCPUPeriod (id , plugin ); err  !=  nil  {
702+ 			return  err 
713703		}
714- 		if  v  :=  cpu .GetRealtimeRuntime (); v  !=  nil  {
715- 			if  err  :=  r .owners .ClaimCPURealtimeRuntime (id , plugin ); err  !=  nil  {
716- 				return  err 
717- 			}
718- 			container .Cpu .RealtimeRuntime  =  Int64 (v .GetValue ())
719- 			reply .Cpu .RealtimeRuntime  =  Int64 (v .GetValue ())
704+ 		targetContainer .Period  =  UInt64 (v .GetValue ())
705+ 	}
706+ 	if  v  :=  cpu .GetRealtimeRuntime (); v  !=  nil  {
707+ 		if  err  :=  r .owners .ClaimCPURealtimeRuntime (id , plugin ); err  !=  nil  {
708+ 			return  err 
720709		}
721- 		if  v  :=  cpu .GetRealtimePeriod (); v  !=  nil  {
722- 			if  err  :=  r .owners .ClaimCPURealtimePeriod (id , plugin ); err  !=  nil  {
723- 				return  err 
724- 			}
725- 			container .Cpu .RealtimePeriod  =  UInt64 (v .GetValue ())
726- 			reply .Cpu .RealtimePeriod  =  UInt64 (v .GetValue ())
710+ 		targetContainer .RealtimeRuntime  =  Int64 (v .GetValue ())
711+ 	}
712+ 	if  v  :=  cpu .GetRealtimePeriod (); v  !=  nil  {
713+ 		if  err  :=  r .owners .ClaimCPURealtimePeriod (id , plugin ); err  !=  nil  {
714+ 			return  err 
727715		}
728- 		if  v  :=  cpu .GetCpus (); v  !=  ""  {
729- 			if  err  :=  r .owners .ClaimCPUSetCPUs (id , plugin ); err  !=  nil  {
730- 				return  err 
731- 			}
732- 			container .Cpu .Cpus  =  v 
733- 			reply .Cpu .Cpus  =  v 
716+ 		targetContainer .RealtimePeriod  =  UInt64 (v .GetValue ())
717+ 	}
718+ 	if  v  :=  cpu .GetCpus (); v  !=  ""  {
719+ 		if  err  :=  r .owners .ClaimCPUSetCPUs (id , plugin ); err  !=  nil  {
720+ 			return  err 
734721		}
735- 		if  v  :=  cpu .GetMems (); v  !=  ""  {
736- 			if  err  :=  r .owners .ClaimCPUSetMems (id , plugin ); err  !=  nil  {
737- 				return  err 
738- 			}
739- 			container .Cpu .Mems  =  v 
740- 			reply .Cpu .Mems  =  v 
722+ 		targetContainer .Cpus  =  v 
723+ 	}
724+ 	if  v  :=  cpu .GetMems (); v  !=  ""  {
725+ 		if  err  :=  r .owners .ClaimCPUSetMems (id , plugin ); err  !=  nil  {
726+ 			return  err 
741727		}
728+ 		targetContainer .Mems  =  v 
729+ 	}
730+ 
731+ 	return  nil 
732+ }
733+ 
734+ func  (r  * result ) adjustResources (resources  * LinuxResources , plugin  string ) error  {
735+ 	if  resources  ==  nil  {
736+ 		return  nil 
737+ 	}
738+ 
739+ 	create , id  :=  r .request .create , r .request .create .Container .Id 
740+ 	container  :=  create .Container .Linux .Resources 
741+ 	reply  :=  r .reply .adjust .Linux .Resources 
742+ 
743+ 	if  err  :=  r .adjustMemoryResource (resources .Memory , container .Memory , id , plugin ); err  !=  nil  {
744+ 		return  err 
742745	}
746+ 	reply .Memory  =  proto .Clone (container .Memory ).(* LinuxMemory )
747+ 
748+ 	if  err  :=  r .adjustCPUResource (resources .Cpu , container .Cpu , id , plugin ); err  !=  nil  {
749+ 		return  err 
750+ 	}
751+ 	reply .Cpu  =  proto .Clone (container .Cpu ).(* LinuxCPU )
743752
744753	for  _ , l  :=  range  resources .HugepageLimits  {
745754		if  err  :=  r .owners .ClaimHugepageLimit (id , l .PageSize , plugin ); err  !=  nil  {
@@ -886,99 +895,12 @@ func (r *result) updateResources(reply, u *ContainerUpdate, plugin string) error
886895		resources  =  reply .Linux .Resources .Copy ()
887896	}
888897
889- 	if  mem  :=  u .Linux .Resources .Memory ; mem  !=  nil  {
890- 		if  v  :=  mem .GetLimit (); v  !=  nil  {
891- 			if  err  :=  r .owners .ClaimMemLimit (id , plugin ); err  !=  nil  {
892- 				return  err 
893- 			}
894- 			resources .Memory .Limit  =  Int64 (v .GetValue ())
895- 		}
896- 		if  v  :=  mem .GetReservation (); v  !=  nil  {
897- 			if  err  :=  r .owners .ClaimMemReservation (id , plugin ); err  !=  nil  {
898- 				return  err 
899- 			}
900- 			resources .Memory .Reservation  =  Int64 (v .GetValue ())
901- 		}
902- 		if  v  :=  mem .GetSwap (); v  !=  nil  {
903- 			if  err  :=  r .owners .ClaimMemSwapLimit (id , plugin ); err  !=  nil  {
904- 				return  err 
905- 			}
906- 			resources .Memory .Swap  =  Int64 (v .GetValue ())
907- 		}
908- 		if  v  :=  mem .GetKernel (); v  !=  nil  {
909- 			if  err  :=  r .owners .ClaimMemKernelLimit (id , plugin ); err  !=  nil  {
910- 				return  err 
911- 			}
912- 			resources .Memory .Kernel  =  Int64 (v .GetValue ())
913- 		}
914- 		if  v  :=  mem .GetKernelTcp (); v  !=  nil  {
915- 			if  err  :=  r .owners .ClaimMemTCPLimit (id , plugin ); err  !=  nil  {
916- 				return  err 
917- 			}
918- 			resources .Memory .KernelTcp  =  Int64 (v .GetValue ())
919- 		}
920- 		if  v  :=  mem .GetSwappiness (); v  !=  nil  {
921- 			if  err  :=  r .owners .ClaimMemSwappiness (id , plugin ); err  !=  nil  {
922- 				return  err 
923- 			}
924- 			resources .Memory .Swappiness  =  UInt64 (v .GetValue ())
925- 		}
926- 		if  v  :=  mem .GetDisableOomKiller (); v  !=  nil  {
927- 			if  err  :=  r .owners .ClaimMemDisableOomKiller (id , plugin ); err  !=  nil  {
928- 				return  err 
929- 			}
930- 			resources .Memory .DisableOomKiller  =  Bool (v .GetValue ())
931- 		}
932- 		if  v  :=  mem .GetUseHierarchy (); v  !=  nil  {
933- 			if  err  :=  r .owners .ClaimMemUseHierarchy (id , plugin ); err  !=  nil  {
934- 				return  err 
935- 			}
936- 			resources .Memory .UseHierarchy  =  Bool (v .GetValue ())
937- 		}
898+ 	if  err  :=  r .adjustMemoryResource (u .Linux .Resources .Memory , resources .Memory , id , plugin ); err  !=  nil  {
899+ 		return  err 
938900	}
939- 	if  cpu  :=  u .Linux .Resources .Cpu ; cpu  !=  nil  {
940- 		if  v  :=  cpu .GetShares (); v  !=  nil  {
941- 			if  err  :=  r .owners .ClaimCPUShares (id , plugin ); err  !=  nil  {
942- 				return  err 
943- 			}
944- 			resources .Cpu .Shares  =  UInt64 (v .GetValue ())
945- 		}
946- 		if  v  :=  cpu .GetQuota (); v  !=  nil  {
947- 			if  err  :=  r .owners .ClaimCPUQuota (id , plugin ); err  !=  nil  {
948- 				return  err 
949- 			}
950- 			resources .Cpu .Quota  =  Int64 (v .GetValue ())
951- 		}
952- 		if  v  :=  cpu .GetPeriod (); v  !=  nil  {
953- 			if  err  :=  r .owners .ClaimCPUPeriod (id , plugin ); err  !=  nil  {
954- 				return  err 
955- 			}
956- 			resources .Cpu .Period  =  UInt64 (v .GetValue ())
957- 		}
958- 		if  v  :=  cpu .GetRealtimeRuntime (); v  !=  nil  {
959- 			if  err  :=  r .owners .ClaimCPURealtimeRuntime (id , plugin ); err  !=  nil  {
960- 				return  err 
961- 			}
962- 			resources .Cpu .RealtimeRuntime  =  Int64 (v .GetValue ())
963- 		}
964- 		if  v  :=  cpu .GetRealtimePeriod (); v  !=  nil  {
965- 			if  err  :=  r .owners .ClaimCPURealtimePeriod (id , plugin ); err  !=  nil  {
966- 				return  err 
967- 			}
968- 			resources .Cpu .RealtimePeriod  =  UInt64 (v .GetValue ())
969- 		}
970- 		if  v  :=  cpu .GetCpus (); v  !=  ""  {
971- 			if  err  :=  r .owners .ClaimCPUSetCPUs (id , plugin ); err  !=  nil  {
972- 				return  err 
973- 			}
974- 			resources .Cpu .Cpus  =  v 
975- 		}
976- 		if  v  :=  cpu .GetMems (); v  !=  ""  {
977- 			if  err  :=  r .owners .ClaimCPUSetMems (id , plugin ); err  !=  nil  {
978- 				return  err 
979- 			}
980- 			resources .Cpu .Mems  =  v 
981- 		}
901+ 
902+ 	if  err  :=  r .adjustCPUResource (u .Linux .Resources .Cpu , resources .Cpu , id , plugin ); err  !=  nil  {
903+ 		return  err 
982904	}
983905
984906	for  _ , l  :=  range  u .Linux .Resources .HugepageLimits  {
0 commit comments