@@ -72,26 +72,75 @@ func New(ctx context.Context, cl client.Client, opts *ServerOptions) (*LiqoIPAM,
7272}
7373
7474// IPAcquire acquires a free IP from a given CIDR.
75- func (lipam * LiqoIPAM ) IPAcquire (_ context.Context , _ * IPAcquireRequest ) (* IPAcquireResponse , error ) {
76- panic ("implement me" )
75+ func (lipam * LiqoIPAM ) IPAcquire (_ context.Context , req * IPAcquireRequest ) (* IPAcquireResponse , error ) {
76+ remappedIP , err := lipam .acquireIP (req .GetCidr ())
77+ if err != nil {
78+ return & IPAcquireResponse {
79+ Result : & ResponseResult {
80+ Success : false ,
81+ Error : err .Error (),
82+ },
83+ }, err
84+ }
85+
86+ return & IPAcquireResponse {
87+ Ip : remappedIP ,
88+ Result : & ResponseResult {
89+ Success : true ,
90+ },
91+ }, nil
7792}
7893
7994// IPRelease releases an IP from a given CIDR.
80- func (lipam * LiqoIPAM ) IPRelease (_ context.Context , _ * IPReleaseRequest ) (* IPReleaseResponse , error ) {
81- panic ("implement me" )
95+ func (lipam * LiqoIPAM ) IPRelease (_ context.Context , req * IPReleaseRequest ) (* IPReleaseResponse , error ) {
96+ lipam .freeIP (ipCidr {ip : req .GetIp (), cidr : req .GetCidr ()})
97+
98+ return & IPReleaseResponse {
99+ Result : & ResponseResult {
100+ Success : true ,
101+ },
102+ }, nil
82103}
83104
84105// NetworkAcquire acquires a network. If it is already reserved, it allocates and reserves a new free one with the same prefix length.
85- func (lipam * LiqoIPAM ) NetworkAcquire (_ context.Context , _ * NetworkAcquireRequest ) (* NetworkAcquireResponse , error ) {
86- panic ("implement me" )
106+ func (lipam * LiqoIPAM ) NetworkAcquire (_ context.Context , req * NetworkAcquireRequest ) (* NetworkAcquireResponse , error ) {
107+ remappedCidr , err := lipam .acquireNetwork (req .GetCidr (), req .GetImmutable ())
108+ if err != nil {
109+ return & NetworkAcquireResponse {
110+ Result : & ResponseResult {
111+ Success : false ,
112+ Error : err .Error (),
113+ },
114+ }, err
115+ }
116+
117+ return & NetworkAcquireResponse {
118+ Cidr : remappedCidr ,
119+ Result : & ResponseResult {
120+ Success : true ,
121+ },
122+ }, nil
87123}
88124
89125// NetworkRelease releases a network.
90- func (lipam * LiqoIPAM ) NetworkRelease (_ context.Context , _ * NetworkReleaseRequest ) (* NetworkReleaseResponse , error ) {
91- panic ("implement me" )
126+ func (lipam * LiqoIPAM ) NetworkRelease (_ context.Context , req * NetworkReleaseRequest ) (* NetworkReleaseResponse , error ) {
127+ lipam .freeNetwork (req .GetCidr ())
128+
129+ return & NetworkReleaseResponse {
130+ Result : & ResponseResult {
131+ Success : true ,
132+ },
133+ }, nil
92134}
93135
94136// NetworkIsAvailable checks if a network is available.
95- func (lipam * LiqoIPAM ) NetworkIsAvailable (_ context.Context , _ * NetworkAvailableRequest ) (* NetworkAvailableResponse , error ) {
96- panic ("implement me" )
137+ func (lipam * LiqoIPAM ) NetworkIsAvailable (_ context.Context , req * NetworkAvailableRequest ) (* NetworkAvailableResponse , error ) {
138+ available := lipam .isNetworkAvailable (req .GetCidr ())
139+
140+ return & NetworkAvailableResponse {
141+ Available : available ,
142+ Result : & ResponseResult {
143+ Success : true ,
144+ },
145+ }, nil
97146}
0 commit comments