Documentation ¶
Overview ¶
+groupName=storage.ibm.kubeform.com
Index ¶
- Variables
- func GetDecoder() map[string]jsoniter.ValDecoder
- func GetEncoder() map[string]jsoniter.ValEncoder
- func Kind(kind string) schema.GroupKind
- func Resource(resource string) schema.GroupResource
- type Block
- func (in *Block) DeepCopy() *Block
- func (in *Block) DeepCopyInto(out *Block)
- func (in *Block) DeepCopyObject() runtime.Object
- func (r *Block) SetupWebhookWithManager(mgr ctrl.Manager) error
- func (r *Block) ValidateCreate() error
- func (r *Block) ValidateDelete() error
- func (r *Block) ValidateUpdate(old runtime.Object) error
- type BlockList
- type BlockSpec
- type BlockSpecAllowedHardwareInfo
- type BlockSpecAllowedHostInfo
- type BlockSpecAllowedVirtualGuestInfo
- type BlockSpecResource
- type BlockStatus
- type Evault
- func (in *Evault) DeepCopy() *Evault
- func (in *Evault) DeepCopyInto(out *Evault)
- func (in *Evault) DeepCopyObject() runtime.Object
- func (r *Evault) SetupWebhookWithManager(mgr ctrl.Manager) error
- func (r *Evault) ValidateCreate() error
- func (r *Evault) ValidateDelete() error
- func (r *Evault) ValidateUpdate(old runtime.Object) error
- type EvaultList
- type EvaultSpec
- type EvaultSpecResource
- type EvaultStatus
- type File
- func (in *File) DeepCopy() *File
- func (in *File) DeepCopyInto(out *File)
- func (in *File) DeepCopyObject() runtime.Object
- func (r *File) SetupWebhookWithManager(mgr ctrl.Manager) error
- func (r *File) ValidateCreate() error
- func (r *File) ValidateDelete() error
- func (r *File) ValidateUpdate(old runtime.Object) error
- type FileList
- type FileSpec
- type FileSpecResource
- type FileSpecSnapshotSchedule
- type FileStatus
Constants ¶
This section is empty.
Variables ¶
var ( // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. SchemeBuilder runtime.SchemeBuilder AddToScheme = localSchemeBuilder.AddToScheme )
var SchemeGroupVersion = schema.GroupVersion{Group: storage.GroupName, Version: "v1alpha1"}
Functions ¶
func GetDecoder ¶
func GetDecoder() map[string]jsoniter.ValDecoder
func GetEncoder ¶
func GetEncoder() map[string]jsoniter.ValEncoder
func Resource ¶
func Resource(resource string) schema.GroupResource
Resource takes an unqualified resource and returns a Group qualified GroupResource
Types ¶
type Block ¶
type Block struct { metav1.TypeMeta `json:",inline,omitempty"` metav1.ObjectMeta `json:"metadata,omitempty"` Spec BlockSpec `json:"spec,omitempty"` Status BlockStatus `json:"status,omitempty"` }
func (*Block) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Block.
func (*Block) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Block) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*Block) SetupWebhookWithManager ¶
func (*Block) ValidateCreate ¶
ValidateCreate implements webhook.Validator so a webhook will be registered for the type
func (*Block) ValidateDelete ¶
ValidateDelete implements webhook.Validator so a webhook will be registered for the type
type BlockList ¶
type BlockList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` // Items is a list of Block CRD objects Items []Block `json:"items,omitempty"` }
BlockList is a list of Blocks
func (*BlockList) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BlockList.
func (*BlockList) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*BlockList) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type BlockSpec ¶
type BlockSpec struct { State *BlockSpecResource `json:"state,omitempty" tf:"-"` Resource BlockSpecResource `json:"resource" tf:"resource"` UpdatePolicy base.UpdatePolicy `json:"updatePolicy,omitempty" tf:"-"` TerminationPolicy base.TerminationPolicy `json:"terminationPolicy,omitempty" tf:"-"` ProviderRef core.LocalObjectReference `json:"providerRef" tf:"-"` BackendRef *core.LocalObjectReference `json:"backendRef,omitempty" tf:"-"` }
func (*BlockSpec) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BlockSpec.
func (*BlockSpec) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type BlockSpecAllowedHardwareInfo ¶
type BlockSpecAllowedHardwareInfo struct { // +optional HostIqn *string `json:"hostIqn,omitempty" tf:"host_iqn"` // +optional ID *int64 `json:"ID,omitempty" tf:"id"` // +optional Password *string `json:"password,omitempty" tf:"password"` // +optional Username *string `json:"username,omitempty" tf:"username"` }
func (*BlockSpecAllowedHardwareInfo) DeepCopy ¶
func (in *BlockSpecAllowedHardwareInfo) DeepCopy() *BlockSpecAllowedHardwareInfo
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BlockSpecAllowedHardwareInfo.
func (*BlockSpecAllowedHardwareInfo) DeepCopyInto ¶
func (in *BlockSpecAllowedHardwareInfo) DeepCopyInto(out *BlockSpecAllowedHardwareInfo)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type BlockSpecAllowedHostInfo ¶
type BlockSpecAllowedHostInfo struct { // +optional HostIqn *string `json:"hostIqn,omitempty" tf:"host_iqn"` // +optional ID *int64 `json:"ID,omitempty" tf:"id"` // +optional Password *string `json:"password,omitempty" tf:"password"` // +optional Username *string `json:"username,omitempty" tf:"username"` }
func (*BlockSpecAllowedHostInfo) DeepCopy ¶
func (in *BlockSpecAllowedHostInfo) DeepCopy() *BlockSpecAllowedHostInfo
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BlockSpecAllowedHostInfo.
func (*BlockSpecAllowedHostInfo) DeepCopyInto ¶
func (in *BlockSpecAllowedHostInfo) DeepCopyInto(out *BlockSpecAllowedHostInfo)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type BlockSpecAllowedVirtualGuestInfo ¶
type BlockSpecAllowedVirtualGuestInfo struct { // +optional HostIqn *string `json:"hostIqn,omitempty" tf:"host_iqn"` // +optional ID *int64 `json:"ID,omitempty" tf:"id"` // +optional Password *string `json:"password,omitempty" tf:"password"` // +optional Username *string `json:"username,omitempty" tf:"username"` }
func (*BlockSpecAllowedVirtualGuestInfo) DeepCopy ¶
func (in *BlockSpecAllowedVirtualGuestInfo) DeepCopy() *BlockSpecAllowedVirtualGuestInfo
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BlockSpecAllowedVirtualGuestInfo.
func (*BlockSpecAllowedVirtualGuestInfo) DeepCopyInto ¶
func (in *BlockSpecAllowedVirtualGuestInfo) DeepCopyInto(out *BlockSpecAllowedVirtualGuestInfo)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type BlockSpecResource ¶
type BlockSpecResource struct { Timeouts *base.ResourceTimeout `json:"timeouts,omitempty" tf:"timeouts"` ID string `json:"id,omitempty" tf:"id,omitempty"` // List of allowe hardware IDs // +optional AllowedHardwareIDS []int64 `json:"allowedHardwareIDS,omitempty" tf:"allowed_hardware_ids"` // +optional // Deprecated AllowedHardwareInfo []BlockSpecAllowedHardwareInfo `json:"allowedHardwareInfo,omitempty" tf:"allowed_hardware_info"` // +optional AllowedHostInfo []BlockSpecAllowedHostInfo `json:"allowedHostInfo,omitempty" tf:"allowed_host_info"` // Allowed IP addresses // +optional AllowedIPAddresses []string `json:"allowedIPAddresses,omitempty" tf:"allowed_ip_addresses"` // List of allowed virtual guest IDs // +optional AllowedVirtualGuestIDS []int64 `json:"allowedVirtualGuestIDS,omitempty" tf:"allowed_virtual_guest_ids"` // +optional // Deprecated AllowedVirtualGuestInfo []BlockSpecAllowedVirtualGuestInfo `json:"allowedVirtualGuestInfo,omitempty" tf:"allowed_virtual_guest_info"` // Storage block size Capacity *int64 `json:"capacity" tf:"capacity"` // Datacenter name Datacenter *string `json:"datacenter" tf:"datacenter"` // Hostname // +optional Hostname *string `json:"hostname,omitempty" tf:"hostname"` // Billing done hourly, if set to true // +optional HourlyBilling *bool `json:"hourlyBilling,omitempty" tf:"hourly_billing"` // IOPS value required Iops *float64 `json:"iops" tf:"iops"` // LUN Id // +optional Lunid *string `json:"lunid,omitempty" tf:"lunid"` // Additional note info // +optional Notes *string `json:"notes,omitempty" tf:"notes"` // OS formatr type OsFormatType *string `json:"osFormatType" tf:"os_format_type"` // The URL of the IBM Cloud dashboard that can be used to explore and view details about this instance // +optional ResourceControllerURL *string `json:"resourceControllerURL,omitempty" tf:"resource_controller_url"` // The name of the resource // +optional ResourceName *string `json:"resourceName,omitempty" tf:"resource_name"` // Snapshot capacity in GB // +optional SnapshotCapacity *int64 `json:"snapshotCapacity,omitempty" tf:"snapshot_capacity"` // List of tags associated with the resource // +optional Tags []string `json:"tags,omitempty" tf:"tags"` // List of target Addresses // +optional TargetAddress []string `json:"targetAddress,omitempty" tf:"target_address"` // Storage block type Type *string `json:"type" tf:"type"` // Volume name // +optional Volumename *string `json:"volumename,omitempty" tf:"volumename"` }
func (*BlockSpecResource) DeepCopy ¶
func (in *BlockSpecResource) DeepCopy() *BlockSpecResource
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BlockSpecResource.
func (*BlockSpecResource) DeepCopyInto ¶
func (in *BlockSpecResource) DeepCopyInto(out *BlockSpecResource)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type BlockStatus ¶
type BlockStatus struct { // Resource generation, which is updated on mutation by the API Server. // +optional ObservedGeneration int64 `json:"observedGeneration,omitempty"` // +optional Phase status.Status `json:"phase,omitempty"` // +optional Conditions []kmapi.Condition `json:"conditions,omitempty"` }
func (*BlockStatus) DeepCopy ¶
func (in *BlockStatus) DeepCopy() *BlockStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BlockStatus.
func (*BlockStatus) DeepCopyInto ¶
func (in *BlockStatus) DeepCopyInto(out *BlockStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Evault ¶
type Evault struct { metav1.TypeMeta `json:",inline,omitempty"` metav1.ObjectMeta `json:"metadata,omitempty"` Spec EvaultSpec `json:"spec,omitempty"` Status EvaultStatus `json:"status,omitempty"` }
func (*Evault) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Evault.
func (*Evault) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Evault) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*Evault) SetupWebhookWithManager ¶
func (*Evault) ValidateCreate ¶
ValidateCreate implements webhook.Validator so a webhook will be registered for the type
func (*Evault) ValidateDelete ¶
ValidateDelete implements webhook.Validator so a webhook will be registered for the type
type EvaultList ¶
type EvaultList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` // Items is a list of Evault CRD objects Items []Evault `json:"items,omitempty"` }
EvaultList is a list of Evaults
func (*EvaultList) DeepCopy ¶
func (in *EvaultList) DeepCopy() *EvaultList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EvaultList.
func (*EvaultList) DeepCopyInto ¶
func (in *EvaultList) DeepCopyInto(out *EvaultList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*EvaultList) DeepCopyObject ¶
func (in *EvaultList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type EvaultSpec ¶
type EvaultSpec struct { State *EvaultSpecResource `json:"state,omitempty" tf:"-"` Resource EvaultSpecResource `json:"resource" tf:"resource"` UpdatePolicy base.UpdatePolicy `json:"updatePolicy,omitempty" tf:"-"` TerminationPolicy base.TerminationPolicy `json:"terminationPolicy,omitempty" tf:"-"` ProviderRef core.LocalObjectReference `json:"providerRef" tf:"-"` SecretRef *core.LocalObjectReference `json:"secretRef,omitempty" tf:"-"` BackendRef *core.LocalObjectReference `json:"backendRef,omitempty" tf:"-"` }
func (*EvaultSpec) DeepCopy ¶
func (in *EvaultSpec) DeepCopy() *EvaultSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EvaultSpec.
func (*EvaultSpec) DeepCopyInto ¶
func (in *EvaultSpec) DeepCopyInto(out *EvaultSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type EvaultSpecResource ¶
type EvaultSpecResource struct { Timeouts *base.ResourceTimeout `json:"timeouts,omitempty" tf:"timeouts"` ID string `json:"id,omitempty" tf:"id,omitempty"` // Capacity Capacity *int64 `json:"capacity" tf:"capacity"` // Datacenter name Datacenter *string `json:"datacenter" tf:"datacenter"` // Hardware instance ID // +optional HardwareInstanceID *int64 `json:"hardwareInstanceID,omitempty" tf:"hardware_instance_id"` // password // +optional Password *string `json:"-" sensitive:"true" tf:"password"` // service resource name // +optional ServiceResourceName *string `json:"serviceResourceName,omitempty" tf:"service_resource_name"` // Tags set for the resource // +optional Tags []string `json:"tags,omitempty" tf:"tags"` // user name // +optional Username *string `json:"username,omitempty" tf:"username"` // Virtual instance ID // +optional VirtualInstanceID *int64 `json:"virtualInstanceID,omitempty" tf:"virtual_instance_id"` }
func (*EvaultSpecResource) DeepCopy ¶
func (in *EvaultSpecResource) DeepCopy() *EvaultSpecResource
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EvaultSpecResource.
func (*EvaultSpecResource) DeepCopyInto ¶
func (in *EvaultSpecResource) DeepCopyInto(out *EvaultSpecResource)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type EvaultStatus ¶
type EvaultStatus struct { // Resource generation, which is updated on mutation by the API Server. // +optional ObservedGeneration int64 `json:"observedGeneration,omitempty"` // +optional Phase status.Status `json:"phase,omitempty"` // +optional Conditions []kmapi.Condition `json:"conditions,omitempty"` }
func (*EvaultStatus) DeepCopy ¶
func (in *EvaultStatus) DeepCopy() *EvaultStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EvaultStatus.
func (*EvaultStatus) DeepCopyInto ¶
func (in *EvaultStatus) DeepCopyInto(out *EvaultStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type File ¶
type File struct { metav1.TypeMeta `json:",inline,omitempty"` metav1.ObjectMeta `json:"metadata,omitempty"` Spec FileSpec `json:"spec,omitempty"` Status FileStatus `json:"status,omitempty"` }
func (*File) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new File.
func (*File) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*File) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*File) SetupWebhookWithManager ¶
func (*File) ValidateCreate ¶
ValidateCreate implements webhook.Validator so a webhook will be registered for the type
func (*File) ValidateDelete ¶
ValidateDelete implements webhook.Validator so a webhook will be registered for the type
type FileList ¶
type FileList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` // Items is a list of File CRD objects Items []File `json:"items,omitempty"` }
FileList is a list of Files
func (*FileList) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FileList.
func (*FileList) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*FileList) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type FileSpec ¶
type FileSpec struct { State *FileSpecResource `json:"state,omitempty" tf:"-"` Resource FileSpecResource `json:"resource" tf:"resource"` UpdatePolicy base.UpdatePolicy `json:"updatePolicy,omitempty" tf:"-"` TerminationPolicy base.TerminationPolicy `json:"terminationPolicy,omitempty" tf:"-"` ProviderRef core.LocalObjectReference `json:"providerRef" tf:"-"` BackendRef *core.LocalObjectReference `json:"backendRef,omitempty" tf:"-"` }
func (*FileSpec) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FileSpec.
func (*FileSpec) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FileSpecResource ¶
type FileSpecResource struct { Timeouts *base.ResourceTimeout `json:"timeouts,omitempty" tf:"timeouts"` ID string `json:"id,omitempty" tf:"id,omitempty"` // Hardaware ID // +optional AllowedHardwareIDS []int64 `json:"allowedHardwareIDS,omitempty" tf:"allowed_hardware_ids"` // Allowed range of IP addresses // +optional AllowedIPAddresses []string `json:"allowedIPAddresses,omitempty" tf:"allowed_ip_addresses"` // Allowed network subnets // +optional AllowedSubnets []string `json:"allowedSubnets,omitempty" tf:"allowed_subnets"` // Virtual guest ID // +optional AllowedVirtualGuestIDS []int64 `json:"allowedVirtualGuestIDS,omitempty" tf:"allowed_virtual_guest_ids"` // Storage capacity Capacity *int64 `json:"capacity" tf:"capacity"` // Datacenter name Datacenter *string `json:"datacenter" tf:"datacenter"` // Hostname // +optional Hostname *string `json:"hostname,omitempty" tf:"hostname"` // Hourly based billing type // +optional HourlyBilling *bool `json:"hourlyBilling,omitempty" tf:"hourly_billing"` // iops rate Iops *float64 `json:"iops" tf:"iops"` // Storage mount point // +optional Mountpoint *string `json:"mountpoint,omitempty" tf:"mountpoint"` // Notes // +optional Notes *string `json:"notes,omitempty" tf:"notes"` // The URL of the IBM Cloud dashboard that can be used to explore and view details about this instance // +optional ResourceControllerURL *string `json:"resourceControllerURL,omitempty" tf:"resource_controller_url"` // The name of the resource // +optional ResourceName *string `json:"resourceName,omitempty" tf:"resource_name"` // The status of the resource // +optional ResourceStatus *string `json:"resourceStatus,omitempty" tf:"resource_status"` // Snapshot capacity // +optional SnapshotCapacity *int64 `json:"snapshotCapacity,omitempty" tf:"snapshot_capacity"` // +optional // +kubebuilder:validation:MaxItems=3 SnapshotSchedule []FileSpecSnapshotSchedule `json:"snapshotSchedule,omitempty" tf:"snapshot_schedule"` // Tags set for the storage volume // +optional Tags []string `json:"tags,omitempty" tf:"tags"` // Storage type Type *string `json:"type" tf:"type"` // Storage volume name // +optional Volumename *string `json:"volumename,omitempty" tf:"volumename"` }
func (*FileSpecResource) DeepCopy ¶
func (in *FileSpecResource) DeepCopy() *FileSpecResource
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FileSpecResource.
func (*FileSpecResource) DeepCopyInto ¶
func (in *FileSpecResource) DeepCopyInto(out *FileSpecResource)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FileSpecSnapshotSchedule ¶
type FileSpecSnapshotSchedule struct { // Day of the week // +optional DayOfWeek *string `json:"dayOfWeek,omitempty" tf:"day_of_week"` // +optional Enable *bool `json:"enable,omitempty" tf:"enable"` // Time duration in hour // +optional Hour *int64 `json:"hour,omitempty" tf:"hour"` // Time duration in minutes // +optional Minute *int64 `json:"minute,omitempty" tf:"minute"` // Retention count RetentionCount *int64 `json:"retentionCount" tf:"retention_count"` // schedule type ScheduleType *string `json:"scheduleType" tf:"schedule_type"` }
func (*FileSpecSnapshotSchedule) DeepCopy ¶
func (in *FileSpecSnapshotSchedule) DeepCopy() *FileSpecSnapshotSchedule
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FileSpecSnapshotSchedule.
func (*FileSpecSnapshotSchedule) DeepCopyInto ¶
func (in *FileSpecSnapshotSchedule) DeepCopyInto(out *FileSpecSnapshotSchedule)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FileStatus ¶
type FileStatus struct { // Resource generation, which is updated on mutation by the API Server. // +optional ObservedGeneration int64 `json:"observedGeneration,omitempty"` // +optional Phase status.Status `json:"phase,omitempty"` // +optional Conditions []kmapi.Condition `json:"conditions,omitempty"` }
func (*FileStatus) DeepCopy ¶
func (in *FileStatus) DeepCopy() *FileStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FileStatus.
func (*FileStatus) DeepCopyInto ¶
func (in *FileStatus) DeepCopyInto(out *FileStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.