@@ -226,3 +226,105 @@ type SubnetList struct {
226226 metav1.ListMeta `json:"metadata,omitempty"`
227227 Items []Subnet `json:"items"`
228228}
229+
230+ // A PublicIPAddressSpec defines the desired state of a PublicIPAddress.
231+ type PublicIPAddressSpec struct {
232+ xpv1.ResourceSpec `json:",inline"`
233+ // +kubebuilder:validation:Required
234+ ForProvider PublicIPAddressFormat `json:"properties"`
235+ }
236+
237+ // PublicIPAddressFormat defines properties of the PublicIPAddress.
238+ type PublicIPAddressFormat struct {
239+ // ResourceGroupName - Name of the Public IP address's resource group.
240+ // +immutable
241+ ResourceGroupName string `json:"resourceGroupName,omitempty"`
242+
243+ // ResourceGroupNameRef - A reference to the the Public IP address's resource
244+ // group.
245+ // +immutable
246+ // +optional
247+ ResourceGroupNameRef * xpv1.Reference `json:"resourceGroupNameRef,omitempty"`
248+
249+ // ResourceGroupNameSelector - Select a reference to the Public IP address's
250+ // resource group.
251+ // +optional
252+ ResourceGroupNameSelector * xpv1.Selector `json:"resourceGroupNameSelector,omitempty"`
253+
254+ // PublicIPAllocationMethod - The public IP address allocation method. Possible values include: 'Static', 'Dynamic'
255+ // +kubebuilder:validation:Required
256+ // +kubebuilder:validation:Enum=Static;Dynamic
257+ PublicIPAllocationMethod string `json:"allocationMethod"`
258+
259+ // PublicIPAllocationMethod - The public IP address version. Possible values include: 'IPV4', 'IPV6'
260+ // +kubebuilder:validation:Required
261+ // +kubebuilder:validation:Enum=IPV4;IPV6
262+ PublicIPAddressVersion string `json:"version"`
263+
264+ // Location - Resource location.
265+ // +optional
266+ Location * string `json:"location,omitempty"`
267+
268+ // SKU of PublicIPAddress
269+ // +optional
270+ SKU * SKU `json:"sku,omitempty"`
271+
272+ // Tags - Resource tags.
273+ // +optional
274+ Tags map [string ]* string `json:"tags,omitempty"`
275+ }
276+
277+ // SKU of PublicIPAddress
278+ type SKU struct {
279+ // Name - Name of sku. Possible values include: ['Standard', 'Basic']
280+ // +kubebuilder:validation:Enum=Standard;Basic
281+ Name string `json:"name,omitempty"`
282+ }
283+
284+ // A PublicIPAddressStatus represents the observed state of a PublicIPAddress.
285+ type PublicIPAddressStatus struct {
286+ xpv1.ResourceStatus `json:",inline"`
287+
288+ // State of this PublicIPAddress.
289+ State string `json:"state,omitempty"`
290+
291+ // A Message providing detail about the state of this PublicIPAddress, if any.
292+ Message string `json:"message,omitempty"`
293+
294+ // Etag - A unique string that changes whenever the resource is updated.
295+ Etag string `json:"etag,omitempty"`
296+
297+ // ID of this PublicIPAddress.
298+ ID string `json:"id,omitempty"`
299+
300+ // Address - A string identifying address of PublicIPAddress resource
301+ Address string `json:"address"`
302+ }
303+
304+ // +kubebuilder:object:root=true
305+
306+ // A PublicIPAddress is a managed resource that represents an Azure PublicIPAddress.
307+ // +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status"
308+ // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status"
309+ // +kubebuilder:printcolumn:name="STATE",type="string",JSONPath=".status.state"
310+ // +kubebuilder:printcolumn:name="LOCATION",type="string",JSONPath=".spec.properties.location"
311+ // +kubebuilder:printcolumn:name="ADDRESS",type="string",JSONPath=".status.address"
312+ // +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp"
313+ // +kubebuilder:subresource:status
314+ // +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,azure}
315+ type PublicIPAddress struct {
316+ metav1.TypeMeta `json:",inline"`
317+ metav1.ObjectMeta `json:"metadata,omitempty"`
318+
319+ Spec PublicIPAddressSpec `json:"spec"`
320+ Status PublicIPAddressStatus `json:"status,omitempty"`
321+ }
322+
323+ // +kubebuilder:object:root=true
324+
325+ // PublicIPAddressList contains a list of PublicIPAddress items
326+ type PublicIPAddressList struct {
327+ metav1.TypeMeta `json:",inline"`
328+ metav1.ListMeta `json:"metadata,omitempty"`
329+ Items []PublicIPAddress `json:"items"`
330+ }
0 commit comments